diff --git a/bootstrap.sh b/bootstrap.sh index 79e0a7dce..c7c858232 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -47,9 +47,9 @@ case $(uname) in esac if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then - echo "Activating pre-commit hook." - cp -pv .git/hooks/pre-commit.sample .git/hooks/pre-commit - chmod -v +x .git/hooks/pre-commit + cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \ + chmod +x .git/hooks/pre-commit && \ + echo "Activated pre-commit hook." fi if [ -f .tarball-version ]; then @@ -94,7 +94,7 @@ else run_versioned automake "$VERSION" --copy --foreign --add-missing if test "x$NOCONFIGURE" = "x"; then - CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@" + CFLAGS="$CFLAGS -g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@" make clean fi fi diff --git a/configure.ac b/configure.ac index 18007357c..adf5d90a6 100644 --- a/configure.ac +++ b/configure.ac @@ -45,11 +45,11 @@ AC_SUBST(PA_PROTOCOL_VERSION, 16) # The stable ABI for client applications, for the version info x:y:z # always will hold y=z -AC_SUBST(LIBPULSE_VERSION_INFO, [8:0:8]) +AC_SUBST(LIBPULSE_VERSION_INFO, [10:0:10]) # A simplified, synchronous, ABI-stable interface for client # applications, for the version info x:y:z always will hold y=z -AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:2:0]) +AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [0:3:0]) # The ABI-stable network browsing interface for client applications, # for the version info x:y:z always will hold y=z @@ -626,10 +626,11 @@ AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1]) HAVE_TDB=0 HAVE_GDBM=0 +HAVE_SIMPLEDB=0 AC_ARG_WITH( [database], - AS_HELP_STRING([--with-database=auto|tdb|gdbm],[Choose database backend.]),[],[with_database=auto]) + AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto]) if test "x${with_database}" = "xauto" -o "x${with_database}" = "xtdb" ; then PKG_CHECK_MODULES(TDB, [ tdb ], @@ -659,7 +660,12 @@ if test "x${with_database}" = "xauto" -o "x${with_database}" = "xgdbm" ; then fi fi -if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1; then +if test "x${with_database}" = "xauto" -o "x${with_database}" = "xsimple" ; then + HAVE_SIMPLEDB=1 + with_database=simple +fi + +if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1 -a "x${HAVE_SIMPLEDB}" != x1; then AC_MSG_ERROR([*** missing database backend]) fi @@ -671,6 +677,10 @@ if test "x${HAVE_GDBM}" = x1 ; then AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?]) fi +if test "x${HAVE_SIMPLEDB}" = x1 ; then + AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?]) +fi + AC_SUBST(TDB_CFLAGS) AC_SUBST(TDB_LIBS) AC_SUBST(HAVE_TDB) @@ -681,28 +691,47 @@ AC_SUBST(GDBM_LIBS) AC_SUBST(HAVE_GDBM) AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1]) +AC_SUBST(HAVE_SIMPLEDB) +AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1]) + #### OSS support (optional) #### -AC_ARG_ENABLE([oss], - AS_HELP_STRING([--disable-oss],[Disable optional OSS support]), +AC_ARG_ENABLE([oss-output], + AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support]), [ case "${enableval}" in - yes) oss=yes ;; - no) oss=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss) ;; + yes) oss_output=yes ;; + no) oss_output=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-output) ;; esac ], - [oss=auto]) + [oss_output=auto]) -if test "x${oss}" != xno ; then +AC_ARG_ENABLE([oss-wrapper], + AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support]), + [ + case "${enableval}" in + yes) oss_wrapper=yes ;; + no) oss_wrapper=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-oss-wrapper) ;; + esac + ], + [oss_wrapper=auto]) + +if test "x${oss_output}" != xno || test "x${oss_wrapper}" != "xno"; then AC_CHECK_HEADERS([sys/soundcard.h], [ + if test "x${oss_output}" != "xno"; then + AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?]) + fi + if test "x${oss_wrapper}" != "xno"; then + AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?]) + fi HAVE_OSS=1 - AC_DEFINE([HAVE_OSS], 1, [Have OSS?]) ], [ HAVE_OSS=0 - if test "x$oss" = xyes ; then + if test "x$oss_output" = xyes || test "x$oss_wrapper" = "xyes"; then AC_MSG_ERROR([*** OSS support not found]) fi ]) @@ -711,8 +740,8 @@ else fi AC_SUBST(HAVE_OSS) -AM_CONDITIONAL([HAVE_OSS], [test "x$HAVE_OSS" = x1]) - +AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS" = x1 && test "x${oss_output}" != "xno"]) +AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS" = x1 && test "x${oss_wrapper}" != "xno"]) #### ALSA support (optional) #### @@ -912,12 +941,6 @@ AC_SUBST(AVAHI_LIBS) AC_SUBST(HAVE_AVAHI) AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1]) -### LIBOIL #### - -PKG_CHECK_MODULES(LIBOIL, [ liboil-0.3 >= 0.3.0 ]) -AC_SUBST(LIBOIL_CFLAGS) -AC_SUBST(LIBOIL_LIBS) - ### JACK (optional) #### AC_ARG_ENABLE([jack], @@ -1100,7 +1123,27 @@ AC_SUBST(UDEV_LIBS) AC_SUBST(HAVE_UDEV) AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1]) -AC_DEFINE([LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE], 1, [I know the API is subject to change.]) +#### HAL compat support (optional) #### + +AC_ARG_ENABLE([hal-compat], + AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]), + [ + case "${enableval}" in + yes) halcompat=yes ;; + no) halcompat=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal-compat) ;; + esac + ], + [halcompat=auto]) +if test "x${halcompat}" != xno -a "x$HAVE_HAL" = "x0" -a "x$HAVE_UDEV" = "x1" ; then + HAVE_HAL_COMPAT=1 + AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.]) +else + HAVE_HAL_COMPAT=0 +fi + +AC_SUBST(HAVE_HAL_COMPAT) +AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1]) #### BlueZ support (optional) #### @@ -1359,9 +1402,15 @@ if test "x$HAVE_X11" = "x1" ; then ENABLE_X11=yes fi -ENABLE_OSS=no +ENABLE_OSS_OUTPUT=no +ENABLE_OSS_WRAPPER=no if test "x$HAVE_OSS" = "x1" ; then - ENABLE_OSS=yes + if test "x$enable_oss_output" != "xno"; then + ENABLE_OSS_OUTPUT=yes + fi + if test "x$enable_oss_wrapper" != "xno"; then + ENABLE_OSS_WRAPPER=yes + fi fi ENABLE_ALSA=no @@ -1419,6 +1468,11 @@ if test "x$HAVE_UDEV" = "x1" ; then ENABLE_UDEV=yes fi +ENABLE_HAL_COMPAT=no +if test "x$HAVE_HAL_COMPAT" = "x1" ; then + ENABLE_HAL_COMPAT=yes +fi + ENABLE_TCPWRAP=no if test "x${LIBWRAP_LIBS}" != x ; then ENABLE_TCPWRAP=yes @@ -1444,6 +1498,11 @@ if test "x${HAVE_TDB}" = "x1" ; then ENABLE_TDB=yes fi +ENABLE_SIMPLEDB=no +if test "x${HAVE_SIMPLEDB}" = "x1" ; then + ENABLE_SIMPLEDB=yes +fi + ENABLE_OPENSSL=no if test "x${HAVE_OPENSSL}" = "x1" ; then ENABLE_OPENSSL=yes @@ -1472,7 +1531,8 @@ echo " CFLAGS: ${CFLAGS} Have X11: ${ENABLE_X11} - Enable OSS: ${ENABLE_OSS} + Enable OSS Output: ${ENABLE_OSS_OUTPUT} + Enable OSS Wrapper: ${ENABLE_OSS_WRAPPER} Enable Alsa: ${ENABLE_ALSA} Enable Solaris: ${ENABLE_SOLARIS} Enable GLib 2.0: ${ENABLE_GLIB20} @@ -1484,6 +1544,7 @@ echo " Enable LIRC: ${ENABLE_LIRC} Enable HAL: ${ENABLE_HAL} Enable udev: ${ENABLE_UDEV} + Enable HAL->udev compat: ${ENABLE_HAL_COMPAT} Enable BlueZ: ${ENABLE_BLUEZ} Enable TCP Wrappers: ${ENABLE_TCPWRAP} Enable libsamplerate: ${ENABLE_LIBSAMPLERATE} @@ -1491,6 +1552,7 @@ echo " Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL} Enable tdb: ${ENABLE_TDB} Enable gdbm: ${ENABLE_GDBM} + Enable simple database: ${ENABLE_SIMPLEDB} System User: ${PA_SYSTEM_USER} System Group: ${PA_SYSTEM_GROUP} diff --git a/doxygen/doxygen.conf.in b/doxygen/doxygen.conf.in index 6c2021ce6..7dc0f8b1a 100644 --- a/doxygen/doxygen.conf.in +++ b/doxygen/doxygen.conf.in @@ -417,7 +417,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = ../src/pulse/context.h ../src/pulse/stream.h ../src/pulse/pulseaudio.h ../src/pulse/sample.h ../src/pulse/def.h ../src/pulse/subscribe.h ../src/pulse/introspect.h ../src/pulse/scache.h ../src/pulse/mainloop-api.h ../src/pulse/glib-mainloop.h ../src/pulse/mainloop.h ../src/pulse/mainloop-signal.h ../src/pulse/error.h ../src/pulse/operation.h ../src/pulse/simple.h ../src/pulse/version.h ../src/pulse/volume.h ../src/pulse/channelmap.h ../src/pulse/thread-mainloop.h ../src/pulse/xmalloc.h ../src/pulse/utf8.h ../src/pulse/util.h ../src/pulse/timeval.h ../src/pulse/proplist.h ../src/pulse/gccmacro.h ../src/pulse/ext-stream-restore.h +INPUT = ../src/pulse/context.h ../src/pulse/stream.h ../src/pulse/pulseaudio.h ../src/pulse/sample.h ../src/pulse/def.h ../src/pulse/subscribe.h ../src/pulse/introspect.h ../src/pulse/scache.h ../src/pulse/mainloop-api.h ../src/pulse/glib-mainloop.h ../src/pulse/mainloop.h ../src/pulse/mainloop-signal.h ../src/pulse/error.h ../src/pulse/operation.h ../src/pulse/simple.h ../src/pulse/version.h ../src/pulse/volume.h ../src/pulse/channelmap.h ../src/pulse/thread-mainloop.h ../src/pulse/xmalloc.h ../src/pulse/utf8.h ../src/pulse/util.h ../src/pulse/timeval.h ../src/pulse/proplist.h ../src/pulse/gccmacro.h ../src/pulse/ext-stream-restore.h ../src/pulse/rtclock.h # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in index 26e389081..46cc8450f 100644 --- a/man/pulse-client.conf.5.xml.in +++ b/man/pulse-client.conf.5.xml.in @@ -92,9 +92,9 @@ USA. @@ -204,7 +205,7 @@ USA. real-time. The controlling thread is left a normally scheduled thread. Thus enabling the high-priority option is orthogonal. See for more - information. Takes a boolean argument, defaults to "no". The + information. Takes a boolean argument, defaults to "yes". The --realtime command line option takes precedence.

@@ -230,7 +231,7 @@ USA. diff --git a/po/LINGUAS b/po/LINGUAS index 660ebee97..14414f46f 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -2,8 +2,8 @@ as bn_IN ca cs -de_CH de +de_CH el es fi @@ -11,16 +11,18 @@ fr gu hi it +ja kn +ml mr nl or pa pl -pt_BR pt -sr@latin +pt_BR sr +sr@latin sv ta te diff --git a/po/POTFILES.in b/po/POTFILES.in index 534feb153..a61724421 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -55,7 +55,6 @@ src/pulsecore/queue.c src/pulsecore/core.c #src/pulsecore/shmasyncq.c src/pulsecore/x11wrap.c -src/pulsecore/rtclock.c src/pulsecore/ioline.c src/pulsecore/asyncq.c src/pulsecore/mutex-posix.c @@ -99,7 +98,6 @@ src/pulsecore/strlist.c src/pulsecore/msgobject.c src/pulsecore/mutex-win32.c src/pulsecore/dynarray.c -src/pulsecore/rtsig.c src/pulsecore/once.c src/pulsecore/source.c src/pulsecore/memchunk.c @@ -149,14 +147,12 @@ src/pulsecore/protocol-http.c src/pulsecore/semaphore-win32.c src/daemon/cpulimit.c src/daemon/ltdl-bind-now.c -src/daemon/polkit.c src/daemon/main.c src/daemon/cmdline.c src/daemon/dumpmodules.c src/daemon/daemon-conf.c src/daemon/caps.c src/daemon/pulseaudio.desktop.in -src/daemon/org.pulseaudio.policy.in src/pulse/channelmap.c src/pulse/error.c src/pulse/proplist.c diff --git a/po/as.po b/po/as.po index b2468a430..a7aa34e78 100644 --- a/po/as.po +++ b/po/as.po @@ -1,22 +1,28 @@ +# translation of pulseaudio.master-tx.as.po to Assamese # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Amitakhya Phukan , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n" +"Project-Id-Version: pulseaudio.master-tx.as\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-08 12:35+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-08 21:04+0530\n" "Last-Translator: Amitakhya Phukan \n" -"Language-Team: Assamese \n" +"Language-Team: Assamese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 0.3\n" +"X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -28,7 +34,7 @@ msgstr "" "অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক " "জনাওক ।" -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -40,7 +46,7 @@ msgstr "" "অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক " "জনাওক ।" -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -52,9 +58,17 @@ msgstr "" "অতি সম্ভৱ এইটো ALSA চালক '%s' ৰ এটা বাগ । অনুগ্ৰহ কৰি এই সমস্যা ALSA বিকাশকক " "জনাওক ।" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "ভার্চুয়াল LADSPA sink" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -64,12 +78,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "আভ্যন্তৰীণ অ'ডিঅ'" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "মোডেম" @@ -85,371 +112,248 @@ msgstr "নতুন dl loader বিতৰণ কৰিবলৈ বিফল msgid "Failed to add bind-now-loader." msgstr "bind-now-loader যোগ কৰিবলৈ বিফল ।" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "প্ৰণালীৰ bus লৈ সংযোগ কৰিব পৰা ন'গ'ল: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID ৰ পৰা caller পোৱা ন'গ'ল: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "caller বস্তুত UID নিৰ্ধাৰণ কৰিব পৰা ন'গ'ল ।" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK অধিবেশন পাবলৈ বিফল ।" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "অধিবেশনৰ বস্তুত UID নিৰ্ধাৰণ কৰিব নোৱাৰি ।" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction বিতৰণ কৰিব নোৱাৰি ।" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id নিৰ্ধাৰণ কৰিব নোৱাৰি ।" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext বিতৰণ কৰিব নোৱাৰি ।" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext আৰম্ভ কৰিব নোৱাৰি: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "caller ৰ অনুমতি আছে নে নাই নিৰ্ধাৰণ কৰিব নোৱাৰি: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "auth পাব নোৱাৰি: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit এ '%s' উত্তৰ দিলে" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "চিগ্নেল %s পোৱা গ'ল ।" -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "প্ৰস্থান কৰা হৈছে ।" -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "ব্যৱহাৰকৰ্তা '%s' পোৱা ন'গ'ল ।" -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "'%s' সমষ্টি পোৱা ন'গ'ল ।" -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "ব্যৱহাৰকৰ্তা '%s' (UID %lu) আৰু সমষ্টি '%s' (GID %lu) পোৱা গ'ল ।" -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "ব্যৱহাৰকৰ্তা '%s' আৰু সমষ্টি '%s' ৰ GID অমিল ।" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "ব্যৱহাৰকৰ্তা '%s' ৰ ঘৰৰ পঞ্জিকা '%s' নহয়, আওকাণ কৰা হৈছে ।" -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' সৃষ্টি কৰিবলৈ বিফল: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "সমষ্টিৰ তালিকা সলনি কৰিবলৈ ব্যৰ্থ: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID সলনি কৰিবলৈ ব্যৰ্থ: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID সলনি কৰিবলৈ ব্যৰ্থ: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "ৰূটৰ অধিকাৰ সফলভাবে এৰোৱা গ'ল ।" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "এই স্থাপত্যত প্ৰণালী ব্যাপক মোড অসমৰ্থিত ।" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) বিফল: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "আদেশ শাৰী বিশ্লেষণ কৰিবলৈ বিফল ।" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "আমি '%s' সমষ্টিত, য'ত high-priority scheduling ৰ অনুমতি আছে ।" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "আমি '%s' সমষ্টিত, য'ত real-time scheduling ৰ অনুমতি আছে ।" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit এ আমাক acquire-high-priority অধিকাৰ দিয়ে ।" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit এ acquire-high-priority অধিকাৰ নিদিয়ে ।" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit এ আমাক acquire-real-time অধিকাৰ দিয়ে ।" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit এ acquire-real-time অধিকাৰ নিদিয়ে ।" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"বিন্যাস দ্বাৰা high-priority scheduling ৰ সক্ৰিয় হ'লেও নিয়মনীতি দ্বাৰা সেইটো " -"অনুমোদিত নহয় ।" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO সফলতাৰে বৃদ্ধি কৰা হৈছে" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO বিফল: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE বৰ্জন কৰা হৈছে" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"বিন্যাস দ্বাৰা real-time scheduling ৰ সক্ৰিয় হ'লেও নিয়মনীতি দ্বাৰা সেইটো অনুমোদিত " -"নহয় ।" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "ডেমন নাই চলা" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "PID %u ৰূপে ডেমন চলিছে" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "ডেমন kill কৰিবলৈ ব্যৰ্থ: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "" "root পৰিচয়ে এই প্ৰোগ্ৰাম সঞ্চালিত হোৱা উচিত নহয় (ন'হ'লে --system উল্লিখিত হয়) ।" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Root-ৰ অধিকাৰ আৱশ্যক ।" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "প্ৰণালী চানেকিৰ ক্ষেত্ৰত --start সমৰ্থিত নহয় ।" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "প্ৰণালী মোডত চলিছে, কিন্তু --disallow-exit নিৰ্ধাৰিত নহয়!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "প্ৰণালী মোডত চলিছে, কিন্তু --disallow-module-loading নিৰ্ধাৰিত নহয়!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "প্ৰণালী মোডত চলিছে, SHM মোড বলপূৰ্বক নিষ্ক্ৰিয় কৰা হৈছে!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "প্ৰণালী মোডত চলিছে, কাম নকৰা সময়ৰ পৰা প্ৰস্থান কৰা বলপূৰ্বক নিষ্ক্ৰিয় কৰা হৈছে!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ ।" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe বিফল: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() বিফল: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() বিফল: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "ডেমন আৰম্ভ কৰিবলৈ বিফল ।" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "সফলতাৰে ডেমন আৰম্ভ কৰা হৈছে ।" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "এইটো PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "সঙ্কলনৰ গৃহস্থ: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "সঙ্কলনৰ CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "গৃহস্থত চলোৱা হৈছে: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPU পোৱা গৈছে ।" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "পেজৰ মাপ %lu bytes" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind সমৰ্থনৰ সৈতে সঙ্কলন কৰা হৈছে: হয়" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind সমৰ্থনৰ সৈতে সঙ্কলন কৰা হৈছে: নহয়" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind মোডত চলিছে: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimized build: হয়" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimized build: নহয়" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG ব্যাখ্যা কৰা হৈছে, সকলো asserts নিষ্ক্ৰিয় কৰা হৈছে ।" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH ব্যাখ্যা কৰা হৈছে, অকল fast path asserts নিষ্ক্ৰিয় কৰা হৈছে ।" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "সকলো asserts সক্ৰিয় কৰা হৈছে ।" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "যন্ত্ৰ ID প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "যন্ত্ৰ ID হ'ল %s ।" -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "যন্ত্ৰ ID হ'ল %s ।" +msgstr "সেশান ID হল %s।" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "ৰান-টাইম পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "অৱস্থাসূচক পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "মডিউল ডিরেক্টরি %s ব্যবহার করা হচ্ছে।" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "প্ৰণালী মোডত চলিছে: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -458,16 +362,20 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"আপনি সিস্টেম মোডে PA সঞ্চালিত করছেন এবং এটি না করাই বাঞ্ছনীয়।\n" +"এর ফলে প্রত্যাশামত ফলাফল না পাওয়ার সম্ভাবনা রয়েছে।\n" +"সিস্টেম মোডে ব্যবহারের সমস্যা সম্পর্কে জানতে হলে http://pulseaudio.org/wiki/" +"WhatIsWrongWithSystemMode দেখুন।" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() ব্যৰ্থ ।" -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "নতুন high-resolution timers পোৱা হয়! অভিনন্দন!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -475,28 +383,28 @@ msgstr "" "শ্ৰীমান, আপোনাৰ কাৰ্ণেল পূৰণি! high-resolution timer সক্ৰিয় থকা Linux ক আজি " "উপদেশ দিয়া হয়!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() ব্যৰ্থ ।" -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "ডেমন আৰম্ভ কৰিবলৈ ব্যৰ্থ ।" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" "তুলি লোৱা মডিউল নোহোৱাকে ডেমন আৰম্ভ কৰা হৈছে, কোনো কাম সঞ্চালন কৰা সম্ভৱ নহয় ।" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "ডেমন আৰম্ভ কৰা সম্পূৰ্ণ ।" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "ডেমন বন্ধ কৰাৰ প্ৰক্ৰিয়া আৰম্ভ কৰা হৈছে ।" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "ডেমন বন্ধ কৰা হৈছে ।" @@ -746,79 +654,79 @@ msgstr "এবাৰ তুলি লোৱা হ'ব: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "অবচিত করার সতর্কবার্তা: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "পাথ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] লগ লক্ষ্য '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] লগৰ স্তৰ '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] resample পদ্ধতি '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] এই স্থাপত্যত rlimit সমৰ্থিত নহয় ।" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] চানেকিৰ বিন্যাস '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] চানেকিৰ মাত্ৰা '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] অংশৰ সংখ্যা '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] nice স্তৰ '%s' বৈধ নহয় ।" -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "বিন্যাস নথিপত্ৰ খুলিবলৈ ব্যৰ্থ: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -826,18 +734,14 @@ msgstr "" "নিৰ্ধাৰিত অবিকল্পিত চেনেল মেপত নিৰ্ধাৰিত অবিকল্পিত চেনেলৰ সংখ্যাতকে বেলেগ সংখ্যক " "চেনেল আছে ।" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### চিহ্নিত বিন্যাস নথিপত্ৰৰ পৰা পঢ়া হ'ব: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "root-ৰ অধিকাৰ বৰ্জন কৰা হৈছে ।" - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "CAP_SYS_NICE লৈ কাৰ্য্যক্ষমতা সফলভাবে সীমিত কৰা হ'ল ।" +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "অধিকার বর্জন করা হচ্ছে।" #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -847,25 +751,7 @@ msgstr "PulseAudio শব্দ ব্যৱস্থা" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio শব্দ ব্যৱস্থা আৰম্ভ কৰা হ'ব" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio ডেমনৰ কাৰণে High-priority scheduling (ঋণাত্মক Unix nice স্তৰ)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio ডেমনৰ কাৰণে Real-time scheduling" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "প্ৰণালীৰ নীতিয়ে PulseAudio ক high-priority scheduling পাবলৈ নিদিয়ে ।" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "প্ৰণালীৰ নীতিয়ে PulseAudio ক real-time scheduling পাবলৈ নিদিয়ে ।" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "মোনো" @@ -1069,33 +955,33 @@ msgstr "ওপৰত পিছত বাওঁফালে" msgid "Top Rear Right" msgstr "ওপৰত পিছত সোঁফালে" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(অবৈধ)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "স্টিৰিও" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "ছাৰাউণ্ড ৪.০" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "ছাৰাউণ্ড ৪.১" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "ছাৰাউণ্ড ৫.০" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "ছাৰাউণ্ড ৫.১" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "ছাৰাউণ্ড ৭.১" @@ -1199,27 +1085,35 @@ msgstr "অনুপস্থিত বাস্তবায়ন" msgid "Client forked" msgstr "গ্ৰাহক ফৰ্ক কৰা হৈছে" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1232,192 +1126,191 @@ msgstr "XOpenDisplay() ব্যৰ্থ" msgid "Failed to parse cookie data" msgstr "কুকিৰ তথ্য বিশ্লেষণ কৰিবলৈ ব্যৰ্থ" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "বিন্যাস নথিপত্ৰ '%s' খুলিবলৈ ব্যৰ্থ: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "কোনো কুকি তুলি লোৱা নহয় । কুকি নোহোৱাকে সংযোগৰ প্ৰচেষ্টা কৰা হৈছে ।" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "অজানা এক্সটেনশন '%s'-ৰ বাবে বাৰ্তা প্ৰাপ্ত হৈছে" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "স্ট্ৰিম drain কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to drain stream: %s" +msgstr "স্ট্রিম ড্রেইন (অর্থাৎ ফাঁকা) করতে ব্যর্থ: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "প্লেবেক স্ট্ৰিমক drain কৰা হ'ল ।\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "প্লে-ব্যাক স্ট্রিম ফাঁকা করা হয়েছে।" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "সেৱকৰ সৈতে সংযোগ Drain কৰা হৈছে ।\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "সার্ভারের সাথে স্থাপিত সংযোগ ফাঁকা করা হচ্ছে।" -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() ব্যৰ্থ: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() ব্যর্থ: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() ব্যৰ্থ: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() ব্যর্থ: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "সফলতাৰে স্ট্ৰিম নিৰ্মিত হৈছে ।\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() ব্যৰ্থ: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() ব্যর্থ: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "সাফল্যের সাথে স্ট্রিম নির্মিত হয়েছে।" + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() ব্যর্থ: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "চানেকি spec '%s', চেনেল মেপ '%s'প্ৰয়োগ কৰা হৈছে\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "যন্ত্ৰ %s-ৰ সৈতে সংযোগ কৰা হৈছে (%u, %ssuspended) ।\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "স্যাম্পেলের spec '%s', ও চ্যানেল ম্যাপ '%s' ব্যবহার করা হচ্ছে।" -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "ষ্ট্ৰিম সংক্ৰান্ত ত্ৰুটি: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "স্ট্ৰিম যন্ত্ৰ স্থগিত কৰা হৈছে । %s \n" +msgid "Stream error: %s" +msgstr "ষ্ট্রিম সংক্রান্ত ত্রুটি: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "স্ট্ৰিম যন্ত্ৰ পুনৰাৰম্ভ কৰা হৈছে । %s \n" +msgid "Stream device suspended.%s" +msgstr "স্ট্রিম ডিভাইস স্থগিত করা হয়েছে। %s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "ষ্ট্ৰিম underrun: %s\n" +msgid "Stream device resumed.%s" +msgstr "স্ট্রিম ডিভাইস পুনরারম্ভ করা হয়েছে। %s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "ষ্ট্ৰিম overrun: %s\n" +msgid "Stream underrun.%s" +msgstr "ধীর গতির স্ট্রিম.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "স্ট্ৰিম আৰম্ভ কৰা হৈছে । %s \n" +msgid "Stream overrun.%s" +msgstr "স্ট্রিম মাত্রা অতিক্রম করেছে।%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "%s যন্ত্ৰলৈ স্ট্ৰিম স্থানান্তৰ কৰা হৈছে (%u, %ssuspended) ।%s \n" +msgid "Stream started.%s" +msgstr "স্ট্রিম আরম্ভ করা হয়েছে। %s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "%s ডিভাইসে স্ট্রিম স্থানান্তর করা হয়েছে (%u, %ssuspended)।%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "not " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "স্ট্ৰিম প্ৰশমকৰ গুণ পৰিবৰ্তিত হৈছে । %s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "স্ট্রিম বাফারের অ্যাট্রিবিউট পরিবর্তিত হয়েছে। %s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "সংযোগ স্থাপিত হৈছে ।%s \n" +msgid "Connection established.%s" +msgstr "সংযোগ স্থাপিত হয়েছে।%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() ব্যৰ্থ: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() ব্যর্থ: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() ব্যৰ্থ: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() ব্যর্থ: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() ব্যৰ্থ: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() ব্যর্থ: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "সংযোগৰ মোড: %s
\n" +msgid "Connection failure: %s" +msgstr "সংযোগ বিফল: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF পোৱা গ'ল ।\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "ফাইলের সমাপ্তি সনাক্ত হয়েছে।" -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() ব্যৰ্থ: %s\n" +msgid "write() failed: %s" +msgstr "write() ব্যর্থ: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "সিগন্যাল প্রাপ্ত হয়েছে, প্রস্থান করা হবে।" + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() ব্যৰ্থ: %s\n" +msgid "Failed to get latency: %s" +msgstr "লেটেন্সির পরিমাণ প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "চিগ্নেল পোৱা গ'ল, প্ৰস্থান কৰা হৈছে ।\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "latency পাবলৈ ব্যৰ্থ: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "সময়: %0.3f sec; Latency: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() ব্যৰ্থ: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() ব্যর্থ: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1499,8 +1392,10 @@ msgstr "" "44100)\n" " --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" " --channels=CHANNELS The number of channels, 1 for mono, " "2 for stereo\n" " (defaults to 2)\n" @@ -1523,6 +1418,11 @@ msgstr "" "bytes.\n" " --process-time=BYTES Request the specified process time " "per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1535,136 +1435,131 @@ msgstr "" "libpulse ৰ সৈতে সঙ্কলন কৰা হৈছে %s\n" "libpulse ৰ সৈতে যুক্ত %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "চেনেল মেপ '%s' বৈধ নহয়\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "resample পদ্ধতি '%s' বৈধ নহয় ।" - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "চেনেল মেপ '%s' বৈধ নহয়\n" +msgid "Invalid client name '%s'" +msgstr "ক্লায়েন্টের নাম '%s' বৈধ নয়" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "অবৈধ latency নিৰ্ধাৰণ '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "স্ট্রিমের নাম '%s' বৈধ নয়।" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "অবৈধ প্ৰক্ৰিয়াৰ সময়ৰ নিৰ্ধাৰণ '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "চ্যানেল ম্যাপ '%s' বৈধ নয়" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "resample পদ্ধতি '%s' বৈধ নহয় ।" +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "লেটেন্সির জন্য নির্ধারিত বৈশিষ্ট্য '%s' বৈধ নয়" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "প্রসেসের সময়ের বৈশিষ্ট্য '%s' বৈধ নয়" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "বৈশিষ্ট্য '%s' বৈধ নয়।" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "ফাইলের অজানা বিন্যাস %s।" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "অবৈধ চানেকি নিৰ্ধাৰিত\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "অবৈধ স্যাম্পেল নির্ধারিত" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "অত্যাধিক তৰ্ক ।\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "অত্যাধিক আর্গুমেন্ট।" -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "চানেকি সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "স্যাম্পেলের মান নির্ধারণের ফাইল নির্মাণ করতে ব্যর্থ" -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "শব্দেৰ নথিপত্ৰ খুলিবলৈ ব্যৰ্থ ।\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "শব্দের ফাইল খুলতে ব্যর্থ।" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"সতর্কবার্তা: চিহ্নিত স্যাম্পেল নির্ধারণের ফাইলটির তথ্য, এই ফাইলের থেকে উপলব্ধ তথ্য " +"দ্বারা প্রতিস্থাপিত হবে।" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "চানেকি সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ফাইল থেকে স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ।" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "চেনেল মেপ আৰু নথিপত্ৰ অমিল ।\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "সতর্কবার্তা: ফাইল থেকে চ্যানেলের ম্যাপ নির্ধারণ করতে ব্যর্থ।" + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "চ্যানেলের ম্যাপ ও স্যাম্পেলের নির্ধারিত মানে গরমিল" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "সতর্কবার্তা: ফাইলের মধ্যে চ্যানেলের ম্যাপ লিখতে ব্যর্থ।" + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"একটি %s স্ট্রিম খোলা হচ্ছে। এটির জন্য '%s'-র স্যাম্পেলের নির্ধারিত মান ও '%s' " +"চ্যানেলের ম্যাপ প্রয়োগ করা হবে।" #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "এটা %s স্ট্ৰিম চানেকি নিৰ্ধাৰণ '%s' ৰ সৈতে খোলা হৈছে ।\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "ৰেকৰ্ড কৰা হৈছে" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "প্লে-বেক" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() ব্যর্থ।" + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() ব্যর্থ।" + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() ব্যর্থ।" + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() ব্যৰ্থ ।\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() ব্যৰ্থ ।\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() ব্যৰ্থ ।\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() ব্যৰ্থ: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() ব্যৰ্থ ।\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() ব্যর্থ।" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() ব্যৰ্থ ।\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() ব্যর্থ।" #: ../src/utils/pasuspender.c:81 #, c-format @@ -1691,7 +1586,12 @@ msgstr "পুনৰাৰম্ভ কৰিবলৈ ব্যৰ্থ: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "সতৰ্কবাৰ্তা: ধ্বনি সেৱক স্থানীয় নহয়, স্থগিত কৰা নহয় ।\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "সংযোগৰ মোড: %s
\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT প্ৰাপ্ত হৈছে, প্ৰস্থান কৰা হৈছে ।\n" @@ -1731,32 +1631,47 @@ msgstr "" "libpulse ৰ সৈতে সঙ্কলন কৰা হৈছে %s\n" "libpulse ৰ সৈতে যুক্ত %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "পৰিসংখ্যান পাবলৈ ব্যৰ্থ: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() ব্যৰ্থ ।\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() ব্যৰ্থ ।\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() ব্যৰ্থ ।\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "পরিসংখ্যান প্রাপ্ত করতে ব্যর্থ: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "বৰ্ত্তমানে ব্যৱহৃত: %u blocks containing %s bytes total.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "সম্পূৰ্ণ জীৱনকালত বিতৰণ কৰা: %u blocks containing %s bytes total.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "চানেকি কেশ্বৰ মাপ: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "সেৱক সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get server information: %s" +msgstr "সার্ভার সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1779,12 +1694,12 @@ msgstr "" "অবিকল্পিত উৎস: %s\n" "কুকি: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "চিঙ্ক সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get sink information: %s" +msgstr "sink সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1823,22 +1738,22 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tপাৰ্শ্বৰূপ:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tসক্ৰিয় পাৰ্শ্বৰূপ: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "উৎস সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "\tPorts:\n" +msgstr "\tপোর্ট:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tসক্রিয় পোর্ট: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "উৎস সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1877,20 +1792,20 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "মডিউল সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get module information: %s" +msgstr "মডিউল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1907,12 +1822,12 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "গ্ৰাহক সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get client information: %s" +msgstr "ক্লায়েন্ট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1927,12 +1842,12 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "কাৰ্ড সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get card information: %s" +msgstr "কার্ড সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1949,22 +1864,22 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tপাৰ্শ্বৰূপ:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tসক্ৰিয় পাৰ্শ্বৰূপ: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "চিঙ্ক নিবেশ তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "sink ইনপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2001,12 +1916,12 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "উৎস আউটপুট সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get source output information: %s" +msgstr "উৎস আউটপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2035,12 +1950,12 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "চানেকি সংক্ৰান্ত তথ্য প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ: %s\n" +msgid "Failed to get sample information: %s" +msgstr "স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2071,22 +1986,26 @@ msgstr "" "\tগুণ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "ব্যৰ্থতা: %s\n" +msgid "Failure: %s" +msgstr "ব্যর্থতা: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "চানেকি আপল'ড ব্যৰ্থ: %s\n" +msgid "Failed to upload sample: %s" +msgstr "স্যাম্পেল আপলোড করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "নথিপত্ৰৰ অসময়ত হোৱা সমাপ্তি\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "সম্পূর্ণ হওয়ার পূর্বে ফাইল সমাপ্ত হয়েছে" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT প্রাপ্ত হয়েছে, প্রস্থান করা হয়েছে।" + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2094,15 +2013,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2118,13 +2043,21 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2134,7 +2067,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2145,77 +2078,106 @@ msgstr "" "libpulseৰ সৈতে সঙ্কলন কৰা %s\n" "libpulse-ৰ সৈতে যুক্ত %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "তুলি লোৱাৰ উদ্দেশ্যে অনুগ্ৰহ কৰে একটি চানেকি নথিপত্ৰ উল্লেখ কৰুন\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "শব্দেৰ নথিপত্ৰ খুলিবলৈ ব্যৰ্থ ।\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "এটা %s স্ট্ৰিম চানেকি নিৰ্ধাৰণ '%s' ৰ সৈতে খোলা হৈছে ।\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "বাজানোৰ উদ্দেশ্যে একটি চানেকি নথিপত্ৰ উল্লেখ কৰা আৱশ্যক\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "আঁতৰাবলৈ এটা চানেকি নাম দিব লাগিব \n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "চিঙ্ক ইনপুট ইন্ডেক্স আৰু এটা চিঙ্ক নিৰ্ধাৰণ কৰা আৱশ্যক\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "লোড করার উদ্দেশ্যে অনুগ্রহ করে একটি স্যাম্পেল ফাইল উল্লেখ করুন" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "উৎস আউটপুট ইন্ডেক্স আৰু একটি উৎস নিৰ্ধাৰণ কৰা আৱশ্যক\n" +msgid "Failed to open sound file." +msgstr "শব্দের ফাইল খুলতে ব্যর্থ।" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "মডিউলৰ নাম আৰু তৰ্ক নিৰ্ধাৰণ কৰা আৱশ্যক\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "সতর্কবার্তা: ফাইল থেকে স্যাম্পেলের নির্ধারিত মাপ নির্মাণ করতে ব্যর্থ।" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "মডিউল ইন্ডেক্স নিৰ্ধাৰণ কৰা আৱশ্যক\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "বাজানোর উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "অপসারণের উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "সিংক ইনপুট ইন্ডেক্স ও একটি সিংক নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "সোর্স আউটপুট ইন্ডেক্স ও একটি সোর্স নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "মডিউলের নাম ও আর্গুমেন্ট নির্ধারণ করা আবশ্যক।" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "মডিউল ইন্ডেক্স নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "একাধিক চিঙ্ক নিৰ্ধাৰণ কৰা যাবে না । বুলিয়েন মান নিৰ্ধাৰণ কৰা আৱশ্যক ।\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "একাধিক সিংক নির্ধারণ করা যাবে না। বুলিয়েন মান নির্ধারণ করা আবশ্যক।" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "একাধিক উৎস নিৰ্ধাৰণ কৰা যাবে না । বুলিয়েন মান নিৰ্ধাৰণ কৰা আৱশ্যক ।\n" +"value." +msgstr "একাধিক সোর্স নির্ধারণ করা যাবে না। বুলিয়েন মান নির্ধারণ করা আবশ্যক।" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "কাৰ্ডেৰ নাম/ইন্ডেক্স আৰু একটি পাৰ্শ্বৰূপৰ নাম উল্লেখ কৰা আৱশ্যক\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "কার্ডের নাম/ইন্ডেক্স ও একটি প্রোফাইলের নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "কাৰ্ডেৰ নাম/ইন্ডেক্স আৰু একটি পাৰ্শ্বৰূপৰ নাম উল্লেখ কৰা আৱশ্যক\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "sink-র নাম/ইন্ডেক্স ও একটি পোর্টের নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "কাৰ্ডেৰ নাম/ইন্ডেক্স আৰু একটি পাৰ্শ্বৰূপৰ নাম উল্লেখ কৰা আৱশ্যক\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "উৎসের নাম/ইন্ডেক্স ও একটি পোর্টে নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "সঞ্চালনৰ বাবে আদেশ নিৰ্ধাৰিত নহয় ।\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "sink-র নাম/ইন্ডেক্স ও একটি পোর্টের নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() ব্যৰ্থ: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "অবৈধ শব্দের মাত্রা নির্ধারিত" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "উৎসের নাম/ইন্ডেক্স ও একটি শব্দের মাত্রা উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "সিংক ইনপুট ইন্ডেক্স ও শব্দের মাত্রা নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "সিংক ইনপুট ইন্ডেক্স বৈধ নয়" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "sink-র নাম/ইন্ডেক্স ও একটি নিঃশব্দতার বুলিয়ান উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "উৎসের নাম/ইন্ডেক্স ও নিঃশব্দতার বুলিয়ান উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "সিংক ইনপুট ইন্ডেক্স ও নিঃশব্দতার বুলিয়ান নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "অবৈধ সিংক ইনপুট ইন্ডেক্স নির্ধারিত" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "কোনো বৈধ কমান্ড নির্ধারিত হয়নি।" #: ../src/utils/pax11publish.c:61 #, c-format @@ -2296,48 +2258,48 @@ msgstr "কুকি সংক্ৰান্ত তথ্য তুলিবল msgid "Not yet implemented.\n" msgstr "এতিয়াও বাস্তবায়িত নহয় ।\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "PulseAudio ডেমন চলছে না অথবা সেশানের ডেমন রূপে চলছে না।" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio ডেমন kill কৰিবলৈ ব্যৰ্থ ।" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "ডেমনৰ পৰা কোনো প্ৰতিক্ৰিয়া পোৱা নাযায় ।" -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn লক প্ৰয়োগ কৰিবলৈ ব্যৰ্থ ।" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2353,7 +2315,7 @@ msgstr "" "POLLOUT নিৰ্ধাৰিত হোৱাৰি পিছতো আমি উথিলো -- কিন্তু তাৰ পিছৰ snd_pcm_avail() এ ০ " "দিলে বা অন্য এটা মান < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2370,129 +2332,22 @@ msgstr "" "দিলে বা অন্য এটা মান < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "বন্ধ" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "High Fidelity Playback (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "হাই-ফিডেলিটি ক্যাপচার (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telephony Duplex (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio ধ্বনি সেৱক" - -#~ msgid "Analog Mono" -#~ msgstr "Analog Mono" - -#~ msgid "Analog Stereo" -#~ msgstr "Analog Stereo" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "Digital Stereo (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "Digital Stereo (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "Analog ছাৰাউণ্ড 4.০" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "Digital ছাৰাউণ্ড 4.০ (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "Analog ছাৰাউণ্ড 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "Analog ছাৰাউণ্ড 5.০" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "Analog ছাৰাউণ্ড 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "Digital ছাৰাউণ্ড 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "Analog ছাৰাউণ্ড 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "নিৰ্গম %s + নিবেশ %s" - -#~ msgid "Output %s" -#~ msgstr "নিৰ্গম %s" - -#~ msgid "Input %s" -#~ msgstr "নিবেশ %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "সফলতাৰে স্ট্ৰিম নিৰ্মিত হৈছে\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "স্ট্ৰিমৰ ত্ৰুটি: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "সংযোগ স্থাপিত ।\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "libpulse ৰ সৈতে সঙ্কলন কৰা হৈছে %s\n" -#~ "libpulse ৰ সৈতে যুক্ত %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "অবৈধ চেনেল মেপ\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "'%s' নথিপত্ৰ খুলিবলৈ ব্যৰ্থ\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "চেনেল মেপ আৰু নথিপত্ৰ অমিল ।\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "চানেকি spec '%s' প্ৰয়োগ কৰা হৈছে\n" diff --git a/po/bn_IN.po b/po/bn_IN.po index 9214f16c9..5a634159d 100644 --- a/po/bn_IN.po +++ b/po/bn_IN.po @@ -1,23 +1,29 @@ -# translation of pulseaudio.master-tx.po to Bengali INDIA +# translation of pulseaudio.master-tx.bn_IN.po to Bengali INDIA # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Runa Bhattacharjee , 2009. +# Runa Bhattacharjee , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx\n" +"Project-Id-Version: pulseaudio.master-tx.bn_IN\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-08 16:21+0530\n" -"Last-Translator: Runa Bhattacharjee \n" -"Language-Team: Bengali INDIA \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 17:08+0530\n" +"Last-Translator: Runa Bhattacharjee \n" +"Language-Team: Bengali INDIA \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -29,7 +35,7 @@ msgstr "" "সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA " "ডিভেলপরদের সূচিত করুন।" -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -41,7 +47,7 @@ msgstr "" "সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA " "ডিভেলপরদের সূচিত করুন।" -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -53,9 +59,18 @@ msgstr "" "সম্ভবত এটি ALSA ড্রাইভার '%s'-র একটি বাগ। অনুগ্রহ করে এই সমস্যা সম্বন্ধে ALSA " "ডিভেলপরদের সূচিত করুন।" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" +"সর্বদা অন্তত একটি sink লোড করে রাখা হবে, প্রয়োজনে null sink ব্যবহার করা হবে" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "ডামি আউটপুট" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "ভার্চুয়াল LADSPA sink" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -65,12 +80,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "NULL sink-র সময় নির্ধারণ" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "Null ফলাফল" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "অভ্যন্তরীণ অডিও" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "মোডেম" @@ -86,373 +114,251 @@ msgstr "নতুন dl লোডার বরাদ্দ করতে ব্ msgid "Failed to add bind-now-loader." msgstr "bind-now-loader যোগ করতে ব্যর্থ।" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "সিস্টেম বাসের সাথে সংযোগ করতে ব্যর্থ: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID থেকে কলারের তথ্য প্রাপ্ত করতে ব্যর্থ: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "কলার অবজেক্টের UID নির্ধারণ করতে ব্যর্থ।" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK সেশান প্রাপ্ত করতে ব্যর্থ।" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "সেশান অবজেক্টের UID নির্ধারণ করতে ব্যর্থ।" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction বরাদ্দ করতে ব্যর্থ।" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id নির্ধারণ করতে ব্যর্থ" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext বরাদ্দ করতে ব্যর্থ।" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext আরম্ভ করতে ব্যর্থ: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "কলার অনুমোদিত কি না তা নির্ধারণ করা সম্ভব নয়: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "auth প্রাপ্ত করতে ব্যর্থ: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit থেকে '%s' প্রাপ্ত হয়েছে" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "%s সিগন্যাল প্রাপ্ত হয়েছে।" -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "প্রস্থান করা হচ্ছে।" -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "'%s' ব্যবহারকারী সন্ধান করতে ব্যর্থ।" -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "দল '%s' সন্ধান করতে ব্যর্থ।" -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "ব্যবহারকারী '%s' (UID %lu) ও দল '%s' (GID %lu) প্রাপ্ত হয়েছে।" -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "'%s' ব্যবহারকারীর ও '%s' দলের GID-র মধ্যে গরমিল।" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "" "'%s' ব্যবহারকারী ব্যক্তিগত ডিরেক্টরি রূপে '%s' ধার্য করা হয়নি, অগ্রাহ্য করা হবে।" -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' নির্মাণ করতে ব্যর্থ: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "দলের তালিকা পরিবর্তন করতে ব্যর্থ: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID পরিবর্তন করতে ব্যর্থ: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID পরিবর্তন করতে ব্যর্থ: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "root-র অধিকার সাফল্যের সাথে বর্জন করা হয়েছে।" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "এই প্ল্যাটফর্মে, সিস্টেমব্যাপী মোড সমর্থিত নয়।" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) বিফল: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "কমান্ড-লাইন পার্স করতে ব্যর্থ।" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "অধিক গুরুত্বসহ শিডিউলিংয়ের সুবিধা উপলব্ধকারী '%s' দলে আমরা উপস্থিত।" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "রিয়েল-টাইম শিডিউলিংয়ের সুবিধা উপলব্ধকারী '%s' দলে আমরা উপস্থিত।" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit-র পক্ষ থেকে acquire-high-priority অধিকার প্রাপ্ত হয়েছে।" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit-র পক্ষ থেকে acquire-high-priority অধিকার প্রত্যাখ্যাত হয়েছে।" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit-র পক্ষ থেকে acquire-real-priority অধিকার প্রাপ্ত হয়েছে।" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit-র পক্ষ থেকে acquire-real-priority অধিকার প্রত্যাখ্যাত হয়েছে।" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID root কল করা হয়েছে এবং কনফিগারেশনের মধ্যে রিয়েল-টাইম এবং/অথবা উচ্চ-গুরুত্বের " -"শিডিউলিংয়ের অনুরোধ জানানো হয়েছে, কিন্তু পর্যাপ্ত অনুমতি উপস্থিত নেই:\n" -"'%s' দলে অন্তর্ভুক্ত নয়, PolicyKit দ্বারা পর্যাপ্ত অনুমতি প্রদান করা হয়নি এবং " -"RLIMIT_NICE/RLIMIT_RTPRIO রিসোর্সের সীমা বৃদ্ধির করতে হবে।\n" -"রিয়েল-টাইম/উচ্চ-গুরুত্বের শিডিউলিং সক্রিয় করার জন্য অনুগ্রহ করে প্রযোজ্য PolicyKit " -"অধিকার প্রাপ্ত করুন, অথবা '%s' দলের সদস্য হন, অথবা সংশ্লিষ্ট ব্যবহারকারীর জন্য " -"RLIMIT_NICE/RLIMIT_RTPRIO রিসোর্সের সীমা বৃদ্ধি করুন।" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"কনফিগারেশন দ্বারা high-priority শিডিইলিংয়ের সুবিধা উপলব্ধ হলেও নিয়মনীতি দ্বারা " -"তা অনুমোদিত নয়।" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO সাফল্যের সাথে বৃদ্ধি করা হয়েছে" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO বিফল: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE বর্জন করা হচ্ছে" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"কনফিগারেশন দ্বারা real-time শিডিইলিংয়ের সুবিধা উপলব্ধ হলেও নিয়মনীতি দ্বারা তা " -"অনুমোদিত নয়।" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "ডেমন চলছে না" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "PID %u রূপে ডেমন চলছে" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "ডেমন kill করতে ব্যর্থ: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "" "root পরিচয়ে এই প্রোগ্রামটি সঞ্চালিত হওয়া উচিত নয় (যদি না --system উল্লিখিত হয়)।" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Root-র অধিকার আবশ্যক।" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "সিস্টেম ইনস্ট্যান্সের ক্ষেত্রে --start সমর্থিত নয়।" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "সিস্টেম মোডে চলছে, কিন্তু --disallow-exit নির্ধারিত হয়নি!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "সিস্টেম মোডে চলছে, কিন্তু --disallow-module-loading নির্ধারিত হয়নি!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "সিস্টেম মোডে চলছে, SHM মোড বলপূর্বক নিষ্ক্রিয় করা হচ্ছে!" # http://linux.die.net/man/1/pulseaudio এখানে রেফারেন্স পাওয়া যাবে -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "সিস্টেম মোডে চলছে, কর্মহীন অবস্থার জন্য ধার্য সময়সীমা পূর্তী পরে প্রস্থানের ব্যবস্থা " "বলপূর্বক নিষ্ক্রিয় করা হচ্ছে!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio প্রাপ্ত করতে ব্যর্থ।" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "পাইপ বিফল: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() বিফল: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() বিফল: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "ডেমন আরম্ভ করতে বিফল।" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "সাফল্যের সাথে ডেমন আরম্ভ করা হয়েছে।" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "এটি PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "কম্পাইলেশনের হোস্ট: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "কম্পাইলশনের CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "চিহ্নিত হোস্টে চলছে: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPU পাওয়া গিয়েছে।" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "পেজের মাপ %lu বাইট" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind সমর্থন সহ কম্পাইল করা হয়েছে: হ্যাঁ" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind সমর্থন সহ কম্পাইল করা হয়েছে: না" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind মোডে চলছে: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "সর্বাপেক্ষ উত্তম বিল্ড: হ্যাঁ" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "সর্বাপেক্ষ উত্তম বিল্ড: না" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG ব্যাখ্যা করা হয়েছে, সকল অ্যাসার্ট নিষ্ক্রিয় করা হয়েছে।" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH ব্যাখ্যা করা হয়েছে, শুধুমাত্র ফাস্ট পাথ অ্যাসার্ট নিষ্ক্রিয় করা হয়েছে।" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "সকল অ্যাসার্ট সক্রিয় করা হয়েছে।" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "মেশিন ID প্রাপ্ত করতে ব্যর্থ" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "মেশিন ID হল %s।" -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "মেশিন ID হল %s।" +msgstr "সেশান ID হল %s।" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "রান-টাইম ডিরেক্টরি %s ব্যবহার করা হচ্ছে।" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "অবস্থাসূচক ডিরেক্টরি %s ব্যবহার করা হচ্ছে।" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "মডিউল ডিরেক্টরি %s ব্যবহার করা হচ্ছে।" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "সিস্টেম মোডে চলছে: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -461,43 +367,47 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"আপনি সিস্টেম মোডে PA সঞ্চালিত করছেন এবং এটি না করাই বাঞ্ছনীয়।\n" +"এর ফলে প্রত্যাশামত ফলাফল না পাওয়ার সম্ভাবনা রয়েছে।\n" +"সিস্টেম মোডে ব্যবহারের সমস্যা সম্পর্কে জানতে হলে http://pulseaudio.org/wiki/" +"WhatIsWrongWithSystemMode দেখুন।" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() ব্যর্থ।" -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার উপলব্ধ রয়েছে! পরীক্ষা করে দেখুন!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার সহ Linux সক্রিয় করা বাঞ্ছনীয়!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() ব্যর্থ।" -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "ডেমন আরম্ভ করতে ব্যর্থ।" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" "লোড করা মডিউল বিনা ডেমন আরম্ভ করা হয়েছে এবং কোনো কর্ম সঞ্চালন করা সম্ভব নয়।" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "ডেমন আরম্ভ করা হয়েছে।" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "ডেমন বন্ধ করার প্রক্রিয়া আরম্ভ করা হয়েছে।" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "ডেমন বন্ধ করা হয়েছে।" @@ -756,79 +666,79 @@ msgstr "একবার লোড করা হবে: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "অবচিত করার সতর্কবার্তা: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "পাথ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] লগ টার্গেট '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] লগের স্তর '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] এই প্ল্যাটফর্মে rlimit সমর্থিত নয়।" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] স্যাম্পেলের বিন্যাস '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] স্যাম্পেলের মাত্রা '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] স্যাম্পেলের চ্যানেল '%s' বৈধ নয়" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] চ্যানেল ম্যাপ '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] অংশ সংখ্যা '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] nice স্তর '%s' বৈধ নয়।" -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "কনফিগারেশন ফাইল খুলতে ব্যর্থ: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -836,18 +746,14 @@ msgstr "" "ডিফল্ট চ্যানেল ম্যাপের মধ্যে অন্তর্ভুক্ত চ্যানেলের সংখ্যা ও চ্যানেলের ডিফল্ট সংখ্যার মধ্যে " "গরমিল।" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### চিহ্নিত কনফিগারেশন ফাইল থেকে পড়া হবে: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "root-র অধিকার বর্জন করা হচ্ছে।" - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "সাফল্যের সাথে CAP_SYS_NICE-এ কর্মক্ষমতা সীমিত করা হয়েছে।" +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "অধিকার বর্জন করা হচ্ছে।" #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -857,29 +763,7 @@ msgstr "PulseAudio শব্দ ব্যবস্থা" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio শব্দ ব্যবস্থা আরম্ভ করা হবে" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio ডেমনের জন্য উচ্চ-গুরুত্বের শিডিউলিং (Unix nice-র মাত্রা নঞর্থক)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio ডেমনের জন্য রিয়েল-টাইম শিডিউলিং" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"সিস্টেমের নিয়ম-নীতির কারণে PulseAudio দ্বারা উচ্চ-গুরুত্বের শিডিউলিং প্রয়োগ করা " -"সম্ভব হচ্ছে না।" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"সিস্টেমের নিয়ম-নীতির কারণে PulseAudio দ্বারা রিয়েল-টাইম শিডিউলিং প্রয়োগ করা " -"সম্ভব হচ্ছে না।" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "মোনো" @@ -1083,33 +967,33 @@ msgstr "উপরে পিছনে বাঁদিকে" msgid "Top Rear Right" msgstr "উপরে পিছনে ডানদিকে" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(অবৈধ)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "স্টিরিও" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "সারাউন্ড ৪.০" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "সারাউন্ড ৪.১" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "সারাউন্ড ৫.০" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "সারাউন্ড ৫.১" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "সারাউন্ড ৭.১" @@ -1213,27 +1097,35 @@ msgstr "অনুপস্থিত বাস্তবায়ন" msgid "Client forked" msgstr "ক্লায়েন্ট ফর্ক করা হয়েছে" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f গিবিবাইট" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f মিবিবাইট" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f কিবিবাইট" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u বাইট" @@ -1246,196 +1138,196 @@ msgstr "XOpenDisplay() ব্যর্থ" msgid "Failed to parse cookie data" msgstr "কুকির তথ্য পার্স করতে ব্যর্থ" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "কনফিগারেশন ফাইল '%s' খুলতে ব্যর্থ: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "কোনো কুকি লোড করা হয়নি। কুকি বিনা সংযোগের প্রচেষ্টা করা হচ্ছে।" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "অজানা এক্সটেনশন '%s'-র জন্য বার্তা প্রাপ্ত হয়েছে" # drain a stream = যখন স্ট্রিমের মধ্যে উপস্থিত সকল তথ্য আহরণ করা হয় ও স্ট্রিমটি সম্পূর্ণরূপে ফাঁকা হয়ে যায়। -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "স্ট্রিম ড্রেইন (অর্থাৎ ফাঁকা) করতে ব্যর্থ: %s\n" +msgid "Failed to drain stream: %s" +msgstr "স্ট্রিম ড্রেইন (অর্থাৎ ফাঁকা) করতে ব্যর্থ: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "প্লে-ব্যাক স্ট্রিম ফাঁকা করা হয়েছে।\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "প্লে-ব্যাক স্ট্রিম ফাঁকা করা হয়েছে।" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "সার্ভারের সাথে স্থাপিত সংযোগ ফাঁকা করা হচ্ছে।\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "সার্ভারের সাথে স্থাপিত সংযোগ ফাঁকা করা হচ্ছে।" -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() ব্যর্থ: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() ব্যর্থ: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() ব্যর্থ: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() ব্যর্থ: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "সাফল্যের সাথে স্ট্রিম নির্মিত হয়েছে।\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() ব্যর্থ: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() ব্যর্থ: %s" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "সাফল্যের সাথে স্ট্রিম নির্মিত হয়েছে।" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() ব্যর্থ: %s" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "স্যাম্পেলের spec '%s', ও চ্যানেল ম্যাপ '%s' ব্যবহার করা হচ্ছে।\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "বাফারের মাপ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "বাফারের মাপ: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Stream error: %s\n" -msgstr "ষ্ট্রিম সংক্রান্ত ত্রুটি: %s\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "স্যাম্পেলের spec '%s', ও চ্যানেল ম্যাপ '%s' ব্যবহার করা হচ্ছে।" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "স্ট্রিম ডিভাইস স্থগিত করা হয়েছে। %s \n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "ডিভাইস %s-র সাথে সংযোগ করা হয়েছে (%u, %ssuspended)।" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "স্ট্রিম ডিভাইস পুনরারম্ভ করা হয়েছে। %s \n" +msgid "Stream error: %s" +msgstr "ষ্ট্রিম সংক্রান্ত ত্রুটি: %s" + +#: ../src/utils/pacat.c:345 +#, c-format +msgid "Stream device suspended.%s" +msgstr "স্ট্রিম ডিভাইস স্থগিত করা হয়েছে। %s" + +#: ../src/utils/pacat.c:347 +#, c-format +msgid "Stream device resumed.%s" +msgstr "স্ট্রিম ডিভাইস পুনরারম্ভ করা হয়েছে। %s" # underrun = ধীর গতির স্ট্রিম -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream underrun.%s \n" -msgstr "ধীর গতির স্ট্রিম.%s \n" +msgid "Stream underrun.%s" +msgstr "ধীর গতির স্ট্রিম.%s" # overrun=the stream fills up the allocated buffer space and there is no more space for it -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream overrun.%s \n" -msgstr "স্ট্রিম মাত্রা অতিক্রম করেছে।%s \n" +msgid "Stream overrun.%s" +msgstr "স্ট্রিম মাত্রা অতিক্রম করেছে।%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream started.%s \n" -msgstr "স্ট্রিম আরম্ভ করা হয়েছে। %s \n" +msgid "Stream started.%s" +msgstr "স্ট্রিম আরম্ভ করা হয়েছে। %s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "%s ডিভাইসে স্ট্রিম স্থানান্তর করা হয়েছে (%u, %ssuspended)।%s \n" +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "%s ডিভাইসে স্ট্রিম স্থানান্তর করা হয়েছে (%u, %ssuspended)।%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "না " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "স্ট্রিম বাফারের অ্যাট্রিবিউট পরিবর্তিত হয়েছে। %s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "স্ট্রিম বাফারের অ্যাট্রিবিউট পরিবর্তিত হয়েছে। %s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "সংযোগ স্থাপিত হয়েছে।%s \n" +msgid "Connection established.%s" +msgstr "সংযোগ স্থাপিত হয়েছে।%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() ব্যর্থ: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() ব্যর্থ: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() ব্যর্থ: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() ব্যর্থ: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() ব্যর্থ: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() ব্যর্থ: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "সংযোগ বিফল: %s\n" +msgid "Connection failure: %s" +msgstr "সংযোগ বিফল: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "ফাইলের সমাপ্তি সনাক্ত হয়েছে। \n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "ফাইলের সমাপ্তি সনাক্ত হয়েছে।" -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() ব্যর্থ: %s\n" +msgid "write() failed: %s" +msgstr "write() ব্যর্থ: %s" -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" -msgstr "write() ব্যর্থ: %s\n" - -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "সিগন্যাল প্রাপ্ত হয়েছে, প্রস্থান করা হবে।\n" +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "সিগন্যাল প্রাপ্ত হয়েছে, প্রস্থান করা হবে।" # latency here = delay (technical term -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:571 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "লেটেন্সির পরিমাণ প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get latency: %s" +msgstr "লেটেন্সির পরিমাণ প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "সময়: %0.3f সেকেন্ড; লেটেন্সি: %0.0f usec. \r" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "সময়: %0.3f সেকেন্ড; লেটেন্সি: %0.0f usec।" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() ব্যর্থ: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() ব্যর্থ: %s" +# reverting this to english because the command line text gets messed up #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1495,49 +1387,59 @@ msgid "" msgstr "" "%s [options]\n" "\n" -" -h, --help এই সাহায্য বার্তা প্রদর্শন করা হবে\n" -" --version সংস্করণ প্রদর্শন করা হবে\n" +" -h, --help Show this help\n" +" --version Show version\n" "\n" -" -r, --record রেকর্ডিংয়ের জন্য সংযোগ স্থাপন করা হবে\n" -" -p, --playback প্লে-ব্যাকের জন্য সংযোগ স্থাপন করা হবে\n" +" -r, --record Create a connection for recording\n" +" -p, --playback Create a connection for playback\n" "\n" -" -v, --verbose ভার্বোস কর্ম সক্রিয় করা হবে\n" +" -v, --verbose Enable verbose operations\n" "\n" -" -s, --server=SERVER সংযোগ করার জন্য চিহ্নিত সার্ভারের নাম\n" -" -d, --device=DEVICE সংযোগ করার উদ্দেশ্যে চিহ্নিত সিংক/" -"সোর্সের নাম\n" -" -n, --client-name=NAME সার্ভারের মধ্যে এই ক্লায়েন্টের পরিচয়\n" -" --stream-name=NAME সার্ভারের মধ্যে এই স্ট্রিমের পরিচয়\n" -" --volume=VOLUME 0...65536 সীমার মধ্যে প্রারম্ভিক " -"(লিনিয়ার) আওয়াজ নির্ধারণ করুন\n" -" --rate=SAMPLERATE Hz অনুযায়ী নির্ধারিত ডিফল্ট স্যাম্পেলের " -"মাত্রা (ডিফল্ট মান 44100)\n" -" --format=SAMPLEFORMAT স্যাম্পেলের ধরন, সম্ভাব্য মান হল s16le, " +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -d, --device=DEVICE The name of the sink/source to " +"connect to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" +" --stream-name=NAME How to call this stream on the " +"server\n" +" --volume=VOLUME Specify the initial (linear) volume " +"in range 0...65536\n" +" --rate=SAMPLERATE The sample rate in Hz (defaults to " +"44100)\n" +" --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(ডিফল্ট মান s16ne)\n" -" --channels=CHANNELS চ্যানেলের সংখ্যা, মোনোর ক্ষেত্রে 1, " -"স্টিরিওর ক্ষেত্রে 2\n" -" (ডিফল্ট মান 2)\n" -" --channel-map=CHANNELMAP ডিফল্টের পরিবর্তে ব্যবহারযোগ্য চ্যানেলের " -"ম্যাপ\n" -" --fix-format যে সিংকের সাথে স্ট্রিম সংযোগ স্থাপন " -"করেছে, সেটি থেকে স্যাম্পেলের\n" -" বিন্যাস প্রাপ্ত করুন।\n" -" --fix-rate যে সিংকের সাথে স্ট্রিম সংযোগ স্থাপন " -"করেছে, সেটি থেকে স্যাম্পলিংয়ের\n" -" হার প্রাপ্ত করুন।\n" -" --fix-channels যে সিংকের সাথে স্ট্রিম সংযোগ স্থাপন " -"করেছে, সেটি থেকে চ্যানেলের সংখ্যা ও\n" -" চ্যানেলের নাম প্রাপ্ত করুন।\n" -" --no-remix চ্যানোল আপ-মিক্স অথবা ডাউন-মিক্স করা " -"হবে না।\n" -" --no-remap নামের পরিবর্তে ইন্ডেক্স অনুযায়ী চ্যানেল " -"ম্যাপ করা হয়।\n" -" --latency=BYTES বাইট অনুযায়ী নির্ধারিত লেটেন্সির অনুরোধ " -"জানান।\n" -" --process-time=BYTES বাইট অনুযায়ী, প্রতিটি অনুরোধের জন্য " -"নির্ধারিত প্রসেস সময় অনুরোধ জানিয়ে দিন।\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" +" --channels=CHANNELS The number of channels, 1 for mono, " +"2 for stereo\n" +" (defaults to 2)\n" +" --channel-map=CHANNELMAP Channel map to use instead of the " +"default\n" +" --fix-format Take the sample format from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-rate Take the sampling rate from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-channels Take the number of channels and the " +"channel map\n" +" from the sink the stream is being " +"connected to.\n" +" --no-remix Don't upmix or downmix channels.\n" +" --no-remap Map channels by index instead of " +"name.\n" +" --latency=BYTES Request the specified latency in " +"bytes.\n" +" --process-time=BYTES Request the specified process time " +"per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1550,136 +1452,131 @@ msgstr "" "libpulse সহযোগে কম্পাইল করা হয়েছে %s\n" "libpulse-র সাথে যুক্ত %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "চ্যানেল ম্যাপ '%s' বৈধ নয়\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।" - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "চ্যানেল ম্যাপ '%s' বৈধ নয়\n" +msgid "Invalid client name '%s'" +msgstr "ক্লায়েন্টের নাম '%s' বৈধ নয়" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "লেটেন্সির জন্য নির্ধারিত বৈশিষ্ট্য '%s' বৈধ নয়\n" +msgid "Invalid stream name '%s'" +msgstr "স্ট্রিমের নাম '%s' বৈধ নয়।" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "প্রসেসের সময়ের বৈশিষ্ট্য '%s' বৈধ নয়\n" +msgid "Invalid channel map '%s'" +msgstr "চ্যানেল ম্যাপ '%s' বৈধ নয়" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।" +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "লেটেন্সির জন্য নির্ধারিত বৈশিষ্ট্য '%s' বৈধ নয়" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "প্রসেসের সময়ের বৈশিষ্ট্য '%s' বৈধ নয়" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "বৈশিষ্ট্য '%s' বৈধ নয়।" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "ফাইলের অজানা বিন্যাস %s।" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "অবৈধ স্যাম্পেল নির্ধারিত\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "অবৈধ স্যাম্পেল নির্ধারিত" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "অত্যাধিক আর্গুমেন্ট।\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "অত্যাধিক আর্গুমেন্ট।" -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "স্যাম্পেলের মান নির্ধারণের ফাইল নির্মাণ করতে ব্যর্থ" -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "শব্দের ফাইল খুলতে ব্যর্থ।\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "শব্দের ফাইল খুলতে ব্যর্থ।" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"সতর্কবার্তা: চিহ্নিত স্যাম্পেল নির্ধারণের ফাইলটির তথ্য, এই ফাইলের থেকে উপলব্ধ তথ্য " +"দ্বারা প্রতিস্থাপিত হবে।" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ফাইল থেকে স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ।" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "চ্যানেলের ম্যাপ ও স্যাম্পেলের মাপে গরমিল\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "সতর্কবার্তা: ফাইল থেকে চ্যানেলের ম্যাপ নির্ধারণ করতে ব্যর্থ।" + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "চ্যানেলের ম্যাপ ও স্যাম্পেলের নির্ধারিত মানে গরমিল" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "সতর্কবার্তা: ফাইলের মধ্যে চ্যানেলের ম্যাপ লিখতে ব্যর্থ।" + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"একটি %s স্ট্রিম খোলা হচ্ছে। এটির জন্য '%s'-র স্যাম্পেলের নির্ধারিত মান ও '%s' " +"চ্যানেলের ম্যাপ প্রয়োগ করা হবে।" #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "একটি %s স্ট্রিম '%s' স্যাম্পেল বৈশিষ্ট্য সহ খোলা হচ্ছে।\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "রেকর্ড করা হচ্ছে" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "প্লে-ব্যাক" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() ব্যর্থ।" + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() ব্যর্থ।" + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() ব্যর্থ।" + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() ব্যর্থ।\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() ব্যর্থ।\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() ব্যর্থ।\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() ব্যর্থ: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() ব্যর্থ।\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() ব্যর্থ।" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() ব্যর্থ।\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() ব্যর্থ।" #: ../src/utils/pasuspender.c:81 #, c-format @@ -1706,7 +1603,12 @@ msgstr "পুনরারম্ভ করতে ব্যর্থ: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "সতর্কবার্তা: শব্দের সার্ভারটি স্থানীয় নয় ও স্থগিত করা হচ্ছে না।\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "সংযোগ বিফল: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT প্রাপ্ত হয়েছে, প্রস্থান করা হয়েছে।\n" @@ -1746,33 +1648,48 @@ msgstr "" "libpulse সহযোগে কম্পাইল করা হয়েছে %s\n" "libpulse-র সাথে যুক্ত %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "পরিসংখ্যান: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() ব্যর্থ।\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() ব্যর্থ।\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() ব্যর্থ।\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "পরিসংখ্যান প্রাপ্ত করতে ব্যর্থ: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "বর্তমানে ব্যবহৃত: %u ব্লকের মধ্যে উপস্থিত সর্বমোট %s বাইট।\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "সম্পূর্ণ কর্মকালের জন্য বরাদ্দ করা হয়েছে: %u ব্লকের মধ্যে উপস্থিত সর্বমোট %s বাইট।\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "স্যাম্পেল ক্যাশের মাপ: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "সার্ভার সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get server information: %s" +msgstr "সার্ভার সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1795,12 +1712,12 @@ msgstr "" "ডিফল্ট সোর্স: %s\n" "কুকি: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "সিংক সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get sink information: %s" +msgstr "sink সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1839,22 +1756,22 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tপ্রোফাইল:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tসক্রিয় প্রোফাইল: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "সোর্স সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "\tPorts:\n" +msgstr "\tপোর্ট:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tসক্রিয় পোর্ট: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "উৎস সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1893,20 +1810,20 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "মডিউল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get module information: %s" +msgstr "মডিউল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1923,12 +1840,12 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "ক্লায়েন্ট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get client information: %s" +msgstr "ক্লায়েন্ট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1943,12 +1860,12 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "কার্ড সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get card information: %s" +msgstr "কার্ড সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1965,22 +1882,22 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tপ্রোফাইল:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tসক্রিয় প্রোফাইল: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "সিংক ইনপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "sink ইনপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2017,12 +1934,12 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "সোর্স আউটপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get source output information: %s" +msgstr "উৎস আউটপুট সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2051,13 +1968,13 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s\n" +msgid "Failed to get sample information: %s" +msgstr "স্যাম্পেল সংক্রান্ত তথ্য প্রাপ্ত করতে ব্যর্থ: %s" # Lazy = low quality sample -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2088,22 +2005,27 @@ msgstr "" "\tবিবিধ বৈশিষ্ট্য:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "ব্যর্থতা: %s\n" +msgid "Failure: %s" +msgstr "ব্যর্থতা: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "স্যাম্পেল আপলোড করতে ব্যর্থ: %s\n" +msgid "Failed to upload sample: %s" +msgstr "স্যাম্পেল আপলোড করতে ব্যর্থ: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "সম্পূর্ণ হওয়ার পূর্বে ফাইল সমাপ্ত হয়েছে\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "সম্পূর্ণ হওয়ার পূর্বে ফাইল সমাপ্ত হয়েছে" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT প্রাপ্ত হয়েছে, প্রস্থান করা হয়েছে।" + +# reverting to english because the command line output gets messed up +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2111,15 +2033,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2135,21 +2063,31 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" -" -h, --help এই সাহায্য বার্তা প্রদর্শন করা হবে\n" -" --version সংস্করণ সংখ্যা প্রদর্শন করা হবে\n" +" -h, --help Show this help\n" +" --version Show version\n" "\n" -" -s, --server=SERVER সংযোগ করার উদ্দেশ্যে চিহ্নিত সার্ভার\n" -" -n, --client-name=NAME সার্ভারের মধ্যে এই ক্লায়েন্টের পরিচয়\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2160,77 +2098,106 @@ msgstr "" "libpulse সহযোগে কম্পাইল করা %s\n" "libpulse-র সাথে যুক্ত %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "লোড করার উদ্দেশ্যে অনুগ্রহ করে একটি স্যাম্পেল ফাইল উল্লেখ করুন\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "শব্দের ফাইল খুলতে ব্যর্থ।\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "একটি %s স্ট্রিম '%s' স্যাম্পেল বৈশিষ্ট্য সহ খোলা হচ্ছে।\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "বাজানোর উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "অপসারণের উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "সিংক ইনপুট ইন্ডেক্স ও একটি সিংক নির্ধারণ করা আবশ্যক\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "লোড করার উদ্দেশ্যে অনুগ্রহ করে একটি স্যাম্পেল ফাইল উল্লেখ করুন" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "সোর্স আউটপুট ইন্ডেক্স ও একটি সোর্স নির্ধারণ করা আবশ্যক\n" +msgid "Failed to open sound file." +msgstr "শব্দের ফাইল খুলতে ব্যর্থ।" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "মডিউলের নাম ও আর্গুমেন্ট নির্ধারণ করা আবশ্যক\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "সতর্কবার্তা: ফাইল থেকে স্যাম্পেলের নির্ধারিত মাপ নির্মাণ করতে ব্যর্থ।" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "মডিউল ইন্ডেক্স নির্ধারণ করা আবশ্যক\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "বাজানোর উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "অপসারণের উদ্দেশ্যে একটি স্যাম্পেল ফাইল উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "সিংক ইনপুট ইন্ডেক্স ও একটি সিংক নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "সোর্স আউটপুট ইন্ডেক্স ও একটি সোর্স নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "মডিউলের নাম ও আর্গুমেন্ট নির্ধারণ করা আবশ্যক।" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "মডিউল ইন্ডেক্স নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "একাধিক সিংক নির্ধারণ করা যাবে না। বুলিয়েন মান নির্ধারণ করা আবশ্যক।\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "একাধিক সিংক নির্ধারণ করা যাবে না। বুলিয়েন মান নির্ধারণ করা আবশ্যক।" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "একাধিক সোর্স নির্ধারণ করা যাবে না। বুলিয়েন মান নির্ধারণ করা আবশ্যক।\n" +"value." +msgstr "একাধিক সোর্স নির্ধারণ করা যাবে না। বুলিয়েন মান নির্ধারণ করা আবশ্যক।" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "কার্ডের নাম/ইন্ডেক্স ও একটি প্রোফাইলের নাম উল্লেখ করা আবশ্যক\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "কার্ডের নাম/ইন্ডেক্স ও একটি প্রোফাইলের নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "কার্ডের নাম/ইন্ডেক্স ও একটি প্রোফাইলের নাম উল্লেখ করা আবশ্যক\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "sink-র নাম/ইন্ডেক্স ও একটি পোর্টের নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "কার্ডের নাম/ইন্ডেক্স ও একটি প্রোফাইলের নাম উল্লেখ করা আবশ্যক\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "উৎসের নাম/ইন্ডেক্স ও একটি পোর্টে নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "কোনো কমান্ড নির্ধারিত হয়নি।\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "sink-র নাম/ইন্ডেক্স ও একটি পোর্টের নাম উল্লেখ করা আবশ্যক" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() ব্যর্থ: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "অবৈধ শব্দের মাত্রা নির্ধারিত" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "উৎসের নাম/ইন্ডেক্স ও একটি শব্দের মাত্রা উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "সিংক ইনপুট ইন্ডেক্স ও শব্দের মাত্রা নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "সিংক ইনপুট ইন্ডেক্স বৈধ নয়" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "sink-র নাম/ইন্ডেক্স ও একটি নিঃশব্দতার বুলিয়ান উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "উৎসের নাম/ইন্ডেক্স ও নিঃশব্দতার বুলিয়ান উল্লেখ করা আবশ্যক" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "সিংক ইনপুট ইন্ডেক্স ও নিঃশব্দতার বুলিয়ান নির্ধারণ করা আবশ্যক" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "অবৈধ সিংক ইনপুট ইন্ডেক্স নির্ধারিত" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "কোনো বৈধ কমান্ড নির্ধারিত হয়নি।" #: ../src/utils/pax11publish.c:61 #, c-format @@ -2311,48 +2278,48 @@ msgstr "কুকি সংক্রান্ত তথ্য লোড কর msgid "Not yet implemented.\n" msgstr "এখনো বাস্তবায়িত হয়নি।\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "PulseAudio ডেমন চলছে না অথবা সেশানের ডেমন রূপে চলছে না।" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio ডেমন kill করতে ব্যর্থ।" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "ডেমন থেকে কোনো প্রতিক্রিয়া পাওয়া যাচ্ছে না।" -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn লক প্রয়োগ করতে ব্যর্থ।" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2369,7 +2336,7 @@ msgstr "" "POLLOUT set দ্বারা চেতাবনী সৃষ্টি হয়েছে -- পরবর্তী snd_pcm_avail() থেকে 0 অথবা < " "min_avail-র থেকে কম অন্য একটি মান প্রাপ্ত হয়েছে।" -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2387,127 +2354,22 @@ msgstr "" "min_avail-র থেকে কম অন্য একটি মান প্রাপ্ত হয়েছে।" #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "বন্ধ" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "হাই-ফিডেলিটি প্লে-ব্যাক (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "হাই-ফিডেলিটি ক্যাপচার (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "টেলিফোনি ডুপ্লে (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio শব্দের সার্ভার" - -#~ msgid "Analog Mono" -#~ msgstr "অ্যানালগ মোনো" - -#~ msgid "Analog Stereo" -#~ msgstr "অ্যানালগ স্টিরিও" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "ডিজিট্যাল স্টিরিও (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "ডিজিট্যাল স্টিরিও (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "অ্যানালগ স্টিরিও ৪.০" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "ডিজিট্যাল সারাউন্ড ৪.০ (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "অ্যানালগ সারাউন্ড ৪.১" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "অ্যানালগ সারাউন্ড ৫.০" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "অ্যানালগ সারাউন্ড ৫.১" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "ডিজিট্যাল সারাউন্ড ৫.১ (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "অ্যানালগ সারাউন্ড ৭.১" - -#~ msgid "Output %s + Input %s" -#~ msgstr "আউটপুট %s + ইনপুট %s" - -#~ msgid "Output %s" -#~ msgstr "আউটপুট %s" - -#~ msgid "Input %s" -#~ msgstr "ইনপুট %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "সাফল্যের সাথে স্ট্রিম নির্মিত হয়েছে\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "স্ট্রিম সংক্রান্ত ত্রুটি: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "সংযোগ স্থাপিত।\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help এই সাহায্য বার্তা প্রদর্শন করা হবে\n" -#~ " --version সংস্করণ সংখ্যা প্রদর্শন করা হবে\n" -#~ "\n" -#~ " -v, --verbose ভার্বোস কর্ম সক্রিয় করা হবে\n" -#~ "\n" -#~ " -s, --server=SERVER সংযোগ করার উদ্দেশ্যে চিহ্নিত " -#~ "সার্ভারের নাম\n" -#~ " -d, --device=DEVICE সংযোগ করার উদ্দেশ্যে চিহ্নিত সিংকের " -#~ "নাম\n" -#~ " -n, --client-name=NAME সার্ভারের মধ্যে এই ক্লায়েন্টের নাম\n" -#~ " --stream-name=NAME সার্ভারের মধ্যে এই স্ট্রিমের নাম\n" -#~ " --volume=VOLUME 0...65536 সীমার মধ্যে প্রারম্ভিক " -#~ "(লিনিয়ার) আওয়াজ নির্ধারণ করুন\n" -#~ " --channel-map=CHANNELMAP ব্যবহারযোগ্য চ্যানেল ম্যাপ নির্ধারণ\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "libpulse সহযোগে কম্পাইল করা হয়েছে %s\n" -#~ "libpulse-র সাথে যুক্ত %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "অবৈধ চ্যানেল ম্যাপ\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "ফাইল '%s' খুলতে ব্যর্থ\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "চ্যানেল ম্যাপ ও ফাইলে গরমিল।\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "স্যাম্পেল spec '%s' প্রয়োগ করা হচ্ছে\n" diff --git a/po/ca.po b/po/ca.po index 878e22937..ff8113cdf 100644 --- a/po/ca.po +++ b/po/ca.po @@ -5,6 +5,7 @@ # Xavier Conde Rueda , 2008. # Agustí Grau , 2009. # Judith Pintó Subirada +# Josep Torné Llavall , 2009 # # This file is translated according to the glossary and style guide of # Softcatalà. If you plan to modify this file, please read first the page @@ -23,15 +24,20 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-06-10 18:47+0200\n" -"Last-Translator: Judith Pintó Subirada \n" -"Language-Team: \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-05 11:40+0100\n" +"Last-Translator: Tomàs Bigordà \n" +"Language-Team: Catalan \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -44,7 +50,7 @@ msgstr "" "Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu " "d'aquest incident als desenvolupadors de l'ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -57,7 +63,7 @@ msgstr "" "Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu " "d'aquest incident als desenvolupadors de l'ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -70,9 +76,17 @@ msgstr "" "Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu " "d'aquest incident als desenvolupadors de l'ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Conducte virtual LADSPA" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -82,12 +96,26 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= channels= channel_map= " +"pulgin= label= " +"control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Sortida %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Audio intern" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Mòdem" @@ -103,223 +131,92 @@ msgstr "No s'ha pogut allotjar el nou carregador dl." msgid "Failed to add bind-now-loader." msgstr "No s'ha pogut afegir bind-now-loader." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "No s'ha pogut connectar al bus del sistema: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "No s'ha pogut obtenir una crida del PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "No s'ha pogut especificar l'UID en l'objecte crida." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "No s'ha pogut obtenir la sessió CK." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "No s'ha pogut definir l'UID en l'objecte sessió." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "No s'ha pogut assignar PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "No s'ha pogut definir action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "No s'ha pogut assignar PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "No s'ha pogut inicialitzar PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "No s'ha pogut determinar si la crida està autoritzada: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "No s'ha pogut obtenir l'autorització: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit ha respós '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "S'ha obtingut la senyal %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "S'està sortint." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "No s'ha trobat l'usuari '%s'." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "No s'ha trobat el grup '%s'." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "S'han trobat l'usuari '%s' (UID %lu) i el grup '%s' (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "El GID de l'usuari '%s' i del grup '%s' no coincideixen." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "El directori arrel de l'usuari '%s' no és '%s', s'ignorarà." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "No s'ha pogut crear '%s': %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" -msgstr "No s'ha pogut canviar la llista del grup :%s" +msgstr "No s'ha pogut canviar la llista del grup: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "No s'ha pogut canviar el GID: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "No s'ha pogut canviar l'UID: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "S'han alliberat els permisos de root." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "El mode de sistema global no és compatible amb aquesta plataforma." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "S'ha produït un error en setrlimit(%s, (%u, %u)): %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "No s'ha pogut interpretar la línia d'ordres." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Aquesta aplicació està en el grup '%s', s'està establint la prioritat en " -"temps real." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit ha permés el privilegi acquire-high-priority." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit ha rebutjat el privilegi acquire-high-priority." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit ha permés el privilegi acquire-real-time." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit ha rebutjat el privilegi acquire-real-time." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"S'ha demanat SUID de root i una planificació de temps real i/o d'alta " -"prioritat. De totes formes, falten els privilegis necessaris:\n" -"No es pertany al grup '%s'. PolicyKit no atorga els privilegis demanats i no " -"s'ha incrementat els límits de recursos RLIMIT_NICE/RLIMIT_RTPRIO.\n" -"Per habilitar la planificació en temps real o d'alta prioritat, heu " -"d'obtenir els privilegis de PolicyKits adequats, o pertànyer al grup '%s', o " -"incrementar els límits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a aquest " -"usuari." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"La prioritat alta està habilitada en la configuració però no està permesa " -"per la política." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit." - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "S'abandona CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"La prioritat de temps real està habilitada en la configuració però no està " -"permesa per la política." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "El dimoni no s'està executant" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "El dimoni s'està executant amb PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "S'ha produït un error en matar el dimoni: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -327,158 +224,163 @@ msgstr "" "No és necessari executar aquesta aplicació com a root (excepte si " "s'especifica --system)" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Es requereixen privilegis de root." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "La opció --start no està suportada per a instàncies de sistema." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "S'està executant en mode sistema, però no s'ha especificat l'opció --" "disallow-exit." -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "S'està executant en mode sistema, però no s'ha especificat l'opció --" "disallow-module-loading." -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" "S'està executant en mode sistema, es deshabilitarà el mode SHM forçosament." -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "S'està executant en mode sistema, la sortida per temps d'inactivitat es " "deshabilita." -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "S'ha produït un error en adquirir stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "Ha fallat la canonada: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "Ha fallat fork(): %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "Ha fallat read(): %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "S'ha produït un error en iniciar el dimoni." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "S'ha iniciat el dimoni." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Aquest és el PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Host de compilació: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS de compilació: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "S'està executant en el host: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "S'han trobat %u CPU's" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "La mida de pàgina és de %lu bytes." -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Compilat amb suport per a Valgrind: sí" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Compilat amb suport per a Valgrind: no" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "S'està executant amb el mode valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Construcció optimitzada: sí" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Construcció optmitzada: no" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG està definit, s'han desactivat totes les assercions." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" "FASTPATH està definit, només s'ha deshabilitat les assercions de camí ràpid." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "S'han habilitat totes les assercions." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "No s'ha pogut obtenir l'ID de la màquina" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "L'ID de la màquina és %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "L'ID de la màquina és %s." +msgstr "L'ID de la sessió és %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "S'està utilitzant el directori d'execució %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "S'està utilitzant el directori d'estat %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "S'està utilitzant el directori dels móduls %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "S'està executant en mode sistema: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -487,16 +389,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"Esteu utilitzant el PA en mode sistema. Tingueu en compte que molt " +"probablement no hauríeu de fer-ho.\n" +"No obstant això, si ho feu és la vostra responsabilitat si no funciona com " +"s'esperava.\n" +"Si us plau, llegiu http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per " +"a una explicació de per què el mode sistema sol ser una mala idea." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "S'ha produït un error en pa_pid_file_create()." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Estan disponibles els temporitzadors frescos d'alta resolució." -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -504,27 +412,27 @@ msgstr "" "Es recomana la utilització d'un nucli amb els temporitzadors d'alta " "resolució habilitats." -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "S'ha produït un error en pa_core_new()." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "S'ha produït un error en inicialitzar el dimoni." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "S'ha completat la inicialització del dimoni." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "S'ha iniciat l'aturada del dimoni." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "S'ha aturat el dimoni." @@ -624,7 +532,7 @@ msgstr "" "inicialització\n" " --fail[=BOOL] Surt quan falli la inicialització\n" " --high-priority[=BOOL] Prova d'establir un nivell de \n" -" prioritat alt (només disponible com " +" Prioritat alta (només disponible com " "a root,\n" " amb SUID o amb un RLIMIT_NICE " "elevat)\n" @@ -658,12 +566,12 @@ msgstr "" "missatges de registre\n" " --log-time[=BOOL] Inclou marques de temps en els " "missatges de registre\n" -" --log-backtrace=FRAMES Inclou una traça en els missatges de " +" --log-backtrace=MARCS Inclou una traça en els missatges de " "registre\n" -" -p, --dl-search-path=CAMI Estableix el camí de cerca " +" -p, --dl-search-path=CAMÍ Estableix el camí de cerca " "d'objectes dinàmics\n" " compartits (plugins)\n" -" --resample-method=METODE Utilitza el mètode de remostreig\n" +" --resample-method=MÈTODE Utilitza el mètode de remostreig\n" " (Per veure els valors possibles " "utilitza --dump-resample-methods)\n" " --use-pid-file[=BOOL] Crea un fitxer PID\n" @@ -674,7 +582,7 @@ msgstr "" "compartida.\n" "\n" "SCRIPT D'INICI:\n" -" -L, --load=\"ARGUMENTS MODUL\" Carrega el mòdul especificat amb\n" +" -L, --load=\"ARGUMENTS MÒDUL\" Carrega el mòdul especificat amb\n" " els arguments especificats\n" " -F, --file=NOMFITXER Executa l'script especificat\n" " -C Obre una línia d'ordres en la TTY " @@ -787,79 +695,79 @@ msgstr "Càrrega: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "Advertència d'obsolescència: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Ruta: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Destí de registre incorrecte '%s'" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Nivell de registre incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit no disponible en aquesta plataforma." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Format de mostra incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Velocitat de mostreig '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Canals de mostreig incorrectes '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Mapa de canals incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Nombre de fragments incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Mida de fragment incorrecta '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Error en obrir el fitxer de configuració: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -867,18 +775,14 @@ msgstr "" "El mapa de canals especificat per omissió té un número de canals diferent " "del número de canals especificat per omissió." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Lectura del fitxer de configuració: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Alliberant els privilegis de root." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "S'han limitat les capacitats cap a CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Alliberant els privilegis." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -888,31 +792,7 @@ msgstr "Sistema de so PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Inicialitza el sistema de so PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Programació d'alta prioritat (nivell Unix nice negatiu) per al dimoni " -"PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Programació en temps real per al dimoni PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Les normes d'ús del sistema no permeten PulseAudio adquirir programació " -"d'alta prioritat." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Les normes d'ús del sistema no permeten la programació en temps real de " -"PulseAudio." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1116,33 +996,33 @@ msgstr "Superior posterior esquerra" msgid "Top Rear Right" msgstr "Superior posterior dreta" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(incorrecte)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Estèreo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Envolvent 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Envolvent 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Envolvent 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Envolvent 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Envolvent 7.1" @@ -1246,27 +1126,35 @@ msgstr "Manca la implementació" msgid "Client forked" msgstr "Client bifurcat" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1279,194 +1167,193 @@ msgstr "Ha fallat XOpenDisplay()" msgid "Failed to parse cookie data" msgstr "Ha fallat el parseig de les dades de la cookie" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "S'ha produït un error en obrir el fitxer de configuració '%s': %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "No s'ha carregat cap cookie. S'està intentant connectar sense aquesta." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "S'ha rebut un missatge per a una extensió desconeguda '%s'" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "S'ha produït un error en drenar el fluxe: %s\n" +msgid "Failed to drain stream: %s" +msgstr "S'ha produït un error en drenar el fluxe: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Flux de reproducció drenat.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Flux de reproducció drenat." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "S'està drenant la connexió amb el servidor.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "S'està drenant la connexió amb el servidor." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "Ha fallat pa_stream_write(): %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "Ha fallat pa_stream_write(): %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "Ha fallat pa_stream_peek(): %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "Ha fallat pa_stream_begin_write(): %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Flux creat correctament.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "Ha fallat pa_stream_get_buffer_attr(): %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "Ha fallat pa_stream_peek(): %s" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Mètriques del búffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Flux creat correctament." -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "Ha fallat pa_stream_get_buffer_attr(): %s" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Mètriques del búffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" + +#: ../src/utils/pacat.c:317 +#, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u" + +#: ../src/utils/pacat.c:321 +#, c-format +msgid "Using sample spec '%s', channel map '%s'." msgstr "" "S'estan utilitzant les especificacions de mostreig '%s', mapejat del canal '%" -"s'.\n" +"s'." -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "S'ha connectat al dispositiu %s (%u, %ssuspés).\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "S'ha connectat al dispositiu %s (%u, %ssuspès)." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream error: %s\n" -msgstr "S'ha produït un error en l'stream: %s\n" +msgid "Stream error: %s" +msgstr "S'ha produït un error en l'stream: %s" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Flux del dispositiu suspés.%s\n" +msgid "Stream device suspended.%s" +msgstr "Flux del dispositiu suspès.%s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Flux del dispositiu représ.%s\n" +msgid "Stream device resumed.%s" +msgstr "Flux del dispositiu reprès.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Dades insuficients al flux .%s\n" +msgid "Stream underrun.%s" +msgstr "Dades insuficients al flux.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Desbordament de flux.%s\n" +msgid "Stream overrun.%s" +msgstr "Desbordament de flux.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream started.%s \n" -msgstr "S'ha iniciat el flux.%s\n" +msgid "Stream started.%s" +msgstr "S'ha iniciat el flux.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "S'ha mogut el flux al dispositiu %s (%u, %ssuspés).%s\n" +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "S'ha mogut el flux al dispositiu %s (%u, %ssuspès).%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " -msgstr "no" +msgstr "no " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Atributs del fluxe de la memòria intermèdia canviats.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Els atributs del flux de memòria intermèdia han canviat.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "S'ha establert la connexió.%s\n" +msgid "Connection established.%s" +msgstr "S'ha establert la connexió.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "Ha fallat pa_stream_new(): %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "Ha fallat pa_stream_new(): %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "Ha fallat pa_stream_connect_playback(): %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "Ha fallat pa_stream_connect_playback(): %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "Ha fallat pa_stream_connect_record(): %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "Ha fallat pa_stream_connect_record(): %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Ha fallat la connexió: %s\n" +msgid "Connection failure: %s" +msgstr "Ha fallat la connexió: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "S'ha llegit EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "S'ha llegit el fi del fitxer." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "Ha fallat read(): %s\n" +msgid "write() failed: %s" +msgstr "Ha fallat write(): %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "S'ha rebut un senyal, s'està sortint." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "Ha fallat write(): %s\n" +msgid "Failed to get latency: %s" +msgstr "No s'ha pogut obtenir la latència: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "S'ha rebut un senyal, s'està sortint.\n" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Temps: %0.3f segs; Latència: %0.0f microsegs. \r" -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "No s'ha pogut obtenir la latència: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "Temps: %0.3f segs; Latència: %0.0f microsegs.\r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "Ha fallat pa_stream_update_timing_info(): %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "Ha fallat pa_stream_update_timing_info(): %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1542,7 +1429,8 @@ msgstr "" "connectar-se\n" " -n, --client-name=NOM Com cridar aquest client al " "servidor\n" -" --stream-name=NOM Com cridar aquest flux al servidor\n" +" --stream-name=NOM Com cridar aquest flux de dades al " +"servidor\n" " --volume=VOLUM Especifica el volum inicial lineal " "dins el rang 0...65536\n" " --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per " @@ -1555,7 +1443,7 @@ msgstr "" "per a estèreo\n" " (per omissió, 2)\n" " --channel-map=MAPACANAL Mapa de canals a utilitzar\n" -" --fix-format Pren el format de mostra del " +" --format-fix Pren el format de mostra del " "conducte al qual s'està connectant\n" " el flux.\n" " --fix-rate Pren la velocitat de mostreig del " @@ -1564,13 +1452,21 @@ msgstr "" " --fix-channels Pren el número de canals i el mapa " "de canals del\n" " conducte al qual s'està connectant " -"el flux.\n" +"el flux de dades.\n" " --no-remix No barregis els canals.\n" " --no-remap Mapeja els canals per índex en " "comptes de per nom .\n" -" --latency=BYTES Sol·licita la latència en bytes.\n" +" --latencia=BYTES Sol·licita la latència en bytes.\n" " --process-time=BYTES Sol·licita el temps de procés per " "petició en bytes.\n" +" --property=PROPIETAT=VALOR Establir la propietat especificada " +"per al valor especificat.\n" +" --raw Gravació/reproducció de dades crues " +"PCM.\n" +" --format-fitxer=FFORMAT Gravació/reproducció de dades amb " +"format PCM.\n" +" --list-file-formats Llista disponible de formats de " +"fitxer.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1583,136 +1479,132 @@ msgstr "" "Compilat amb libpulse %s\n" "Enllaçat amb libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Mapa de canals invàlid '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Mètode de remostratge invàlid '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Mapa de canals invàlid '%s'\n" +msgid "Invalid client name '%s'" +msgstr "Nom del client invàlid '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Especificació de latència invàlida '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "Nom de flux de dades invàlid '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Especificació de temps de procés invàlida '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "Mapa de canals invàlid '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Mètode de remostratge invàlid '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Especificació de latència invàlida '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Especificació de temps de procés invàlida '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Propietat invàlida '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Format desconegut de fitxer %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Especificació de mostra invàlida\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Especificació de mostra invàlida" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Hi han massa arguments.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Massa arguments." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "No s'ha pogut obtenir informació de la mostra: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "No s'ha pogut generar l'especificació de mostra del fitxer." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "No s'ha pogut obrir el fitxer de so.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "No s'ha pogut obrir el fitxer d'àudio." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Advertència: l'especificació de mostra especificada se sobreescriurà amb " +"l'especificació del fitxer." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "No s'ha pogut obtenir informació de la mostra: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "No s'ha pogut determinar l'especificació de mostra del fitxer." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." msgstr "" +"Advertència: no s'ha pogut determinar el mapeig de canals des del fitxer." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "El mapa de canals no coincideix amb l'especificació de mostra\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "El mapa de canals no coincideix amb l'especificació de mostra" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Advertència: no s'ha pogut escriure el mapa de canals en un fitxer." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"S'està obrint un flux de dades %s amb especificació de mostra '%s' i mapa de " +"canals '%s'." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "enregistrant" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "reproducció" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "Ha fallat el pa_mainloop_new()." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "Ha fallat el io_new()." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "Ha fallat el pa_context_new()." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "Ha fallat pa_mainloop_new().\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "Ha fallat io_new().\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "Ha fallat pa_context_new().\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "Ha fallat pa_context_connect(): %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "Ha fallat time_new().\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "Ha fallat el pa_context_new()." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "Ha fallat pa_mainloop_run().\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "Ha fallat el pa_mainloop_run()." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1739,7 +1631,12 @@ msgstr "No s'ha pogut en rependre: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "ADVERTÈNCIA: el sevidor de so no és local, no s'està suspenent.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Ha fallat la connexió: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "S'ha rebut SIGINT, s'està sortint.\n" @@ -1779,34 +1676,49 @@ msgstr "" "Compilat amb libpulse %s\n" "Enllaçat amb libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "No s'han pogut obtenir les estadístiques: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "Ha fallat el pa_mainloop_new().\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "Ha fallat el pa_context_new().\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "Ha fallat el pa_mainloop_run().\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "No s'han pogut obtenir les estadístiques: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "" "Actualment s'estan utilitzant: %u blocs que contenen %s bytes en total.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "Allotjats durant el temps de vida: %u blocs que contenen %s bytes en total.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Mida de la memòria cau de mostres: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "No s'ha pogut obtenir la informació del servidor: %s\n" +msgid "Failed to get server information: %s" +msgstr "No s'ha pogut obtenir la informació del servidor: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1829,12 +1741,12 @@ msgstr "" "Font per omissió: %s\n" "Galeta: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "No s'ha pogut obtenir la informació del conducte: %s\n" +msgid "Failed to get sink information: %s" +msgstr "No s'ha pogut obtenir la informació del conducte: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1873,22 +1785,22 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tPerfils:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tPerfil actiu: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "No s'ha pogut obtenir la informació de la font: %s\n" +msgid "\tPorts:\n" +msgstr "\tPorts:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tPort actiu: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "No s'ha pogut obtenir la informació de la font: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1927,20 +1839,20 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" -msgstr "n/d" +msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "No s'ha pogut obtenir informació del mòdul: %s\n" +msgid "Failed to get module information: %s" +msgstr "No s'ha pogut obtenir informació del mòdul: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1957,12 +1869,12 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "No s'ha pogut obtenir informació del client: %s\n" +msgid "Failed to get client information: %s" +msgstr "No s'ha pogut obtenir informació del client: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1977,12 +1889,12 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "No s'ha pogut obtenir la informació de la targeta: %s\n" +msgid "Failed to get card information: %s" +msgstr "No s'ha pogut obtenir la informació de la targeta: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1999,22 +1911,22 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tPerfils:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tPerfil actiu: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "No s'ha pogut obtenir informació del conducte d'entrada: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "No s'ha pogut obtenir informació del conducte d'entrada: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2051,12 +1963,12 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "No s'ha pogut obtenir la informació del conducte de sortida: %s\n" +msgid "Failed to get source output information: %s" +msgstr "No s'ha pogut obtenir la informació del conducte de sortida: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2085,12 +1997,12 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "No s'ha pogut obtenir informació de la mostra: %s\n" +msgid "Failed to get sample information: %s" +msgstr "No s'ha pogut obtenir informació de la mostra: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2121,22 +2033,26 @@ msgstr "" "\tPropietats:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Ha fallat: %s\n" +msgid "Failure: %s" +msgstr "Ha fallat: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "No s'ha pogut pujar la mostra: %s\n" +msgid "Failed to upload sample: %s" +msgstr "No s'ha pogut pujar la mostra: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "S'ha trobat un fi de fitxer prematurament\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "S'ha trobat un fi de fitxer prematurament" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "S'ha rebut SIGINT, s'està sortint." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2144,15 +2060,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2168,23 +2090,30 @@ msgstr "" "%s [opcions] upload-sample NOMFITXER [NOM]\n" "%s [opcions] play-sample NOM [CONDUCTE]\n" "%s [opcions] remove-sample NOM\n" -"%s [opcions] move-sink-input ID CONDUCTE\n" -"%s [opcions] move-source-output ID FONT\n" -"%s [opcions] load-module NOM [ARGS ...]\n" -"%s [opcions] unload-module ID\n" -"%s [opcions] suspend-sink [CONDUCTE] 1|0\n" -"%s [opcions] suspend-source [FONT] 1|0\n" -"%s [opcions] set-card-profile [TARGETA] [PERFIL] \n" +"%s [opcions] move-sink-input CONDUCTEENTRADA CONDUCTE\n" +"%s [opcions] move-source-output FONTSORTIDA FONT\n" +"%s [opcions] load-module NOM [ARGUMENTS ...]\n" +"%s [opcions] unload-module MÒDUL\n" +"%s [opcions] suspend-sink CONDUCTE 1|0\n" +"%s [opcions] suspend-source FONT 1|0\n" +"%s [opcions] set-card-profile TARGETA PERFIL \n" +"%s [opcions] set-sink-port CONDUCTE PORT \n" +"%s [opcions] set-source-port FONT PORT \n" +"%s [options] set-sink-volume CONDUCTE VOLUM\n" +"%s [options] set-source-volume FONT VOLUM\n" +"%s [options] set-sink-input-volume CONDUCTEENTRADA VOLUM\n" +"%s [options] set-sink-mute CONDUCTE 1|0\n" +"%s [options] set-source-mute FONT 1|0\n" +"%s [options] set-sink-input-mute CONDUCTEENTRADA 1|0\n" "\n" " -h, --help Mostra aquesta ajuda\n" " --version Mostra la versió\n" "\n" -" -s, --server=SERVIDOR Nom del servidor al qual connectar-" -"se\n" -" -n, --client-name=NOM Com cridar aquest client al " +" -s, --server=SERVIDOR Nom del servidor on connectar-s'hi\n" +" -n, --client-name=NOM Com cridar aquest client en el " "servidor\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2195,80 +2124,113 @@ msgstr "" "Compilat amb libpulse %s\n" "Enllaçat amb libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Especifiqueu un fitxer de mostra per a carregar\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "No s'ha pogut obrir el fitxer de so.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Heu d'especificar un nom de mostra a reproduir\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Heu d'especificar un nom de mostra a esborrar\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Heu d'especificar una entrada del conducte i un conducte\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Si us plau, especifiqueu un fitxer de mostra per a carregar" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Heu d'especificar un índex de la font de sortida i una font\n" +msgid "Failed to open sound file." +msgstr "No s'ha pogut obrir el fitxer de so." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Heu d'especificar un nom de mòdul i els seus arguments.\n" - -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Heu d'especificar un índex de mòdul\n" - -#: ../src/utils/pactl.c:1037 -msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." msgstr "" -"No haríeu d'especificar més d'un conducte. Heu d'especifcar un valor " -"booleà.\n" +"Advertiment: No s'ha pogut determinar l'especificació de mostra a partir del " +"fitxer." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Heu d'especificar un nom de mostra a reproduir" + +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Heu d'especificar un nom de mostra a suprimir" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Heu d'especificar una entrada del conducte i un conducte" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Heu d'especificar un índex de font de sortida i una font" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Heu d'especificar un nom de mòdul i els seus arguments." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Heu d'especificar un índex de mòdul" + +#: ../src/utils/pactl.c:1090 +msgid "" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "" +"No haríeu d'especificar més d'un conducte. Heu d'especificar un valor booleà." + +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"No haríeu d'especificar més d'una font. Heu d'especificar un valor booleà.\n" +"No haríeu d'especificar més d'una font. Heu d'especificar un valor booleà." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Heu d'especificar un nom o un índex de conducte i un nom de port" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Heu d'especificar un nom o un índex de targeta i un nom de perfil\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Heu d'especificar un nom o un índex de font i un nom de port" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "S'ha especificat una ordre invàlida.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Heu d'especificar un nom o un índex de conducte i un volum" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "Ha fallat pa_context_connect(): %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Especificació de volum invàlida" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Heu d'especificar un nom o un índex de font i un volum" + +# +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Heu d'especificar un índex entrada del conducte i un volum" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Índex d'entrada del conducte invàlid" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "" +"Heu d'especificar un nom o un índex de conducte i un booleà de silenciat" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Heu d'especificar un nom o un índex de font i un booleà de silenciat" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" +"Heu d'especificar un índex d'entrada del conducte i un booleà de silenciat" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Especificació d'índex d'entrada del conducte invàlida" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Ordre especificada no vàlida." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2294,7 +2256,7 @@ msgstr "" #: ../src/utils/pax11publish.c:94 #, c-format msgid "Failed to parse command line.\n" -msgstr "No s'ha pogut parsejar la línia d'ordres.\n" +msgstr "No s'ha pogut analitzar la línia d'ordres.\n" #: ../src/utils/pax11publish.c:108 #, c-format @@ -2351,48 +2313,50 @@ msgstr "No s'han pogut carregar les dades de la galeta\n" msgid "Not yet implemented.\n" msgstr "Encara no s'ha implementat.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"El dimoni PulseAudio no s'està executant, o no s'està executant com a dimoni " +"de la sessió." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "No s'ha pogut matar el dimoni PulseAudio." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "El dimoni no respon." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "No s'ha pogut accedir al bloqueig d'autospawn." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2406,10 +2370,10 @@ msgstr "" "havia res a escriure!\n" "Probablement es tracta d'un error del controlador de l'ALSA '%s'. Informeu " "d'aquest problema als desenvolupadors de l'ALSA.\n" -"Ens han cridat mitjançant POLLOUT set -- tammateix una crida posterior de " +"Ens han aixecat amb POLLOUT activat -- tanmateix una crida posterior a " "snd_pcm_avail() ha retornat 0 o un altre valor < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2423,19 +2387,23 @@ msgstr "" "res a llegir!\n" "Probablement es tracta d'un error de la controladora '%s' de l'ALSA. " "Reporteu aquest problema als desenvolupadors de l'ALSA.\n" -"Ens ha cridat mitjançant POLLIN set -- tammateix una ordre posterior " +"Ens han aixecat amb POLLIN activat -- tanmateix una crida posterior a " "snd_pcm_avail() ha retornat 0 o un altre valor < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Inactiu" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Reproducció d'alta fidelitat (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Captura d'alta fidelitat (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Dúplex de telefonia (HSP/HFP)" @@ -2443,6 +2411,149 @@ msgstr "Dúplex de telefonia (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "Servidor de so PulseAudio" +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Nom del client invàlid '%s'\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "No s'ha pogut determinar l'especificació de mostra del fitxer.\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "No s'ha pogut connectar al bus del sistema: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "No s'ha pogut obtenir una crida del PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "No s'ha pogut especificar l'UID en l'objecte crida." + +#~ msgid "Failed to get CK session." +#~ msgstr "No s'ha pogut obtenir la sessió CK." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "No s'ha pogut definir l'UID en l'objecte sessió." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "No s'ha pogut assignar PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "No s'ha pogut definir action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "No s'ha pogut assignar PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "No s'ha pogut inicialitzar PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "No s'ha pogut determinar si la crida està autoritzada: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "No s'ha pogut obtenir l'autorització: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit ha respós '%s'" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Programació d'alta prioritat (nivell Unix nice negatiu) per al dimoni " +#~ "PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Programació en temps real per al dimoni PulseAudio" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "Les normes d'ús del sistema no permeten PulseAudio adquirir programació " +#~ "d'alta prioritat." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "Les normes d'ús del sistema no permeten la programació en temps real de " +#~ "PulseAudio." + +#~ msgid "read() failed: %s\n" +#~ msgstr "Ha fallat read(): %s\n" + +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "Ha fallat el pa_context_connect(): %s\n" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Aquesta aplicació està en el grup '%s', s'està establint la prioritat " +#~ "alta." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "" +#~ "Aquesta aplicació està en el grup '%s', s'està establint la prioritat en " +#~ "temps real." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "PolicyKit ha permés el privilegi acquire-high-priority." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit ha rebutjat el privilegi acquire-high-priority." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit ha permés el privilegi acquire-real-time." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit ha rebutjat el privilegi acquire-real-time." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "S'ha demanat SUID de root i una planificació de temps real i/o d'alta " +#~ "prioritat. Tanmateix, falten els privilegis necessaris:\n" +#~ "No es pertany al grup '%s'. PolicyKit no atorga els privilegis demanats i " +#~ "no s'ha incrementat els límits de recursos RLIMIT_NICE/RLIMIT_RTPRIO.\n" +#~ "Per habilitar la planificació en temps real o d'alta prioritat, heu " +#~ "d'obtenir els privilegis de PolicyKit adequats, o pertànyer al grup '%s', " +#~ "o incrementar els límits de recursos de RLIMIT_NICE/RLIMIT_RTPRIO per a " +#~ "aquest usuari." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "La prioritat alta està habilitada en la configuració però no està permesa " +#~ "per la política." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit." + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "S'abandona CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "La prioritat de temps real està habilitada en la configuració però no " +#~ "està permesa per la política." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "S'han limitat les capacitats cap a CAP_SYS_NICE." + +#~ msgid "time_new() failed.\n" +#~ msgstr "Ha fallat el time_new().\n" + #~ msgid "Analog Mono" #~ msgstr "Mono analògic" @@ -2574,9 +2685,6 @@ msgstr "Servidor de so PulseAudio" #~ msgid "Output %s + Input %s" #~ msgstr "Sortida %s + Entrada %s" -#~ msgid "Output %s" -#~ msgstr "Sortida %s" - #~ msgid "Input %s" #~ msgstr "Entrada %s" diff --git a/po/cs.po b/po/cs.po index 51ce08506..8aa4dd96b 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,22 +2,25 @@ # Copyright (C) 2008, 2009 the author(s) of pulseaudio. # This file is distributed under the same license as the pulseaudio package. # Petr Kovar , 2008, 2009. -# msgid "" msgstr "" "Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-05-03 23:57+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-09 02:43+0100\n" "Last-Translator: Petr Kovar \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -30,7 +33,7 @@ msgstr "" "S největší pravděpodobností se jedná o chybu v ovladači ALSA \"%s\". " "Nahlaste prosím tento problém vývojářům ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -43,7 +46,7 @@ msgstr "" "S největší pravděpodobností se jedná o chybu v ovladači ALSA \"%s\". " "Nahlaste prosím tento problém vývojářům ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -56,9 +59,17 @@ msgstr "" "S největší pravděpodobností se jedná o chybu v ovladači ALSA \"%s\". " "Nahlaste prosím tento problém vývojářům ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Virtuální cíl LADSPA" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -68,12 +79,26 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= master= format= rate= " +"channels= channel_map= plugin= label= control=<čárkou " +"oddělený seznam hodnot ovládání vstupu>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Výstup %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Vnitřní zvukový systém" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -89,218 +114,92 @@ msgstr "Nezdařilo se přidělení nového nahrávacího programu dl." msgid "Failed to add bind-now-loader." msgstr "Nezdařilo se přidat bind-now-loader." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Nelze se spojit se systémovou sběrnicí: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Nelze získat volajícího z PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Nelze nastavit UID na objekt volajícího." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Nezdařilo se získání sezení CK." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Nelze nastavit UID na objekt sezení." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Nelze alokovat PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Nelze nastavit action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Nelze alokovat PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Nelze spustit PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Nezdařilo se určit, zda je volající oprávněn: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Nezdařilo se získat oprávnění: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit odpověděl s \"%s\"" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Získán signál %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Ukončování." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Nezdařilo se nalézt uživatele \"%s\"." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Nezdařilo se nalézt skupinu \"%s\"." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Nalezen uživatel \"%s\" (UID %lu) a skupina \"%s\" (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID uživatele \"%s\" a skupiny \"%s\" nesouhlasí." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Domovský adresář uživatele \"%s\" není \"%s\", bude ignorováno." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Nezdařilo se vytvořit \"%s\": %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Nezdařilo se změnit seznam skupin: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Nezdařilo se změnit GID: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Nezdařilo se změnit UID: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Oprávnění superuživatele úspěšně zrušena." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Režim celého systému není na této platformě podporován." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) selhalo: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Nezdařila se analýza příkazového řádku." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Nacházíme se ve skupině \"%s\", což umožňuje plánování o vysoké prioritě." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Nacházíme se ve skupině \"%s\", což umožňuje plánování v reálném čase." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit nám udělil oprávnění acquire-high-priority." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit nám neudělil oprávnění acquire-high-priority." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit nám udělil oprávnění acquire-real-time." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit nám neudělil oprávnění acquire-real-time." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Voláno SUID root a v nastavení bylo požádáno o plánování v reálném čase či o " -"vysoké prioritě. Schází nám ovšem potřebná oprávnění.\n" -"Nejsme ve skupině \"%s\", PolicyKit nám odmítá přidělit požadovaná oprávnění " -"a je nutné zvýšit omezení zdroje RLIMIT_NICE/RLIMIT_RTPRIO.\n" -"Plánování v reálném čase či o vysoké prioritě zapnete získáním příslušných " -"oprávnění PolicyKit, nebo tím, že se stanete členy \"%s\", nebo uživateli " -"zvýšíte omezení zdroje RLIMIT_NICE/RLIMIT_RTPRIO." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Plánování o vysoké prioritě v konfiguraci zapnuto, ale nepovoleno pravidly." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Úspěšně zvýšeno RLIMIT_RTPRIO" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO selhalo: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Vzdávání se CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Plánování v reálném čase v konfiguraci zapnuto, ale nepovoleno pravidly." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Démon neběží" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Démon běží jako PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Zabití démona se nezdařilo: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -308,150 +207,155 @@ msgstr "" "Tento program není určen ke spuštění pod superuživatelem (není-li zadáno --" "system)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Jsou vyžadována oprávnění superuživatele." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start nepodporováno u systémových instancí." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "Běží v systémovém režimu, ale nenastaveno --disallow-exit!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "Běží v systémovém režimu, ale nenastaveno --disallow-module-loading!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Běží v systémovém režimu, vynuceně se vypíná režim SHM!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "Běží v systémovém režimu, vynuceně se vypíná čas nečinnosti ukončení!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Nezdařilo se získání stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe selhalo: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() selhalo: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() selhalo: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Spuštění démona selhalo." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Spuštění démona bylo úspěšné." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Toto je PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Překladový počítač: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Překladové CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Běží na počítači: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Nalezen následující počet CPU: %u." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Velikost stránky je %lu bajtů" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Přeloženo s podporou Valgrind: ano" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Přeloženo s podporou Valgrind: ne" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Běží v režimu valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimalizované sestavení: ano" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimalizované sestavení: ne" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definováno, všechny výrazy zakázány." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH definováno, zakázány pouze výrazy rychlých cest." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Všechny výrazy povoleny." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Nezdařilo se získání ID počítače" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "ID počítače je %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "ID počítače je %s." +msgstr "ID sezení je %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Používán běhový adresář %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Používán stavový adresář %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Používán adresář modulů %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Běží v systémovém režimu: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -460,17 +364,23 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"Dobrá, máte tedy PA spuštěn v systémovém režimu. Vemte prosím na vědomí, že " +"k tomuto by až na výjimečné situace němelo docházet.\n" +"Pokud v této činnosti přesto budete pokračovat, nesete riziko za možné " +"špatné a nepředvídatelné chování systému.\n" +"Vysvětlení, proč je systémový režim obvykle velmi špatný nápad, si můžete " +"přečíst na http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() selhalo." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "" "Jsou dostupné výtečné časovače o vysokém rozlišení. Tak s chutí do toho!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -478,27 +388,27 @@ msgstr "" "Sorry, vole, kernel error! Tip šéfkuchaře na dnešní den zní: Linux se " "zapnutými časovači o vysokém rozlišení." -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() selhalo." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Selhalo spuštění démona." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Spuštění démona bez jakýchkoliv nahraných modulů, běh bude odmítnut." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Spuštění démona dokončeno." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Vypínání démona spuštěno." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Démon ukončen." @@ -752,79 +662,79 @@ msgstr "Načíst jednou: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "VAROVÁNÍ ZASTARALOSTI: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Cesta: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Neplatný protokolovací cíl \"%s\"." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Neplatná protokolovací úroveň \"%s\"." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Neplatná metoda převzorkování \"%s\"." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Neplatné rlimit \"%s\"." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit na této platformě není podporováno." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Neplatný vzorkovací formát \"%s\"." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Neplatná vzorkovací frekvence \"%s\"." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Neplatný počet fragmentů \"%s\"." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Neplatná úroveň nice \"%s\"." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Nezdařilo se otevřít konfigurační soubor: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -832,18 +742,14 @@ msgstr "" "Zadaná výchozí mapa kanálů obsahuje odlišný počet kanálů než je zadaný " "výchozí počet kanálů." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Čtení z konfiguračního souboru: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Rušení superuživatelských oprávnění." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Schopnosti úspěšně omezeny na CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Rušení oprávnění." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -853,30 +759,7 @@ msgstr "Zvukový systém PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Spustit zvukový systém PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Plánování o vysoké prioritě (záporná úroveň nice v Unixu) démona PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Plánování v reálném čase démona PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Systémová pravidla znemožňují technologii PulseAudio získat přístup k " -"plánování o vysoké prioritě." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Systémová pravidla znemožňují technologii PulseAudio získat přístup k " -"plánování v reálném čase." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1080,33 +963,33 @@ msgstr "Horní zadní levý" msgid "Top Rear Right" msgstr "Horní zadní pravý" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(neplatné)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1210,27 +1093,35 @@ msgstr "Scházející implementace" msgid "Client forked" msgstr "Klient rozvětven" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1243,193 +1134,192 @@ msgstr "XOpenDisplay() selhalo" msgid "Failed to parse cookie data" msgstr "Selhala analýza dat cookie" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Selhalo otevření konfiguračního souboru \"%s\": %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Žádný soubor cookie nenahrán. Pokus o spojení bez tohoto kroku." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Přijata zpráva pro neznámé rozšíření \"%s\"" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Nezdařilo se vyprázdnit proud: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Nezdařilo se vyprázdnit proud: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Proud přehrávání vyprázdněn.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Proud přehrávání vyprázdněn." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Vyprazdňování spojení se serverem.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Vyprazdňování spojení se serverem." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() selhalo: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() selhalo: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() selhalo: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() selhalo: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Proud úspěšně vytvořen.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() selhalo: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() selhalo: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Proud úspěšně vytvořen." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() selhalo: %s" + +#: ../src/utils/pacat.c:314 +#, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "" -"Metrika vyrovnávací paměti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +"Metrika vyrovnávací paměti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Metrika vyrovnávací paměti: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Metrika vyrovnávací paměti: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Používána vzorkovací specifikace \"%s\", mapa kanálů \"%s\".\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Používáno určení vzorku \"%s\", mapa kanálů \"%s\"." -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Připojeno k zařízení %s (%u, %ssuspended).\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Připojeno k zařízení %s (%u, %ssuspended)." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream error: %s\n" -msgstr "Chyba proudu: %s\n" +msgid "Stream error: %s" +msgstr "Chyba proudu: %s" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Proudové zařízení pozastaveno.%s \n" +msgid "Stream device suspended.%s" +msgstr "Proudové zařízení pozastaveno.%s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Proudové zařízení obnoveno.%s \n" +msgid "Stream device resumed.%s" +msgstr "Proudové zařízení obnoveno.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Podběhnutí proudu.%s \n" +msgid "Stream underrun.%s" +msgstr "Podběhnutí proudu.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Přeběhnutí proudu.%s \n" +msgid "Stream overrun.%s" +msgstr "Přeběhnutí proudu.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream started.%s \n" -msgstr "Proud spuštěn.%s \n" +msgid "Stream started.%s" +msgstr "Proud spuštěn.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Proud přesunut na zařízení %s (%u, %ssuspended).%s \n" +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Proud přesunut na zařízení %s (%u, %ssuspended).%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "nikoliv " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Změněny atributy vyrovnávací paměti proudu.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Změněny atributy vyrovnávací paměti proudu.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Spojení navázáno.%s \n" +msgid "Connection established.%s" +msgstr "Spojení navázáno.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() selhalo: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() selhalo: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() selhalo: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() selhalo: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() selhalo: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() selhalo: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Spojení selhalo: %s\n" +msgid "Connection failure: %s" +msgstr "Spojení selhalo: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Získáno EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Získáno EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() selhalo: %s\n" +msgid "write() failed: %s" +msgstr "write() selhalo: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Získán signál, ukončování." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() selhalo: %s\n" +msgid "Failed to get latency: %s" +msgstr "Nezdařilo se získat latenci: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Získán signál, ukončování.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Nezdařilo se získat latenci: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Čas: %0.3f sekund; latence: %0.0f μs. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() selhalo: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() selhalo: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1531,6 +1421,13 @@ msgstr "" " --latency=BAJTY Vyžádá určenou latenci v bajtech.\n" " --process-time=BAJTY Vyžádá určený čas zpracování na " "požadavek v bajtech.\n" +" --property=VLASTNOST=HODNOTA Nastaví určenou vlastnost na určenou " +"hodnotu.\n" +" --raw Nahrává/přehrává surová data PCM.\n" +" --file-format=FORMÁT Nahrává/přehrává formátovaná data " +"PCM.\n" +" --list-file-formats Zobrazí seznam dostupných formátů " +"souborů.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1543,136 +1440,128 @@ msgstr "" "Přeloženo s libpulse %s\n" "Propojeno s libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Neplatná mapa kanálů \"%s\"\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Neplatná metoda převzorkování \"%s\"." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Neplatná mapa kanálů \"%s\"\n" +msgid "Invalid client name '%s'" +msgstr "Neplatný název klienta \"%s\"" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Neplatné upřesnění latence \"%s\"\n" +msgid "Invalid stream name '%s'" +msgstr "Neplatný název proudu \"%s\"" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Neplatné upřesnění času zpracování \"%s\"\n" +msgid "Invalid channel map '%s'" +msgstr "Neplatná mapa kanálů \"%s\"" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Neplatná metoda převzorkování \"%s\"." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Neplatné upřesnění latence \"%s\"" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Neplatné upřesnění času zpracování \"%s\"" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Neplatná vlastnost \"%s\"" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Neznámý formát souboru %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Neplatné upřesnění vzorkování\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Neplatné určení vzorku" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Příliš mnoho argumentů.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Příliš mnoho argumentů." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Selhalo získání informace o vzorku: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Selhalo vytvoření určení vzorku souboru." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Selhalo otevření zvukového souboru.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Selhalo otevření zvukového souboru." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Varování: zadané určení vzorku bude přepsáno určením získaným ze souboru." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Selhalo získání informace o vzorku: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Selhalo zjištění určení vzorku ze souboru." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Varování: Selhalo zjištění mapy kanálů ze souboru." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Mapa kanálů se neshoduje s upřesněním vzorkování\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Mapa kanálů se neshoduje s určením vzorku" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Varování: selhal zápis mapy kanálů do souboru." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "Otevírání proudu %s s určením vzorku \"%s\" a mapou kanálů \"%s\"." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Otevírání proudu %s s upřesněním vzorkování \"%s\".\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "nahrávání" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "přehrávání" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() selhalo." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() selhalo." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() selhalo." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() selhalo.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() selhalo.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() selhalo.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() selhalo: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() selhalo.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() selhalo." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() selhalo.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() selhalo." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1699,7 +1588,12 @@ msgstr "Nezdařilo se obnovení: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "VAROVÁNÍ: Zvukový server není místní, nedojde k pozastavení.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Spojení selhalo: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Získáno SIGINT, ukončování.\n" @@ -1738,32 +1632,47 @@ msgstr "" "Přeloženo s libpulse %s\n" "Propojeno s libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Selhalo získání statistik: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() selhalo.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() selhalo.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() selhalo.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Selhalo získání statistik: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Právě používáno: %u bloků obsahujících celkem %s bajtů.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Alokováno během celého běhu: %u bloků obsahujících celkem %s bajtů.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Velikost vzorkovací vyrovnávací paměti: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Nezdařilo se získání informací o serveru: %s\n" +msgid "Failed to get server information: %s" +msgstr "Nezdařilo se získání informací o serveru: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1780,18 +1689,18 @@ msgstr "" "Název počítače: %s\n" "Název serveru: %s\n" "Verze serveru: %s\n" -"Výchozí upřesnění vzorkování: %s\n" +"Výchozí určení vzorku: %s\n" "Výchozí mapa kanálů: %s\n" "Výchozí cíl: %s\n" "Výchozí zdroj: %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Nezdařilo se získání informací o cíli: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Nezdařilo se získání informací o cíli: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1817,7 +1726,7 @@ msgstr "" "\tNázev: %s\n" "\tPopis: %s\n" "\tOvladač: %s\n" -"\tUpřesnění vzorkování: %s\n" +"\tUrčení vzorku: %s\n" "\tMapa kanálů: %s\n" "\tModul vlastníka: %u\n" "\tZtlumení: %s\n" @@ -1830,22 +1739,22 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tProfily:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tAktivní profil: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Nezdařilo se získání informací o zdroji: %s\n" +msgid "\tPorts:\n" +msgstr "\tPorty:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tAktivní port: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Nezdařilo se získání informací o zdroji: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1871,7 +1780,7 @@ msgstr "" "\tNázev: %s\n" "\tPopis: %s\n" "\tOvladač: %s\n" -"\tUpřesnění vzorkování: %s\n" +"\tUrčení vzorku: %s\n" "\tMapa kanálů: %s\n" "\tModul vlastníka: %u\n" "\tZtlumení: %s\n" @@ -1884,20 +1793,20 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "nic" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Selhalo získání informací o modulu: %s\n" +msgid "Failed to get module information: %s" +msgstr "Selhalo získání informací o modulu: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1914,12 +1823,12 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Selhalo získání informací o klientu: %s\n" +msgid "Failed to get client information: %s" +msgstr "Selhalo získání informací o klientu: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1934,12 +1843,12 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Selhalo získání informací o kartě: %s\n" +msgid "Failed to get card information: %s" +msgstr "Selhalo získání informací o kartě: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1956,22 +1865,22 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfily:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tAktivní profil: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Nezdařilo se získání cílových vstupních informací: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Nezdařilo se získání informací o vstupu cíle: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1996,7 +1905,7 @@ msgstr "" "\tModul vlastníka: %s\n" "\tKlient: %s\n" "\tCíl: %u\n" -"\tUpřesnění vzorkování: %s\n" +"\tUrčení vzorku: %s\n" "\tMapa kanálů: %s\n" "\tZtlumení: %s\n" "\tHlasitost: %s\n" @@ -2008,12 +1917,12 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "Selhalo získání informace o výstupu zdroje: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Selhalo získání informace o výstupu zdroje: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2034,7 +1943,7 @@ msgstr "" "\tModul vlastníka: %s\n" "\tKlient: %s\n" "\tZdroj: %u\n" -"\tUpřesnění vzorkování: %s\n" +"\tUrčení vzorku: %s\n" "\tMapa kanálů: %s\n" "\tLatence vyrovnávací paměti: %0.0f μs\n" "\tLatence zdroje: %0.0f μs\n" @@ -2042,12 +1951,12 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Selhalo získání informace o vzorku: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Selhalo získání informace o vzorku: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2066,7 +1975,7 @@ msgid "" msgstr "" "Vzorek č. %u\n" "\tNázev: %s\n" -"\tUpřesnění vzorkování: %s\n" +"\tUrčení vzorku: %s\n" "\tMapa kanálů: %s\n" "\tHlasitost: %s\n" "\t %s\n" @@ -2078,22 +1987,26 @@ msgstr "" "\tVlastnosti:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Selhání: %s\n" +msgid "Failure: %s" +msgstr "Selhání: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Selhalo nahrání vzorku: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Selhalo nahrání vzorku: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Předčasný konec souboru\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Předčasný konec souboru" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Získáno SIGINT, ukončování." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2101,15 +2014,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2125,13 +2044,21 @@ msgstr "" "%s [přepínače] upload-sample NÁZEVSOUBORU [NÁZEV]\n" "%s [přepínače] play-sample NÁZEV [CÍL]\n" "%s [přepínače] remove-sample NÁZEV\n" -"%s [přepínače] move-sink-input ID CÍL\n" -"%s [přepínače] move-source-output ID ZDROJ\n" +"%s [přepínače] move-sink-input VSTUPCÍLE CÍL\n" +"%s [přepínače] move-source-output VÝSTUPZDROJE ZDROJ\n" "%s [přepínače] load-module NÁZEV [ARG ...]\n" -"%s [přepínače] unload-module ID\n" -"%s [přepínače] suspend-sink [CÍL] 1|0\n" -"%s [přepínače] suspend-source [ZDROJ] 1|0\n" -"%s [přepínače] set-card-profile [KARTA] [PROFIL] \n" +"%s [přepínače] unload-module MODUL\n" +"%s [přepínače] suspend-sink CÍL 1|0\n" +"%s [přepínače] suspend-source ZDROJ 1|0\n" +"%s [přepínače] set-card-profile KARTA PROFIL\n" +"%s [přepínače] set-sink-port CÍL PORT\n" +"%s [přepínače] set-source-port ZDROJ PORT\n" +"%s [přepínače] set-sink-volume CÍL HLASITOST\n" +"%s [přepínače] set-source-volume ZDROJ HLASITOST\n" +"%s [přepínače] set-sink-input-volume VSTUPCÍLE HLASITOST\n" +"%s [přepínače] set-sink-mute CÍL 1|0\n" +"%s [přepínače] set-source-mute ZDROJ 1|0\n" +"%s [přepínače] set-sink-input-mute VSTUPCÍLE 1|0\n" "\n" " -h, --help Zobrazí tuto nápovědu\n" " --version Zobrazí verzi\n" @@ -2140,7 +2067,7 @@ msgstr "" " -n, --client-name=NÁZEV Způsob volání tohoto klienta na " "serveru\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2151,78 +2078,106 @@ msgstr "" "Přeloženo s libpulse %s\n" "Propojeno s libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Zadejte prosím soubor se vzorkem určeným k nahrání\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Selhalo otevření zvukového souboru.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Otevírání proudu %s s upřesněním vzorkování \"%s\".\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Je nutné zadat název vzorku určeného k přehrání\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Je nutné zadat název vzorku určeného k odstranění\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Je nutné zadat vstup cíle a cíl\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Zadejte prosím soubor se vzorkem určeným k nahrání" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Je nutné zadat index výstupu zdroje a zdroj\n" +msgid "Failed to open sound file." +msgstr "Selhalo otevření zvukového souboru." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Je nutné zadat název modulu a argumenty.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "Varování: Selhalo zjištění určení vzorku ze souboru." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Je nutné zadat index modulu\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Je nutné zadat název vzorku určeného k přehrání" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Je nutné zadat název vzorku určeného k odstranění" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Je nutné zadat vstup cíle a cíl" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Je nutné zadat index výstupu zdroje a zdroj" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Je nutné zadat název modulu a argumenty." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Je nutné zadat index modulu" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "Nelze zadat více než jeden cíl. Je nutné zadat booleovskou hodnotu.\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "Nelze zadat více než jeden cíl. Je nutné zadat booleovskou hodnotu." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "" -"Nelze zadat více než jeden zdroj. Je nutné zadat booleovskou hodnotu.\n" +"value." +msgstr "Nelze zadat více než jeden zdroj. Je nutné zadat booleovskou hodnotu." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Je nutné upřesnit název karty/indexu a název profilu\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Je nutné upřesnit název karty/indexu a název profilu" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Je nutné upřesnit název karty/indexu a název profilu\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Je nutné upřesnit název cíle/indexu a název portu" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Je nutné upřesnit název karty/indexu a název profilu\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Je nutné upřesnit název zdroje/indexu a název portu" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "Nezadán žádný platný příkaz.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Je nutné upřesnit název cíle/indexu a hlasitost" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() selhalo: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Neplatné určení hlasitosti" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Je nutné upřesnit název zdroje/indexu a hlasitost" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Je nutné zadat index vstupu cíle a hlasitost" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Neplatný index vstupu cíle" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Je nutné upřesnit název cíle/indexu a booleovskou hodnotu ztlumení" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Je nutné upřesnit název zdroje/indexu a booleovskou hodnotu ztlumení" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Je nutné zadat index vstupu cíle a booleovskou hodnotu ztlumení" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Neplatné určení indexu vstupu cíle" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Nezadán žádný platný příkaz." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2303,48 +2258,48 @@ msgstr "Nezdařilo se nahrát data cookie\n" msgid "Not yet implemented.\n" msgstr "Doposud neimplementováno.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "Neběží žádný démon PulseAudio, nebo neběží jako démon sezení." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Nezdařilo se zabít démona PulseAudio." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Démon neodpovídá." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Nelze přistoupit k zámku automatického spouštění." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2361,7 +2316,7 @@ msgstr "" "Probudilo nás nastavení POLLOUT - nicméně následné snd_pcm_avail() vrátilo 0 " "či jinou hodnotu < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2379,15 +2334,19 @@ msgstr "" "či jinou hodnotu < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Vypnuto" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Přehrávání s velmi věrnou reprodukcí (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Záznam s velmi věrnou reprodukcí (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Duplexní telefonie (HSP/HFP)" @@ -2395,6 +2354,145 @@ msgstr "Duplexní telefonie (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "Zvukový server PulseAudio" +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Neplatný název klienta \"%s\"\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "Selhalo zjištění určení vzorku ze souboru.\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Nelze se spojit se systémovou sběrnicí: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Nelze získat volajícího z PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Nelze nastavit UID na objekt volajícího." + +#~ msgid "Failed to get CK session." +#~ msgstr "Nezdařilo se získání sezení CK." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Nelze nastavit UID na objekt sezení." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Nelze alokovat PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "Nelze nastavit action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Nelze alokovat PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Nelze spustit PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Nezdařilo se určit, zda je volající oprávněn: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Nezdařilo se získat oprávnění: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit odpověděl s \"%s\"" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Plánování o vysoké prioritě (záporná úroveň nice v Unixu) démona " +#~ "PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Plánování v reálném čase démona PulseAudio" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "Systémová pravidla znemožňují technologii PulseAudio získat přístup k " +#~ "plánování o vysoké prioritě." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "Systémová pravidla znemožňují technologii PulseAudio získat přístup k " +#~ "plánování v reálném čase." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() selhalo: %s\n" + +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect() selhalo: %s\n" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Nacházíme se ve skupině \"%s\", což umožňuje plánování o vysoké prioritě." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "" +#~ "Nacházíme se ve skupině \"%s\", což umožňuje plánování v reálném čase." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "PolicyKit nám udělil oprávnění acquire-high-priority." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit nám neudělil oprávnění acquire-high-priority." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit nám udělil oprávnění acquire-real-time." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit nám neudělil oprávnění acquire-real-time." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "Voláno SUID root a v nastavení bylo požádáno o plánování v reálném čase " +#~ "či o vysoké prioritě. Schází nám ovšem potřebná oprávnění.\n" +#~ "Nejsme ve skupině \"%s\", PolicyKit nám odmítá přidělit požadovaná " +#~ "oprávnění a je nutné zvýšit omezení zdroje RLIMIT_NICE/RLIMIT_RTPRIO.\n" +#~ "Plánování v reálném čase či o vysoké prioritě zapnete získáním " +#~ "příslušných oprávnění PolicyKit, nebo tím, že se stanete členy \"%s\", " +#~ "nebo uživateli zvýšíte omezení zdroje RLIMIT_NICE/RLIMIT_RTPRIO." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "Plánování o vysoké prioritě v konfiguraci zapnuto, ale nepovoleno " +#~ "pravidly." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "Úspěšně zvýšeno RLIMIT_RTPRIO" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO selhalo: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Vzdávání se CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "Plánování v reálném čase v konfiguraci zapnuto, ale nepovoleno pravidly." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Schopnosti úspěšně omezeny na CAP_SYS_NICE." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() selhalo.\n" + #~ msgid "Analog Mono" #~ msgstr "Analogové mono" @@ -2431,9 +2529,6 @@ msgstr "Zvukový server PulseAudio" #~ msgid "Output %s + Input %s" #~ msgstr "Výstup %s + vstup %s" -#~ msgid "Output %s" -#~ msgstr "Výstup %s" - #~ msgid "Input %s" #~ msgstr "Vstup %s" diff --git a/po/de.po b/po/de.po index dd96f71c6..97f7163d4 100644 --- a/po/de.po +++ b/po/de.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the pulseaudio package. # # Fabian Affolter , 2008-2009. -# Micha Pietsch , 2008 +# Micha Pietsch , 2008, 2009. # msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: 2009-04-18 12:43+0100\n" "Last-Translator: Fabian Affolter \n" "Language-Team: German \n" @@ -19,7 +19,12 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: German\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -32,7 +37,7 @@ msgstr "" "Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie " "diesen Punkt den ALSA-Entwicklern." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -45,7 +50,7 @@ msgstr "" "Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie " "diesen Punkt den ALSA-Entwicklern." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -58,6 +63,14 @@ msgstr "" "Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie " "diesen Punkt den ALSA-Entwicklern." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" msgstr "" @@ -71,11 +84,20 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Ausgang %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Internes Audio" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -91,214 +113,92 @@ msgstr "Neuer dlopen-Loader konnte nicht gefunden werden." msgid "Failed to add bind-now-loader." msgstr "Hinzufügen von Bind-Now-Loader fehlgeschlagen." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Kann nicht mit dem System-Bus verbinden: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Kann Caller von PID nicht beziehen: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Kann UID für Caller-Objekt nicht setzen." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Kann CK-Session nicht beziehen." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Kann UID für Session-Objekt nicht setzen." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Konnte PolKitAction nicht zuordnen." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Kann action_id nicht setzen" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Konnte PolKitContext nicht zuordnen." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Konnte PolKitContext nicht initialisieren: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Keine Authorisierung erhalten: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit antwortete mit '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Signal %s empfangen." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Wird beendet." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Benutzer '%s' nicht gefunden." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Gruppe '%s' nicht gefunden." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Konnte '%s' nciht erzeugen: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Wechseln der GID fehlgeschlagen: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Wechseln der UID fehlgeschlagen: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Root-Berechtigungen erfolgreich zurückgesetzt." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "System-Modus auf dieser Plattform nicht unterstützt." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Parsen der Kommandzeile fehlgeschlagen." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität " -"ermöglicht." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "Richtlinien gewähren das Recht aquire-high-priority." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "Richtlinien verweigern das Recht acquire-high-priority." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "Richtlinien gewähren das Recht aquire-real-time." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "Richtlinien verweigern das Recht acquire-real-time." - -#: ../src/daemon/main.c:560 -#, fuzzy, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n" -"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-" -"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO erfolgreich erhöht" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Verwerfe CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Daemon läuft nicht" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Daemon läuft als PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Konnte Prozess nicht abbrechen: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -306,153 +206,155 @@ msgstr "" "Dieses Programm sollte ohne die Option --system nicht als Administrator " "ausgeführt werden." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Root-Berechtigungen benötigt." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start nicht unterstützt für System-Instanzen." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "System-Modus aktiv, SHM-Modus gezwungenermaßen deaktiviert!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaßen deaktiviert!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Reservieren von STDIO fehlgeschlagen." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe fehlgeschlagen: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() fehlgeschlagen: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() fehlgeschlagen: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Start des Daemons fehlgeschlagen." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Start des Daemons erfolgreich." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Dies ist PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Kompilier-Host: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Kompilier-CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Laufe auf Host: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUs gefunden." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Seitengröße ist %lu Bytes." -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Kompiliere mit Valgrind-Unterstützung: ja" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Kompiliere mit Valgrind-Unterstützung: nein" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Läuft im Valgrind-Modus: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimiertes Build: ja" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimiertes Build: nein" -#: ../src/daemon/main.c:902 -#, fuzzy +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definiert, alle Ansprüche deaktiviert." -#: ../src/daemon/main.c:904 -#, fuzzy +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert." -#: ../src/daemon/main.c:906 -#, fuzzy +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Alle Ansprüche aktiviert." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Beziehen der Maschinen-ID fehlgeschlagen" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "System- ID ist %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." msgstr "System- ID ist %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Nutze Laufzeit-Verzeichnis %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Nutze Zustands-Verzeichnis %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, fuzzy, c-format +msgid "Using modules directory %s." +msgstr "Nutze Laufzeit-Verzeichnis %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Laufe im System-Modus: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -462,41 +364,41 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() fehlgeschlagen." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() fehlgeschlagen." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Konnte Daemon nicht initialisieren." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Daemon verweigert Ausführung, da keine Module geladen." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Start des Daemons abgeschlossen." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Herunterfahren des Daemon gestartet." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Daemon beendet." @@ -750,73 +652,72 @@ msgstr "" msgid "Path: %s\n" msgstr "Pfad: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Ungültiges Log-Ziel '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Ungültige Log-Stufe '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Ungültige Resample-Methode '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Ungültiges rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Ungültiges Sample-Format '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Ungültige Sample-Rate '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Ungültige Fragmentgröße '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Ungültige Nice-Stufe '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s" -#: ../src/daemon/daemon-conf.c:540 -#, fuzzy +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -824,19 +725,16 @@ msgstr "" "Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen " "als die angegebene Standard-Kanal-Anzahl." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Lese von Konfigurationsdatei: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." +#: ../src/daemon/caps.c:62 +#, fuzzy +msgid "Cleaning up privileges." msgstr "Root-Privilegien aufgeben." -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert." - #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" msgstr "PulseAudio Sound System" @@ -845,32 +743,7 @@ msgstr "PulseAudio Sound System" msgid "Start the PulseAudio Sound System" msgstr "Das PulseAudio Sound System starten" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -#, fuzzy -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Echtzeit-Terminierung des PulseAudio-Daemon fehlgeschlagen" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -#, fuzzy -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority " -"scheduling." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -#, fuzzy -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-" -"Terminierung.." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1074,33 +947,33 @@ msgstr "Oben Hinten Links" msgid "Top Rear Right" msgstr "Oben Hinten Rechts" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(ungültig)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1202,29 +1075,37 @@ msgstr "Fehlende Implementation" #: ../src/pulse/error.c:67 msgid "Client forked" +msgstr "Client geteilt" + +#: ../src/pulse/error.c:68 +msgid "Input/Output error" msgstr "" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1237,188 +1118,192 @@ msgstr "XOpenDisplay() fehlgeschlagen" msgid "Failed to parse cookie data" msgstr "Parsen der Cookie-Daten fehlgeschlagen" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Verbindungsversuch ohne Cookie, da keines geladen." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten" -#: ../src/utils/pacat.c:107 -#, c-format -msgid "Failed to drain stream: %s\n" +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" msgstr "Entleeren des Streams fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" +#: ../src/utils/pacat.c:113 +#, fuzzy +msgid "Playback stream drained." msgstr "Wiedergabe-Stream entleert.\n" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" +#: ../src/utils/pacat.c:123 +#, fuzzy +msgid "Draining connection to server." msgstr "Draining connection to server.\n" -#: ../src/utils/pacat.c:135 -#, c-format -msgid "pa_stream_drain(): %s\n" +#: ../src/utils/pacat.c:136 +#, fuzzy, c-format +msgid "pa_stream_drain(): %s" msgstr "pa_stream_drain(): %s\n" -#: ../src/utils/pacat.c:158 -#, c-format -msgid "pa_stream_write() failed: %s\n" +#: ../src/utils/pacat.c:159 +#, fuzzy, c-format +msgid "pa_stream_write() failed: %s" msgstr "pa_stream_write() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 -#, c-format -msgid "pa_stream_peek() failed: %s\n" +#: ../src/utils/pacat.c:197 +#, fuzzy, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() fehlgeschlagen: %s\n" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, fuzzy, c-format +msgid "pa_stream_peek() failed: %s" msgstr "pa_stream_peek() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +#, fuzzy +msgid "Stream successfully created." msgstr "Stream wurde erfolgreich erstellt.\n" -#: ../src/utils/pacat.c:305 -#, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +#: ../src/utils/pacat.c:310 +#, fuzzy, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:314 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n" -#: ../src/utils/pacat.c:312 -#, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +#: ../src/utils/pacat.c:317 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n" -#: ../src/utils/pacat.c:316 -#, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +#: ../src/utils/pacat.c:321 +#, fuzzy, c-format +msgid "Using sample spec '%s', channel map '%s'." msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n" -#: ../src/utils/pacat.c:320 -#, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +#: ../src/utils/pacat.c:325 +#, fuzzy, c-format +msgid "Connected to device %s (%u, %ssuspended)." msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n" -#: ../src/utils/pacat.c:330 -#, c-format -msgid "Stream error: %s\n" +#: ../src/utils/pacat.c:335 +#, fuzzy, c-format +msgid "Stream error: %s" msgstr "Stream-Fehler: %s\n" -#: ../src/utils/pacat.c:340 -#, c-format -msgid "Stream device suspended.%s \n" +#: ../src/utils/pacat.c:345 +#, fuzzy, c-format +msgid "Stream device suspended.%s" msgstr "Stream-Gerät ausgesetzt.%s\n" -#: ../src/utils/pacat.c:342 -#, c-format -msgid "Stream device resumed.%s \n" +#: ../src/utils/pacat.c:347 +#, fuzzy, c-format +msgid "Stream device resumed.%s" msgstr "Stream-Gerät reaktiviert.%s\n" -#: ../src/utils/pacat.c:350 -#, c-format -msgid "Stream underrun.%s \n" +#: ../src/utils/pacat.c:355 +#, fuzzy, c-format +msgid "Stream underrun.%s" msgstr "Stream unterlaufen.%s \n" -#: ../src/utils/pacat.c:357 -#, c-format -msgid "Stream overrun.%s \n" +#: ../src/utils/pacat.c:362 +#, fuzzy, c-format +msgid "Stream overrun.%s" msgstr "Stream überlief.%s \n" -#: ../src/utils/pacat.c:364 -#, c-format -msgid "Stream started.%s \n" +#: ../src/utils/pacat.c:369 +#, fuzzy, c-format +msgid "Stream started.%s" msgstr "Stream gestartet: %s\n" -#: ../src/utils/pacat.c:371 -#, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" +#: ../src/utils/pacat.c:376 +#, fuzzy, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "nicht " -#: ../src/utils/pacat.c:378 -#, c-format -msgid "Stream buffer attributes changed.%s \n" +#: ../src/utils/pacat.c:383 +#, fuzzy, c-format +msgid "Stream buffer attributes changed.%s" msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n" -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" +#: ../src/utils/pacat.c:415 +#, fuzzy, c-format +msgid "Connection established.%s" msgstr "Verbindung hergestellt.%s \n" -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" +#: ../src/utils/pacat.c:418 +#, fuzzy, c-format +msgid "pa_stream_new() failed: %s" msgstr "pa_stream_new() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +#: ../src/utils/pacat.c:446 +#, fuzzy, c-format +msgid "pa_stream_connect_playback() failed: %s" msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" +#: ../src/utils/pacat.c:452 +#, fuzzy, c-format +msgid "pa_stream_connect_record() failed: %s" msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, fuzzy, c-format +msgid "Connection failure: %s" msgstr "Verbindungsfehler: %s\n" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +#, fuzzy +msgid "Got EOF." msgstr "EOF empfangen.\n" -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "read() fehlgeschlagen: %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" +#: ../src/utils/pacat.c:536 +#, fuzzy, c-format +msgid "write() failed: %s" msgstr "write() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" +#: ../src/utils/pacat.c:557 +#, fuzzy +msgid "Got signal, exiting." msgstr "Signal empfangen, beende.\n" -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" msgstr "Erhalten der Latenz fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +#: ../src/utils/pacat.c:595 +#, fuzzy, c-format +msgid "pa_stream_update_timing_info() failed: %s" msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n" #: ../src/utils/pacat.c:605 @@ -1531,135 +1416,141 @@ msgstr "" "Kompiliert mit libpulse %s\n" "Gelinkt mit libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, fuzzy, c-format -msgid "Invalid client name '%s'\n" +msgid "Invalid client name '%s'" +msgstr "Ungültiger Client-Name '%s'\n" + +#: ../src/utils/pacat.c:775 +#, fuzzy, c-format +msgid "Invalid stream name '%s'" +msgstr "Ungültiger Stream-Name '%s'\n" + +#: ../src/utils/pacat.c:812 +#, fuzzy, c-format +msgid "Invalid channel map '%s'" msgstr "Ungültige Kanal-Zuweisung '%s'\n" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:841 #, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Ungültige Resample-Methode '%s'." - -#: ../src/utils/pacat.c:813 -#, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Ungültige Kanal-Zuweisung '%s'\n" - -#: ../src/utils/pacat.c:842 -#, c-format -msgid "Invalid latency specification '%s'\n" +msgid "Invalid latency specification '%s'" msgstr "Ungültige Latenz-Angaben '%s'\n" -#: ../src/utils/pacat.c:849 -#, c-format -msgid "Invalid process time specification '%s'\n" +#: ../src/utils/pacat.c:848 +#, fuzzy, c-format +msgid "Invalid process time specification '%s'" msgstr "Ungültige Prozesszeit-Angaben '%s'\n" -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:860 #, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Ungültige Resample-Methode '%s'." +msgid "Invalid property '%s'" +msgstr "Ungültige Eigenschaft '%s'\n" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Unbekanntes Dateiformat %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" +#: ../src/utils/pacat.c:896 +#, fuzzy +msgid "Invalid sample specification" msgstr "Ungültige Sample-Angaben\n" -#: ../src/utils/pacat.c:907 -#, c-format -msgid "open(): %s\n" +#: ../src/utils/pacat.c:906 +#, fuzzy, c-format +msgid "open(): %s" msgstr "open(): %s\n" -#: ../src/utils/pacat.c:912 -#, c-format -msgid "dup2(): %s\n" +#: ../src/utils/pacat.c:911 +#, fuzzy, c-format +msgid "dup2(): %s" msgstr "dup2(): %s\n" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" +#: ../src/utils/pacat.c:918 +#, fuzzy +msgid "Too many arguments." msgstr "Zu viele Argumente.\n" -#: ../src/utils/pacat.c:930 +#: ../src/utils/pacat.c:929 #, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" +msgid "Failed to generate sample specification for file." +msgstr "Beziehen der Sample-Informationen für die Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:950 +#: ../src/utils/pacat.c:949 #, fuzzy -msgid "Failed to open audio file.\n" +msgid "Failed to open audio file." msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 +#, fuzzy msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "Warnung: Beziehen der Sample-Angabe aus Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 #, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" +msgid "Failed to determine sample specification from file." +msgstr "Beziehen der Sample-Informationen der Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +#, fuzzy +msgid "Warning: Failed to determine channel map from file." +msgstr "Warnung: Bestimmung der Kanalzuordnung aus Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" +#: ../src/utils/pacat.c:978 +#, fuzzy +msgid "Channel map doesn't match sample specification" msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +#, fuzzy +msgid "Warning: failed to write channel map to file." +msgstr "Warnung: Schreiben der Kanalzuordnung in Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1005 +#: ../src/utils/pacat.c:1004 #, fuzzy, c-format msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "" +"Öffnen eines %s-Streams mit Sample-Angabe '%s' und Kanalzuordnung '%s'.\n" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "recording" msgstr "aufnehmen" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "abspielen" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 -#, c-format -msgid "pa_mainloop_new() failed.\n" +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +#, fuzzy +msgid "pa_mainloop_new() failed." msgstr "pa_mainloop_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1050 +#, fuzzy +msgid "io_new() failed." msgstr "io_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +#, fuzzy +msgid "pa_context_new() failed." msgstr "pa_context_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" msgstr "pa_context_new() fehlgeschlagen: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() fehlgeschlagen.\n" +#: ../src/utils/pacat.c:1071 +#, fuzzy +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +#, fuzzy +msgid "pa_mainloop_run() failed." msgstr "pa_mainloop_run() fehlgeschlagen.\n" #: ../src/utils/pasuspender.c:81 @@ -1687,7 +1578,12 @@ msgstr "Resume fehlgeschlagen: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Verbindungsfehler: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT empfangen, beende.\n" @@ -1726,32 +1622,47 @@ msgstr "" "kompiliert mit libpulse %s\n" "Gelinkt mit libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() fehlgeschlagen.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() fehlgeschlagen.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() fehlgeschlagen.\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Beziehen der Statistik fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Momentane Nutzung: %u Blöcke mit insgesamt %s Bytes.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Während gesamter Laufzeit: %u Blöcke mit insgesamt %s Bytes.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Sample-Pufferspeichergrösse: %s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1774,12 +1685,12 @@ msgstr "" "-Standard-Quelle: %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1818,22 +1729,22 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format msgid "\tPorts:\n" msgstr "\tProfile:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format msgid "\tActive Port: %s\n" msgstr "\tAktive Profile: %s\n" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1872,20 +1783,20 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "k. A." -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1902,12 +1813,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1922,12 +1833,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1944,22 +1855,22 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfile:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tAktive Profile: %s\n" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1996,12 +1907,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2030,12 +1941,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2066,21 +1977,27 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "Hochladen des Sample fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "Dateiende ist zu früh aufgetreten\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "SIGINT empfangen, beende.\n" + +#: ../src/utils/pactl.c:869 #, fuzzy, c-format msgid "" "%s [options] stat\n" @@ -2089,15 +2006,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2127,7 +2050,7 @@ msgstr "" " -s, --server=SERVER Name des Zielservers\n" " -n, --client-name=NAME Rufname des Clients auf dem Server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2138,83 +2061,135 @@ msgstr "" "Kompiliert mit libpulse %s\n" "Gelinkt mit libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "Geben Sie eine zu öffnende Sample-Datei an\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n" -#: ../src/utils/pactl.c:951 +#: ../src/utils/pactl.c:1004 #, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" +msgid "Warning: Failed to determine sample specification from file." +msgstr "Warnung: Beziehen der Sample-Angabe aus Datei fehlgeschlagen.\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" msgstr "" "Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "Sie müssen einen Indexwert für ein Modul angeben\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 +#, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen " "Wert übergeben.\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 +#, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen " "Wert übergeben.\n" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" - -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" +msgid "You have to specify a card name/index and a profile name" msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" +msgid "You have to specify a sink name/index and a port name" +msgstr "Sie müssen einen Senkennamen/-Indexwert und einen Portnamen angeben\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1137 +#, fuzzy +msgid "You have to specify a source name/index and a port name" +msgstr "Sie müssen einen Quellennamen/-Indexwert und einen Portnamen angeben\n" + +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "Sie müssen einen Senkennamen/-Indexwert und einen Portnamen angeben\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Ungültige Sample-Angaben\n" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "Sie müssen einen Quellennamen/-Indexwert und einen Portnamen angeben\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Sie müssen einen Senkennamen/-Indexwert und einen Portnamen angeben\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Sie müssen einen Quellennamen/-Indexwert und einen Portnamen angeben\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Ungültige Sample-Angaben\n" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "Kein gültiger Befehl angegeben.\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_new() fehlgeschlagen: %s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2294,48 +2269,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n" msgid "Not yet implemented.\n" msgstr "Noch nicht implementiert.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Daemon antwortet nicht." -#: ../src/utils/pacmd.c:146 -#, c-format -msgid "select(): %s" -msgstr "select(): %s" +#: ../src/utils/pacmd.c:161 +#, fuzzy, c-format +msgid "poll(): %s" +msgstr "fork(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Fehler beim Zugriff auf Autostart -Sperre." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2346,7 +2321,7 @@ msgid "" "returned 0 or another value < min_avail." msgstr "" -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2358,15 +2333,20 @@ msgid "" msgstr "" #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Aus" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "High Fidelity Playback (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +#, fuzzy +msgid "High Fidelity Capture (A2DP)" +msgstr "High Fidelity Playback (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telephony Duplex (HSP/HFP)" @@ -2374,6 +2354,141 @@ msgstr "Telephony Duplex (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "PulseAudio Sound Server" +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Ungültiger Client-Name '%s'\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "Beziehen der Sample-Informationen der Datei fehlgeschlagen.\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Kann nicht mit dem System-Bus verbinden: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Kann Caller von PID nicht beziehen: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Kann UID für Caller-Objekt nicht setzen." + +#~ msgid "Failed to get CK session." +#~ msgstr "Kann CK-Session nicht beziehen." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Kann UID für Session-Objekt nicht setzen." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Konnte PolKitAction nicht zuordnen." + +#~ msgid "Cannot set action_id" +#~ msgstr "Kann action_id nicht setzen" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Konnte PolKitContext nicht zuordnen." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Konnte PolKitContext nicht initialisieren: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Keine Authorisierung erhalten: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit antwortete mit '%s'" + +#, fuzzy +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Hochprioritäts-Terminierung () (negative Unix nice level) für den " +#~ "PulseAudio-Dienst" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Echtzeit-Terminierung des PulseAudio-Daemon" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority " +#~ "scheduling." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-" +#~ "Terminierung." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() fehlgeschlagen: %s\n" + +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect() fehlgeschlagen: %s\n" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität " +#~ "ermöglicht." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "" +#~ "Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "Richtlinien gewähren das Recht aquire-high-priority." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "Richtlinien verweigern das Recht acquire-high-priority." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "Richtlinien gewähren das Recht aquire-real-time." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "Richtlinien verweigern das Recht acquire-real-time." + +#, fuzzy +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n" +#~ "Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-" +#~ "Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '" + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO erfolgreich erhöht" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Verwerfe CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() fehlgeschlagen.\n" + #~ msgid "Analog Mono" #~ msgstr "Analog Mono" @@ -2410,9 +2525,6 @@ msgstr "PulseAudio Sound Server" #~ msgid "Output %s + Input %s" #~ msgstr "Ausgabe %s + Eingabe %s" -#~ msgid "Output %s" -#~ msgstr "Ausgang %s" - #~ msgid "Input %s" #~ msgstr "Eingang %s" diff --git a/po/de_CH.po b/po/de_CH.po index 7c069efb5..662176ec7 100644 --- a/po/de_CH.po +++ b/po/de_CH.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: 2009-04-18 12:55+0100\n" "Last-Translator: Fabian Affolter \n" "Language-Team: German \n" @@ -18,7 +18,12 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Swiss German\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -31,7 +36,7 @@ msgstr "" "Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie " "diesen Punkt den ALSA-Entwicklern." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -44,7 +49,7 @@ msgstr "" "Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie " "diesen Punkt den ALSA-Entwicklern." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -57,6 +62,14 @@ msgstr "" "Dies ist wahrscheinlich ein Fehler im ALSA-Treiber '%s'. Bitte melden Sie " "diesen Punkt den ALSA-Entwicklern." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" msgstr "" @@ -70,11 +83,20 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Ausgang %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Internes Audio" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -90,214 +112,92 @@ msgstr "Neuer dlopen-Loader konnte nicht gefunden werden." msgid "Failed to add bind-now-loader." msgstr "Hinzufügen von Bind-Now-Loader fehlgeschlagen." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Kann nicht mit dem System-Bus verbinden: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Kann Caller von PID nicht beziehen: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Kann UID für Caller-Objekt nicht setzen." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Kann CK-Session nicht beziehen." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Kann UID für Session-Objekt nicht setzen." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Konnte PolKitAction nicht zuordnen." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Kann action_id nicht setzen" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Konnte PolKitContext nicht zuordnen." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Konnte PolKitContext nicht initialisieren: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Keine Authorisierung erhalten: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit antwortete mit '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Signal %s empfangen." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Wird beendet." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Benutzer '%s' nicht gefunden." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Gruppe '%s' nicht gefunden." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Konnte '%s' nciht erzeugen: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Wechseln der GID fehlgeschlagen: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Wechseln der UID fehlgeschlagen: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Root-Berechtigungen erfolgreich zurückgesetzt." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "System-Modus auf dieser Plattform nicht unterstützt." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Parsen der Kommandzeile fehlgeschlagen." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität " -"ermöglicht." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "Richtlinien gewähren das Recht aquire-high-priority." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "Richtlinien verweigern das Recht acquire-high-priority." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "Richtlinien gewähren das Recht aquire-real-time." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "Richtlinien verweigern das Recht acquire-real-time." - -#: ../src/daemon/main.c:560 -#, fuzzy, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n" -"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-" -"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO erfolgreich erhöht" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Verwerfe CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Daemon läuft nicht" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Daemon läuft als PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Konnte Prozess nicht abbrechen: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -305,153 +205,158 @@ msgstr "" "Dieses Programm sollte ohne die Option --system nicht als Administrator " "ausgeführt werden." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Root-Berechtigungen benötigt." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start nicht unterstützt für System-Instanzen." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "System-Modus aktiv, SHM-Modus gezwungenermassen deaktiviert!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermassen deaktiviert!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Reservieren von STDIO fehlgeschlagen." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe fehlgeschlagen: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() fehlgeschlagen: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() fehlgeschlagen: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Start des Daemons fehlgeschlagen." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Start des Daemons erfolgreich." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Dies ist PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Kompilier-Host: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Kompilier-CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Laufe auf Host: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUs gefunden." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Seitengrösse ist %lu Bytes." -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Kompiliere mit Valgrind-Unterstützung: ja" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Kompiliere mit Valgrind-Unterstützung: nein" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Läuft im Valgrind-Modus: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimiertes Build: ja" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimiertes Build: nein" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 #, fuzzy msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definiert, alle Ansprüche deaktiviert." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 #, fuzzy msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 #, fuzzy msgid "All asserts enabled." msgstr "Alle Ansprüche aktiviert." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Beziehen der Maschinen-ID fehlgeschlagen" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "System- ID ist %s." -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, fuzzy, c-format msgid "Session ID is %s." msgstr "System- ID ist %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Nutze Laufzeit-Verzeichnis %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Nutze Zustands-Verzeichnis %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, fuzzy, c-format +msgid "Using modules directory %s." +msgstr "Nutze Laufzeit-Verzeichnis %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Laufe im System-Modus: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -461,41 +366,41 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() fehlgeschlagen." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() fehlgeschlagen." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Konnte Daemon nicht initialisieren." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Daemon verweigert Ausführung, da keine Module geladen." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Start des Daemons abgeschlossen." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Herunterfahren des Daemon gestartet." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Daemon beendet." @@ -749,72 +654,72 @@ msgstr "" msgid "Path: %s\n" msgstr "Pfad: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Ungültiges Log-Ziel '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Ungültige Log-Stufe '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Ungültige Resample-Methode '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Ungültiges rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Ungültiges Sample-Format '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Ungültige Sample-Rate '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Ungültige Nice-Stufe '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 #, fuzzy msgid "" "The specified default channel map has a different number of channels than " @@ -823,19 +728,16 @@ msgstr "" "Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen " "als die angegebene Standard-Kanal-Anzahl." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Lese von Konfigurationsdatei: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." +#: ../src/daemon/caps.c:62 +#, fuzzy +msgid "Cleaning up privileges." msgstr "Root-Privilegien aufgeben." -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert." - #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" msgstr "PulseAudio Sound System" @@ -844,35 +746,7 @@ msgstr "PulseAudio Sound System" msgid "Start the PulseAudio Sound System" msgstr "Das PulseAudio Sound System starten" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -#, fuzzy -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"High-priority scheduling (verkleinere Unix nice-Stufe) für den PulseAudio-" -"Daemon" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -#, fuzzy -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Echtzeit-Terminierung des PulseAudio-Daemon fehlgeschlagen" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -#, fuzzy -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority " -"scheduling." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -#, fuzzy -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-" -"Terminierung.." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1076,33 +950,33 @@ msgstr "Oben Hinten Links" msgid "Top Rear Right" msgstr "Oben Hinten Rechts" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(ungültig)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1207,27 +1081,35 @@ msgstr "Fehlende Implementation" msgid "Client forked" msgstr "Client geforket" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1240,188 +1122,192 @@ msgstr "XOpenDisplay() fehlgeschlagen" msgid "Failed to parse cookie data" msgstr "Parsen der Cookie-Daten fehlgeschlagen" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Verbindungsversuch ohne Cookie, da keines geladen." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten" -#: ../src/utils/pacat.c:107 -#, c-format -msgid "Failed to drain stream: %s\n" +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" msgstr "Entleeren des Streams fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" +#: ../src/utils/pacat.c:113 +#, fuzzy +msgid "Playback stream drained." msgstr "Wiedergabe-Stream entleert.\n" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" +#: ../src/utils/pacat.c:123 +#, fuzzy +msgid "Draining connection to server." msgstr "Draining connection to server.\n" -#: ../src/utils/pacat.c:135 -#, c-format -msgid "pa_stream_drain(): %s\n" +#: ../src/utils/pacat.c:136 +#, fuzzy, c-format +msgid "pa_stream_drain(): %s" msgstr "pa_stream_drain(): %s\n" -#: ../src/utils/pacat.c:158 -#, c-format -msgid "pa_stream_write() failed: %s\n" +#: ../src/utils/pacat.c:159 +#, fuzzy, c-format +msgid "pa_stream_write() failed: %s" msgstr "pa_stream_write() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 -#, c-format -msgid "pa_stream_peek() failed: %s\n" +#: ../src/utils/pacat.c:197 +#, fuzzy, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() fehlgeschlagen: %s\n" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, fuzzy, c-format +msgid "pa_stream_peek() failed: %s" msgstr "pa_stream_peek() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +#, fuzzy +msgid "Stream successfully created." msgstr "Stream wurde erfolgreich erstellt.\n" -#: ../src/utils/pacat.c:305 -#, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +#: ../src/utils/pacat.c:310 +#, fuzzy, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "pa_stream_get_buffer_attr() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:314 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "Pufferdaten: maxlenght=%u, tlength=%u, prebuf=%u, minreq=%u\n" -#: ../src/utils/pacat.c:312 -#, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +#: ../src/utils/pacat.c:317 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "Pufferdaten: maxlength=%u, fragsize=%u\n" -#: ../src/utils/pacat.c:316 -#, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +#: ../src/utils/pacat.c:321 +#, fuzzy, c-format +msgid "Using sample spec '%s', channel map '%s'." msgstr "Benutze Sample-Angabe '%s', Kanalzuordnung '%s'.\n" -#: ../src/utils/pacat.c:320 -#, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +#: ../src/utils/pacat.c:325 +#, fuzzy, c-format +msgid "Connected to device %s (%u, %ssuspended)." msgstr "Verbunden mit Gerät %s (%u, %sausgesetzt).\n" -#: ../src/utils/pacat.c:330 -#, c-format -msgid "Stream error: %s\n" +#: ../src/utils/pacat.c:335 +#, fuzzy, c-format +msgid "Stream error: %s" msgstr "Stream-Fehler: %s\n" -#: ../src/utils/pacat.c:340 -#, c-format -msgid "Stream device suspended.%s \n" +#: ../src/utils/pacat.c:345 +#, fuzzy, c-format +msgid "Stream device suspended.%s" msgstr "Stream-Gerät ausgesetzt.%s\n" -#: ../src/utils/pacat.c:342 -#, c-format -msgid "Stream device resumed.%s \n" +#: ../src/utils/pacat.c:347 +#, fuzzy, c-format +msgid "Stream device resumed.%s" msgstr "Stream-Gerät reaktiviert.%s\n" -#: ../src/utils/pacat.c:350 -#, c-format -msgid "Stream underrun.%s \n" +#: ../src/utils/pacat.c:355 +#, fuzzy, c-format +msgid "Stream underrun.%s" msgstr "Stream unterlaufen.%s \n" -#: ../src/utils/pacat.c:357 -#, c-format -msgid "Stream overrun.%s \n" +#: ../src/utils/pacat.c:362 +#, fuzzy, c-format +msgid "Stream overrun.%s" msgstr "Stream überlief.%s \n" -#: ../src/utils/pacat.c:364 -#, c-format -msgid "Stream started.%s \n" +#: ../src/utils/pacat.c:369 +#, fuzzy, c-format +msgid "Stream started.%s" msgstr "Stream gestartet: %s\n" -#: ../src/utils/pacat.c:371 -#, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" +#: ../src/utils/pacat.c:376 +#, fuzzy, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" msgstr "Stream an Gerät %s übergeben (%u, %sausgesetzt).%s \n" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "nicht " -#: ../src/utils/pacat.c:378 -#, c-format -msgid "Stream buffer attributes changed.%s \n" +#: ../src/utils/pacat.c:383 +#, fuzzy, c-format +msgid "Stream buffer attributes changed.%s" msgstr "Stream-Zwischenspeicher-Attribute geändert.%s \n" -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" +#: ../src/utils/pacat.c:415 +#, fuzzy, c-format +msgid "Connection established.%s" msgstr "Verbindung hergestellt.%s \n" -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" +#: ../src/utils/pacat.c:418 +#, fuzzy, c-format +msgid "pa_stream_new() failed: %s" msgstr "pa_stream_new() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +#: ../src/utils/pacat.c:446 +#, fuzzy, c-format +msgid "pa_stream_connect_playback() failed: %s" msgstr "pa_stream_connect_playback() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" +#: ../src/utils/pacat.c:452 +#, fuzzy, c-format +msgid "pa_stream_connect_record() failed: %s" msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, fuzzy, c-format +msgid "Connection failure: %s" msgstr "Verbindungsfehler: %s\n" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +#, fuzzy +msgid "Got EOF." msgstr "EOF empfangen.\n" -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "read() fehlgeschlagen: %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" +#: ../src/utils/pacat.c:536 +#, fuzzy, c-format +msgid "write() failed: %s" msgstr "write() fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" +#: ../src/utils/pacat.c:557 +#, fuzzy +msgid "Got signal, exiting." msgstr "Signal empfangen, beende.\n" -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" msgstr "Erhalten der Latenz fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Zeit: %0.3f sec; Latenz: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +#: ../src/utils/pacat.c:595 +#, fuzzy, c-format +msgid "pa_stream_update_timing_info() failed: %s" msgstr "pa_stream_update_timing_info() fehlgeschlagen: %s\n" #: ../src/utils/pacat.c:605 @@ -1534,135 +1420,140 @@ msgstr "" "Kompiliert mit libpulse %s\n" "Gelinkt mit libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, fuzzy, c-format -msgid "Invalid client name '%s'\n" +msgid "Invalid client name '%s'" msgstr "Ungültige Kanal-Zuweisung '%s'\n" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:775 #, fuzzy, c-format -msgid "Invalid stream name '%s'\n" +msgid "Invalid stream name '%s'" msgstr "Ungültige Resample-Methode '%s'." -#: ../src/utils/pacat.c:813 -#, c-format -msgid "Invalid channel map '%s'\n" +#: ../src/utils/pacat.c:812 +#, fuzzy, c-format +msgid "Invalid channel map '%s'" msgstr "Ungültige Kanal-Zuweisung '%s'\n" -#: ../src/utils/pacat.c:842 -#, c-format -msgid "Invalid latency specification '%s'\n" +#: ../src/utils/pacat.c:841 +#, fuzzy, c-format +msgid "Invalid latency specification '%s'" msgstr "Ungültige Latenz-Angaben '%s'\n" -#: ../src/utils/pacat.c:849 -#, c-format -msgid "Invalid process time specification '%s'\n" +#: ../src/utils/pacat.c:848 +#, fuzzy, c-format +msgid "Invalid process time specification '%s'" msgstr "Ungültige Prozesszeit-Angaben '%s'\n" -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:860 #, fuzzy, c-format -msgid "Invalid property '%s'\n" +msgid "Invalid property '%s'" msgstr "Ungültige Resample-Methode '%s'." -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." msgstr "" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" +#: ../src/utils/pacat.c:896 +#, fuzzy +msgid "Invalid sample specification" msgstr "Ungültige Sample-Angaben\n" -#: ../src/utils/pacat.c:907 -#, c-format -msgid "open(): %s\n" +#: ../src/utils/pacat.c:906 +#, fuzzy, c-format +msgid "open(): %s" msgstr "open(): %s\n" -#: ../src/utils/pacat.c:912 -#, c-format -msgid "dup2(): %s\n" +#: ../src/utils/pacat.c:911 +#, fuzzy, c-format +msgid "dup2(): %s" msgstr "dup2(): %s\n" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" +#: ../src/utils/pacat.c:918 +#, fuzzy +msgid "Too many arguments." msgstr "Zu viele Argumente.\n" -#: ../src/utils/pacat.c:930 +#: ../src/utils/pacat.c:929 #, fuzzy -msgid "Failed to generate sample specification for file.\n" +msgid "Failed to generate sample specification for file." msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pacat.c:950 +#: ../src/utils/pacat.c:949 #, fuzzy -msgid "Failed to open audio file.\n" +msgid "Failed to open audio file." msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 +#, fuzzy msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" - -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" - -#: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" +"specification from file." msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +#, fuzzy +msgid "Failed to determine sample specification from file." +msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" + +#: ../src/utils/pacat.c:967 +#, fuzzy +msgid "Warning: Failed to determine channel map from file." +msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" + +#: ../src/utils/pacat.c:978 +#, fuzzy +msgid "Channel map doesn't match sample specification" +msgstr "Kanalzuordnung entspricht nicht Einstellungen des Samples\n" + +#: ../src/utils/pacat.c:989 +#, fuzzy +msgid "Warning: failed to write channel map to file." +msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" + +#: ../src/utils/pacat.c:1004 +#, fuzzy, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" + +#: ../src/utils/pacat.c:1005 msgid "recording" msgstr "aufnehmen" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "abspielen" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 -#, c-format -msgid "pa_mainloop_new() failed.\n" +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +#, fuzzy +msgid "pa_mainloop_new() failed." msgstr "pa_mainloop_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1050 +#, fuzzy +msgid "io_new() failed." msgstr "io_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +#, fuzzy +msgid "pa_context_new() failed." msgstr "pa_context_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" msgstr "pa_context_new() fehlgeschlagen: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() fehlgeschlagen.\n" +#: ../src/utils/pacat.c:1071 +#, fuzzy +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new() fehlgeschlagen.\n" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +#, fuzzy +msgid "pa_mainloop_run() failed." msgstr "pa_mainloop_run() fehlgeschlagen.\n" #: ../src/utils/pasuspender.c:81 @@ -1690,7 +1581,12 @@ msgstr "Resume fehlgeschlagen: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Verbindungsfehler: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT empfangen, beende.\n" @@ -1729,32 +1625,47 @@ msgstr "" "kompiliert mit libpulse %s\n" "Gelinkt mit libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() fehlgeschlagen.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() fehlgeschlagen.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() fehlgeschlagen.\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Beziehen der Statistik fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Momentane Nutzung: %u Blöcke mit insgesamt %s Bytes.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Während gesamter Laufzeit: %u Blöcke mit insgesamt %s Bytes.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Sample-Pufferspeichergrösse: %s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1777,12 +1688,12 @@ msgstr "" "-Standard-Quelle: %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1821,22 +1732,22 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, fuzzy, c-format msgid "\tPorts:\n" msgstr "\tProfile:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, fuzzy, c-format msgid "\tActive Port: %s\n" msgstr "\tAktive Profile: %s\n" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1875,20 +1786,20 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "k. A." -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1905,12 +1816,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1925,12 +1836,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1947,22 +1858,22 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfile:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tAktive Profile: %s\n" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1999,12 +1910,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2033,12 +1944,12 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2069,21 +1980,27 @@ msgstr "" "\tEigenschaften:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "Hochladen des Sample fehlgeschlagen: %s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "Dateiende ist zu früh aufgetreten\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "SIGINT empfangen, beende.\n" + +#: ../src/utils/pactl.c:869 #, fuzzy, c-format msgid "" "%s [options] stat\n" @@ -2092,15 +2009,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2130,7 +2053,7 @@ msgstr "" " -s, --server=SERVER Name des Zielservers\n" " -n, --client-name=NAME Rufname des Clients auf dem Server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2141,83 +2064,135 @@ msgstr "" "Kompiliert mit libpulse %s\n" "Gelinkt mit libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "Geben Sie eine zu öffnende Sample-Datei an\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "Öffnen der Audio-Datei fehlgeschlagen.\n" -#: ../src/utils/pactl.c:951 +#: ../src/utils/pactl.c:1004 #, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" +msgid "Warning: Failed to determine sample specification from file." msgstr "Öffne eine %s-Stream mit Sample-Angabe '%s'.\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" msgstr "" "Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "Sie müssen einen Indexwert für ein Modul angeben\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 +#, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen " "Wert übergeben.\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 +#, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen " "Wert übergeben.\n" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" - -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" +msgid "You have to specify a card name/index and a profile name" msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" +msgid "You have to specify a sink name/index and a port name" msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1137 +#, fuzzy +msgid "You have to specify a source name/index and a port name" +msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" + +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Ungültige Sample-Angaben\n" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Ungültige Sample-Angaben\n" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "Kein gültiger Befehl angegeben.\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_new() fehlgeschlagen: %s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2297,48 +2272,48 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n" msgid "Not yet implemented.\n" msgstr "Noch nicht implementiert.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Daemon antwortet nicht." -#: ../src/utils/pacmd.c:146 -#, c-format -msgid "select(): %s" -msgstr "select(): %s" +#: ../src/utils/pacmd.c:161 +#, fuzzy, c-format +msgid "poll(): %s" +msgstr "fork(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Fehler beim Zugriff auf Autostart -Sperre." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2356,7 +2331,7 @@ msgstr "" "von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < " "min_avail ist." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2375,15 +2350,20 @@ msgstr "" "min_avail ist." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Aus" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "High Fidelity Playback (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +#, fuzzy +msgid "High Fidelity Capture (A2DP)" +msgstr "High Fidelity Playback (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telephony Duplex (HSP/HFP)" @@ -2391,6 +2371,147 @@ msgstr "Telephony Duplex (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "PulseAudio Sound Server" +#, fuzzy +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Ungültige Kanal-Zuweisung '%s'\n" + +#, fuzzy +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Kann nicht mit dem System-Bus verbinden: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Kann Caller von PID nicht beziehen: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Kann UID für Caller-Objekt nicht setzen." + +#~ msgid "Failed to get CK session." +#~ msgstr "Kann CK-Session nicht beziehen." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Kann UID für Session-Objekt nicht setzen." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Konnte PolKitAction nicht zuordnen." + +#~ msgid "Cannot set action_id" +#~ msgstr "Kann action_id nicht setzen" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Konnte PolKitContext nicht zuordnen." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Konnte PolKitContext nicht initialisieren: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Autorisierung des Callers konnte nicht sichergestellt werden: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Keine Authorisierung erhalten: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit antwortete mit '%s'" + +#, fuzzy +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "High-priority scheduling (verkleinere Unix nice-Stufe) für den PulseAudio-" +#~ "Daemon" + +#, fuzzy +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Echtzeit-Terminierung des PulseAudio-Daemon fehlgeschlagen" + +#, fuzzy +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "System-Richtlinien verhindert PulseAudio beim Erlangen des high-priority " +#~ "scheduling." + +#, fuzzy +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "System-Richtlinien verhindert PulseAudio beim Erlangen der Echtzeit-" +#~ "Terminierung.." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() fehlgeschlagen: %s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_new() fehlgeschlagen: %s" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität " +#~ "ermöglicht." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "" +#~ "Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "Richtlinien gewähren das Recht aquire-high-priority." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "Richtlinien verweigern das Recht acquire-high-priority." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "Richtlinien gewähren das Recht aquire-real-time." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "Richtlinien verweigern das Recht acquire-real-time." + +#, fuzzy +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n" +#~ "Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-" +#~ "Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '" + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO erfolgreich erhöht" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Verwerfe CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() fehlgeschlagen.\n" + #~ msgid "Analog Mono" #~ msgstr "Analog Mono" @@ -2427,9 +2548,6 @@ msgstr "PulseAudio Sound Server" #~ msgid "Output %s + Input %s" #~ msgstr "Ausgabe %s + Eingabe %s" -#~ msgid "Output %s" -#~ msgstr "Ausgang %s" - #~ msgid "Input %s" #~ msgstr "Eingang %s" diff --git a/po/el.po b/po/el.po index 9e593e169..2db0db5c8 100644 --- a/po/el.po +++ b/po/el.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: el\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: 2008-08-22 19:40+0300\n" "Last-Translator: Dimitris Glezos \n" "Language-Team: Greek \n" @@ -16,7 +16,12 @@ msgstr "" "X-Generator: KAider 0.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -25,7 +30,7 @@ msgid "" "to the ALSA developers." msgstr "" -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -34,7 +39,7 @@ msgid "" "to the ALSA developers." msgstr "" -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -43,6 +48,14 @@ msgid "" "to the ALSA developers." msgstr "" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" msgstr "" @@ -56,11 +69,19 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "" @@ -76,357 +97,246 @@ msgstr "" msgid "Failed to add bind-now-loader." msgstr "" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "" -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Έξοδος." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Αποτυχία εύρεσης ομάδας χρηστών '%s'." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "" -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "" -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Αυτό είναι το PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "" -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, c-format msgid "Session ID is %s." msgstr "" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -436,15 +346,15 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "" -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -452,27 +362,27 @@ msgstr "" "Δικέ μου, ο πυρήνας σου είναι για τα μπάζα! Η πρόταση του σεφ σήμερα είναι " "Linux με ενεργοποιημένα τα high-resolution timers!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "" -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "" @@ -658,88 +568,84 @@ msgstr "" msgid "Path: %s\n" msgstr "" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "" - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." msgstr "" #: ../src/daemon/pulseaudio.desktop.in.h:1 @@ -750,25 +656,7 @@ msgstr "" msgid "Start the PulseAudio Sound System" msgstr "" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "" @@ -972,33 +860,33 @@ msgstr "" msgid "Top Rear Right" msgstr "" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "" @@ -1102,27 +990,35 @@ msgstr "" msgid "Client forked" msgstr "" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "" @@ -1135,188 +1031,187 @@ msgstr "" msgid "Failed to parse cookie data" msgstr "" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." + +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "" + +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "" + +#: ../src/utils/pacat.c:136 #, c-format -msgid "Failed to drain stream: %s\n" +msgid "pa_stream_drain(): %s" msgstr "" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "" - -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "" - -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_drain(): %s\n" +msgid "pa_stream_write() failed: %s" msgstr "" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_write() failed: %s\n" +msgid "pa_stream_begin_write() failed: %s" msgstr "" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_peek() failed: %s\n" +msgid "pa_stream_peek() failed: %s" msgstr "" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." msgstr "" -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:310 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +msgid "Using sample spec '%s', channel map '%s'." msgstr "" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +msgid "Connected to device %s (%u, %ssuspended)." msgstr "" -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream error: %s\n" +msgid "Stream error: %s" msgstr "" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device suspended.%s \n" +msgid "Stream device suspended.%s" msgstr "" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream device resumed.%s \n" +msgid "Stream device resumed.%s" msgstr "" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream underrun.%s \n" +msgid "Stream underrun.%s" msgstr "" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream overrun.%s \n" +msgid "Stream overrun.%s" msgstr "" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream started.%s \n" +msgid "Stream started.%s" msgstr "" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" +msgid "Stream moved to device %s (%u, %ssuspended).%s" msgstr "" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" +msgid "Stream buffer attributes changed.%s" msgstr "" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" +msgid "Connection established.%s" msgstr "" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" +msgid "pa_stream_new() failed: %s" msgstr "" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +msgid "pa_stream_connect_playback() failed: %s" msgstr "" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" +msgid "pa_stream_connect_record() failed: %s" msgstr "" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" +msgid "Connection failure: %s" msgstr "" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." msgstr "" -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" +msgid "write() failed: %s" msgstr "" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "" + +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." + +#: ../src/utils/pacat.c:576 #, c-format -msgid "write() failed: %s\n" +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" msgstr "" #: ../src/utils/pacat.c:605 @@ -1387,132 +1282,126 @@ msgid "" "Linked with libpulse %s\n" msgstr "" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid client name '%s'\n" +msgid "Invalid client name '%s'" msgstr "" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid stream name '%s'\n" +msgid "Invalid stream name '%s'" msgstr "" -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid channel map '%s'\n" +msgid "Invalid channel map '%s'" msgstr "" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:841 #, c-format -msgid "Invalid latency specification '%s'\n" +msgid "Invalid latency specification '%s'" msgstr "" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:848 #, c-format -msgid "Invalid process time specification '%s'\n" +msgid "Invalid process time specification '%s'" msgstr "" -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:860 #, c-format -msgid "Invalid property '%s'\n" +msgid "Invalid property '%s'" msgstr "" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." msgstr "" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" msgstr "" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" +msgid "open(): %s" msgstr "" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" +msgid "dup2(): %s" msgstr "" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." msgstr "" -#: ../src/utils/pacat.c:930 -msgid "Failed to generate sample specification for file.\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." msgstr "" -#: ../src/utils/pacat.c:950 -msgid "Failed to open audio file.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." msgstr "" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -msgid "Failed to determine sample specification from file.\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." msgstr "" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." msgstr "" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" msgstr "" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "" + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" #: ../src/utils/pacat.c:1005 -#, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" +msgid "pa_context_connect() failed: %s" msgstr "" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." msgstr "" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "" - -#: ../src/utils/pacat.c:1066 -#, c-format -msgid "pa_context_connect() failed: %s\n" -msgstr "" - -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "" - -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." msgstr "" #: ../src/utils/pasuspender.c:81 @@ -1540,7 +1429,12 @@ msgstr "" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "" @@ -1570,32 +1464,47 @@ msgid "" "Linked with libpulse %s\n" msgstr "" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" msgstr "" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1609,12 +1518,12 @@ msgid "" "Cookie: %08x\n" msgstr "" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1636,22 +1545,22 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format msgid "\tPorts:\n" msgstr "" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, c-format msgid "\tActive Port: %s\n" msgstr "" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1673,20 +1582,20 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1697,12 +1606,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1712,12 +1621,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1728,22 +1637,22 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1764,12 +1673,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -1786,12 +1695,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -1809,21 +1718,25 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" +msgstr "Όνομα: %s\n" + +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" +msgstr "Αποτυχία εύρεσης χρήστη '%s'." + +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" msgstr "" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." msgstr "" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "" - -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:869 #, c-format msgid "" "%s [options] stat\n" @@ -1832,15 +1745,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -1851,7 +1770,7 @@ msgid "" "server\n" msgstr "" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -1859,73 +1778,106 @@ msgid "" "Linked with libpulse %s\n" msgstr "" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "" - -#: ../src/utils/pactl.c:951 -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" msgstr "" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#, fuzzy +msgid "Failed to open sound file." +msgstr "Αποτυχία εύρεσης ομάδας χρηστών '%s'." + +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." msgstr "" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" msgstr "" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" msgstr "" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" msgstr "" -#: ../src/utils/pactl.c:1073 -msgid "You have to specify a sink name/index and a port name\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" msgstr "" -#: ../src/utils/pactl.c:1084 -msgid "You have to specify a source name/index and a port name\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" msgstr "" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" msgstr "" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." msgstr "" #: ../src/utils/pax11publish.c:61 @@ -2000,48 +1952,48 @@ msgstr "" msgid "Not yet implemented.\n" msgstr "" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "" -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" +msgid "poll(): %s" msgstr "" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2052,7 +2004,7 @@ msgid "" "returned 0 or another value < min_avail." msgstr "" -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2064,15 +2016,19 @@ msgid "" msgstr "" #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "" diff --git a/po/es.po b/po/es.po index 8af1c7384..b6a0e1f74 100644 --- a/po/es.po +++ b/po/es.po @@ -8,16 +8,22 @@ msgid "" msgstr "" "Project-Id-Version: PulseAudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-06-11 21:48-0300\n" -"Last-Translator: Dennis Tobar \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-03 09:52-0300\n" +"Last-Translator: Domingo Becker \n" "Language-Team: Fedora Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -30,7 +36,7 @@ msgstr "" "Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, " "informe ésto a los desarrolladores de ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -43,7 +49,7 @@ msgstr "" "Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, " "informe ésto a los desarrolladores de ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -56,9 +62,17 @@ msgstr "" "Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, " "informe ésto a los desarrolladores de ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Sumidero virtual LADSPA" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -68,12 +82,27 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= master= format= " +"rate= channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Salida %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Audio Interno" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Módem" @@ -89,221 +118,92 @@ msgstr "Falló al asignar el cargador dl nuevo." msgid "Failed to add bind-now-loader." msgstr "Falló al agregar bind-now-loader." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "No se puede conectar al bus del sistema: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "No se puede obtener el llamador desde el PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "No se puede poner UID en el objeto llamador." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Falló al obtener sesión CK." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "No se puede poner UID en el objeto de sesión." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "No se puede asignar PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "No se pudo poner action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "No se pudo asignar PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "No se pudo inicializar PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "No se pudo determinar si el llamador está autorizado: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "No se pudo obtener auth: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit respondió con '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Se obtuvo la señal %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Saliendo." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Falló al buscar usuario '%s'." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Falló al buscar grupo '%s'." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Se encontró el usuario '%s' (UID %lu) y el grupo '%s' (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID del usuario '%s' y del grupo '%s' no son similares." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "El directorio de inicio del usuario '%s' no es '%s', ignorando." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Falló al crear '%s': %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Falló al cambiar la lista de grupo: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Falló al cambiar GID: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Falló al cambiar UID: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Se han liberado con éxitos los privilegios de root." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "El modo a nivel de sistema no es soportado en esta plataforma." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) falló: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Falló al analizar la línea de comando." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Se llamó con SUID root y se pidió planificación en tiempo real y/o de alta " -"prioridad en la configuración. Sin embargo, no se tiene los privilegios " -"necesarios:\n" -"No se está en el grupo '%s'. PolicyKit rechaza darnos el permiso necesario y " -"no se puede aumentar los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO.\n" -"Para habilitar la planifiación de tiempo real/alta prioridad por favor " -"adquiera los privilegios apropiados en PolicyKit, o hágase miembro de '%s', " -"o aumente los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este " -"usuario." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Está habilitadada la planificación de prioridad alta, pero no están " -"permitidas por la política." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO incrementado en forma exitosa" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "Fallo en RLIMIT_RTPRIO: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Abandonando CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Está habilitada la planificación en tiempo real, pero no está permitido por " -"la política." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "El demonio no está funcionando" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "El demonio está funcionando como PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "No se ha podido detener el demonio: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -311,155 +211,160 @@ msgstr "" "Este programa no tiene por qué ser ejecutado como root (a menos que --system " "sea especificado)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Se necesitan privilegios de root." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start no está soportado para las instancias del sistema." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! " -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-" "module-loading!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" "Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Fallo al intentar adquirir stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "Falló el pipe: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "Falló el fork(): %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "Falló la operación read(): %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Falló el inicio del demonio. " -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "El demonio se inició exitosamente." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Esto es PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Host de compilación: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Compilación CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Ejecutándose en el host: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Se encontraron %u CPUs." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "El tamaño de la página es de %lu bytes" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Soporte para compilar con Valgrind: si" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Soporte para compilar con Valgrind: no" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Ejecutándose en modo valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Build optimizado: si" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Build optimizado: no" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definido, todos los chequeos deshabilitados." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH definido, sólo se deshabilitan los chequeos fast path." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Todos los chequeos habilitados." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Fallo al intentar obtener el ID de la máquina" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "El ID de la máquina es %s" -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "El ID de la máquina es %s" +msgstr "El ID de la sesión es %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Utilizando directorio de tiempo de ejecución %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Utilizando directorio de estado %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Utilizando directorio de módulos %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Ejecutándose en modo de sistema: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -468,18 +373,25 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"Bien, o sea que está ejecutando PA en modo de sistema. Por favor entienda " +"que, en general, no debería estar haciéndolo.\n" +"Si insiste en seguir utilizando este modo, será debido a su propio accionar " +"que las cosas no funcionen como se esperaba.\n" +"Por favor lea http://pulseaudio.org/wiki/WhatIsWrongWithSystemMod para " +"obtener una explicación acerca de por qué es una mala idea utilizar el modo " +"sistema." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "Ha fallado pa_pid_file_create()." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "" "¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon " "appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -487,29 +399,29 @@ msgstr "" "¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el " "chef es Linux con cronómetros de alta resolución activados! " -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "Falló pa_core_new()." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Fallo al intentar iniciar el demonio." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" "El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a " "funcionar." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "El demonio se inició completamente." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Comienza a apagarse el demonio." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "El demonio se ha apagado." @@ -767,7 +679,7 @@ msgid "Load Once: %s\n" msgstr "Carga una vez: %s\n" #: ../src/daemon/dumpmodules.c:75 -#, fuzzy, c-format +#, c-format msgid "DEPRECATION WARNING: %s\n" msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n" @@ -776,72 +688,72 @@ msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n" msgid "Path: %s\n" msgstr "Ruta: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Destino de log inválido '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Nivel de log inválido '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Método de remuestreo inválido '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Rlimit inválido '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] Rlimit no soportado en esta plataforma." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Formato de muestra inválido '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Tasa de muestra inválida '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Canales de muestra inválidos '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Mapa de canal inválido '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Tamaño inválido de fragmento '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Nivel de nice inválido '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "No se pudo abrir el archivo de configuración: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -849,18 +761,14 @@ msgstr "" "El mapa de canal predeterminado especificado tiene un número de canales " "distinto al especificado como predeterminado." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Leyendo desde el archivo de confioguración: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Abandonando privilegios de root." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-" +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Abandonando privilegios." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -870,31 +778,7 @@ msgstr "Sistema de Sonido PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Iniciar el Sistema de Sonido PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Planificación de alta prioridad (nivel Unix negativo) para el demonio " -"PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Planificación de tiempo real para el demonio de PulseAudio." - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Las políticas del sistema impidieron a PulseAudio adquirir la planificación " -"de alta prioridad." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Las políticas del sistema impidieron a PulseAudio adquirir la planificación " -"de tiempo real." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1098,33 +982,33 @@ msgstr "Posterior izquierdo superior" msgid "Top Rear Right" msgstr "Posterior derecho superior" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(inválido)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Estéreo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Envolvente 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Envolvente 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Envolvente 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Envolvente 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Envolvente 7.1" @@ -1228,27 +1112,35 @@ msgstr "Falta implementación" msgid "Client forked" msgstr "Cliente iniciado" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1261,192 +1153,191 @@ msgstr "XOpenDisplay() falló" msgid "Failed to parse cookie data" msgstr "Fallo al analizar los datos de la cookie" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Fallo al abrir el archivo de configuración '%s': %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "No se ha cargado ninguna cookie. Intentando conectar de todos modos." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(:) %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Error al drenar el flujo: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Falló al drenar el flujo: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "El flujo de platback se ha drenado.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "El flujo de reproducción ha sido drenado." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Drenando conexión con el servidor.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Drenando conexión con el servidor." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() falló: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() falló: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() falló: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() falló: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Se ha creado exitosamente el flujo (stream).\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() falló: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() falló: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Se ha creado exitosamente el flujo (stream)." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Métrica del búfer: maxlenght=%u, tlenghth=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() falló: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Métrica del búfer: maxlenght=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Métrica del búfer: maxlenght=%u, tlenghth=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Utilizando especificaciones de muestra '%s', mapa del canal '%s'.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Métrica del búfer: maxlenght=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Conectado al dispositivo %s (%u, %ssuspended).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Utilizando especificaciones de muestra '%s', mapa del canal '%s'." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Error de flujo: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Conectado al dispositivo %s (%u, %ssuspended)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Dispositivo de flujo suspendido. %s \n" +msgid "Stream error: %s" +msgstr "Error de flujo: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Dispositivo de flujo reestablecido. %s \n" +msgid "Stream device suspended.%s" +msgstr "Dispositivo de flujo suspendido.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Flujo agotado. %s \n" +msgid "Stream device resumed.%s" +msgstr "Dispositivo de flujo reestablecido.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Flujo saturado.%s \n" +msgid "Stream underrun.%s" +msgstr "Flujo agotado.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "Flujo iniciado. %s \n" +msgid "Stream overrun.%s" +msgstr "Flujo saturado.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended). %s\n" +msgid "Stream started.%s" +msgstr "Flujo iniciado.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Fujo trasladado al dispositivo %s (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "no" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Los atributos del buffer de flujo cambiaron. %s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Los atributos del búfer de flujo han cambiado.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Conexión establecida. %s \n" +msgid "Connection established.%s" +msgstr "Conexión establecida.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() falló; %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() falló: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() falló: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() falló: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() falló: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() falló: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Error en la conexión: %s\n" +msgid "Connection failure: %s" +msgstr "Error en la conexión: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Hay EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Se tiene EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() falló: %s\n" +msgid "write() failed: %s" +msgstr "write() falló: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Hay señal, saliendo (exiting)." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() falló: %s\n" +msgid "Failed to get latency: %s" +msgstr "No se pudo obtener latencia: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Hay señal, saliendo (exiting).\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "No se pudo obtener latencia: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Tiempo: %0.3f sec; Latencia: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() falló: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() falló: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1517,13 +1408,13 @@ msgstr "" "\n" " -s, --server=SERVER El nombre del servidor con el que " "conectarse\n" -" -d, --device=DEVICE El nombre del destino/fuente a la " +" -d, --device=DEVICE El nombre del sumidero/fuente a la " "que conectarse\n" " -n, --client-name=NAME Cómo llamar a este cliente en el " "servidor\n" " --stream-name=NAME Cómo llamar a este flujo en el " "servidor\n" -" --volume=VOLUME Especificar el salida inicial " +" --volume=VOLUME Especifica el salida inicial " "(linear) de volumen dentro del rango 0...65536\n" " --rate=SAMPLERATE Tasa de muestra en Hz (establecida " "en 44100 por defecto)\n" @@ -1534,25 +1425,34 @@ msgstr "" " --channels=CHANNELS La cantidad de canales, 1 para mono, " "2 para stereo\n" " (establecido en 2 por defecto)\n" -" --channel-map=CHANNELMAP Mapa de canales a ser usado en lugar " -"del establecido por defecto\n" -" --fix-format Obtener el formato de sample desde " -"el destino al que el flujo\n" +" --channel-map=CHANNELMAP Mapeo de canales a ser usado en " +"lugar del establecido por defecto\n" +" --fix-format Obtener el formato de ejemplo desde " +"el sumidero al que el flujo\n" " se ha conectado.\n" -" --fix-rate Obtener la tasa de sampling desde el " +" --fix-rate Obtiene la tasa de ejemplo desde el " "destino al que el flujo\n" " se ha conectado.\n" " --fix-channels Obtener el mapa y la cantidad de " "canales\n" -" desde el destino al que el flojo se " +" desde el sumidero al que el flujo se " "ha conectado.\n" -" --no-remix No upmix o downmix canales.\n" -" --no-remap Mapear canales por índices en lugar " +" --no-remix No realiza un upmix o un downmix de " +"los canales.\n" +" --no-remap Mapea canales por índices en lugar " "de por nombres.\n" -" --latency=BYTES Solicitar la latencia especificada " -"en bytes.\n" -" --process-time=BYTES Solicitar los procesos de tiempo por " +" --latency=BYTES Solicita la latencia especificada en " +"bytes.\n" +" --process-time=BYTES Solicita los procesos de tiempo por " "pedido especificados en bytes.\n" +" --property=PROPERTY=VALUE Estabelce la propiedad especificada " +"al valor especificado.\n" +" --raw Graba/reproduce datos PCM con " +"formato raw.\n" +" --file-format=FFORMAT Graba/reproduce datos PCM " +"formateados.\n" +" --list-file-formats Muestra una lista con los formatos " +"de archivo disponibles.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1565,135 +1465,131 @@ msgstr "" "Compilado con libpulse %s\n" "Linkeado con libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Mapa de canales inválido '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Método de remuestreo inválido '%s'" - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Mapa de canales inválido '%s'\n" +msgid "Invalid client name '%s'" +msgstr "Nombre de cliente '%s' inválido" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Especificación de latencia inválida '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "Nombre de flujo '%s' inválido" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Especificación de tiempo de proceso inválida '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "Mapa de canales '%s' inválido" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Método de remuestreo inválido '%s'" +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Especificación de latencia '%s' inválida" -#: ../src/utils/pacat.c:878 -#, fuzzy, c-format +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Especificación de tiempo de proceso '%s' inválida" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Propiedad '%s' inválida" + +#: ../src/utils/pacat.c:877 +#, c-format msgid "Unknown file format %s." msgstr "Formato de archivo desconocido %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Especificación de muestra inválida\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Especificación de muestra inválida" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open() %s\n" +msgid "open(): %s" +msgstr "open() %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Demasiados argumentos.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Demasiados argumentos." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Error al intentar obtener información de muestra: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Falló al generar especificación de ejemplo para el archivo." -#: ../src/utils/pacat.c:950 -msgid "Failed to open audio file.\n" -msgstr "Error al intentar abrir el archivo de sonido.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Falló al abrir el archivo de sonido." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Aviso: el ejemplo de especificación indicado será sobreescrito con las " +"especificaciones del archivo." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Error al intentar obtener información de muestra: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Falló al determinar especificación de ejemplo del archivo." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "El mapa del canal no se corresponde con la especificación de muestra\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Aviso: Falló al determinar el mapeo del canal desde el archivo." + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "El mapa del canal no se corresponde con la especificación de muestra" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Aviso: Faló al escribir el mapeo del canal en el archivo." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"Abriendo un flujo %s con especificación de muestra '%s' y mapeo de canal '%" +"s'." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Abriendo un %s flujo con las especificaciones de muestra '%s'.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "grabando" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "playback" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() falló." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() falló." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() falló." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() falló.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() falló.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() falló.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() falló: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() falló.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() falló." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() falló.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() falló." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1720,7 +1616,12 @@ msgstr "Error al continuar: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "AVISO: El servidor de sonido no es local, no se suspende.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Error en la conexión: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Hay SIGINT, saliendo.\n" @@ -1760,34 +1661,49 @@ msgstr "" "Compilado con libpulse %s\n" "Linkeado con libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Error al intentar obtener estadísticas: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() falló.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() falló.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() falló.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Error al intentar obtener estadísticas: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Actualmente en uso: %u bloques conteniendo %s bytes en total.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "Ubicados durante a lo largo del tiempo: %u bloques conteniendo %s bytes en " "total.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Tamaño del cache de muestra: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Error al intentar obtener información del servidor: %s\n" +msgid "Failed to get server information: %s" +msgstr "Error al intentar obtener información del servidor: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1810,12 +1726,12 @@ msgstr "" "Fuente por defecto: %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Error al intentar obtener información del destino: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Error al intentar obtener información del sumidero: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1854,22 +1770,22 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tPerfiles:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tPerfil Activo: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Error al intentar obtener información de la fuente: %s\n" +msgid "\tPorts:\n" +msgstr "\tPuertos:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tPuerto Activo: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Error al intentar obtener información de la fuente: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1908,20 +1824,20 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Error al intentar obtener información del módulo: %s\n" +msgid "Failed to get module information: %s" +msgstr "Error al intentar obtener información del módulo: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1938,12 +1854,12 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Error al intentar obtener información del cliente: %s\n" +msgid "Failed to get client information: %s" +msgstr "Error al intentar obtener información del cliente: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1958,12 +1874,12 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Fallo al obtener la información de la placa: %s\n" +msgid "Failed to get card information: %s" +msgstr "Fallo al obtener la información de la placa: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1980,22 +1896,22 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tPerfiles:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tPerfil Activo: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Error al intentar obtener información de entrada del destino: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Error al intentar obtener información de entrada del sumidero: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2032,13 +1948,12 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "" -"Error al intentar obtener información acerca de la salida de la fuenta: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Falló al obtener información de salida de la fuente: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2067,12 +1982,12 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Error al intentar obtener información de muestra: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Falló al obtener información de la muestra: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2103,22 +2018,26 @@ msgstr "" "\tPropiedades:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Falla: %s\n" +msgid "Failure: %s" +msgstr "Falla: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Fallo al cargar muestra: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Falló al subir muestra: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Fin prematuro del archivo\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Fin de archivo prematuro" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Hay un SIGINT, saliendo." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2126,15 +2045,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2157,6 +2082,14 @@ msgstr "" "%s [opciones] suspend-sink [SINK] 1|0\n" "%s [opciones] suspend-source [SOURCE] 1|0\n" "%s [opciones] set-card-profile [CARD] [PROFILE] \n" +"%s [opciones] set-sink-port [SINK] [PORT] \n" +"%s [opciones] set-source-port [SOURCE] [PORT] \n" +"%s [opciones] set-sink-volume SINK VOLUME\n" +"%s [opciones] set-source-volume SOURCE VOLUME\n" +"%s [opciones] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [opciones] set-sink-mute SINK 1|0\n" +"%s [opciones] set-source-mute SOURCE 1|0\n" +"%s [opciones] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Muestra esta ayuda\n" " --version Muestra la versión\n" @@ -2166,7 +2099,7 @@ msgstr "" " -n, --client-name=NAME El nombre de este cliente en el " "servidor\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2177,83 +2110,113 @@ msgstr "" "Compilado con libpulse %s\n" "Linked con libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Por favor, especifique un archivo de muestra a cargar\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Error al intentar abrir el archivo de sonido.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Abriendo un %s flujo con las especificaciones de muestra '%s'.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Debe especificar un nombre de muestra para ser escuchado\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Debe especificar un nombre de muestra para ser eliminado\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "" -"Debe especificar un índice para las entradas del destino y un destino\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Por favor, especifique un archivo de muestra a cargar" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +msgid "Failed to open sound file." +msgstr "Error al intentar abrir el archivo de sonido." + +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." msgstr "" -"Debe especificar un índice para las salidas de la fuente, y una fuente\n" +"Aviso: Falló al intentar determinar especificación de la muestra desde el " +"archivo." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Debe especificar un nombre de módulo y los argumentos\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Debe especificar un nombre de muestra para reproducir" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Debe especificar un índice de módulo\n" +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Debe especificar un nombre de muestra a eliminar" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Debe especificar un índice para la entrada al sumidero y un sumidero" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Debe especificar un índice para las salida de la fuente y una fuente" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Debe especificar un nombre de módulo y los argumentos." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Debe especificar un índice de módulo" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "No puede especificar más de un sumidero. Tiene que especificar un valor " -"booleano.\n" +"booleano." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "No puede especificar más de una fuente. Tiene que especificar un valor " -"booleano.\n" +"booleano." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Debe especificar un nombre/índice de placa y un nombre de perfil" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Debe especificar un nombre/índice de sumidero y un nombre de puerto" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Debe especificar un nombre de placa/índice y un nombre de perfil\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Debe especificar un nombre/índice de fuente y un nombre de puerto" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "No se ha especificadfo ningún comando válido.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Debe especificar un nombre/índice de sumidero y el volumen" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() falló: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Especificación de volumen inválida" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Debe especificar un nombre/índice de fuente y un volumen" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Debe especificar un índice de sumidero y un volumen" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Indice de entrada a sumidero inválido" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Debe especificar un nombre/índice de sumidero y un booleano para mudo" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Debe especificar un nombre/índice de fuente y un booleano para mudo" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" +"Debe especificar un índice de entrada a sumidero y un booleano para mudo" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Especificación de índice de entrada a sumidero inválida" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "No se ha especificado ningún comando válido." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2335,51 +2298,50 @@ msgstr "Error al cargar datos de cookie\n" msgid "Not yet implemented.\n" msgstr "Aún no se ha implementado.\n" -#: ../src/utils/pacmd.c:61 -#, fuzzy +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" "El demonio PulseAudio no está ejecutándose, o no se está ejecutando como un " "demonio de sesión." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Error al intentar detener el demonio de PulseAudio." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "El demonio no responde." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "No se puede acceder al candado de autogeneración." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2396,7 +2358,7 @@ msgstr "" "Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a " "snd_pcm_avail() devolvió 0 u otro valor < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2414,15 +2376,19 @@ msgstr "" "() devolvió 0 u otro valor < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Apagado" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Reproducción de Alta Fidelidad (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Captura de Alta Fidelidad (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telefonía Duplex (HSP/HFP)" @@ -2430,6 +2396,149 @@ msgstr "Telefonía Duplex (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "Servidor de Sonido PulseAudio" +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Nombre de cliente inválido '%s'\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "" +#~ "Error al intentar determinar especificación de ejemplo del archivo.\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "No se puede conectar al bus del sistema: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "No se puede obtener el llamador desde el PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "No se puede poner UID en el objeto llamador." + +#~ msgid "Failed to get CK session." +#~ msgstr "Falló al obtener sesión CK." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "No se puede poner UID en el objeto de sesión." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "No se puede asignar PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "No se pudo poner action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "No se pudo asignar PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "No se pudo inicializar PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "No se pudo determinar si el llamador está autorizado: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "No se pudo obtener auth: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit respondió con '%s'" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Planificación de alta prioridad (nivel Unix negativo) para el demonio " +#~ "PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Planificación de tiempo real para el demonio de PulseAudio." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "Las políticas del sistema impidieron a PulseAudio adquirir la " +#~ "planificación de alta prioridad." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "Las políticas del sistema impidieron a PulseAudio adquirir la " +#~ "planificación de tiempo real." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() falló: %s\n" + +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect() falló: %s\n" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Estamos en el grupo '%s', permitiendo planificación de prioridad alta." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "Se llamó con SUID root y se pidió planificación en tiempo real y/o de " +#~ "alta prioridad en la configuración. Sin embargo, no se tiene los " +#~ "privilegios necesarios:\n" +#~ "No se está en el grupo '%s'. PolicyKit rechaza darnos el permiso " +#~ "necesario y no se puede aumentar los límites del recurso RLIMIT_NICE/" +#~ "RLIMIT_RTPRIO.\n" +#~ "Para habilitar la planifiación de tiempo real/alta prioridad por favor " +#~ "adquiera los privilegios apropiados en PolicyKit, o hágase miembro de '%" +#~ "s', o aumente los límites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este " +#~ "usuario." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "Está habilitadada la planificación de prioridad alta, pero no están " +#~ "permitidas por la política." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO incrementado en forma exitosa" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "Fallo en RLIMIT_RTPRIO: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Abandonando CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "Está habilitada la planificación en tiempo real, pero no está permitido " +#~ "por la política." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-" + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() falló.\n" + #~ msgid "Analog Mono" #~ msgstr "Mono Analógico" @@ -2466,9 +2575,6 @@ msgstr "Servidor de Sonido PulseAudio" #~ msgid "Output %s + Input %s" #~ msgstr "Salida %s + Entrada %s" -#~ msgid "Output %s" -#~ msgstr "Salida %s" - #~ msgid "Input %s" #~ msgstr "Entrada %s" diff --git a/po/fi.po b/po/fi.po index c005658dc..5798b959e 100644 --- a/po/fi.po +++ b/po/fi.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: git trunk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-05 16:24+0300\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-04 23:29+0300\n" "Last-Translator: Ville-Pekka Vainio \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" @@ -16,7 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -28,7 +33,7 @@ msgstr "" "Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa ”%s”. Ilmoita tästä " "ongelmasta ALSA-kehittäjille." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -41,7 +46,7 @@ msgstr "" "Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa ”%s”. Ilmoita tästä " "ongelmasta ALSA-kehittäjille." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -54,9 +59,17 @@ msgstr "" "Tämä on todennäköisesti ohjelmavirhe ALSA-ajurissa ”%s”. Ilmoita tästä " "ongelmasta ALSA-kehittäjille." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Virtuaalinen LADSPA-nielu" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -66,12 +79,27 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= " +"rate= channels= " +"channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Ulostulo %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Sisäinen äänentoisto" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modeemi" @@ -87,220 +115,92 @@ msgstr "Uuden dl-lataaminen varaaminen epäonnistui." msgid "Failed to add bind-now-loader." msgstr "bind-now-loaderin lisääminen epäonnistui." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Järjestelmäväylään ei voida yhdistää: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Kutsujaa ei saada PID:stä: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "UID:tä ei voida asettaa kutsujaobjektille." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK-istunnon saaminen epäonnistui." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "UID:tä ei voida asettaa istunto-objektille." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Ei voida varata PolKitActionia." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Ei voida asettaa action_id:tä" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Ei voida varata PolKitContextia." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Ei voida alustaa PolKitContextia: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Ei voida päätellä onko kutsujalla käyttöoikeus: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Tunnistautumista ei saada: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit vastasi ”%s”" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Saatiin signaali %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Poistutaan." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Käyttäjää ”%s” ei löydetty." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Ryhmää ”%s” ei löydetty." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Löydettiin käyttäjä ”%s” (UID %lu) ja ryhmä ”%s” (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "Käyttäjän ”%s” ja ryhmän ”%s” GID:t eivät vastaa toisiaan." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Käyttäjän ”%s” kotihakemisto ei ole ”%s”, ohitetaan." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Hakemiston ”%s” luominen epäonnistui: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Ryhmäluettelon vaihtaminen epäonnistui: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID:n vaihtaminen epäonnistui: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID:n vaihtaminen epäonnistui: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Root-oikeuksista luopuminen onnistui." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Järjestelmänlaajuista tilaa ei tueta tällä alustalla." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) epäonnistui: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Komentorivin jäsentäminen epäonnistui." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "Ollaan ryhmässä ”%s”, korkean prioriteetin ajoitus on sallittua." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Ollaan ryhmässä ”%s”, tosiaikainen vuorottaminen on sallittua." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit myöntää acquire-high-priority-oikeuden." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit ei myönnä acquire-high-priority-oikeutta." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit myöntää acquire-real-time-oikeuden." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit ei myönnä acquire-real-time-oikeutta." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Ohjelmaa kutsuttiin SUID-rootina ja reaaliaikaista ja/tai korkean " -"prioriteetin ajoitusta pyydettiin asetuksissa. Tarvittavat oikeudet " -"kuitenkin puuttuvat:\n" -"Ei olla ryhmässä ”%s”, PolicyKit ei myönnä pyydettyjä oikeuksia ja " -"RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja ei ole kasvatettu.\n" -"Hanki riittävät PolicyKit-oikeudet, liity ryhmään ”%s” tai kasvata tämän " -"käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai " -"korkean prioriteetin ajoituksen ottamiseksi käyttöön." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Korkean prioriteetin ajoitus otettu käyttöön asetuksissa, mutta käytännöt " -"eivät salli sitä." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO:n kasvatus onnistui" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO epäonnistui: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Luovutaan CAP_NICE:stä" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Tosiaikainen ajoitus otettu käyttöön asetuksissa, mutta käytännöt eivät " -"salli sitä." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Taustaprosessi ei ole käynnissä" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Taustaprosessi käynnissä prosessitunnisteella %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Taustaprosessin lopettaminen epäonnistui: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -308,156 +208,161 @@ msgstr "" "Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --" "system ole määritelty)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Pääkäyttäjän (root) oikeudet vaaditaan." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start-valitsinta ei tueta järjestelmätilassa." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "Suoritetaan järjestelmätilassa, mutta --disallow-exit ei ole asetettuna!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Suoritetaan järjestelmätilassa, mutta -disallow-module-loading ei ole " "asetettuna!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" "Suoritetaan järjestelmätilassa, otetaan SHM-tila pakotetusti pois käytöstä." -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Suoritetaan järjestelmätilassa, otetaan poistumisen joutenoloaika " "pakotetusti pois käytöstä." -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio:n saaminen epäonnistui." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "putki epäonnistui: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() epäonnistui: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() epäonnistui: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Taustaprosessin käynnistys epäonnistui." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Taustaprosessin käynnistys onnistui." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Tämä on PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Käännöksen isäntäkone: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Käännösaikaiset C-liput (CFLAGS): %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Käynnissä isäntäkoneella: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Löydettiin %u CPU:ta." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Sivun koko on %lu tavua" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Käännetty Valgrind-tuella: kyllä" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Käännetty Valgrind-tuella: ei" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Käynnissä valgrind-tilassa: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimoitu rakentaminen: kyllä" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimoitu rakentaminen: ei" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG on määritelty, kaikki assertit ovat poissa käytöstä." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH on määritelty, vain fast path -assertit ovat poissa käytöstä." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Kaikki assertit ovat käytössä." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Konetunnisteen nouto epäonnistui" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "Konetunniste on %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "Konetunniste on %s." +msgstr "Istunnon tunniste on %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Käytetään ajonaikaista hakemistoa %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Käytetään tilahakemistoa %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Käytetään moduulihakemistoa %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Suoritetaan järjestelmätilassa: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -466,16 +371,20 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"PA:ta suoritetaan järjestelmätilassa. Näin ei luultavasti pitäisi tehdä.\n" +"Jos silti teet näin, on sinun vikasi jos kaikki ei toimikaan odotetusti.\n" +"Lisätietoja siitä, miksi järjestelmätilan käyttäminen on yleensä huono " +"ajatus on osoitteessa http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() epäonnistui." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Korkean tarkkuuden ajastimet käytettävissä." -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -483,29 +392,29 @@ msgstr "" "Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin " "suositeltava!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() epäonnistui." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Taustaprosessin alustus epäonnistui." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" "Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään " "toiminnasta." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Taustaprosessin käynnistys valmis." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Taustaprosessin sulkeminen käynnistetty." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Taustaprosessi lopetettu." @@ -769,79 +678,79 @@ msgstr "Lataa kerran: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "VAROITUS VANHENTUNEISUUDESTA: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Polku: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde ”%s”." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Virheellinen lokikirjoituksen taso ”%s”." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa ”%s”." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Virheellinen rlimit ”%s”." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Virheellinen näytemuoto ”%s”." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Virheellinen näytteenottotaajuus ”%s”." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Virheelliset näytekanavat ”%s”." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Virheellinen kanavakartta ”%s”." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Virheellinen fragmenttimäärä ”%s”." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Virheellinen fragmenttikoko ”%s”." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Virheellinen nice-taso ”%s”." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Asetustiedoston avaaminen epäonnistui: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -849,18 +758,14 @@ msgstr "" "Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat " "toisistaan." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Luettu asetustiedostosta: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Luovutaan pääkäyttäjän oikeuksista." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Oikeuksien rajoittaminen CAP_SYS_NICEen onnistui." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Luovutaan oikeuksista." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -870,30 +775,7 @@ msgstr "PulseAudio-äänijärjestelmä" msgid "Start the PulseAudio Sound System" msgstr "Käynnistä PulseAudio-äänijärjestelmä" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Korkean prioriteetin ajoitus (negatiivinen Unix-nice-taso) PulseAudio-" -"taustajärjestelmälle" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Reaaliaikainen ajoitus PulseAudio-taustajärjestelmälle" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Järjestelmäkäytäntö estää PulseAudiota saamasta korkean prioriteetin " -"ajoitusta." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Järjestelmäkäytäntö estää PulseAudiota saamasta reaaliaikaista ajoitusta." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1097,33 +979,33 @@ msgstr "Vasen ylä taka" msgid "Top Rear Right" msgstr "Oikea ylä taka" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(virheellinen)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "4.0-tilaääni" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "4.1-tilaääni" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "5.0-tilaääni" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "5.1-tilaääni" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "7.1-tilaääni" @@ -1227,27 +1109,35 @@ msgstr "Puuttuva toteutus" msgid "Client forked" msgstr "Asiakasohjelma haarautui" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %u kan. %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1260,192 +1150,191 @@ msgstr "XOpenDisplay() epäonnistui" msgid "Failed to parse cookie data" msgstr "Evästetietojen jäsennys epäonnistui" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Asetustiedoston avaaminen epäonnistui: ”%s”: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Ei ladattua evästettä. Yritetään yhdistämistä ilman." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Saatiin viesti tuntemattomalle laajennokselle ”%s”" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Virran tyhjentäminen epäonnistui: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Virran tyhjentäminen epäonnistui: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Toistovirta on tyhjennetty.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Toistovirta on tyhjennetty." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Tyhjennetään yhteyttä palvelimelle.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Tyhjennetään yhteyttä palvelimelle." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() epäonnistui: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() epäonnistui: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() epäonnistui: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() epäonnistui: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Virran luonti onnistui.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() epäonnistui: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() epäonnistui: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Virran luonti onnistui." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Puskuritiedot: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() epäonnistui: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Puskuritiedot: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Puskuritiedot: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Käytetään näytemäärittelyä ”%s”, kanavakarttaa ”%s”.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Puskuritiedot: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Yhdistetty laitteeseen %s (%u, %ssuspended).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Käytetään näytemäärittelyä ”%s”, kanavakarttaa ”%s”." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Virtavirhe: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Yhdistetty laitteeseen %s (%u, %ssuspended)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Virtalaite keskeytetty.%s \n" +msgid "Stream error: %s" +msgstr "Virtavirhe: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Virtalaite palautettu.%s \n" +msgid "Stream device suspended.%s" +msgstr "Virtalaite keskeytetty.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Virran alivuoto.%s \n" +msgid "Stream device resumed.%s" +msgstr "Virtalaite palautettu.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Virran ylivuoto.%s \n" +msgid "Stream underrun.%s" +msgstr "Virran alivuoto.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "Virta käynnistetty.%s \n" +msgid "Stream overrun.%s" +msgstr "Virran ylivuoto.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s \n" +msgid "Stream started.%s" +msgstr "Virta käynnistetty.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Virta siirretty laitteelle %s (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "ei " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Virran puskuriattribuutteja muutettu.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Virran puskuriattribuutteja muutettu.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Yhteys muodostettu.%s \n" +msgid "Connection established.%s" +msgstr "Yhteys muodostettu.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() epäonnistui: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() epäonnistui: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() epäonnistui: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() epäonnistui: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() epäonnistui: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() epäonnistui: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Yhteysvirhe: %s\n" +msgid "Connection failure: %s" +msgstr "Yhteysvirhe: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Saatiin EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Saatiin EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() epäonnistui: %s\n" +msgid "write() failed: %s" +msgstr "write() epäonnistui: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Saatiin signaali, lopetetaan." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() epäonnistui: %s\n" +msgid "Failed to get latency: %s" +msgstr "Latenssin selvittäminen epäonnistui: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Saatiin signaali, lopetetaan.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Latenssin selvittäminen epäonnistui: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Aika: %0.3f s; latenssi: %0.0f μs. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() epäonnistui: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() epäonnistui: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1513,34 +1402,33 @@ msgstr "" "\n" " -v, --verbose Yksityiskohtaiset tulosteet\n" "\n" -" -s, --server=PALVELIN Sen palvelimen nimi, johon\n" -" yhdistetään\n" -" -d, --device=LAITE Sen nielun/lähteen nimi, johon\n" -" yhdistetään\n" +" -s, --server=PALVELIN Sen palvelimen nimi, johon " +"yhdistetään\n" +" -d, --device=LAITE Sen nielun/lähteen nimi, johon " +"yhdistetään\n" " -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa " -"kutsutaan\n" -" palvelimella\n" -" --stream-name=NIMI Kuinka tätä virtaa kutsutaan\n" -" palvelimella\n" -" --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) aloitusäänen-\n" -" voimakkuus väliltä 0...65536\n" -" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus hertseinä\n" -" (oletus: 44100)\n" -" --format=NÄYTEMUOTO Näytteen tyyppi, yksi seuraavista:\n" -" s16le, s16be, u8, float32le,\n" +"kutsutaan palvelimella\n" +" --stream-name=NIMI Kuinka tätä virtaa kutsutaan " +"palvelimella\n" +" --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) " +"aloitusäänenvoimakkuus väliltä 0...65536\n" +" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus hertseinä" +"(oletus: 44100)\n" +" --format=NÄYTEMUOTO Näytteen tyyppi, yksi seuraavista:" +"s16le, s16be, u8, float32le,\n" " float32be, ulaw, alaw, s32le, s32be\n" -" (oletus s16ne)\n" +"s24le, s24be,\n" +" s24-32le, s24-32be (oletus s16ne)\n" " --channels=KANAVIA Kanavien määrä, 1=mono, 2=stereo\n" " (oletus: 2)\n" -" --channel-map=KANAVAKARTTA Oletuksen sijasta käytettävä\n" -" kanavakartta\n" -" --fix-format Valitse näytemuoto nielusta, johon\n" -" virtaa yhdistetään\n" +" --channel-map=KANAVAKARTTA Oletuksen sijasta käytettävä " +"kanavakartta\n" +" --fix-format Valitse näytemuoto nielusta, jossa " +"virta on\n" " --fix-rate Valitse näytteenottotaajuus " -"nielusta,\n" -" johon virtaa yhdistetään\n" -" --fix-channels Valitse kanavien määrä ja kanava-\n" -" kartta nielusta, johon virtaa\n" +"nielusta, jossa virta on\n" +" --fix-channels Valitse kanavien määrä ja " +"kanavakartta nielusta, johon virtaa\n" " yhdistetään.\n" " --no-remix Älä yli- tai alimiksaa kanavia.\n" " --no-remap Kartoita kanavat indeksin mukaan, " @@ -1549,6 +1437,13 @@ msgstr "" "tavuissa.\n" " --process-time=TAVUA Pyydä määritettyä prosessiaikaa " "pyyntöä kohti tavuissa.\n" +" --property=ASETUS=ARVO Anna määritetylle asetukselle " +"määritetty arvo.\n" +" --raw Tallenna/soita raakaa PCM-dataa.\n" +" --file-format=TMUOTO Tallenna/soita tietyn muotoista PCM-" +"dataa.\n" +" --list-file-formats Luettele käytettävissä olevat " +"tiedostomuodot.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1561,136 +1456,128 @@ msgstr "" "Käännetty libpulsen versiolle %s\n" "Linkitetty libpulsen versiolle %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Virheellinen kanavakartta ”%s”\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Virheellinen uudelleennäytteistyksen tapa ”%s”." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Virheellinen kanavakartta ”%s”\n" +msgid "Invalid client name '%s'" +msgstr "Virheellinen asiakasohjelman nimi ”%s”" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Virheellinen latenssimääritys ”%s”\n" +msgid "Invalid stream name '%s'" +msgstr "Virheellinen virran nimi ”%s”" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Virheellinen prosessiajan määritys ”%s”\n" +msgid "Invalid channel map '%s'" +msgstr "Virheellinen kanavakartta ”%s”" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Virheellinen uudelleennäytteistyksen tapa ”%s”." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Virheellinen latenssimääritys ”%s”" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Virheellinen prosessiajan määritys ”%s”" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Virheellinen asetus ”%s”" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Tuntematon tiedostomuoto %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Virheellinen näytemääritys\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Virheellinen näytemääritys" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Liian monta argumenttia.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Liian monta argumenttia." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Näytetietojen nouto epäonnistui: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Näytemäärityksen generointi tiedostolle epäonnistui." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Äänitiedoston avaaminen epäonnistui.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Äänitiedoston avaaminen epäonnistui." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Varoitus: tiedostosta luettava näytemääritys korvaa annetun määrityksen." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Näytetietojen nouto epäonnistui: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Näytemäärityksen selvittäminen tiedostosta epäonnistui." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Varoitus: Kanavakartan selvittäminen tiedostosta epäonnistui." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Kanavakartta ei vastaa näytemääritystä\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Kanavakartta ei vastaa näytemääritystä" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Varoitus: kanavakartan kirjoittaminen tiedostoon epäonnistui." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "Avataan %svirta näytemäärityksellä ”%s” ja kanavakartalla ”%s”." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Avataan %svirta näytemäärityksellä ”%s”.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "nauhoitus" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "toisto" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() epäonnistui." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() epäonnistui." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() epäonnistui." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() epäonnistui.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() epäonnistui.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() epäonnistui.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() epäonnistui: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() epäonnistui.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new() epäonnistui." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() epäonnistui.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() epäonnistui." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1717,7 +1604,12 @@ msgstr "Palautus epäonnistui: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "VAROITUS: Äänipalvelin ei ole paikallinen, ei keskeytetä.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Yhteysvirhe: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Saatiin SIGINT, lopetetaan.\n" @@ -1757,32 +1649,47 @@ msgstr "" "Käännetty libpulsen versiolle %s\n" "Linkitetty libpulsen versiolle %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Tilastojen selvittäminen epäonnistui: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() epäonnistui.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() epäonnistui.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() epäonnistui.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Tilastojen selvittäminen epäonnistui: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Nyt käytössä: %u lohkoa sisältäen yhteensä %s tavua.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Koko käyttöaikana varattu: %u lohkoa sisältäen yhteensä %s tavua.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Näytevälimuistin koko: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Palvelintietojen selvittäminen epäonnistui: %s\n" +msgid "Failed to get server information: %s" +msgstr "Palvelintietojen selvittäminen epäonnistui: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1805,12 +1712,12 @@ msgstr "" "Oletuslähde: %s\n" "Eväste: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Nielun tietojen nouto epäonnistui: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Nielun tietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1849,22 +1756,22 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tProfiilit:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tAktiivinen profiili: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Lähteen tietojen nouto epäonnistui: %s\n" +msgid "\tPorts:\n" +msgstr "\tPortit:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tAktiivinen portti: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Lähteen tietojen nouto epäonnistui: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1903,20 +1810,20 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "-" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Moduulin tietojen nouto epäonnistui: %s\n" +msgid "Failed to get module information: %s" +msgstr "Moduulin tietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1933,12 +1840,12 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Asiakkaan tietojen nouto epäonnistui: %s\n" +msgid "Failed to get client information: %s" +msgstr "Asiakkaan tietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1953,12 +1860,12 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Kortin tietojen nouto epäonnistui: %s\n" +msgid "Failed to get card information: %s" +msgstr "Kortin tietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1975,22 +1882,22 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfiilit:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tAktiivinen profiili: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2027,12 +1934,12 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2061,12 +1968,12 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Näytetietojen nouto epäonnistui: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Näytetietojen nouto epäonnistui: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2097,22 +2004,26 @@ msgstr "" "\tOminaisuudet:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Epäonnistuminen: %s\n" +msgid "Failure: %s" +msgstr "Epäonnistuminen: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Näytteen lähettäminen epäonnistui: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Näytteen lähettäminen epäonnistui: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Ennenaikainen tiedoston päättyminen\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Ennenaikainen tiedoston päättyminen" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Saatiin SIGINT, lopetetaan." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2120,15 +2031,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2144,23 +2061,31 @@ msgstr "" "%s [valitsimet] upload-sample TIEDOSTONIMI [NIMI]\n" "%s [valitsimet] play-sample NIMI [NIELU]\n" "%s [valitsimet] remove-sample NIMI\n" -"%s [valitsimet] move-sink-input TUNNISTE NIELU\n" -"%s [valitsimet] move-source-output TUNNISTE LÄHDE\n" +"%s [valitsimet] move-sink-input NIELUSISÄÄNMENO NIELU\n" +"%s [valitsimet] move-source-output LÄHDEULOSTULO LÄHDE\n" "%s [valitsimet] load-module NIMI [ARGUMENTIT ...]\n" -"%s [valitsimet] unload-module TUNNISTE\n" -"%s [valitsimet] suspend-sink [NIELU] 1|0\n" -"%s [valitsimet] suspend-source [LÄHDE] 1|0\n" -"%s [valitsimet] set-card-profile [KORTTI] [PROFIILI] \n" +"%s [valitsimet] unload-module MODUULI\n" +"%s [valitsimet] suspend-sink NIELU 1|0\n" +"%s [valitsimet] suspend-source LÄHDE 1|0\n" +"%s [valitsimet] set-card-profile KORTTI PROFIILI\n" +"%s [valitsimet] set-sink-port NIELU PORTTI\n" +"%s [valitsimet] set-source-port LÄHDE PORTTI\n" +"%s [valitsimet] set-sink-volume NIELU VOIMAKKUUS\n" +"%s [valitsimet] set-source-volume LÄHDE VOIMAKKUUS\n" +"%s [valitsimet] set-sink-input-volume NIELUSISÄÄNMENO VOIMAKKUUS\n" +"%s [valitsimet] set-sink-mute NIELU 1|0\n" +"%s [valitsimet] set-source-mute LÄHDE 1|0\n" +"%s [valitsimet] set-sink-input-mute NIELUSISÄÄNMENO 1|0\n" "\n" " -h, --help Näytä tämä ohje\n" " --version Näytä versio\n" "\n" -" -s, --server=PALVELIN Sen palvelimen nimi, johon\n" -" yhdistetään\n" -" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa\n" -" kutsutaan palvelimella\n" +" -s, --server=PALVELIN Sen palvelimen nimi, johon " +"yhdistetään\n" +" -n, --client-name=NIMI Kuinka tätä asiakasohjelmaa " +"kutsutaan palvelimella\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2171,77 +2096,106 @@ msgstr "" "Käännetty libpulsen versiolle %s\n" "Linkitetty libpulsen versiolle %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Anna ladattava näytetiedosto\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Äänitiedoston avaaminen epäonnistui.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Avataan %svirta näytemäärityksellä ”%s”.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Soitettavan näytteen nimi on annettava\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Poistettavan näytteen nimi on annettava\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Nielun syöteindeksi ja nielu on annettava\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Anna ladattava näytetiedosto" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Lähteen ulostuloindeksi ja lähde on annettava\n" +msgid "Failed to open sound file." +msgstr "Äänitiedoston avaaminen epäonnistui." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Moduulin nimi ja argumentit on annettava.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "Varoitus: näytemäärityksen selvitys tiedostosta epäonnistui." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Moduulin indeksi on annettava\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Soitettavan näytteen nimi on annettava" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Poistettavan näytteen nimi on annettava" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Nielun syöteindeksi ja nielu on annettava" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Lähteen ulostuloindeksi ja lähde on annettava" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Moduulin nimi ja argumentit on annettava." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Moduulin indeksi on annettava" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "Ei voi antaa enempää kuin yhden nielun. Totuusarvo on annettava.\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "Ei voi antaa enempää kuin yhden nielun. Totuusarvo on annettava." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "Ei voi antaa enempää kuin yhden lähteen. Totuusarvo on annettava.\n" +"value." +msgstr "Ei voi antaa enempää kuin yhden lähteen. Totuusarvo on annettava." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Nielun nimi/indeksi ja portin nimi on annettava" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Kortin nimi/indeksi ja profiilin nimi on annettava\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Lähteen nimi/indeksi ja portin nimi on annettava" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "Mitään kelvollista komentoa ei annettu.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Nielun nimi/indeksi ja portin nimi on annettava" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() epäonnistui: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Virheellinen äänenvoimakkuuden määritys" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Lähteen nimi/indeksi ja äänenvoimakkuus on annettava" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Nielun syöteindeksi ja äänenvoimakkuus on annettava" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Virheellinen nielun syöteindeksi" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Nielun nimi/indeksi ja vaimennuksen totuusarvo on annettava" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Lähteen nimi/indeksi ja vaimennuksen totuusarvo on annettava" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Nielun syöteindeksi ja vaimennuksen totuusarvo on annettava" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Virheellinen nielun syöteindeksin määritys" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Mitään kelvollista komentoa ei annettu." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2324,48 +2278,50 @@ msgstr "Evästetietojen lataaminen epäonnistui\n" msgid "Not yet implemented.\n" msgstr "Toteutusta ei vielä ole.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"PulseAudio-taustaprosessi ei ole käynnissä eikä PulseAudiota suoriteta " +"istunnon taustaprosessina." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Taustaprosessi ei vastaa." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2382,7 +2338,7 @@ msgstr "" "asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, " "joka on < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2399,15 +2355,19 @@ msgstr "" "snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, on < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Poissa" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Korkean äänenlaadun toisto (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Korkean äänenlaadun tallennus (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "" @@ -2415,6 +2375,145 @@ msgstr "" msgid "PulseAudio Sound Server" msgstr "PulseAudio-äänipalvelin" +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Virheellinen asiakasohjelman nimi ”%s”\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "Näytemäärityksen selvitys tiedostosta epäonnistui: %s\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Järjestelmäväylään ei voida yhdistää: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Kutsujaa ei saada PID:stä: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "UID:tä ei voida asettaa kutsujaobjektille." + +#~ msgid "Failed to get CK session." +#~ msgstr "CK-istunnon saaminen epäonnistui." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "UID:tä ei voida asettaa istunto-objektille." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Ei voida varata PolKitActionia." + +#~ msgid "Cannot set action_id" +#~ msgstr "Ei voida asettaa action_id:tä" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Ei voida varata PolKitContextia." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Ei voida alustaa PolKitContextia: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Ei voida päätellä onko kutsujalla käyttöoikeus: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Tunnistautumista ei saada: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit vastasi ”%s”" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Korkean prioriteetin ajoitus (negatiivinen Unix-nice-taso) PulseAudio-" +#~ "taustajärjestelmälle" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Reaaliaikainen ajoitus PulseAudio-taustajärjestelmälle" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "Järjestelmäkäytäntö estää PulseAudiota saamasta korkean prioriteetin " +#~ "ajoitusta." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "Järjestelmäkäytäntö estää PulseAudiota saamasta reaaliaikaista ajoitusta." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() epäonnistui: %s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect() epäonnistui: %s" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "Ollaan ryhmässä ”%s”, korkean prioriteetin ajoitus on sallittua." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "Ollaan ryhmässä ”%s”, tosiaikainen vuorottaminen on sallittua." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "PolicyKit myöntää acquire-high-priority-oikeuden." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit ei myönnä acquire-high-priority-oikeutta." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit myöntää acquire-real-time-oikeuden." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit ei myönnä acquire-real-time-oikeutta." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "Ohjelmaa kutsuttiin SUID-rootina ja reaaliaikaista ja/tai korkean " +#~ "prioriteetin ajoitusta pyydettiin asetuksissa. Tarvittavat oikeudet " +#~ "kuitenkin puuttuvat:\n" +#~ "Ei olla ryhmässä ”%s”, PolicyKit ei myönnä pyydettyjä oikeuksia ja " +#~ "RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja ei ole kasvatettu.\n" +#~ "Hanki riittävät PolicyKit-oikeudet, liity ryhmään ”%s” tai kasvata tämän " +#~ "käyttäjän RLIMIT_NICE/RLIMIT_RTPRIO-resurssirajoja reaaliaikaisen ja/tai " +#~ "korkean prioriteetin ajoituksen ottamiseksi käyttöön." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "Korkean prioriteetin ajoitus otettu käyttöön asetuksissa, mutta käytännöt " +#~ "eivät salli sitä." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO:n kasvatus onnistui" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO epäonnistui: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Luovutaan CAP_NICE:stä" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "Tosiaikainen ajoitus otettu käyttöön asetuksissa, mutta käytännöt eivät " +#~ "salli sitä." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Oikeuksien rajoittaminen CAP_SYS_NICEen onnistui." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() epäonnistui.\n" + #~ msgid "Analog Mono" #~ msgstr "Analoginen mono" @@ -2451,9 +2550,6 @@ msgstr "PulseAudio-äänipalvelin" #~ msgid "Output %s + Input %s" #~ msgstr "Ulostulo %s + Sisääntulo %s" -#~ msgid "Output %s" -#~ msgstr "Ulostulo %s" - #~ msgid "Input %s" #~ msgstr "Sisääntulo %s" diff --git a/po/fr.po b/po/fr.po index ca8e2b80c..359769cc8 100644 --- a/po/fr.po +++ b/po/fr.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio trunk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: 2009-04-26 17:22+0200\n" "Last-Translator: Corentin Perard \n" "Language-Team: French \n" @@ -20,7 +20,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -33,7 +38,7 @@ msgstr "" "Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez " "rapporter ce problème aux développeurs d'ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -46,7 +51,7 @@ msgstr "" "Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez " "rapporter ce problème aux développeurs d'ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -59,6 +64,14 @@ msgstr "" "Il s'agit très probablement d'un bogue dans le pilote ALSA « %s ». Veuillez " "rapporter ce problème aux développeurs d'ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" msgstr "" @@ -72,11 +85,20 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Sortie %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Audio interne" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -92,226 +114,93 @@ msgstr "Échec lors de l'allocation du nouveau chargeur dl." msgid "Failed to add bind-now-loader." msgstr "Échec lors de l'ajout du chargeur bind-now." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Impossible de se connecter au bus système : %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Impossible d'obtenir le programme appelant à partir du PID : %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Impossible de définir un UID sur l'objet appelant." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Échec lors de l'obtention de la session CK." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Impossible de définir l'UID sur l'objet de session." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Impossible d'allouer PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Impossible de définir action_id." - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Impossible d'allouer PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Impossible d'initialiser PolKitContext : %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Impossible de déterminer si le programme appelant est autorisé : %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Impossible d'obtenir l'authentification : %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit a renvoyé « %s »" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Signal %s obtenu." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Fermeture." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Impossible de trouver l'utilisateur « %s »." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Impossible de trouver le groupe « %s »." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Utilisateur « %s ” (UID %lu) et groupe « %s » (GID %lu) trouvé." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "" "Le GID de l'utilisateur « %s » et du groupe « %s » ne sont pas identiques." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Le dossier personnel de l'utilisateur « %s » n'est pas « %s », ignoré." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Échec lors de la création de « %s » : %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Échec lors du changement de la liste du groupe : %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Échec lors du changement de GID : %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Échec lors du changement d'UID : %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Les privilèges root ont été correctement abandonnés." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Mode système étendu non pris en charge sur cette plateforme." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) a échoué : %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Échec lors de l'analyse de la ligne de commande" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Nous sommes dans le groupe « %s », permettant une planification à haute " -"priorité." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Nous sommes dans le groupe « %s », permettant un ordonnancement en temps réel." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit a accordé l'acquisition des permissions de haute priorité." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Le SUID root et l'ordonnancement en temps réel et/ou haute priorité ont été " -"spécifiés dans la configuration. Cependant, il nous manque les privilèges " -"nécessaires :\n" -"Nous ne sommes pas dans le groupe « %s », PolicyKit refuse de nous accorder " -"les privilèges demandés et nous devons augmenter les limites de ressources " -"RLIMIT_NICE/RLIMIT_RTPRIO.\n" -"Pour activer l'ordonnancement en temps réel/haute priorité, veuillez " -"acquérir les privilèges PolicyKit apropriés, ou devenir membre de « %s », ou " -"augmenter les limites de ressources RLIMIT_NICE/RLIMIT_RTPRIO pour cet " -"utilisateur." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"La planification à haute priorité est activée dans la configuration mais " -"n'est pas permise par la politique." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Augmentation de RLIMIT_RTPRIO réussie" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO a échoué : %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Abandon de CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"La planification en temps réel est activée mais n'est pas permise par la " -"politique." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Lé démon n'est pas lancé" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Le démon est lancé avec le PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Impossible de tuer le démon : %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -319,156 +208,161 @@ msgstr "" "Le programme n'est pas conçu pour être lancé en tant que root (sauf si --" "system est renseigné)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Les privilèges root sont nécessaires." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start n'est pas pris en charge pour les instances système." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "Le démon s'exécute en mode système, mais --disallow-exit n'est pas défini." -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Le démon s'exécute en mode système, mais --disallow-module-loading n'est pas " "défini." -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Le démon s'exécute en mode système, désactivation forcée du mode SHM." -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Le démon s'exécute en mode système, désactivation forcée de la fermeture " "après délai d'inactivité." -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Échec lors de l'acquisition de stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "Échec du tube : %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "Échec de fork() : %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "Échec de read() : %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Échec lors du démarrage du démon." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Démarrage du démon réussi." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Pulseaudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Hôte de compilation : %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS de compilation : %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Exécution sur l'hôte : %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u processeurs trouvés." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "La taille de la page est de %lu octets" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Compilé avec la prise en charge Valgrind : oui" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Compilé avec la prise en charge Valgrind : non" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Exécution en mode valgrind : %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Construction optimisée : oui" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Construction optimisée : non" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG défini, tous les messages d'erreur sont désactivés." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" "FASTPATH défini, seuls les messages d'erreur fastpath ont été désactivés." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Tous les messages d'erreur sont activés." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Échec lors de l'obtention de l'ID de la machine" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "L'ID de la machine est %s." -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, fuzzy, c-format msgid "Session ID is %s." msgstr "L'ID de la machine est %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Utilisation du répertoire d'exécution %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Utilisation du répertoire d'état %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, fuzzy, c-format +msgid "Using modules directory %s." +msgstr "Utilisation du répertoire d'exécution %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Exécution en mode système : %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -478,16 +372,16 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "Échec de pa_pid_file_create()." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "" "De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -495,27 +389,27 @@ msgstr "" "Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est " "d'activer les horloges à haute résolution sur ton Linux." -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "Échec de pa_core_new()." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Échec lors de l'initialisation du démon" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Démarrage du démon sans aucun module chargé : refus de fonctionner." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Démarrage du démon effectué." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Fermeture du démon initiée." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Démon terminé." @@ -791,72 +685,72 @@ msgid "Path: %s\n" msgstr "Chemin : %s\n" # dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci] -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Cible du journal « %s » invalide." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Niveau du journal « %s » invalide." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit « %s » invalide." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Format d'échantillon « %s » invalide." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Plan de canaux « %s » invalide." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Nombre de fragments « %s » invalide." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Taille du fragment « %s » invalide." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Échec lors de l'ouverture du fichier de configuration : %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -864,19 +758,16 @@ msgstr "" "Le plan de canaux spécifié par défaut a un nombre de canaux différent du " "nombre spécifié par défaut." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Lecture à partir du fichier de configuration : %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." +#: ../src/daemon/caps.c:62 +#, fuzzy +msgid "Cleaning up privileges." msgstr "Abandon des privilèges root." -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Limitation des capacités à CAP_SYS_NICE réussie." - #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" msgstr "Système de son PulseAudio" @@ -885,31 +776,7 @@ msgstr "Système de son PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Démarrer le système de son PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Ordonnancement haute priorité (niveau Unix « nice » négatif) pour le démon " -"PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Ordonnancement en temps réel pour le démon PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"La politique du système empêche PulseAudio d'acquérir un ordonnancement " -"haute priorité" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"La politique du système empêche PulseAudio d'acquérir un ordonnancement en " -"temps réel" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1113,33 +980,33 @@ msgstr "Arrière gauche haut" msgid "Top Rear Right" msgstr "Arrière droit haut" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(invalide)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stéréo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1243,27 +1110,35 @@ msgstr "Implantation manquante" msgid "Client forked" msgstr "Le client s'est divisé (Client forked)" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f Gio" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f Mio" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f Kio" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1276,191 +1151,195 @@ msgstr "Échec de XOpenDisplay()" msgid "Failed to parse cookie data" msgstr "Échec lors de l'analyse des données du cookie" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Échec lors de l'ouverture du fichier de configuration « %s » :%s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Aucun cookie chargé. Tentative de connexion sans celui-ci." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork() : %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid() : %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Message reçu pour une extension inconnue « %s »" -#: ../src/utils/pacat.c:107 -#, c-format -msgid "Failed to drain stream: %s\n" +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" msgstr "Échec lors du vidage du flux : %s\n" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" +#: ../src/utils/pacat.c:113 +#, fuzzy +msgid "Playback stream drained." msgstr "Flux de lecture vidé.\n" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" +#: ../src/utils/pacat.c:123 +#, fuzzy +msgid "Draining connection to server." msgstr "Vidage de la connexion au serveur.\n" -#: ../src/utils/pacat.c:135 -#, c-format -msgid "pa_stream_drain(): %s\n" +#: ../src/utils/pacat.c:136 +#, fuzzy, c-format +msgid "pa_stream_drain(): %s" msgstr "pa_stream_drain() : %s\n" -#: ../src/utils/pacat.c:158 -#, c-format -msgid "pa_stream_write() failed: %s\n" +#: ../src/utils/pacat.c:159 +#, fuzzy, c-format +msgid "pa_stream_write() failed: %s" msgstr "Échec de pa_stream_write() : %s\n" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 -#, c-format -msgid "pa_stream_peek() failed: %s\n" +#: ../src/utils/pacat.c:197 +#, fuzzy, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "Échec de pa_stream_write() : %s\n" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, fuzzy, c-format +msgid "pa_stream_peek() failed: %s" msgstr "Échec de pa_stream_peek() : %s\n" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +#, fuzzy +msgid "Stream successfully created." msgstr "Création du flux réussie.\n" -#: ../src/utils/pacat.c:305 -#, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +#: ../src/utils/pacat.c:310 +#, fuzzy, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "Échec de pa_stream_get_buffer_attr() : %s\n" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:314 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "Mesures du tampon : maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -#: ../src/utils/pacat.c:312 -#, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +#: ../src/utils/pacat.c:317 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "Mesures du tampon : maxlength=%u, fragsize=%u\n" -#: ../src/utils/pacat.c:316 -#, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +#: ../src/utils/pacat.c:321 +#, fuzzy, c-format +msgid "Using sample spec '%s', channel map '%s'." msgstr "" "Utilisation de la spécification d'échantillon « %s », plan des canaux « %s ».\n" # l'espace manquant entre %s et suspended est voulu -#: ../src/utils/pacat.c:320 -#, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +#: ../src/utils/pacat.c:325 +#, fuzzy, c-format +msgid "Connected to device %s (%u, %ssuspended)." msgstr "Connecté au périphérique %s (%u, %ssuspendu).\n" -#: ../src/utils/pacat.c:330 -#, c-format -msgid "Stream error: %s\n" +#: ../src/utils/pacat.c:335 +#, fuzzy, c-format +msgid "Stream error: %s" msgstr "Erreur du flux : %s\n" -#: ../src/utils/pacat.c:340 -#, c-format -msgid "Stream device suspended.%s \n" +#: ../src/utils/pacat.c:345 +#, fuzzy, c-format +msgid "Stream device suspended.%s" msgstr "Périphérique de flux suspendu %s \n" -#: ../src/utils/pacat.c:342 -#, c-format -msgid "Stream device resumed.%s \n" +#: ../src/utils/pacat.c:347 +#, fuzzy, c-format +msgid "Stream device resumed.%s" msgstr "Périphérique de flux repris %s \n" -#: ../src/utils/pacat.c:350 -#, c-format -msgid "Stream underrun.%s \n" +#: ../src/utils/pacat.c:355 +#, fuzzy, c-format +msgid "Stream underrun.%s" msgstr "Flux vide %s \n" -#: ../src/utils/pacat.c:357 -#, c-format -msgid "Stream overrun.%s \n" +#: ../src/utils/pacat.c:362 +#, fuzzy, c-format +msgid "Stream overrun.%s" msgstr "Flux saturé %s \n" -#: ../src/utils/pacat.c:364 -#, c-format -msgid "Stream started.%s \n" +#: ../src/utils/pacat.c:369 +#, fuzzy, c-format +msgid "Stream started.%s" msgstr "Flux démarré %s \n" -#: ../src/utils/pacat.c:371 -#, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" +#: ../src/utils/pacat.c:376 +#, fuzzy, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" msgstr "Flux déplacé vers le périphérique %s (%u, %ssuspendu).%s \n" # suspendu ou non suspendu -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "non " -#: ../src/utils/pacat.c:378 -#, c-format -msgid "Stream buffer attributes changed.%s \n" +#: ../src/utils/pacat.c:383 +#, fuzzy, c-format +msgid "Stream buffer attributes changed.%s" msgstr "Des attributs du tampon de flux ont changé. %s \n" -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" +#: ../src/utils/pacat.c:415 +#, fuzzy, c-format +msgid "Connection established.%s" msgstr "Connection établie.%s \n" -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" +#: ../src/utils/pacat.c:418 +#, fuzzy, c-format +msgid "pa_stream_new() failed: %s" msgstr "Échec de pa_stream_new() : %s\n" -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +#: ../src/utils/pacat.c:446 +#, fuzzy, c-format +msgid "pa_stream_connect_playback() failed: %s" msgstr "Échec de pa_stream_connect_playback() : %s\n" -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" +#: ../src/utils/pacat.c:452 +#, fuzzy, c-format +msgid "pa_stream_connect_record() failed: %s" msgstr "Échec de pa_stream_connect_record() : %s\n" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, fuzzy, c-format +msgid "Connection failure: %s" msgstr "Échec lors de la connexion : %s\n" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +#, fuzzy +msgid "Got EOF." msgstr "EOF obtenu.\n" -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "Échec de read() : %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" +#: ../src/utils/pacat.c:536 +#, fuzzy, c-format +msgid "write() failed: %s" msgstr "Échec de write() : %s\n" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" +#: ../src/utils/pacat.c:557 +#, fuzzy +msgid "Got signal, exiting." msgstr "Signal obtenu, fermeture.\n" -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" msgstr "Échec lors de l'obtention de la latence : %s\n" -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Durée : %0.3f s ; Latency : %0.0f µs. \r" -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +#: ../src/utils/pacat.c:595 +#, fuzzy, c-format +msgid "pa_stream_update_timing_info() failed: %s" msgstr "Échec de pa_stream_update_timing_info() : %s\n" # downmix = par ex. convertir 5 canaux en 2 canaux @@ -1588,136 +1467,141 @@ msgstr "" "Compilé avec libpulse %s\n" "Lié avec libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, fuzzy, c-format -msgid "Invalid client name '%s'\n" +msgid "Invalid client name '%s'" msgstr "Plan des canaux invalide « %s »\n" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:775 #, fuzzy, c-format -msgid "Invalid stream name '%s'\n" +msgid "Invalid stream name '%s'" msgstr "Méthode de rééchantillonnage invalide « %s »." -#: ../src/utils/pacat.c:813 -#, c-format -msgid "Invalid channel map '%s'\n" +#: ../src/utils/pacat.c:812 +#, fuzzy, c-format +msgid "Invalid channel map '%s'" msgstr "Plan des canaux invalide « %s »\n" -#: ../src/utils/pacat.c:842 -#, c-format -msgid "Invalid latency specification '%s'\n" +#: ../src/utils/pacat.c:841 +#, fuzzy, c-format +msgid "Invalid latency specification '%s'" msgstr "Spécification de latence invalide « %s »\n" -#: ../src/utils/pacat.c:849 -#, c-format -msgid "Invalid process time specification '%s'\n" +#: ../src/utils/pacat.c:848 +#, fuzzy, c-format +msgid "Invalid process time specification '%s'" msgstr "Spécification de temps de traitement invalide « %s »\n" -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:860 #, fuzzy, c-format -msgid "Invalid property '%s'\n" +msgid "Invalid property '%s'" msgstr "Méthode de rééchantillonnage invalide « %s »." -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." msgstr "" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" +#: ../src/utils/pacat.c:896 +#, fuzzy +msgid "Invalid sample specification" msgstr "Spécification d'échantillon invalide\n" -#: ../src/utils/pacat.c:907 -#, c-format -msgid "open(): %s\n" +#: ../src/utils/pacat.c:906 +#, fuzzy, c-format +msgid "open(): %s" msgstr "open() : %s\n" -#: ../src/utils/pacat.c:912 -#, c-format -msgid "dup2(): %s\n" +#: ../src/utils/pacat.c:911 +#, fuzzy, c-format +msgid "dup2(): %s" msgstr "dup2() : %s\n" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" +#: ../src/utils/pacat.c:918 +#, fuzzy +msgid "Too many arguments." msgstr "Trop de paramètres.\n" -#: ../src/utils/pacat.c:930 +#: ../src/utils/pacat.c:929 #, fuzzy -msgid "Failed to generate sample specification for file.\n" +msgid "Failed to generate sample specification for file." msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n" -#: ../src/utils/pacat.c:950 +#: ../src/utils/pacat.c:949 #, fuzzy -msgid "Failed to open audio file.\n" +msgid "Failed to open audio file." msgstr "Échec lors de l'ouverture du fichier audio.\n" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 +#, fuzzy msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 #, fuzzy -msgid "Failed to determine sample specification from file.\n" +msgid "Failed to determine sample specification from file." msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +#, fuzzy +msgid "Warning: Failed to determine channel map from file." +msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" +#: ../src/utils/pacat.c:978 +#, fuzzy +msgid "Channel map doesn't match sample specification" msgstr "" "Le plan des canaux ne correspond pas à la spécification d'échantillon\n" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" - -#: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" +#: ../src/utils/pacat.c:989 +#, fuzzy +msgid "Warning: failed to write channel map to file." msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1004 +#, fuzzy, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n" + +#: ../src/utils/pacat.c:1005 msgid "recording" msgstr "enregistrement" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "lecture" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 -#, c-format -msgid "pa_mainloop_new() failed.\n" +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +#, fuzzy +msgid "pa_mainloop_new() failed." msgstr "Échec de pa_mainloop_new().\n" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1050 +#, fuzzy +msgid "io_new() failed." msgstr "Échec de io_new().\n" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +#, fuzzy +msgid "pa_context_new() failed." msgstr "Échec de pa_context_new().\n" -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" msgstr "Échec de pa_context_connect() : %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "Échec de time_new().\n" +#: ../src/utils/pacat.c:1071 +#, fuzzy +msgid "pa_context_rttime_new() failed." +msgstr "Échec de pa_context_new().\n" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +#, fuzzy +msgid "pa_mainloop_run() failed." msgstr "Échec de pa_mainloop_run().\n" #: ../src/utils/pasuspender.c:81 @@ -1746,7 +1630,12 @@ msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "" "AVERTISSEMENT : le serveur de son n'est pas local, suspension annulée.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Échec lors de la connexion : %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT reçu, fermeture.\n" @@ -1786,34 +1675,49 @@ msgstr "" "Compilé avec libpulse %s\n" "Lié avec libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "Échec de pa_mainloop_new().\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "Échec de pa_context_new().\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "Échec de pa_mainloop_run().\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Échec lors de l'obtention des statistiques : %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "En cours d'utilisation : %u blocs contenant au total %s octets.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "Alloué pendant l'ensemble de la durée d'exécution : %u blocs contenant au " "total %s octets.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Taille du cache de l'échantillon : %s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "Échec lors de l'obtention des informations du serveur : %s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1836,13 +1740,13 @@ msgstr "" "Source par défaut : %s\n" "Cookie : %08x\n" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "Échec lors de l'obtention des informations sur la destination : %s\n" # demander à Lennart s'il s'agit de monitor of source -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1881,22 +1785,22 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, fuzzy, c-format msgid "\tPorts:\n" msgstr "\tProfils :\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, fuzzy, c-format msgid "\tActive Port: %s\n" msgstr "\tProfil actif : %s\n" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "Échec lors de l'obtention des informations sur la source : %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1935,20 +1839,20 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/d" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "Échec lors de l'obtention des informations du module : %s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1965,12 +1869,12 @@ msgstr "" "\tPropriétés : \n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "Échec lors de l'obtention des informations du client : %s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1985,12 +1889,12 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" msgstr "Impossible d'obtenir des informations sur la carte : %s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -2007,24 +1911,24 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfils :\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tProfil actif : %s\n" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "" "Échec lors de l'obtention des informations de l'entrée de la destination : %" "s\n" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2061,13 +1965,13 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" msgstr "" "Échec lors de l'obtention des informations de la sortie de la source : %s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2096,15 +2000,15 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n" # Lazy ? # load-sample-lazy = Create a new entry in the sample cache, but don't load # the sample immediately. The sample is loaded only when it is first used -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2135,21 +2039,27 @@ msgstr "" "\tPropriétés :\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Échec : %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "Échec lors de l'envoi de l'échantillon : %s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "Fin prématurée du fichier\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "SIGINT reçu, fermeture.\n" + +#: ../src/utils/pactl.c:869 #, fuzzy, c-format msgid "" "%s [options] stat\n" @@ -2158,15 +2068,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2198,7 +2114,7 @@ msgstr "" " -n, --client-name=NOM Définit le nom de ce client sur le " "serveur\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2209,83 +2125,137 @@ msgstr "" "Compilé avec libpulse %s\n" "Lié avec libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "Veuillez indiquer un fichier d'échantillon à charger\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "Échec lors de l'ouverture du fichier audio.\n" -#: ../src/utils/pactl.c:951 +#: ../src/utils/pactl.c:1004 #, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" +msgid "Warning: Failed to determine sample specification from file." msgstr "Ouverture d'un flux %s avec une spécification d'échantillon « %s ».\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "Vous devez indiquer un nom d'échantillon à lire\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "Vous devez indiquer un nom d'échantillon à supprimer\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" msgstr "" "Vous devez indiquer un index de sortie de destination et une destination\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" msgstr "Vous devez indiquer un index de sortie de source et une source\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "Vous devez indiquer un nom de module et des paramètres.\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "Vous devez indiquer un index de module\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 +#, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "Vous ne pouvez pas indiquer plus d'une destination. Vous devez indiquer une " "valeur booléenne.\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 +#, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer une " "valeur booléenne.\n" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" - -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" +msgid "You have to specify a card name/index and a profile name" msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" +msgid "You have to specify a sink name/index and a port name" msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1137 +#, fuzzy +msgid "You have to specify a source name/index and a port name" +msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" + +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Spécification d'échantillon invalide\n" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "" +"Vous devez indiquer un index de sortie de destination et une destination\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Vous devez indiquer un nom/un index de carte et un nom de profil\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" +"Vous devez indiquer un index de sortie de destination et une destination\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Spécification d'échantillon invalide\n" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "Aucune commande valide indiquée.\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "Échec de pa_context_connect() : %s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2369,48 +2339,48 @@ msgstr "Échec lors du chargement des données du cookie\n" msgid "Not yet implemented.\n" msgstr "Pas encore implémenté.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0) : %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect() : %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Impossible de tuer le démon PulseAudio." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Le démon ne répond pas." -#: ../src/utils/pacmd.c:146 -#, c-format -msgid "select(): %s" -msgstr "select() : %s" +#: ../src/utils/pacmd.c:161 +#, fuzzy, c-format +msgid "poll(): %s" +msgstr "fork() : %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read() : %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write() : %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Impossible d'accèder au verrou autonome." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2427,7 +2397,7 @@ msgstr "" "le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une " "autre valeur < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2445,15 +2415,20 @@ msgstr "" "autre valeur < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Éteint" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Lecture haute fidélité (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +#, fuzzy +msgid "High Fidelity Capture (A2DP)" +msgstr "Lecture haute fidélité (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telephonie en duplex (HSP/HFP)" @@ -2461,6 +2436,155 @@ msgstr "Telephonie en duplex (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "Serveur de son PulseAudio" +#, fuzzy +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Plan des canaux invalide « %s »\n" + +#, fuzzy +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "Échec lors de l'obtention des informations de l'échantillon : %s\n" + +#~ msgid "select(): %s" +#~ msgstr "select() : %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Impossible de se connecter au bus système : %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Impossible d'obtenir le programme appelant à partir du PID : %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Impossible de définir un UID sur l'objet appelant." + +#~ msgid "Failed to get CK session." +#~ msgstr "Échec lors de l'obtention de la session CK." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Impossible de définir l'UID sur l'objet de session." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Impossible d'allouer PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "Impossible de définir action_id." + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Impossible d'allouer PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Impossible d'initialiser PolKitContext : %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Impossible de déterminer si le programme appelant est autorisé : %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Impossible d'obtenir l'authentification : %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit a renvoyé « %s »" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Ordonnancement haute priorité (niveau Unix « nice » négatif) pour le démon " +#~ "PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Ordonnancement en temps réel pour le démon PulseAudio" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "La politique du système empêche PulseAudio d'acquérir un ordonnancement " +#~ "haute priorité" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "La politique du système empêche PulseAudio d'acquérir un ordonnancement " +#~ "en temps réel" + +#~ msgid "read() failed: %s\n" +#~ msgstr "Échec de read() : %s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "Échec de pa_context_connect() : %s" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Nous sommes dans le groupe « %s », permettant une planification à haute " +#~ "priorité." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "" +#~ "Nous sommes dans le groupe « %s », permettant un ordonnancement en temps " +#~ "réel." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "" +#~ "PolicyKit a accordé l'acquisition des permissions de haute priorité." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "Le SUID root et l'ordonnancement en temps réel et/ou haute priorité ont " +#~ "été spécifiés dans la configuration. Cependant, il nous manque les " +#~ "privilèges nécessaires :\n" +#~ "Nous ne sommes pas dans le groupe « %s », PolicyKit refuse de nous " +#~ "accorder les privilèges demandés et nous devons augmenter les limites de " +#~ "ressources RLIMIT_NICE/RLIMIT_RTPRIO.\n" +#~ "Pour activer l'ordonnancement en temps réel/haute priorité, veuillez " +#~ "acquérir les privilèges PolicyKit apropriés, ou devenir membre de « %s », " +#~ "ou augmenter les limites de ressources RLIMIT_NICE/RLIMIT_RTPRIO pour cet " +#~ "utilisateur." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "La planification à haute priorité est activée dans la configuration mais " +#~ "n'est pas permise par la politique." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "Augmentation de RLIMIT_RTPRIO réussie" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO a échoué : %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Abandon de CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "La planification en temps réel est activée mais n'est pas permise par la " +#~ "politique." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Limitation des capacités à CAP_SYS_NICE réussie." + +#~ msgid "time_new() failed.\n" +#~ msgstr "Échec de time_new().\n" + #~ msgid "Analog Mono" #~ msgstr "Mono analogique" @@ -2497,9 +2621,6 @@ msgstr "Serveur de son PulseAudio" #~ msgid "Output %s + Input %s" #~ msgstr "Sortie %s + Entrée %s" -#~ msgid "Output %s" -#~ msgstr "Sortie %s" - #~ msgid "Input %s" #~ msgstr "Entrée %s" diff --git a/po/gu.po b/po/gu.po index 437cd1cdb..3feb5521c 100644 --- a/po/gu.po +++ b/po/gu.po @@ -1,14 +1,14 @@ -# translation of pulseaudio.po to Gujarati +# translation of pulaudio.po to Gujarati # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Sweta Kothari , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio\n" +"Project-Id-Version: pulaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-07 14:27+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 15:26+0530\n" "Last-Translator: Sweta Kothari \n" "Language-Team: Gujarati\n" "MIME-Version: 1.0\n" @@ -17,7 +17,12 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -29,7 +34,7 @@ msgstr "" "ALSA ડ્રાઇવર '%s' માં મોટેભાગે આ ભૂલ જેવુ છે. ALSA ડેવલ્પરોમાં આ સમસ્યાને મહેરબાની કરીને " "અહેવાલ કરો." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -42,7 +47,7 @@ msgstr "" "ALSA ડ્રાઇવર '%s' માં મોટેભાગે આ ભૂલ જેવુ છે. ALSA ડેવલ્પરોમાં આ સમસ્યાને મહેરબાની કરીને " "અહેવાલ કરો." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -55,9 +60,17 @@ msgstr "" "ALSA ડ્રાઇવર '%s' માં મોટેભાગે આ ભૂલ જેવુ છે. ALSA ડેવલ્પરોમાં આ સમસ્યાને મહેરબાની કરીને " "અહેવાલ કરો." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "હંમેશા ઓછામાં ઓછુ એક સિંક લોડ થયેલ રાખો જો તે શૂન્ય હોય તો પણ" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "ડમી આઉટપુટ" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "વર્ચ્યુઅલ LADSPA સિંક" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -67,12 +80,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "ક્લોક થયેલ NULL સિંક" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "શૂન્ય આઉટપુટ" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "આંતરિક ઓડિયો" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "મોડેમ" @@ -88,369 +114,249 @@ msgstr "નવા dl લોડરને ફાળવવાનું નિષ્ msgid "Failed to add bind-now-loader." msgstr "bind-now-loader ને ઉમેરવાનું નિષ્ફળ." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "સિસ્ટમ બસને જોડી શકાતુ નથી: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID માંથી કોલરને મેળવી શકાતુ નથી: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "કોલર ઓબ્જેક્ટ પર UID ને સુયોજિત કરી શકાતુ નથી." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK સત્રને મેળવવામાં નિષ્ફળ." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "સત્ર ઓબ્જેક્ટ પર UID ને સુયોજિત કરી શકાતુ નથી." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction ને ફાળવી શકાતી નથી." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id ને સુયોજિત કરી શકાતુ નથી" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext ને ફાળવી શકાતી નથી." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext નું પ્રારંભ કરી શકાતુ નથી: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "નક્કી કરી શકાયુ નહિં ક્યાંતો કોલર એ સત્તાધિકરણ થયેલ છે: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "auth મેળવા શકાતુ નથી: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "'%s' સાથે PolicyKit એ પ્રત્યુત્તર આપેલ છે" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "સંકેત %s મળ્યુ." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "બહાર નીકળી રહ્યા છે." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "વપરાશકર્તા '%s' ને શોધવામાં નિષ્ફળ." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "જૂથ '%s' ને શોધવામાં નિષ્ફળ." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "વપરાશકર્તા '%s' (UID %lu) અને જૂથ '%s' (GID %lu) શોધાયુ." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "વપરાશકર્તા '%s' અને જૂથ '%s' ની GID બંધબેસતુ નથી." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "વપરાશકર્તાઓ '%s' ની ઘર ડિરેક્ટરી '%s' નથી, અવગણી રહ્યા છે." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' ને બનાવવામાં નિષ્ફળ: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "જૂથ યાદીને બદલવામાં નિષ્ફળ: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID ને બદલવામાં નિષ્ફળ: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID ને બદલવામાં નિષ્ફળ: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "સફળતાપૂર્વક છોડી દીધેલ રુટ અધિકારો." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "આ પ્લેટફોર્મ પર બિનઆધારભૂત સિસ્ટમ વિશાળ સ્થિતિ." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) નિષ્ફળ: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "આદેશ વાક્યને પદચ્છેદન કરવામાં નિષ્ફળ." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "આપણે જૂથ '%s' માં છીએ, high-priority ગોઠવવાની પરવાનગી આપી રહ્યા છે." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "આપણે જૂથ '%s' માં છીએ, સાચા સમયે ગોઠવવાની પરવાનગી આપી રહ્યા છે." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit આપણને acquire-high-priority અધિકારની મંજૂરી આપે છે." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit એ acquire-high-priority અધિકારને ફરીથી શરૂ કરે છે." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit એ acquire-real-time અધિકારની મંજૂરી આપે છે." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit એ acquire-real-time અધિકારને ફરી શરૂ કરે છે." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"કહેવાતી SUID અને real-time અને/અથવા high-priority ગોઠવણી રૂપરેખાંકનમાં સૂચવેલ હતી. " -"છતાંપણ, આપણને જરૂરી અધિકારો ઓછા પડ્યા:\n" -"આપણે જૂથ '%s' માં નથી, PolicyKit એ સૂચિત અધિકારોને આપણને મંજૂરી આપવા માટે માન્ય કરતુ " -"નથી અને આપણે RLIMIT_NICE/RLIMIT_RTPRIO સ્ત્રોત મર્યાદાઓને વધારતા નથી.\n" -"real-time/high-priority ગોઠવણીને સક્રિય કરવા માટે મહેરબાની કરીને અનૂકુળ PolicyKit " -"અધિકારોને મેળવો, અથવા '%s' નાં સભ્ય બનો, અથવા આ વપરાશકર્તા માટે RLIMIT_NICE/" -"RLIMIT_RTPRIO સ્ત્રોત મર્યાદાઓને વધારો." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"High-priority ગોઠવવાનું રૂપરેખાંકનમાં સક્રિય થયેલ છે પરંતુ પોલિસી દ્દારા પરવાનગી આપેલ નથી." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "સફળતાપૂર્વક વધારેલ RLIMIT_RTPRIO" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO નિષ્ફળ: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE ને છોડી રહ્યા છે" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Real-time ગોઠવવાનું એ રૂપરેખાંકનમાં સક્રિય થયેલ છે પરંતુ પોલિસી દ્દારા પરવાનગી આપેલ નથી." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "ડિમન ચાલી રહ્યુ નથી" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "PID %u તરીકે ડિમન ચાલી રહ્યુ છે" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "ડિમનને મારવાનું નિષ્ફળ: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "" "આ પ્રક્રિયાને રુટ તરીકે ચલાવવા માટે વિચાર થયેલ નથી (નહિં તો --system એ સ્પષ્ટ થયેલ છે)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "રુટ અધિકારો જરૂરી છે." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start એ સિસ્ટમ ઉદાહરણો માટે આધારભૂત નથી." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, પરંતુ --disallow-exit સુયોજિત નથી!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, પરંતુ --disallow-module-loading એ સુયોજિત નથી!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, SHM સ્થિતિને દબાણપૂર્વક નિષ્ક્રિય કરી રહ્યા છે!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે, બહાર નીકળવનાં નિષ્કાર્ય સમયને દબાણપૂર્વક નિષ્ક્રિય કરી " "રહ્યા છે!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio ને મેળવવામાં નિષ્ફળ." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "પાઇપ નિષ્ફળ: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() નિષ્ફળ: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() નિષ્ફળ: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "ડિમન શરૂઆત નિષ્ફળ." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "ડિમન શરૂઆત કરવુ સફળ છે." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "આ PulseAudio %s છે" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "કમ્પાઇલેશન યજમાન: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "કમ્પાઇલેશન CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "યજમાન પર ચાલી રહ્યુ છે: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUs શોધાયુ." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "પાનાંનુ માપ %lu બાઇટો છે" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind આધાર સાથે કમ્પાઇલ થયેલ છે: હા" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind આધાર સાથે કમ્પાઇલ થયેલ છે: ના" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind સ્થિતિમાં ચાલી રહ્યુ છે: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "શ્રેષ્ટ થયેલ બિલ્ડ: હા" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "શ્રેષ્ટ થયેલ બિલ્ડ: ના" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG વ્યાખ્યાયિત થયેલ છે, બધા હકો નિષ્ક્રિય થયેલ છે." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH વ્યાખ્યાયિત થયેલ છે, ફક્ત ઝડપી પાથનાં હકો નિષ્ક્રિય થયેલ છે." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "બધા હકો સક્રિય થયેલ છે." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "મશીન ID ને મેળવવામાં નિષ્ફળ" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "મશીન ID %s છે." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "મશીન ID %s છે." +msgstr "સત્ર ID %s છે." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "રનટાઇમ ડિરેક્ટરી %s ને વાપરી રહ્યા છે." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "સ્થિતિ ડિરેક્ટરી %s ને વાપરી રહ્યા છે." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "ઇોડ્યુલોમ ડિરેક્ટરી %s ને વાપરી રહ્યા છે." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -459,16 +365,21 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"બરાબર, તેથી તમે સિસ્ટમ સ્થિતિમાં PA ચલાવી રહ્યા છો. મહેરબાની કરીને નોંધો કે જે તમારે " +"મોટેભાગે કરવુ જોઇએ નહિં.\n" +"જો તમે તેનાં વગર કરે તો પછી તે તમારી ભૂલ થે જો ઇચ્છિત રીતે તે કામ કરતુ ન હોય તો.\n" +"શા માટે સિસ્ટમ સ્થિતિ સામાન્ય રીતે ખરાબ વિચાર છે તે માટે વિગતવાર જાણકારી માટે મહેરબાની " +"કરીને http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode આને વાંચો." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() નિષ્ફળ." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "તાજુ high-resolution ટાઇમરો ઉપલ્બધ છે! બોન એપેટાઇટ!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -476,27 +387,27 @@ msgstr "" "મિત્ર, તમારુ કર્નલમાં ગડબડ છે! રસોઇયાનું આજે ભલામણ એ સક્રિય થયેલ high-resolution " "ટાઇમરો સાથે Linux નું છે!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() નિષ્ફળ." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "ડિમનને શરૂ કરવામાં નિષ્ફળ." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "કોઇપણ લોડ થયેલ મોડ્યુલો વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહ્યા છે." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "ડિમન પારંભ કરવાનું સમાપ્ત છે." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "ડિમનને બંધ કરવાનું પ્રારંભ થયેલ છે." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "ડિમનનો અંત આવેલ છે." @@ -745,97 +656,93 @@ msgstr "એકવાર લોડ કરો: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "DEPRECATION WARNING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "પાથ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] અયોગ્ય લોગ લક્ષ્ય '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] અયોગ્ય લોગ સ્તર '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] અયોગ્ય resample પદ્દતિ '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] અયોગ્ય rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit એ આ પ્લેટફોર્મ પર આધારભૂત નથી." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] અયોગ્ય નમૂના બંધારણ '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] અયોગ્ય નમૂના દર '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] અયોગ્ય નમૂના ચેનલો '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] અયોગ્ય ચેનલ મેપ '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટોનાં નંબર '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટ માપ '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] અયોગ્ય સારુ સ્તર '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનું નિષ્ફળ: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "" "સ્પષ્ટ થયેલ મૂળભૂત ચેનલ મેપ પાસે સ્પષ્ટ થયેલ ચેનલોની મૂળભૂત સંખ્યા કરતા વિવિધ ચેનલોની સંખ્યા છે." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### રૂપરેખાંકન ફાઇલમાંથી વાંચો: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "રુટ અધિકારોને છોડી રહ્યા છે." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "CAP_SYS_NICE માં સફળતાપૂર્વક મર્યાદિત ક્ષમતાઓ." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "અધિકારોને છોડી રહ્યા છે." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -845,26 +752,7 @@ msgstr "PulseAudio સાઉન્ડ સિસ્ટમ" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio સાઉન્ડ સિસ્ટમને શરૂ કરો" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio ડિમન માટે High-priority ગોઠવણી (નકારાત્મક Unix સારુ સ્તર)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio ડિમન માટે Real-time ગોઠવણી" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"high-priority ગોઠવણીને પ્રાપ્ત કરવા માંથી સિસ્ટમ પોલિસી PulseAudio ને અટકાવે છે." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "real-time ગોઠવણી પ્રાપ્ત કરવા માંથી સિસ્ટમ પોલિસી એ PulseAudio ને અટકાવે છે." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "મોનો" @@ -1068,33 +956,33 @@ msgstr "ઉપર રિઅર ડાબે" msgid "Top Rear Right" msgstr "ઉપર રિઅર જમણે" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(અયોગ્ય)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "સ્ટેરિઓ" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "સરાઉન્ડ 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "સરાઉન્ડ 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "સરાઉન્ડ 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "સરાઉન્ડ 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "સરાઉન્ડ 7.1" @@ -1198,27 +1086,35 @@ msgstr "ગુમ થયેલ અમલીકરણ" msgid "Client forked" msgstr "ક્લાઇન્ટમાં ફાટા પડેલ છે" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1231,192 +1127,191 @@ msgstr "XOpenDisplay() નિષ્ફળ" msgid "Failed to parse cookie data" msgstr "કુકીની માહિતીને પદચ્છેદન કરવામાં નિષ્ફળ" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "રૂપરેખાંકન ફાઇલ '%s' ને ખોલવામાં નિષ્ફળ: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "કુકી લોડ થયેલ નથી. તેનાં વગર જોડવાનો પ્રયત્ન કરી રહ્યા છે." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "અજ્ઞાત એક્સટેન્શન '%s' માટે મળેલ સંદેશ" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "સ્ટ્રીમને નિકાલ કરવામાં નિષ્ફળ: %s\n" +msgid "Failed to drain stream: %s" +msgstr "સ્ટ્રીમને નિકાલ કરવામાં નિષ્ફળ: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "પ્લેબેક સ્ટ્રીમ ને નિકાલ કરેલ છે.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "પ્લેબેક સ્ટ્રીમ ને નિકાલ કરેલ છે." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "સર્વરમાં જોડાણને નિકાલ કરી રહ્યા છે.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "સર્વરમાં જોડાણને નિકાલ કરી રહ્યા છે." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() નિષ્ફળ: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() નિષ્ફળ: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "સ્ટ્રીમ સફળતાપૂર્વક બનાવેલ છે.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() નિષ્ફળ: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "સ્ટ્રીમ સફળતાપૂર્વક બનાવેલ છે." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "બફર મેટ્રિક્સ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "બફર મેટ્રિક્સ: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "બફર મેટ્રિક્સ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "નમૂનો spec '%s' ને વાપરી રહ્યા છે, ચેનલ મેપ '%s'.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "બફર મેટ્રિક્સ: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "ઉપકરણ %s (%u, %ssuspended) સાથે જોડાયેલ છે.\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "નમૂનો spec '%s' ને વાપરી રહ્યા છે, ચેનલ મેપ '%s'." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "સ્ટ્રીમ ભૂલ: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "ઉપકરણ %s (%u, %ssuspended) સાથે જોડાયેલ છે." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "સ્ટ્રીમ ઉપકરણ ને થોડા સમય માટે બંધ રાખેલ છે.%s \n" +msgid "Stream error: %s" +msgstr "સ્ટ્રીમ ભૂલ: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "સ્ટ્રીમ ઉપકરણને ફરી શરૂ કરેલ છે.%s \n" +msgid "Stream device suspended.%s" +msgstr "સ્ટ્રીમ ઉપકરણ ને થોડા સમય માટે બંધ રાખેલ છે.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "સ્ટ્રીમ ચલાવવા હેઠળ છે.%s \n" +msgid "Stream device resumed.%s" +msgstr "સ્ટ્રીમ ઉપકરણને ફરી શરૂ કરેલ છે.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "સ્ટ્રીમ ઉપર ચાલે છે.%s \n" +msgid "Stream underrun.%s" +msgstr "સ્ટ્રીમ ચલાવવા હેઠળ છે.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "સ્ટ્રીમ શરૂ થયેલ છે.%s \n" +msgid "Stream overrun.%s" +msgstr "સ્ટ્રીમ ઉપર ચાલે છે.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "સ્ટ્રીમ એ ઉપકરણ %s (%u, %ssuspended) માં ખસેડેલ છે.%s \n" +msgid "Stream started.%s" +msgstr "સ્ટ્રીમ શરૂ થયેલ છે.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "સ્ટ્રીમ એ ઉપકરણ %s (%u, %ssuspended) માં ખસેડેલ છે.%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "નથી " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "સ્ટ્રીમ બફર ગુણધર્મો બદલાયેલ છે.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "સ્ટ્રીમ બફર ગુણધર્મો બદલાયેલ છે.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "જોડાણ સ્થાપિત થયેલ છે.%s \n" +msgid "Connection established.%s" +msgstr "જોડાણ સ્થાપિત થયેલ છે.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() નિષ્ફળ: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() નિષ્ફળ: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() નિષ્ફળ: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "જોડાણ નિષ્ફળ: %s\n" +msgid "Connection failure: %s" +msgstr "જોડાણ નિષ્ફળ: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF મળ્યુ.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF મળ્યુ." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() નિષ્ફળ: %s\n" +msgid "write() failed: %s" +msgstr "write() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "સંકેત મળ્યું, બહાર નીકળી રહ્યા છે." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() નિષ્ફળ: %s\n" +msgid "Failed to get latency: %s" +msgstr "ગુપ્તતા મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "સંકેત મળ્યું, બહાર નીકળી રહ્યા છે.\n" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "ગુપ્તતા મેળવવામાં નિષ્ફળ: %s\n" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Time: %0.3f sec; Latency: %0.0f usec." -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:595 #, 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:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() નિષ્ફળ: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() નિષ્ફળ: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1476,52 +1371,49 @@ msgid "" msgstr "" "%s [options]\n" "\n" -" -h, --help Show this help\n" -" --version Show version\n" +" -h, --help આ મદદને બતાવો\n" +" --version આવૃત્તિને બતાવો\n" "\n" -" -r, --record Create a connection for recording\n" -" -p, --playback Create a connection for playback\n" +" -r, --record રેકોર્ડીંગ માટે જોડાણને બનાવો\n" +" -p, --playback પ્લેબેક માટે જોડાણને બનાવો\n" "\n" -" -v, --verbose Enable verbose operations\n" +" -v, --verbose વર્બોસ ક્રિયાઓ ને સક્રિય કરો\n" "\n" -" -s, --server=SERVER The name of the server to connect " -"to\n" -" -d, --device=DEVICE The name of the sink/source to " -"connect to\n" -" -n, --client-name=NAME How to call this client on the " -"server\n" -" --stream-name=NAME How to call this stream on the " -"server\n" -" --volume=VOLUME Specify the initial (linear) volume " -"in range 0...65536\n" -" --rate=SAMPLERATE The sample rate in Hz (defaults to " -"44100)\n" -" --format=SAMPLEFORMAT The sample type, one of s16le, " -"s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" -" --channels=CHANNELS The number of channels, 1 for mono, " -"2 for stereo\n" -" (defaults to 2)\n" -" --channel-map=CHANNELMAP Channel map to use instead of the " -"default\n" -" --fix-format Take the sample format from the sink " -"the stream is\n" -" being connected to.\n" -" --fix-rate Take the sampling rate from the sink " -"the stream is\n" -" being connected to.\n" -" --fix-channels Take the number of channels and the " -"channel map\n" -" from the sink the stream is being " -"connected to.\n" -" --no-remix Don't upmix or downmix channels.\n" -" --no-remap Map channels by index instead of " -"name.\n" -" --latency=BYTES Request the specified latency in " -"bytes.\n" -" --process-time=BYTES Request the specified process time " -"per request in bytes.\n" +" -s, --server=SERVER તેમાં જોડાવા માટે સર્વરનું નામ\n" +" -d, --device=DEVICE તેમાં જોડાવા માટે સિંક/સ્ત્રોત નું નામ\n" +" -n, --client-name=NAME સર્વર પર આ ક્લાઇન્ટને કેવી રીતે કોલ કરવો\n" +" --stream-name=NAME સર્વર પર આ સ્ટ્રીમને કેવી રીતે કોલ કરવો\n" +" --volume=VOLUME સીમા 0...65536 માં પ્રારંભનાં (સીધા) " +"વોલ્યુમને સ્પષ્ટ કરો\n" +" --rate=SAMPLERATE Hz માં નમૂનો(44100 નાં મૂળભૂતો)\n" +" --format=SAMPLEFORMAT નમૂના પ્રકાર, s16le, s16be, u8, " +"float32le, માંનો એક\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" +" --channels=CHANNELS ચેનલોની સંખ્યા, mono માટે 1, stereo માટે " +"2\n" +" (2 એ મૂળભૂત છે)\n" +" --channel-map=CHANNELMAP મૂળભૂત ને બદલે વાપરવા માટે ચેનલ મેપ\n" +" --fix-format સ્ટ્રીમ તેમાં જોડાયેલ છે તે સિંક માંથી નમૂના " +"બંધારણને\n" +" લો.\n" +" --fix-rate સ્ટ્રીમ તેમાં જોડાયેલ છે તે સિંક માંથી નમૂના " +"દરને લો.\n" +" --fix-channels સ્ટ્રીમ તેમાં જોડાયેલ છે તે સિંક માંથી ચેનલો " +"અને ચેનલ માપને લો.\n" +" --no-remix ચેનલોને upmix અથવા downmix કરો નહિં.\n" +" --no-remap નામને બદલે અનુક્રમણિકા દ્દારા મેપ ચેનલો.\n" +" --latency=BYTES બાઇટોમાં સ્પષ્ટ થયેલ ગુપ્તતા ની માંગણી " +"કરો.\n" +" --process-time=BYTES બાઇટોમાં માંગણી ની સાથે સ્પષ્ટ થયેલ " +"પ્રક્રિયા સમયની માંગણી કરો.\n" +" --property=PROPERTY=VALUE સ્પષ્ટ થયેલ કિંમતમાં સ્પષ્ટ થયેલ ગુણધર્મને " +"સુયોજિત કરો.\n" +" --raw કાચી PCM માહિતીનો રેકોર્ડ કરો/વગાડો.\n" +" --file-format=FFORMAT બંધારણ થયેલ માહિતીનો રેકોર્ડ કરો/વગાડો.\n" +" --list-file-formats ઉપલ્બધ ફાઇલ બંધારણોની યાદી.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1534,136 +1426,127 @@ msgstr "" "libpulse %s સાથે કમ્પાઇલ થયેલ છે\n" "libpulse %s સાથે કડી થયેલ છે\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "અયોગ્ય ચેનલ મેપ '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "અયોગ્ય resample પદ્દતિ '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "અયોગ્ય ચેનલ મેપ '%s'\n" +msgid "Invalid client name '%s'" +msgstr "અયોગ્ય ક્લાઇન્ટ નામ '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "અયોગ્ય ગુપ્તતા સ્પષ્ટીકરણ '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "અયોગ્ય સ્ટ્રીમ નામ '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "અયોગ્ય પ્રક્રિયા સમય સ્પષ્ટીકરણ '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "અયોગ્ય ચેનલ મેપ '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "અયોગ્ય resample પદ્દતિ '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "અયોગ્ય ગુપ્તતા સ્પષ્ટીકરણ '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "અયોગ્ય પ્રક્રિયા સમય સ્પષ્ટીકરણ '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "અયોગ્ય ગુણધર્મ '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "અજ્ઞાત ફાઇલ બંધારણ %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "અયોગ્ય નમૂના સ્પષ્ટીકરણ\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "અયોગ્ય નમૂના સ્પષ્ટીકરણ" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "ઘણી બધી દલીલો છે.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "ઘણી બધી દલીલો છે." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "નમૂના જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "ફાઇલ માટે નમૂના સ્પષ્ટીકરણ ને ઉત્પન્ન કરવામાં નિષ્ફળ." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "સાઉન્ડ ફાઇલને ખોલવામાં નિષ્ફળ.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "સાઉન્ડ ફાઇલને ખોલવામાં નિષ્ફળતા." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "ચેતવણી: સ્પષ્ટ થયેલ નમૂના સ્પષ્ટીકરણ ફાઇલ માંથી સ્પષ્ટીકરણ સાથે ઉપર લખાયેલ હશે." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "નમૂના જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ફાઇલ માંથી નમૂના સ્પષ્ટીકરણને નક્કી કરવામાં નિષ્ફળતા." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "ચેતવણી: ફાઇલમાંથી ચેનલ મેપને નક્કી કરવામાં નિષ્ફળતા." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "ચેનલ મેપ એ સ્પષ્ટીકરણ નમૂનાને બંધબેસતુ નથી\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "ચેનલ મેપ એ સ્પષ્ટીકરણ નમૂનાને બંધબેસતુ નથી" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "ચેતણી: ફાઇલમાં ચેનલ મેપને લખવામાં નિષ્ફળતા." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "નમૂના સ્પષ્ટીકરણ '%s' અને ચેનલ નક્ષા '%s' સાથે %s સ્ટ્રીમને ખોલી રહ્યા છે." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "નમૂના સ્પષ્ટીકરણ '%s' સાથે %s સ્ટ્રીમને ખોલી રહ્યા છે.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "રેકોર્ડ કરી રહ્યા છે" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "પ્લેબેક" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() નિષ્ફળ." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() નિષ્ફળ." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() નિષ્ફળ." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() નિષ્ફળ.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() નિષ્ફળ.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() નિષ્ફળ.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() નિષ્ફળ: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() નિષ્ફળ.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new() નિષ્ફળ." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() નિષ્ફળ.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() નિષ્ફળ." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1690,7 +1573,12 @@ msgstr "ફરી શરૂ કરવામાં નિષ્ફળતા: %s\n msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "ચેતવણી: સાઉન્ડ સર્વર એ સ્થાનિક નથી, થોડા સમય માટે બંધ કરવામાં આવ્યુ નથી.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "જોડાણ નિષ્ફળ: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT મળ્યુ, બહાર નીકળી રહ્યા છે.\n" @@ -1729,32 +1617,47 @@ msgstr "" "libpulse %s સાથે કમ્પાઇલ થયેલ છે\n" "libpulse %s સાથે કડી થયેલ છે\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "પરિસ્થિતિઓને મેળવવામાં નિષ્ફળ: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() નિષ્ફળ.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() નિષ્ફળ.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() નિષ્ફળ.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "પરિસ્થિતિઓને મેળવવામાં નિષ્ફળતા: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "હાલમાં વપરાશમાં છે: %u બ્લોકો %s કુલ બાઇટોને સમાવી રહ્યા છે.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "આખી જીંદગી દરમ્યાન ફાળવેલ છે: %u બ્લોકો %s કુલ બાઇટોને સમાવી રહ્યા છે.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "નમૂના કેશ માપ: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "સર્વર જાણકારી મેળવવામાં નિષ્ફળતા: %s\n" +msgid "Failed to get server information: %s" +msgstr "સર્વર જાણકારી મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1777,12 +1680,12 @@ msgstr "" "મૂળભૂત સ્ત્રોત: %s\n" "કુકી: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "સિંક જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +msgid "Failed to get sink information: %s" +msgstr "સિંક જાણકારી મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1821,22 +1724,22 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tરૂપરેખાઓ:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tસક્રિય રૂપરેખા: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "સ્ત્રોત જાણકારીને મેળવવામાં નિષ્ફળ: %s\n" +msgid "\tPorts:\n" +msgstr "\tપોર્ટો:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tસક્રિય પોર્ટ: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "સ્ત્રોત જાણકારીને મેળવવામાં નિષ્ફળતા: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1875,20 +1778,20 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "મોડ્યુલની જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +msgid "Failed to get module information: %s" +msgstr "મોડ્યુલની જાણકારી મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1905,12 +1808,12 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "ક્લાઇન્ટ જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +msgid "Failed to get client information: %s" +msgstr "ક્લાઇન્ટ જાણકારી મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1925,12 +1828,12 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "કાર્ડ જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +msgid "Failed to get card information: %s" +msgstr "કાર્ડ જાણકારી મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1947,22 +1850,22 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tરૂપરેખાઓ:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tસક્રિય રૂપરેખા: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "સિંક ઇનપુટ જાણકારી મેળવવામાં નિષ્ફળતા: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "સિંક ઇનપુટ જાણકારી મેળવવામાં નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1999,12 +1902,12 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "સ્ત્રોત આઉટપુટ જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +msgid "Failed to get source output information: %s" +msgstr "સ્ત્રોત આઉટપુટ જાણકારી મેળવવામાં નિષ્ફળ: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2033,12 +1936,12 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "નમૂના જાણકારી મેળવવામાં નિષ્ફળ: %s\n" +msgid "Failed to get sample information: %s" +msgstr "નમૂના જાણકારી મેળવવામાં નિષ્ફળ: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2069,22 +1972,26 @@ msgstr "" "\tગુણધર્મો:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "નિષ્ફળતા: %s\n" +msgid "Failure: %s" +msgstr "નિષ્ફળતા: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "નમૂનાને અપલોડ કરવામાં નિષ્ફળ: %s\n" +msgid "Failed to upload sample: %s" +msgstr "નમૂનાને અપલોડ કરવામાં નિષ્ફળ: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "ફાઇલનો નિયત સમય પહેલા અંત\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "ફાઇલનો નિયત સમય પહેલા અંત" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT મળ્યુ, બહાર નીકળી રહ્યા છે." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2092,15 +1999,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2116,21 +2029,31 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" -" -h, --help આ મદદ ને બતાવો\n" -" --version આવૃત્તિને બતાવોShow version\n" +" -h, --help Show this help\n" +" --version Show version\n" "\n" -" -s, --server=SERVER જોડાવા માટે સર્વર નું નામ\n" -" -n, --client-name=NAME સર્વર પર આ ક્લાઇન્ટને કેવી રીતે કોલ કરશો\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2141,79 +2064,108 @@ msgstr "" "libpulse %s સાથે કમ્પાઇલ થયેલ છે\n" "libpulse %s સાથે કડી થયેલ છે\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "મહેરબાની કરીને લોડ કરવા માટે નમૂના ફાઇલને સ્પષ્ટ કરો\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "સાઉન્ડ ફાઇલને ખોલવામાં નિષ્ફળ.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "નમૂના સ્પષ્ટીકરણ '%s' સાથે %s સ્ટ્રીમને ખોલી રહ્યા છે.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "વગાડવા માટે તમારે નમૂના નામને સ્પષ્ટ કરવુ જ પડશે\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "દૂર કરવા માટે તમારે નમૂના નામને સ્પષ્ટ કરવુ જ પડશે\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "સિંક ઇનપુટ અનુક્રમણિકા અને સિંકને તમારે સ્પષ્ટ કરવુ જ પડશે\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "મહેરબાની કરીને લોડ કરવા માટે નમૂના ફાઇલને સ્પષ્ટ કરો" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "તમારે સ્ત્રોત આઉટપુટ અનુક્રમણિકા અને સ્ત્રોતને સ્પષ્ટ કરવુ જ પડશે\n" +msgid "Failed to open sound file." +msgstr "સાઉન્ડ ફાઇલને ખોલવામાં નિષ્ફળ." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "તમારે મોડ્યુલ નામ અને દલીલોને સ્પષ્ટ કરવુ જ પડશે.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "ચેતવણી: ફાઇલ માંથી નમૂના સ્પષ્ટીકરણ કરવાનું નક્કી કરવામાં નિષ્ફળ." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "તમારે મોડ્યુલ અનુક્રમણિકાને સ્પષ્ટ કરવુ જ પડશે\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "વગાડવા માટે તમારે નમૂના નામને સ્પષ્ટ કરવુ જ પડશે" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "દૂર કરવા માટે તમારે નમૂના નામને સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "સિંક ઇનપુટ અનુક્રમણિકા અને સિંકને તમારે સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "તમારે સ્ત્રોત આઉટપુટ અનુક્રમણિકા અને સ્ત્રોતને સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "તમારે મોડ્યુલ નામ અને દલીલોને સ્પષ્ટ કરવુ જ પડશે." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "તમારે મોડ્યુલ અનુક્રમણિકાને સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"તમે એક સિંક કરતા વધારે સ્પષ્ટ કરી શકશો નહિં. તમારે બુલિયન કિંમતને સ્પષ્ટ કરવુ જ પડશે.\n" +"તમે એક સિંક કરતા વધારે સ્પષ્ટ કરી શકશો નહિં. તમારે બુલિયન કિંમતને સ્પષ્ટ કરવુ જ પડશે." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"તમે એક સ્ત્રોત કરતા વધારે સ્પષ્ટ કરી શકશો નહિં. તમારે બુલિયન કિંમતને સ્પષ્ટ કરવુ જ પડશે.\n" +"તમે એક સ્ત્રોત કરતા વધારે સ્પષ્ટ કરી શકશો નહિં. તમારે બુલિયન કિંમતને સ્પષ્ટ કરવુ જ પડશે." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને રૂપરેખા નામને સ્પષ્ટ કરવુ જ પડશે\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને પોર્ટ નામને સ્પષ્ટ કરવુ જ પડશે" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને રૂપરેખા નામને સ્પષ્ટ કરવુ જ પડશે\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને પોર્ટ નામને સ્પષ્ટ કરવુ જ પડશે" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને રૂપરેખા નામને સ્પષ્ટ કરવુ જ પડશે\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને પોર્ટ નામને સ્પષ્ટ કરવુ જ પડશે" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "યોગ્ય આદેશ સ્પષ્ટ થયેલ નથી.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને વોલ્યુમને સ્પષ્ટ કરવુ જ પડશે" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() નિષ્ફળ: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "અયોગ્ય નમૂના સ્પષ્ટીકરણ" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "તમારે કાર્ડ નામ/અનુક્રમણિકા અને વોલ્યુમ સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "સિંક ઇનપુટ અનુક્રમણિકા અને વોલ્યુમને તમારે સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "અયોગ્ય સિંક ઇનપુટ અનુક્રમણિકા" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "તમારે સિંક નામ/અનુક્રમણિકા અને મૂંગા બુલિયનને સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "તમારે સિંક નામ/અનુક્રમણિકા અને મૂંગા બુલિયનને સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "સિંક ઇનપુટ અનુક્રમણિકા અને મૂંગા બુલિયનને તમારે સ્પષ્ટ કરવુ જ પડશે" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "અયોગ્ય ઇનપુટ અનુક્રમણિકા સ્પષ્ટીકરણ" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "યોગ્ય આદેશ સ્પષ્ટ થયેલ નથી." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2294,48 +2246,48 @@ msgstr "કુકી માહિતીને લોડ કરવામાં msgid "Not yet implemented.\n" msgstr "હજુ અમલીકરણ થયેલ નથી.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "PulseAudio ડિમન ચાલી રહ્યુ નથી, અથવા સત્ર ડિમન તરીકે ચાલી રહ્યુ નથી." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio ડિમનને મારવામાં નિષ્ફળ." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "ડિમન એ જવાબ આપતુ નથી." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn તાળાને દાખલ કરી શકાતુ નથી." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2352,7 +2304,7 @@ msgstr "" "POLLOUT સુયોજન સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનું snd_pcm_avail() ને 0 પાછો મળે " "છે અથવા બીજી કિંમત < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2370,127 +2322,22 @@ msgstr "" "છે અથવા બીજી કિંમત < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "બંધ" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "High Fidelity Playback (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "High Fidelity Capture (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telephony Duplex (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio સાઉન્ડ સર્વર" - -#~ msgid "Analog Mono" -#~ msgstr "એનાલોગ મોનો" - -#~ msgid "Analog Stereo" -#~ msgstr "એનાલોગ સ્ટેરિઓ" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "ડિજિટલ સ્ટેરિઓ (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "ડિજિટલ સ્ટેરિઓ (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "એનાલોગ સરાઉન્ડ 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "એનાલોગ સરાઉન્ડ 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "એનાલોગ સરાઉન્ડ 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "એનાલોગ સરાઉન્ડ 4.2" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "એનાલોગ સરાઉન્ડ 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "એનાલોગ સરાઉન્ડ 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "એનાલોગ સરાઉન્ડ 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "આઉટપુટ %s + ઇનપુટ %s" - -#~ msgid "Output %s" -#~ msgstr "આઉટપુટ %s" - -#~ msgid "Input %s" -#~ msgstr "ઇનપુટ %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "સ્ટ્રીમ સફળતાપૂર્વક બનાવેલ છે\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "સ્ટ્રીમ ભૂલ: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "જોડાણ સ્થાપિત થયેલ છે.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help આ મદદને બતાવો\n" -#~ " --version આવૃત્તિને બતાવો\n" -#~ "\n" -#~ " -v, --verbose વર્બોસ ક્રિયાને સક્રિય કરો\n" -#~ "\n" -#~ " -s, --server=SERVER જોડાવા માટે સર્વરનું નામ\n" -#~ " -d, --device=DEVICE જોડાવા માટે સિંકનું નામ\n" -#~ " -n, --client-name=NAME સર્વર પર આ ક્લાઇન્ટને કેવી રીતે કોલ " -#~ "કરશો\n" -#~ " --stream-name=NAME સર્વર પર આ સ્ટ્રીમને કેવી રીતે કોલ " -#~ "કરશો\n" -#~ " --volume=VOLUME સીમા 0...65536 માં પ્રારંભનાં (એક " -#~ "સરખા) વોલ્યુમને સ્પષ્ટ કરો\n" -#~ " --channel-map=CHANNELMAP વાપરવા માટે ચેનલ મેપને સુયોજિત કરો\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "libpulse %s સાથે કમ્પાઇલ થયેલ છે\n" -#~ "libpulse %s સાથે કડી થયેલ છે\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "અયોગ્ય ચેનલ મેપ\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "ફાઇલ '%s' ખોલવામાં નિષ્ફળ\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "ચેનલ મેપ ફાઇલ સાથે બંધબેસતુ નથી.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "નમૂના spec '%s' ને વાપરી રહ્યા છે\n" diff --git a/po/hi.po b/po/hi.po index 91a271201..f60ae70cf 100644 --- a/po/hi.po +++ b/po/hi.po @@ -1,14 +1,14 @@ -# translation of pulseaudio.master-tx.pulseaudio.po to Hindi +# translation of pulseaudio.master-tx.po to Hindi # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Rajesh Ranjan , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" +"Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-06-08 12:01+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 17:01+0530\n" "Last-Translator: Rajesh Ranjan \n" "Language-Team: Hindi \n" "MIME-Version: 1.0\n" @@ -19,8 +19,15 @@ msgstr "" "\n" "\n" "\n" +"\n" +"\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -32,7 +39,7 @@ msgstr "" "अधिक संभव है कि यह ALSA ड्राइवर '%s' में एक बग है. इस मुद्दे को ALSA डेवलेपर को रिपोर्ट " "करें." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -44,7 +51,7 @@ msgstr "" "अधिक संभव है कि यह ALSA ड्राइवर '%s' में एक बग है. इस मुद्दे को ALSA डेवलेपर को रिपोर्ट " "करें." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -57,9 +64,17 @@ msgstr "" "अधिक संभव है कि यह ALSA ड्राइवर '%s' में एक बग है. इस मुद्दे को ALSA डेवलेपर को रिपोर्ट " "करें." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "हमेशा कम से मक एक सिंक को लोडेड रखें हालांकि यह एक रिक्त है" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "डमी आउटपुट" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "वर्चुअल LADSPA सिंक" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -69,12 +84,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "क्लॉक्ड रिक्त सिंक" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "रिक्त आउटपुट" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "आंतरिक ऑडियो" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "मॉडेम" @@ -90,366 +118,247 @@ msgstr "नया dl लोडर आबंटित करने में व msgid "Failed to add bind-now-loader." msgstr "bind-now-loader जोड़ने में विफल." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "तंत्र बस से कनेक्ट नहीं हो सकता है: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID से कॉलर पाने में विफल: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "UID को कॉलर वस्तु पर सेट नहीं कर सकता है." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK सत्र पाने में विफल." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "UID को सत्र वस्तु पर सेट नहीं कर सकता है." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction आबंटित नहीं कर सकता है." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id सेट नहीं कर सकता है" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext आबंटित नहीं कर सकता है." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext आरंभ नहीं कर सकता है.: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "निर्धारित नहीं कर सकता है कि क्या कॉलर अधिकृत है: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "अधिकार प्राप्त नहीं कर सकता है: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit ने '%s' के साथ अनुक्रिया किया" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "%s संकेत पाया." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "बाहर हो रहा है." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "'%s' उपयोक्ता ढूंढ़ने में विफल." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "'%s' समूह ढूंढ़ने में विफल." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "'%s' (UID %lu) उपयोक्ता व '%s' (GID %lu) समूह पाया." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "'%s' उपयोक्ता और '%s' समूह का GID मेल नहीं खाता है" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "'%s' उपयोक्ता की घर निर्देशिका '%s' नहीं है, अनदेखा कर रहा है." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' बनाने में विफल: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "समूह सूची पाने में विफल: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID बदलने में विफल: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID बदलने में विफल: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "रूट अधिकार सफलतापूर्वक छोड़ा." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "इस प्लैटफॉर्म पर असमर्थित तंत्र व्यापक विधि." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) विफल: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "कमांड लाइन विश्लेषण में विफल." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "हम '%s' समूह में हैं, उच्च प्राथमिकता नियोजन की अनुमति के साथ." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "हम '%s' समूह में हैं, वास्तविक समय नियोजन को अनुमति देते हुए." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit उच्च प्राथमिकता अधिकार अधिग्रहण हमें देती है." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit उच्च प्राथमिकता अधिकार अधिग्रहण अस्वीकृत करती है." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit हमें देती है वास्तविक समय अधिकार अधिग्रहण." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit स्वीकृत करती है वास्तविक समय अधिकार अधिग्रहण." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID रूट को आह्वान किया और वास्तविक समय/या उच्च प्राथमिकता नियोजन को इस विन्यास में " -"निवेदन किया गया था. हालांकि, हमें जरूरी अधिकार कम है:\n" -"हम '%s' समूह में नहीं है, PolicyKit निवेदित अधिकार हमें देने से मना करता है और हम " -"RLIMIT_NICE/RLIMIT_RTPRIO संसाधन सीमा को बढ़ाना नहीं है.\n" -"वास्तविक समय/या उच्च प्राथमिकता नियोजन को सक्रिय करने के लिए कृपया उचित PolicyKit " -"अधिकार अधिग्रहित करें, या '%s' का सदस्य बनें, RLIMIT_NICE/RLIMIT_RTPRIO संसाधन सीमा " -"को इस उपयोक्ता के लिए बढ़ाएँ." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"विन्यास में उच्च प्राथमिकता नियोजन सक्रिय है लेकिन नीति के द्वारा अनुमति प्राप्त नहीं है." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "सफलतापूर्वक बढ़ा हुआ RLIMIT_RTPRIO" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO विफल: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE छोड़ रहा है" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "विन्यास में वास्तविक समय नियोजन लेकिन नीति के द्वारा अनुमति प्राप्त नहीं." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "डेमॉन नहीं कार्यशील" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "डेमॉन बतौर PID %u चल रहा है" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "डेमॉन हटाने में विफल: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "" "यह प्रोग्राम बतौर रूट चलाने के लिए इच्छित नहीं है (unless --system is specified)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "रूट अधिकार जरूरी." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start not supported for system instances." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "तंत्र मोड में चल रहा है, लेकिन --disallow-exit सेट नहीं!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "तंत्र मोड में चल रहा है, लेकिन --disallow-module-loading सेट नहीं!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "तंत्र मोड में चल रहा है, SHM मोड बाध्य रूप से निष्क्रिय!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "तंत्र मोड में चल रहा है, निकास निष्क्रिय समय बाध्य रूप से निष्क्रिय!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio पाने में विफल." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "पाइप विफल: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() विफल: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() विफल: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "डेमॉन आरंभ विफल." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "डेमॉन आरंभ सफल." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "यह पल्सऑडियो %s है." -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Compilation host: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Compilation CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "मेजबान पर चल रहा है: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPU पाया." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "पृष्ठ आकार %lu बाइट है." -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "वेलग्रिंड समर्थन से कंपाइल: हाँ" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "वेलग्रिंड समर्थन से कंपाइल: नहीं" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "वेलग्रिंड विधि में चल रहा है: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "अनुकूलित बिल्ड: हाँ" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "अनुकूलित बिल्ड: नहीं" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG परिभाषित, सभी निष्क्रिय." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH परिभाषित, केव तेज पथ एसर्ट निष्क्रिय." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "सभी एसर्ट सक्षम." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "मशीन ID पाने में विफल" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "मशीन ID %s है." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "मशीन ID %s है." +msgstr "सत्र ID %s है." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "रनटाइम निर्देशिका %s का प्रयोग कर रहा है." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "स्टेट निर्देशिका %s का प्रयोग कर रहा है." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "मॉड्यूल निर्देशिका %s का प्रयोग कर रहा है." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "तंत्र मोड में चल रहा है: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -458,43 +367,47 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"तो आप PA तंत्र मोड में चला रहे हैं. कृपया नोट करें कि आपको ऐसा नहीं करना चाहिए.\n" +"यदि आप इसे करते हैं तो यह आपकी गलती है यदि कुछ अप्रत्याशित होता है.\n" +"कृपया http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode को पढ़ें जानने के लिए " +"कि क्यों तंत्र मोड एक बढ़िया विचार नहीं है." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() विफल." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "ताज़ा उच्च विभेदन टाइमर उपलब्ध! आनंद लें!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "" "आपका कर्नेल बुरी स्थिति में है! सलाह है कि उच्च विभेदन युक्त लिनक्स सक्रिय किया जाना चाहिए!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() विफल." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "डेमॉन आरंभ करने में विफल." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "बिना लोड मॉड्यूल के डेमॉन आरंभ, काम करने से अस्वीकार कर रहा है." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "डेमॉन आरंभन पूर्ण." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "डेमॉन बन्द किया जाना आरंभ." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "डेमॉन अवरोधित." @@ -744,79 +657,79 @@ msgstr "एक बार लोड करें: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "अवमूल्यन चेतावनी: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "पथ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] अवैध लॉग स्तर '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] अवैध पुनः नमूना विधि '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] अवैध rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit इस प्लेटफॉर्म पर समर्थित नहीं." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] अवैध प्रतिदर्श प्रारूप '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] अवैध प्रतिदर्श दर '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] अवैध प्रतिदर्श चैनल '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] अवैध चैनल मानचित्र '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] टुकड़े '%s' की अवैध संख्या." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] अवैध खंड आकार '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] अवैध नाइस स्तर '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "विन्यास फ़ाइल खोलने में विफल: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -824,18 +737,14 @@ msgstr "" "निर्दिष्ट तयशुदा चैनल मानचित्र के पास चैनल की भिन्न संख्या है चैनल की तयशुदा निर्दिष्ट संख्या " "के बनिस्पत." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### विन्यास फ़ाइल से पढ़ें: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "रूट अधिकार छोड़ रहा है." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "CAP_SYS_NICE में सीमित क्षमता सफलतापूर्वक." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "अधिकार छोड़ रहा है." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -845,25 +754,7 @@ msgstr "पल्सऑडियो ध्वनि तंत्र" msgid "Start the PulseAudio Sound System" msgstr "पल्सऑडियो ध्वनि तंत्र प्रारंभ करें" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "उच्च प्राथमिकता अनुसूचन (negative Unix nice level) PulseAudio डेमॉन के लिए" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "पल्सऑडियो डेमॉन के लिए वास्तविक समय नियोजन" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "तंत्र नीति PulseAudio को रोकती है उच्च प्राथमिकता अनुसूचन के लिए." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "तंत्र नीति PulseAudio को वास्तविक समय अनुसूचन पाने से रोकती है." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "मोनो" @@ -1067,33 +958,33 @@ msgstr "ऊपर पश्च बायाँ" msgid "Top Rear Right" msgstr "ऊपर पश्च दायाँ" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(अवैध)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "स्टीरियो" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "सर्राउंड 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "सर्राउंड 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "सर्राउंड 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "सर्राउंड 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "सर्राउंड 7.1" @@ -1197,27 +1088,35 @@ msgstr "अनुपस्थित कार्यान्वयन" msgid "Client forked" msgstr "क्लाएंट विभाजित" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1230,192 +1129,191 @@ msgstr "XOpenDisplay() विफल" msgid "Failed to parse cookie data" msgstr "कुकी आंकड़ा के विश्लेषण में विफल" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "विन्यास फ़ाइल '%s' खोलने में विफल: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "कोई कुकी नहीं लोड किया गया. इसके बिना कनेक्ट करने की कोशिश कर रहा हूँ." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "अज्ञात विस्तार '%s' के लिए संदेश प्राप्त" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Failed to drain stream: %s\n" +msgid "Failed to drain stream: %s" +msgstr "स्ट्रीम से खींचने में विफल: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "प्लेबैक स्ट्रीम खत्म.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "प्लेबैक स्ट्रीम खत्म." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "सर्वर में कनेक्शन ले जा रहा है.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "सर्वर में कनेक्शन ले जा रहा है." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() विफल: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() विफल: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() विफल: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() विफल: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "स्ट्रीम सफलतापूर्वक निर्मित.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() विफल: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() विफल: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "स्ट्रीम सफलतापूर्वक निर्मित." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "बफ़र मेट्रिक्स: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() विफल: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "बफ़र मेट्रिक्स: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "बफ़र मेट्रिक्स: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "नमूना स्पेक '%s' का प्रयोग, चैनल मैप '%s'.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "बफ़र मेट्रिक्स: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "युक्ति %s (%u, %ssuspended) से कनेक्टेड.\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "नमूना स्पेक '%s' का प्रयोग, चैनल मैप '%s'." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "स्ट्रीम त्रुटि: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "युक्ति %s (%u, %ssuspended) से कनेक्टेड." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "स्ट्रीम युक्ति स्थगित.%s \n" +msgid "Stream error: %s" +msgstr "स्ट्रीम त्रुटि: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "स्ट्रीम युक्ति पुनर्बहाल.%s \n" +msgid "Stream device suspended.%s" +msgstr "स्ट्रीम युक्ति स्थगित.%s " -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "स्ट्रीम अंडररन.%s \n" +msgid "Stream device resumed.%s" +msgstr "स्ट्रीम युक्ति पुनर्बहाल.%s " -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "स्ट्रीम ओवररन.%s \n" +msgid "Stream underrun.%s" +msgstr "स्ट्रीम अंडररन.%s " -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "स्ट्रीम आरंभ.%s \n" +msgid "Stream overrun.%s" +msgstr "स्ट्रीम ओवररन.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "स्ट्रीम युक्ति %s (%u, %ssuspended).%s में खिसकाया गया \n" +msgid "Stream started.%s" +msgstr "स्ट्रीम आरंभ.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "स्ट्रीम युक्ति %s (%u, %ssuspended).%s में खिसकाया गया" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "नहीं " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "स्ट्रीम बफ़र गुण परिवर्तित.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "स्ट्रीम बफ़र गुण परिवर्तित.%s " -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "कनेक्शन स्थापित.%s \n" +msgid "Connection established.%s" +msgstr "कनेक्शन स्थापित.%s " -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() विफल: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() विफल: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() विफल: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() विफल: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() विफल: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() विफल: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "कनेक्शन विफल.%s \n" +msgid "Connection failure: %s" +msgstr "कनेक्शन विफल.%s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF पाया.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF पाया." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() विफल: %s\n" +msgid "write() failed: %s" +msgstr "write() विफल: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "संकेत पाया, निकल रहा है." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() विफल: %s\n" +msgid "Failed to get latency: %s" +msgstr "लेटेंसी पाने में विफल: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "संकेत पाया, निकल रहा है.\n" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "Failed to get latency: %s\n" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "समय: %0.3f सेकेंड; लैटेंसी: %0.0f usec." -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "समय: %0.3f sec; लैटेंसी: %0.0f usec. \r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() विफल: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() विफल: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1497,8 +1395,10 @@ msgstr "" "44100)\n" " --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" " --channels=CHANNELS The number of channels, 1 for mono, " "2 for stereo\n" " (defaults to 2)\n" @@ -1521,6 +1421,11 @@ msgstr "" "bytes.\n" " --process-time=BYTES Request the specified process time " "per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1533,136 +1438,127 @@ msgstr "" "लिबपल्स %s के साथ कंपाइल\n" "लिबपल्स %s के साथ लिंक\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "अवैध चैनल मानचित्र '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "अवैध पुनः प्रतिदर्श विधि '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "अवैध चैनल मानचित्र '%s'\n" +msgid "Invalid client name '%s'" +msgstr "अवैध क्लाइंट नाम '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "अवैध लैटेंसी विनिर्दिष्टता '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "अवैध स्ट्रीम नाम '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "अवैध प्रक्रिया समय विनिर्दिष्टता '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "अवैध चैनल मानचित्र '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "अवैध पुनः प्रतिदर्श विधि '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "अवैध लैटेंसी विनिर्दिष्टता '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "अवैध प्रक्रिया समय विनिर्दिष्टता '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "अवैध गुण '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "अज्ञात फ़ाइल प्रारूप %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "अवैध नमूना विनिर्दिष्टता\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "अवैध नमूना विनिर्दिष्टता" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "कई वितर्क.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "कई वितर्क." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "नमूना सूचना पाने में विफल: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "फ़ाइल के लिए नमूना विनिर्दिष्टता पाने में विफल." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "ध्वनि फ़ाइल खोलने में विफल.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ध्वनि फ़ाइल खोलने में विफल." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "चेतावनी: निर्दिष्ट नमूना विनिर्दिष्टता को फ़ाइल की विनिर्दिष्टता से लिखा जाएगा." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "नमूना सूचना पाने में विफल: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "फ़ाइल से नमूना विनिर्दिष्टता निर्धारित करने में विफल." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "चेतावनी: फ़ाइल से चैनल मैप पाने में विफल." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "चैनल मानचित्र नमूना विनिर्दिष्टता के मेल नहीं खाता\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "चैनल मैप नमूना विनिर्दिष्टता से मेल नहीं खाता है" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "चेतावनी: फ़ाइल में चैनल मैप लिखने में विफल." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "किसी %s स्ट्रीम को किसी नमूना विनिर्दिष्ता '%s' और चैनल मैप '%s' से खोल रहा है." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "%s स्ट्रीम को किसी नमूना विनिर्दिष्टता '%s' के साथ खोल रहा है.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "रिकार्डिंग" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "प्लेबैक" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() विफल." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() विफल." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() विफल." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() विफल.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() विफल.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() विफल.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() विफल: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() विफल.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() विफल." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() विफल.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() विफल." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1689,7 +1585,12 @@ msgstr "पुनर्बहाली में विफल: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "चेतावनी: ध्वनि सर्वर स्थानीय नहीं है, स्थगित नहीं कर रहा है.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "कनेक्शन विफल.%s \n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT पाया, निकल रहा है.\n" @@ -1729,32 +1630,47 @@ msgstr "" "लिबपल्स %s से कंपाइल\n" "लिबपल्स %s से कड़ीबद्ध\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "आंकड़े पाने में विफल: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() विफल.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() विफल.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() विफल.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "आंकड़े पाने में विफल: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "प्रयोग में मुद्रा: %u ब्लॉक %s बाइट कुल समाहित करता है.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "संपूर्ण जीवनचक्र के दौरान आबंटित: %u ब्लॉक %s बाइट कुल को समाहित करता है.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "नमूना कैश आकार: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "सर्वर सूचना पाने में विफल: %s\n" +msgid "Failed to get server information: %s" +msgstr "सर्वर सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1777,12 +1693,12 @@ msgstr "" "तयशुदा स्रोत: %s\n" "कुकी: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "सिंक सूचना पाने में विफल: %s\n" +msgid "Failed to get sink information: %s" +msgstr "सिंक सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1821,22 +1737,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format msgid "\tPorts:\n" -msgstr "\tProfiles:\n" +msgstr "\tPorts:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tActive Profile: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "स्रोत सूचना पाने में विफल: %s\n" +msgid "\tActive Port: %s\n" +msgstr "\tActive Port: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "स्रोत सूचना पाने में विफल: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1875,20 +1791,20 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "मॉड्यूल सूचना पाने में विफल: %s\n" +msgid "Failed to get module information: %s" +msgstr "मॉड्यूल सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1905,12 +1821,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "क्लाइंट सूचना पाने में विफल: %s\n" +msgid "Failed to get client information: %s" +msgstr "क्लाइंट सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1925,12 +1841,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "कार्ड सूचना पाने में विफल: %s\n" +msgid "Failed to get card information: %s" +msgstr "कार्ड सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1947,22 +1863,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfiles:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tActive Profile: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "सिंक इनपुट सूचना पाने में विफल: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "सिंक इनपुट सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1999,12 +1915,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "स्रोत आउटपुट सूचना पाने में विफल: %s\n" +msgid "Failed to get source output information: %s" +msgstr "स्रोत आउटपुट सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2033,12 +1949,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "नमूना सूचना पाने में विफल: %s\n" +msgid "Failed to get sample information: %s" +msgstr "नमूना सूचना पाने में विफल: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2069,22 +1985,26 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "विफलता: %s\n" +msgid "Failure: %s" +msgstr "विफलता: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "नमूना अफलोड करने में विफल: %s\n" +msgid "Failed to upload sample: %s" +msgstr "नमूना अफलोड करने में विफल: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "फ़ाइल का असामयिक अंत\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "फ़ाइल का असामयिक अंत" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT पाया, निकल रहा है." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2092,15 +2012,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2116,13 +2042,21 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2132,7 +2066,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2143,81 +2077,109 @@ msgstr "" "लिबपल्स %s से कंपाइल\n" "लिबपल्स %s से कड़ीबद्ध\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "लोड करने के लिए किसी नमूना फ़ाइल निर्दिष्ट करें\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "ध्वनि फ़ाइल खोलने में विफल.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "%s स्ट्रीम को किसी नमूना विनिर्दिष्टता '%s' के साथ खोल रहा है.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "आपने किसी नमूना नाम को बजाने के लिए निर्दिष्ट किया है\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "आपने किसी नमूना नाम को हटाने के लिए निर्दिष्ट किया है\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "आपने किसी सिंक इनपुट सूची और सिंक को निर्दिष्ट किया है\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "लोड करने के लिए किसी नमूना फ़ाइल निर्दिष्ट करें" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "आपने किसी सिंक स्रोत आउटपुट और स्रोत को निर्दिष्ट किया है\n" +msgid "Failed to open sound file." +msgstr "ध्वनि फ़ाइल खोलने में विफल." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "आपने किसी मॉड्यूल नाम और वितर्क को निर्दिष्ट किया है\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "%s स्ट्रीम को किसी नमूना विनिर्दिष्टता '%s' के साथ खोल रहा है." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "आपने किसी मॉड्यूल सूची को निर्दिष्ट किया है\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "आपको किसी नमूना नाम को बजाने के लिए निर्दिष्ट करना है" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "आपको किसी नमूना नाम को हटाने के लिए निर्दिष्ट करना है" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "आपको किसी सिंक इनपुट सूची और सिंक को निर्दिष्ट करना है" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "आपको किसी सिंक स्रोत आउटपुट और स्रोत को निर्दिष्ट करना है" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "आपको किसी मॉड्यूल नाम और वितर्क को निर्दिष्ट करना है" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "आपको किसी मॉड्यूल सूची को निर्दिष्ट करना है" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"आप एक सिंक से अधिक निर्दिष्ट नहीं कर सकते हैं. आपको किसी बुलियन मान को निर्दिष्ट करना " -"है.\n" +"आप एक सिंक से अधिक निर्दिष्ट नहीं कर सकते हैं. आपको किसी बुलियन मान को निर्दिष्ट करना है." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "आप एक स्रोत से अधिक निर्दिष्ट नहीं कर सकते हैं. आपको किसी बुलियन मान को निर्दिष्ट करना " -"है.\n" +"है." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "आपको किसी कार्ड नाम/सूची और प्रोफ़ाइल नाम को निर्दिष्ट करना है.\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "आपको किसी कार्ड नाम/सूची और प्रोफ़ाइल नाम को निर्दिष्ट करना है." -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "आपको किसी कार्ड नाम/सूची और प्रोफ़ाइल नाम को निर्दिष्ट करना है.\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "आपको किसी कार्ड नाम/सूची और पोर्ट नाम को निर्दिष्ट करना है." -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "आपको किसी कार्ड नाम/सूची और प्रोफ़ाइल नाम को निर्दिष्ट करना है.\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "आपको किसी स्रोत नाम/सूची और पोर्ट नाम को निर्दिष्ट करना है." -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "कोई वैध कमांड निर्दिष्ट नहीं.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "आपको किसी सिंक नाम/सूची और वाल्यूम को निर्दिष्ट करना है." -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() विफल: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "अवैध आयतन विनिर्दिष्टता" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "आपको किसी स्रोत नाम/सूची और आयतन को निर्दिष्ट करना है." + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "आपने किसी सिंक इनपुट सूची और आयतन को निर्दिष्ट किया है" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "अवैध सिंक इनपुट सूची" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "आपको किसी कार्ड नाम/सूची और मूक बुलियन नाम को निर्दिष्ट करना है." + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "आपको किसी स्रोत नाम/सूची और मूल बुलियन को निर्दिष्ट करना है." + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "आपने किसी सिंक इनपुट सूची और मूल बुलियन को निर्दिष्ट किया है" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "अवैध सिंक इनपुट सूची विनिर्दिष्टता" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "कोई वैध कमांड निर्दिष्ट नहीं." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2298,48 +2260,48 @@ msgstr "कुकी आंकड़ा लोड करने में वि msgid "Not yet implemented.\n" msgstr "अभी तक कार्यान्वित नहीं.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "कोई पल्सऑडियो डेमॉन चल रहा है, या चयन डेमॉन के तहत चल रहा है." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio डेमॉन को मारने में विफल." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "डेमॉन प्रतिक्रिया नहीं दे रहा है." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn लॉक की पहुँच नहीं ले सकता है." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2356,7 +2318,7 @@ msgstr "" "हमें POLLOUT सेट के साथ तैयार किया गया है -- हालांकि परवर्ती snd_pcm_avail() ने 0 या " "दूसरा मान < min_avail दिया." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2374,129 +2336,22 @@ msgstr "" "दूसरा मान < min_avail दिया." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "बंद" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "उच्च विश्वसनीयतायुक्ति प्लेबैक (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "उच्च विश्वसनीयता कैप्चर (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "टेलिफोनी ड्यूप्लेक्स (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "पल्सऑडियो ध्वनि सर्वर" - -#~ msgid "Analog Mono" -#~ msgstr "एनालॉग मोनो" - -#~ msgid "Analog Stereo" -#~ msgstr "एनालॉग स्टीरियो" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "डिजिटल स्टीरियो (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "डिजिटल स्टीरियो (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "एनालॉग सर्राउंड 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "डिजिटल सर्राउंड 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "एनालॉग सर्राउंड 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "एनालॉग सर्राउंड 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "एनालॉग सर्राउंड 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "डिजिटल सर्राउंड 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "एनालॉग सर्राउंड 7.1" - -#~ msgid "Stream successfully created\n" -#~ msgstr "स्ट्रीम सफलतापूर्वक बनाया गया\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "स्ट्रीम त्रुटि: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "कनेक्शन स्थापित.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "लिबपल्स %s से कंपाइल\n" -#~ "लिबपल्स %s से कड़ीबद्ध\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "अवैध चैनल मानचित्र\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "फ़ाइल '%s' खोलने में विफल\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "चैनल मानचित्र फ़ाइल से मेल नहीं खाता है.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "नमूना स्पेक '%s' का प्रयोग कर रहा है\n" - -#~ msgid "Output %s + Input %s" -#~ msgstr "आउटपुट %s + इनपुट %s" - -#~ msgid "Output %s" -#~ msgstr "आउटपुट %s" - -#~ msgid "Input %s" -#~ msgstr "इनपुट %s" diff --git a/po/it.po b/po/it.po index 3ecca4e49..0edc5d8ed 100644 --- a/po/it.po +++ b/po/it.po @@ -3,23 +3,27 @@ # This file is distributed under the same license as the pulseaudio package. # # Luca Ferretti , 2008, 2009. -# Milo Casagrande , 2009. # mario_santagiuliana , 2009. +# Milo Casagrande , 2009. msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-20 22:34+0200\n" -"Last-Translator: mario_santagiuliana \n" -"Language-Team: Italian \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-08-26 21:46+0200\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 0.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -28,10 +32,10 @@ msgid "" "to the ALSA developers." msgstr "" "snd_pcm_avail() ha restituito un valore molto grande: %lu byte (%lu ms).\n" -"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare " +"Molto probabilmente si tratta di un bug nel driver ALSA \"%s\". Segnalare " "questo problema agli sviluppatori ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -40,10 +44,10 @@ msgid "" "to the ALSA developers." msgstr "" "snd_pcm_delay() ha restituito un valore molto grande: %li byte (%s%lu ms).\n" -"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare " +"Molto probabilmente si tratta di un bug nel driver ALSA \"%s\". Segnalare " "questo problema agli sviluppatori ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -53,12 +57,20 @@ msgid "" msgstr "" "snd_pcm_mmap_begin() ha restituito un valore molto grande: %lu byte (%lu " "ms).\n" -"Molto probabilmente si tratta di un bug nel driver ALSA «%s». Segnalare " +"Molto probabilmente si tratta di un bug nel driver ALSA \"%s\". Segnalare " "questo problema agli sviluppatori ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Sink LADSPA virtuale" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -68,12 +80,26 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= master= format= rate= channels= channel_map= " +"plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Output %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Audio interno" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -89,222 +115,93 @@ msgstr "Allocazione del nuovo loader dl non riuscita." msgid "Failed to add bind-now-loader." msgstr "Aggiunta di bind-now-loader non riuscita." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Impossibile effettuare la connessione al bus di sistema: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Impossibile ottenere il chiamante dal PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Impossibile impostare l'UID sull'oggetto chiamante." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Recupero della sessione CK non riuscito." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Impossibile impostare l'UID sull'oggetto sessione." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Impossibile allocare PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Impossibile impostare action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Impossibile allocare PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Impossibile inizializzare PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Impossibile determinare se il chiamante è autorizzato: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Impossibile ottenere l'autorizzazione: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit ha risposto con \"%s\"" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Ottenuto il segnale %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Uscita." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Ricerca dell'utente \"%s\" non riuscita." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Ricerca del gruppo \"%s\" non riuscita." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Trovato l'utente \"%s\" (UID %lu) e il gruppo \"%s\" (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "Il GID dell'utente \"%s\" e del gruppo \"%s\" non corrispondono." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "La directory home dell'utente \"%s\" non è \"%s\", ignorato." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Creazione di \"%s\" non riuscita: %s" # group list ???? -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Cambio dell'elenco di gruppo non riuscito: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Cambio di GID non riuscito: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Cambio di UID non riuscito: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Privilegi di root abbandonati con successo." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." -msgstr "Modalità \"system wide\" non supportata su questa piattaforma." +msgstr "Modalità di sistema non supportata su questa piattaforma." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Analisi della riga di comando non riuscita." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "Privilegi acquire-high-priority assegnati da PolicyKit." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "Privilegi acquire-real-time assegnati da PolicyKit." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "Privilegi acquire-real-time rifiutati da PolicyKit." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Lo SUID root e lo scheduling real-time o high-priority erano richiesti nella " -"configurazione, ma mancano i privilegi necessari:\n" -"non si è nel gruppo «%s», PolicyKit non consente di acquisire i privilegi " -"richiesti e non è possibile incrementare i limiti RLIMIT_NICE/RLIMIT_RTPRIO " -"della risorsa.\n" -"Per abilitare lo scheduling real-time/high-priority, acquisire i privilegi " -"PolicyKit appropriati, diventare un membro di «%s» oppure incrementare i " -"limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo utente." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Scheduling high-priority abilitato nella configurazione, ma non ammesso " -"dalla politica." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Incremento di RLIMIT_RTPRIO riuscito" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO non riuscito: %s" - -# abbandono?? -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Abbandono del CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Scheduling real-time abilitato nella configurazione, ma non ammesso dalla " -"politica." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Demone non in esecuzione" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Demone in esecuzione con PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Terminazione del demone non riuscita: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -312,158 +209,163 @@ msgstr "" "Questo programma non è pensato per essere eseguito come root (a meno di " "specificare --system)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Richiesti privilegi di root." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start non supportato per le istanze di sistema." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "In esecuzione in modalità sistema, ma --disallow-exit non impostato." -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "In esecuzione in modalità sistema, ma --disallow-module-loading non " "impostato." -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" "In esecuzione in modalità sistema, disabilitata in modo forzoso la modalità " "SHM." -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "In esecuzione in modalità sistema, disabilitato in modo forzoso il tempo di " "uscita per inattività." -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Acquisizione di STDIO non riuscita." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe non riuscita: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() non riuscita: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() non riuscita: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Avvio del demone non riuscito." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Avvio del demone riuscito." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Questo è PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Host di compilazione: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS di compilazione: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "In esecuzione sull'host: %s" # evviva il rispetto della l10n!!! -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Trovate %u CPU." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "La dimensione di pagina è %lu byte" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Compilato con supporto a Valgrind: sì" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Compilato con supporto a Valgrind: no" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "In esecuzione in modalità valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Build ottimizzata: sì" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Build ottimizzata: no" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definito, tutte le dichiarazioni sono disabilitate." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" "FASTPATH definito, solo le dichiarazioni veloci di path sono disabilitate." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Tutte le dichiarazioni sono abilitate." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Recupero dell'ID della macchina non riuscito" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "L'ID della macchina è %s" -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "L'ID della macchina è %s" +msgstr "L'ID della sessione è %s" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "In uso directory di runtime %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "In uso directory di stato %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "In uso directory dei moduli %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "In esecuzione in modalità sistema: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -472,18 +374,24 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"PulseAudio è in esecuzione in modalità sistema. È sconsigliato eseguire " +"PulseAudio in questa modalità.\n" +"Continuando a usarlo in questo modo molte cose potrebbero non funzionare " +"come atteso.\n" +"Consultare http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per maggiori " +"informazioni sul perché la modalità sistema è una pessima idea." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() non riuscita." # io mi domando e dico..... mah! -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!" # $REPEAT_PREVIOUS_COMMENT_HERE -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -491,27 +399,27 @@ msgstr "" "Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i " "timer high-resolution abilitati!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() non riuscita." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Inizializzazione del demone non riuscita." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Completato l'avvio del demone." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Iniziato l'arresto del demone." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Demone terminato." @@ -591,7 +499,7 @@ msgid "" msgstr "" "%s [OPZIONI]\n" "\n" -"COMMANDI:\n" +"COMANDI:\n" " -h, --help Mostra questo aiuto\n" " --version Mostra la versione\n" " --dump-conf Riversa la configurazione " @@ -655,7 +563,7 @@ msgstr "" " --log-time[=BOOL] Include i marcatempo nei messaggi " "di\n" " registro\n" -" --log-backtrace=FRAMES Include un backtrace nei messaggi " +" --log-backtrace=FRAME Include un backtrace nei messaggi " "di \n" " registro\n" " -p, --dl-search-path=PERCORSO Imposta il percorso di ricerca per " @@ -795,80 +703,80 @@ msgstr "Caricato una sola volta: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "ATTENZIONE, DEPRECATI: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Percorso: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Destinazione di registro \"%s\" non valida." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Livello di registro \"%s\" non valido." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit \"%s\" non valido." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit non supportato su questa piattaforma." # o campionamento?? ma campionamento non è sampling? -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Formato di campionamento \"%s\" non valido." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Frequenza di campionamento '%s' non valida." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Canali di campionamento \"%s\" non validi." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Mappa del canale \"%s\" non valida." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Numero di frammenti \"%s\" non valido." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Livello di nice \"%s\" non valido." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Apertura del file di configurazione non riuscita: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -876,18 +784,14 @@ msgstr "" "La mappa del canale predefinita specificata presenta un numero diverso di " "canali rispetto a quello predefinito specificato." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Lettura dal file di configurazione: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Abbandono dei privilegi di root." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Limitazione delle capacità a CAP_SYS_NICE riuscita." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Abbandono dei privilegi." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -897,31 +801,7 @@ msgstr "Sistema sonoro PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Avvia il sistema sonoro PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Scheduling high-priority (valori negativi di \"nice\") per il demone " -"PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Scheduling realt-time per il demone PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"La politica di sistema previene PulseAudio dall'ottenere lo scheduling high-" -"priority." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"La politica di sistema previene PulseAudio dall'ottenere lo scheduling real-" -"time." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1127,33 +1007,33 @@ msgstr "Superiore posteriore sinistro" msgid "Top Rear Right" msgstr "Superiore posteriore destro" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(non valido)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1257,27 +1137,35 @@ msgstr "Implementazione mancante" msgid "Client forked" msgstr "Fork del client" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s ch %u %u Hz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1290,195 +1178,194 @@ msgstr "XOpenDisplay() non riuscita" msgid "Failed to parse cookie data" msgstr "Analisi dei dati cookie non riuscita" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Apertura del file di configurazione \"%s\" non riuscita: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Nessun cookie caricato. Tentativo di connettersi senza." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\"" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Svuotamento dello stream non riuscito: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Svuotamento dello stream non riuscito: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Stream di riproduzione svuotato.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Stream di riproduzione svuotato." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Svuotamento della connessione sul server.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Svuotamento della connessione sul server." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() non riuscita: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() non riuscita: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() non riuscita: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() non riuscita: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Creazione dello stream riuscita.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() non riuscita: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() non riuscita: %s" + +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Creazione dello stream riuscita." + +#: ../src/utils/pacat.c:310 +#, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() non riuscita: %s" # maxlength, fragsize e gli altri non so se vanno tradotti... -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Metriche del buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Metriche del buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" # maxlength e fragsize non so se vanno tradotti... -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Metriche del buffer: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Metriche del buffer: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "In uso specifica di campionamento \"%s\", mappa di canali \"%s\".\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "In uso specifica di campionamento \"%s\", mappa dei canali \"%s\"." -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Connesso al device %s (%u, %ssospeso).\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Connesso al device %s (%u, %ssospeso)." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream error: %s\n" -msgstr "Errore di stream: %s\n" +msgid "Stream error: %s" +msgstr "Errore di stream: %s" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Device stream sospeso.%s \n" +msgid "Stream device suspended.%s" +msgstr "Device stream sospeso.%s " -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Device stream ripristinato.%s \n" +msgid "Stream device resumed.%s" +msgstr "Device stream ripristinato.%s " -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Underrun dello stream.%s\n" +msgid "Stream underrun.%s" +msgstr "Underrun dello stream.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Overrun dello stream.%s\n" +msgid "Stream overrun.%s" +msgstr "Overrun dello stream.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream started.%s \n" -msgstr "Stream avviato.%s \n" +msgid "Stream started.%s" +msgstr "Stream avviato.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Stream spostato sul device %s (%u, %ssospeso).%s \n" +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Stream spostato sul device %s (%u, %ssospeso).%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "non " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Attributi del buffer di stream cambiati.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Attributi del buffer di stream cambiati.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Connessione stabilita.%s \n" +msgid "Connection established.%s" +msgstr "Connessione stabilita.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() non riuscita: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() non riuscita: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() non riuscita: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() non riuscita: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() non riuscita: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() non riuscita: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Connessione non riuscita: %s\n" +msgid "Connection failure: %s" +msgstr "Connessione non riuscita: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Ricevuto EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Ricevuto EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() non riuscita: %s\n" +msgid "write() failed: %s" +msgstr "write() non riuscita: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Ricevuto il segnale, uscita." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() non riuscita: %s\n" - -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Ricevuto il segnale, uscita.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Recupero della latenza non riuscito: %s\n" +msgid "Failed to get latency: %s" +msgstr "Recupero della latenza non riuscito: %s" # dubbio: tempo o durata?? -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "Tempo: %0.3f sec; Latenza: %0.0f microsec. \\r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Tempo: %0.3f sec; Latenza: %0.0f microsec. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() non riuscita: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() non riuscita: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1568,34 +1455,40 @@ msgstr "" " --channels=CANALI Il numero di canali, 1 per mono, 2 " "per\n" " stereo (2 come predefinito)\n" -" --channel-map=MAP_CANALI La mappa di canali da usare al posto " -"di\n" +" --channel-map=MAP_CANALI La mappa dei canali da usare al " +"posto di\n" " quella predefinita\n" " --fix-format Recupera il formato di " "campionamento\n" " dal sink a cui lo stream sta per " "essere\n" -" connesso.\n" +" connesso\n" " --fix-rate Recupera la frequenza di " "campionamento\n" " dal sink a cui lo stream sta per " "essere\n" -" connesso.\n" +" connesso\n" " --fix-channels Recupera il numero di canali e la " "mappa\n" " dei canali dal sink a cui lo " "stream \n" -" sta per essere connesso.\n" +" sta per essere connesso\n" " --no-remix Non esegue l'upmix o il downmix \n" -" dei canali.\n" +" dei canali\n" " --no-remap Mappa i canali per indice invece " "che \n" -" per nome.\n" +" per nome\n" " --latency=BYTE Richiede la latenza specificata in " -"byte.\n" +"byte\n" " --process-time=BYTE Richiede il tempo di elaborazione " "per\n" -" richiesta specificato in byte.\n" +" richiesta specificato in byte\n" +" --property=PROPRIETÀ=VAL Imposta la proprietà al valore " +"specificato\n" +" --raw Registra/riproduce dati PCM grezzi\n" +" --file-format=FFORMAT Registra/riproduce dati PCM " +"formattati\n" +" --list-file-FORMATI Elenca i formati disponibili.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1608,137 +1501,133 @@ msgstr "" "Compilato con libpulse %s\n" "Link eseguito con libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Mappa di canali \"%s\" non valida\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Metodo di ricampionamento \"%s\" non valido." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Mappa di canali \"%s\" non valida\n" +msgid "Invalid client name '%s'" +msgstr "Nome del client \"%s\" non valido" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Specifica di latenza \"%s\" non valida\n" +msgid "Invalid stream name '%s'" +msgstr "Nome dello stream \"%s\" non valido" + +#: ../src/utils/pacat.c:812 +#, c-format +msgid "Invalid channel map '%s'" +msgstr "Mappa dei canali \"%s\" non valida" + +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Specifica di latenza \"%s\" non valida" # esecuzione??? -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:848 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Specifica di tempo di elaborazione \"%s\" non valida\n" +msgid "Invalid process time specification '%s'" +msgstr "Specifica di tempo di elaborazione \"%s\" non valida" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Metodo di ricampionamento \"%s\" non valido." +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Proprietà \"%s\" non valida" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Formato file %s sconosciuto." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Specifica di campionamento non valida\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Specifica di campionamento non valida" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Troppi argomenti.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Troppi argomenti." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Recupero delle informazioni del campione non riuscito: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Generazione della specifica di campionamento per il file non riuscita." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Apertura del file audio non riuscita.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Apertura del file audio non riuscita." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Attenzione: la specifica di campionamento indicata verrà soprascritta con " +"quella dal file." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Recupero delle informazioni del campione non riuscito: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Determinazione della specifica di campionamento dal file non riuscita." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." msgstr "" +"Attenzione: determinazione della mappa dei canali dal file non riuscita." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "La mappa di canali non corrisponde alla specifica di campionamento\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "La mappa dei canali non corrisponde alla specifica di campionamento" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Attenzione: scrittura della mappa dei canali su file non riuscita." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"Apertura di uno stream %s con specifica di campionamento \"%s\" e mappa dei " +"canali \"%s\"." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "registrazione" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "riproduzione" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() non riuscita." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() non riuscita." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() non riuscita." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() non riuscita.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() non riuscita.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() non riuscita.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() non riuscita: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() non riuscita.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() non riuscita." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() non riuscita.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() non riuscita." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1766,7 +1655,12 @@ msgstr "Ripristino non riuscito: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "ATTENZIONE: server audio non locale, impossibile sospendere.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Connessione non riuscita: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Ricevuto SIGINT, in uscita.\n" @@ -1806,34 +1700,49 @@ msgstr "" "Compilato con libpulse %s\n" "Link eseguito con libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() non riuscita.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() non riuscita.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() non riuscita.\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Recupero delle statistiche non riuscito: %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Attualmente in uso: %u blocchi contenenti %s byte in totale.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "Allocati durante l'intera esecuzione: %u blocchi contenenti %s byte in " "totale.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Dimensione della cache dei campioni: %s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "Recupero delle informazioni del server non riuscito: %s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1856,15 +1765,15 @@ msgstr "" "Sorgente predefinita: %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "Recupero delle informazioni del sink non riuscito: %s\n" # nel relativo messaggio per il source # c'è "monitor of sink", quindi assumo che # qui dovesse essere "monitor of source" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1891,7 +1800,7 @@ msgstr "" "\tDescrizione: %s\n" "\tDriver: %s\n" "\tSpecifica di campionamento: %s\n" -"\tMappa di canali: %s\n" +"\tMappa dei canali: %s\n" "\tModulo di appartenenza: %u\n" "\tMuto: %s\n" "\tVolume: %s%s%s\n" @@ -1903,22 +1812,22 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tProfili:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tProfilo attivo: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" +msgid "\tPorts:\n" +msgstr "\tPorte:\n" + +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tPorta attiva: %s\n" + +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "Recupero delle informazioni della sorgente non riuscito: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1945,7 +1854,7 @@ msgstr "" "\tDescrizione: %s\n" "\tDriver: %s\n" "\tSpecifica di campionamento: %s\n" -"\tMappa di canali: %s\n" +"\tMappa dei canali: %s\n" "\tModulo di appartenenza: %u\n" "\tMuto: %s\n" "\tVolume: %s%s%s\n" @@ -1957,20 +1866,20 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "N/D" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "Recupero delle informazioni del modulo non riuscito: %s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1987,12 +1896,12 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "Recupero delle informazioni del client non riuscito: %s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -2007,12 +1916,12 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" msgstr "Recupero delle informazioni della scheda non riuscito: %s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -2029,12 +1938,12 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfili:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tProfilo attivo: %s\n" @@ -2043,13 +1952,13 @@ msgstr "\tProfilo attivo: %s\n" # A stream that is connected to an output device, i.e. an input for a sink. # # from http://pulseaudio.org/wiki/WritingVolumeControlUIs -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "" "Recupero delle informazioni dell'ingresso per il sink non riuscito: %s\n" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2090,13 +1999,13 @@ msgstr "" # A stream that is connected to an input device, i.e. an output of a source. # # from http://pulseaudio.org/wiki/WritingVolumeControlUIs -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" msgstr "" "Recupero delle informazioni dell'uscita per la sorgente non riuscito: %s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2125,13 +2034,13 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "Recupero delle informazioni del campione non riuscito: %s\n" # campiona lazy?? -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2162,21 +2071,27 @@ msgstr "" "\tProprietà:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Fallimento: %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "Caricamento del campione non riuscito: %s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "Fine del file prematura\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "Ricevuto SIGINT, in uscita.\n" + +#: ../src/utils/pactl.c:869 #, fuzzy, c-format msgid "" "%s [options] stat\n" @@ -2185,15 +2100,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2203,19 +2124,21 @@ msgid "" " -n, --client-name=NAME How to call this client on the " "server\n" msgstr "" -"%s [OPZIONE...] stat\n" -"%s [OPZIONE...] list\n" -"%s [OPZIONE...] exit\n" -"%s [OPZIONE...] upload-sample NOMEFILE [NOME]\n" -"%s [OPZIONE...] play-sample NOME [SINK]\n" -"%s [OPZIONE...] remove-sample NOME\n" -"%s [OPZIONE...] move-sink-input ID SINK\n" -"%s [OPZIONE...] move-source-output ID SORGENTE\n" -"%s [OPZIONE...] load-module NOME [ARGOMENTO...]\n" -"%s [OPZIONE...] unload-module ID\n" -"%s [OPZIONE...] suspend-sink [SINK] 1|0\n" -"%s [OPZIONE...] suspend-source [SORGENTE] 1|0\n" -"%s [OPZIONE...] set-card-profile [SCHEDA] [PROFILO] \n" +"%s [OPZIONI] stat\n" +"%s [OPZIONI] list\n" +"%s [OPZIONI] exit\n" +"%s [OPZIONI] upload-sample NOMEFILE [NOME]\n" +"%s [OPZIONI] play-sample NOME [SINK]\n" +"%s [OPZIONI] remove-sample NOME\n" +"%s [OPZIONI] move-sink-input ID SINK\n" +"%s [OPZIONI] move-source-output ID SORGENTE\n" +"%s [OPZIONI] load-module NOME [ARGOMENTI...]\n" +"%s [OPZIONI] unload-module ID\n" +"%s [OPZIONI] suspend-sink [SINK] 1|0\n" +"%s [OPZIONI] suspend-source [SORGENTE] 1|0\n" +"%s [OPZIONI] set-card-profile [SCHEDA] [PROFILO] \n" +"%s [OPZIONI] set-sink-port [SINK] [PORTA] \n" +"%s [OPZIONI] set-source-port [SORGENTE] [PORTA] \n" "\n" " -h, --help Mostra questo aiuto\n" " --version Mostra la versione\n" @@ -2223,7 +2146,7 @@ msgstr "" " -s, --server=SERVER Il nome del server a cui connettersi\n" " -n, --client-name=NOME Come chiamare questo client sul server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2234,85 +2157,141 @@ msgstr "" "Compilato con libpulse %s\n" "Link eseguito con libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "Specificare un file campione da caricare\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "Apertura del file audio non riuscita.\n" -#: ../src/utils/pactl.c:951 +#: ../src/utils/pactl.c:1004 #, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n" +msgid "Warning: Failed to determine sample specification from file." +msgstr "" +"Attenzione: determinazione della specifica di campionamento dal file non " +"riuscita.\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "È necessario specificare un nome di campione da riprodurre\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "È necessario specificare un nome di campione da rimuovere\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "È necessario specificare un ingresso per sink e un sink\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" +msgstr "È necessario specificare un indice di ingresso per sink e un sink\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "È necessario specificare una uscita per sorgente e una sorgente\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" +msgstr "" +"È necessario specificare una indice di uscita per sorgente e una sorgente\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "È necessario specificare un nome di modulo e gli argomenti.\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "È necessario specificare un indice di modulo\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 +#, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "Non è possibile specificare più di un sink. È necessario specificare un " "valore booleano.\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 +#, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "Non è possibile specificare più di una sorgente. È necessario specificare un " "valore booleano.\n" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "" -"È necessario specificare un nome/indice di scheda e un nome di profilo.\n" - -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" +msgid "You have to specify a card name/index and a profile name" msgstr "" "È necessario specificare un nome/indice di scheda e un nome di profilo.\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "" -"È necessario specificare un nome/indice di scheda e un nome di profilo.\n" +msgid "You have to specify a sink name/index and a port name" +msgstr "È necessario specificare un nome/indice di sink e un nome di porta\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1137 +#, fuzzy +msgid "You have to specify a source name/index and a port name" +msgstr "" +"È necessario specificare un nome/indice di sorgente e un nome di porta\n" + +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "È necessario specificare un nome/indice di sink e un nome di porta\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Specifica di campionamento non valida" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "" +"È necessario specificare un nome/indice di sorgente e un nome di porta\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "È necessario specificare un indice di ingresso per sink e un sink\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "È necessario specificare un nome/indice di sink e un nome di porta\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "" +"È necessario specificare un nome/indice di sorgente e un nome di porta\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "È necessario specificare un indice di ingresso per sink e un sink\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Specifica di campionamento non valida" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "Nessun comando valido specificato.\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() non riuscita: %s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2327,9 +2306,9 @@ msgstr "" "%s [-D DISPLAY] [-S SERVER] [-O SINK] [-I SORGENTE] [-c FILE] [-d|-e|-i|-" "r]\n" "\n" -" -d Mostra i dati PulseAudio attuali attaccati al display X11 (predef)\n" +" -d Mostra i dati PulseAudio attuali collegati al display X11 (predef)\n" " -e Esporta i dati PulseAudio locali sul display X11\n" -" -i Importa i dati PulseAudio dal display X11 alle variabili ambientali " +" -i Importa i dati PulseAudio dal display X11 alle variabili d'ambiente " "e\n" " al file cookie locali \n" " -r Rimuove i dati PulseAudio dal display X11\n" @@ -2394,48 +2373,50 @@ msgstr "Caricamento dei dati cookie non riuscito\n" msgid "Not yet implemented.\n" msgstr "Non ancora implementato.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"Nessun demone PulseAudio in esecuzione o non in esecuzione come demone di " +"sessione." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Uccisione del demone PulseAudio non riuscita." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Il demone non sta rispondendo." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Impossibile accedere al lock di autospawn." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2445,14 +2426,14 @@ msgid "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" -"ALSA si è svegliato per scrivere nuovi dati sul dispositivo ma non c'era " -"niente da scrivere!\n" -"Molto probabilmente questo è un bug dei driver ALSA '%s'. Riportare questo " -"problema agli sviluppatori di ALSA.\n" -"Ci si è alzati con impostato POLLOUT -- come sempre un subsequent " -"snd_pcm_avail() ritorna 0 o un altro valore < min_avail." +"Attivazione da parte di ALSA per scrivere nuovi dati sul dispositivo, ma non " +"c'era nulla da scrivere.\n" +"Molto probabilmente si tratta di un bug nei driver ALSA \"%s\". Segnalare " +"questo problema agli sviluppatori di ALSA.\n" +"Attivazione avvenuta con POLLOUT impostato -- tuttavia, una successiva " +"snd_pcm_avail() ha ritornato 0 o un altro valore < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2462,30 +2443,178 @@ msgid "" "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" -"ALSA si è svegliato per leggere nuovi dati dal dispositivo ma non c'era " -"niente da leggere!\n" -"Molto probabilmente questo è un bug dei driver ALSA '%s'. Riportare questo " -"problema agli sviluppatori di ALSA.\n" -"Ci si è alzati con impostato POLLIN -- come sempre un subsequent " -"snd_pcm_avail() ritorna 0 o un altro valore < min_avail." +"Attivazione da parte di ALSA per leggere nuovi dati dal dispositivo, ma non " +"c'era nulla da leggere.\n" +"Molto probabilmente si tratta di un bug nei driver ALSA \"%s\". Segnalare " +"questo problema agli sviluppatori di ALSA.\n" +"Attivazione avvenuta con POLLIN impostato -- tuttavia, una successiva " +"snd_pcm_avail() ha ritornato 0 o un altro valore < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Spento" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" -msgstr "Playback ad alta fidabilità (A2DP)" +msgstr "Riproduzione ad alta fedeltà (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Cattura ad alta fedeltà (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" -msgstr "Doppino Telefonico (HSP/HFP)" +msgstr "Doppino telefonico (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "Server sonoro PulseAudio" +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Nome del client \"%s\" non valido\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "" +#~ "Determinazione della specifica di campionamento dal file non riuscita.\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Impossibile effettuare la connessione al bus di sistema: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Impossibile ottenere il chiamante dal PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Impossibile impostare l'UID sull'oggetto chiamante." + +#~ msgid "Failed to get CK session." +#~ msgstr "Recupero della sessione CK non riuscito." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Impossibile impostare l'UID sull'oggetto sessione." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Impossibile allocare PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "Impossibile impostare action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Impossibile allocare PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Impossibile inizializzare PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Impossibile determinare se il chiamante è autorizzato: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Impossibile ottenere l'autorizzazione: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit ha risposto con \"%s\"" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Scheduling high-priority (valori negativi di \"nice\") per il demone " +#~ "PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Scheduling realt-time per il demone PulseAudio" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "La politica di sistema previene PulseAudio dall'ottenere lo scheduling " +#~ "high-priority." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "La politica di sistema previene PulseAudio dall'ottenere lo scheduling " +#~ "real-time." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() non riuscita: %s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect() non riuscita: %s" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Attualmente nel gruppo \"%s\", che consente scheduling high-priority." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "Privilegi acquire-high-priority assegnati da PolicyKit." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "Privilegi acquire-real-time assegnati da PolicyKit." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "Privilegi acquire-real-time rifiutati da PolicyKit." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "Lo SUID root e lo scheduling real-time o high-priority erano richiesti " +#~ "nella configurazione, ma mancano i privilegi necessari:\n" +#~ "non si è nel gruppo «%s», PolicyKit non consente di acquisire i privilegi " +#~ "richiesti e non è possibile incrementare i limiti RLIMIT_NICE/" +#~ "RLIMIT_RTPRIO della risorsa.\n" +#~ "Per abilitare lo scheduling real-time/high-priority, acquisire i " +#~ "privilegi PolicyKit appropriati, diventare un membro di «%s» oppure " +#~ "incrementare i limiti RLIMIT_NICE/RLIMIT_RTPRIO della risorsa per questo " +#~ "utente." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "Scheduling high-priority abilitato nella configurazione, ma non ammesso " +#~ "dalla politica." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "Incremento di RLIMIT_RTPRIO riuscito" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO non riuscito: %s" + +# abbandono?? +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Abbandono del CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "Scheduling real-time abilitato nella configurazione, ma non ammesso dalla " +#~ "politica." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Limitazione delle capacità a CAP_SYS_NICE riuscita." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() non riuscita.\n" + #~ msgid "Analog Mono" #~ msgstr "Mono analogico" @@ -2522,9 +2651,6 @@ msgstr "Server sonoro PulseAudio" #~ msgid "Output %s + Input %s" #~ msgstr "Output %s + Input %s" -#~ msgid "Output %s" -#~ msgstr "Output %s" - #~ msgid "Input %s" #~ msgstr "Input %s" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 000000000..c166f4763 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,2033 @@ +# PulseAudio +# Copyright (C) 2009. +# This file is distributed under the same license as the PACKAGE package. +# Hyu_gabaru Ryu_ichi , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 21:05+0900\n" +"Last-Translator: Hyu_gabaru Ryu_ichi \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 +#, c-format +msgid "" +"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " +"ms).\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers." +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1147 +#, c-format +msgid "" +"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" +"lu ms).\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers." +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1194 +#, c-format +msgid "" +"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " +"(%lu ms).\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers." +msgstr "" + +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + +#: ../src/modules/module-ladspa-sink.c:49 +msgid "Virtual LADSPA sink" +msgstr "" + +#: ../src/modules/module-ladspa-sink.c:53 +msgid "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" +msgstr "" + +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 +msgid "Internal Audio" +msgstr "" + +#: ../src/pulsecore/sink.c:2618 +msgid "Modem" +msgstr "" + +#: ../src/daemon/ltdl-bind-now.c:124 +msgid "Failed to find original lt_dlopen loader." +msgstr "" + +#: ../src/daemon/ltdl-bind-now.c:129 +msgid "Failed to allocate new dl loader." +msgstr "" + +#: ../src/daemon/ltdl-bind-now.c:142 +msgid "Failed to add bind-now-loader." +msgstr "" + +#: ../src/daemon/main.c:141 +#, c-format +msgid "Got signal %s." +msgstr "" + +#: ../src/daemon/main.c:168 +msgid "Exiting." +msgstr "" + +#: ../src/daemon/main.c:186 +#, c-format +msgid "Failed to find user '%s'." +msgstr "" + +#: ../src/daemon/main.c:191 +#, c-format +msgid "Failed to find group '%s'." +msgstr "" + +#: ../src/daemon/main.c:195 +#, c-format +msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." +msgstr "" + +#: ../src/daemon/main.c:200 +#, c-format +msgid "GID of user '%s' and of group '%s' don't match." +msgstr "" + +#: ../src/daemon/main.c:205 +#, c-format +msgid "Home directory of user '%s' is not '%s', ignoring." +msgstr "" + +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 +#, c-format +msgid "Failed to create '%s': %s" +msgstr "" + +#: ../src/daemon/main.c:220 +#, c-format +msgid "Failed to change group list: %s" +msgstr "" + +#: ../src/daemon/main.c:236 +#, c-format +msgid "Failed to change GID: %s" +msgstr "" + +#: ../src/daemon/main.c:252 +#, c-format +msgid "Failed to change UID: %s" +msgstr "" + +#: ../src/daemon/main.c:271 +msgid "Successfully dropped root privileges." +msgstr "" + +#: ../src/daemon/main.c:279 +msgid "System wide mode unsupported on this platform." +msgstr "" + +#: ../src/daemon/main.c:297 +#, c-format +msgid "setrlimit(%s, (%u, %u)) failed: %s" +msgstr "" + +#: ../src/daemon/main.c:469 +msgid "Failed to parse command line." +msgstr "" + +#: ../src/daemon/main.c:536 +msgid "Daemon not running" +msgstr "" + +#: ../src/daemon/main.c:538 +#, c-format +msgid "Daemon running as PID %u" +msgstr "" + +#: ../src/daemon/main.c:548 +#, c-format +msgid "Failed to kill daemon: %s" +msgstr "" + +#: ../src/daemon/main.c:566 +msgid "" +"This program is not intended to be run as root (unless --system is " +"specified)." +msgstr "" + +#: ../src/daemon/main.c:568 +msgid "Root privileges required." +msgstr "" + +#: ../src/daemon/main.c:573 +msgid "--start not supported for system instances." +msgstr "" + +#: ../src/daemon/main.c:578 +msgid "Running in system mode, but --disallow-exit not set!" +msgstr "" + +#: ../src/daemon/main.c:581 +msgid "Running in system mode, but --disallow-module-loading not set!" +msgstr "" + +#: ../src/daemon/main.c:584 +msgid "Running in system mode, forcibly disabling SHM mode!" +msgstr "" + +#: ../src/daemon/main.c:589 +msgid "Running in system mode, forcibly disabling exit idle time!" +msgstr "" + +#: ../src/daemon/main.c:616 +msgid "Failed to acquire stdio." +msgstr "" + +#: ../src/daemon/main.c:622 +#, c-format +msgid "pipe failed: %s" +msgstr "" + +#: ../src/daemon/main.c:627 +#, c-format +msgid "fork() failed: %s" +msgstr "" + +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 +#, c-format +msgid "read() failed: %s" +msgstr "" + +#: ../src/daemon/main.c:647 +msgid "Daemon startup failed." +msgstr "" + +#: ../src/daemon/main.c:649 +msgid "Daemon startup successful." +msgstr "" + +#: ../src/daemon/main.c:726 +#, c-format +msgid "This is PulseAudio %s" +msgstr "" + +#: ../src/daemon/main.c:727 +#, c-format +msgid "Compilation host: %s" +msgstr "" + +#: ../src/daemon/main.c:728 +#, c-format +msgid "Compilation CFLAGS: %s" +msgstr "" + +#: ../src/daemon/main.c:731 +#, c-format +msgid "Running on host: %s" +msgstr "" + +#: ../src/daemon/main.c:734 +#, c-format +msgid "Found %u CPUs." +msgstr "" + +#: ../src/daemon/main.c:736 +#, c-format +msgid "Page size is %lu bytes" +msgstr "" + +#: ../src/daemon/main.c:739 +msgid "Compiled with Valgrind support: yes" +msgstr "" + +#: ../src/daemon/main.c:741 +msgid "Compiled with Valgrind support: no" +msgstr "" + +#: ../src/daemon/main.c:744 +#, c-format +msgid "Running in valgrind mode: %s" +msgstr "" + +#: ../src/daemon/main.c:747 +msgid "Optimized build: yes" +msgstr "" + +#: ../src/daemon/main.c:749 +msgid "Optimized build: no" +msgstr "" + +#: ../src/daemon/main.c:753 +msgid "NDEBUG defined, all asserts disabled." +msgstr "" + +#: ../src/daemon/main.c:755 +msgid "FASTPATH defined, only fast path asserts disabled." +msgstr "" + +#: ../src/daemon/main.c:757 +msgid "All asserts enabled." +msgstr "" + +#: ../src/daemon/main.c:761 +msgid "Failed to get machine ID" +msgstr "" + +#: ../src/daemon/main.c:764 +#, c-format +msgid "Machine ID is %s." +msgstr "" + +#: ../src/daemon/main.c:768 +#, c-format +msgid "Session ID is %s." +msgstr "" + +#: ../src/daemon/main.c:774 +#, c-format +msgid "Using runtime directory %s." +msgstr "" + +#: ../src/daemon/main.c:779 +#, c-format +msgid "Using state directory %s." +msgstr "" + +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "" + +#: ../src/daemon/main.c:784 +#, c-format +msgid "Running in system mode: %s" +msgstr "" + +#: ../src/daemon/main.c:787 +msgid "" +"OK, so you are running PA in system mode. Please note that you most likely " +"shouldn't be doing that.\n" +"If you do it nonetheless then it's your own fault if things don't work as " +"expected.\n" +"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " +"explanation why system mode is usually a bad idea." +msgstr "" + +#: ../src/daemon/main.c:804 +msgid "pa_pid_file_create() failed." +msgstr "" + +#: ../src/daemon/main.c:814 +msgid "Fresh high-resolution timers available! Bon appetit!" +msgstr "" + +#: ../src/daemon/main.c:816 +msgid "" +"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" +"resolution timers enabled!" +msgstr "" + +#: ../src/daemon/main.c:839 +msgid "pa_core_new() failed." +msgstr "" + +#: ../src/daemon/main.c:899 +msgid "Failed to initialize daemon." +msgstr "" + +#: ../src/daemon/main.c:904 +msgid "Daemon startup without any loaded modules, refusing to work." +msgstr "" + +#: ../src/daemon/main.c:921 +msgid "Daemon startup complete." +msgstr "" + +#: ../src/daemon/main.c:927 +msgid "Daemon shutdown initiated." +msgstr "" + +#: ../src/daemon/main.c:949 +msgid "Daemon terminated." +msgstr "" + +#: ../src/daemon/cmdline.c:115 +#, c-format +msgid "" +"%s [options]\n" +"\n" +"COMMANDS:\n" +" -h, --help Show this help\n" +" --version Show version\n" +" --dump-conf Dump default configuration\n" +" --dump-modules Dump list of available modules\n" +" --dump-resample-methods Dump available resample methods\n" +" --cleanup-shm Cleanup stale shared memory " +"segments\n" +" --start Start the daemon if it is not " +"running\n" +" -k --kill Kill a running daemon\n" +" --check Check for a running daemon (only " +"returns exit code)\n" +"\n" +"OPTIONS:\n" +" --system[=BOOL] Run as system-wide instance\n" +" -D, --daemonize[=BOOL] Daemonize after startup\n" +" --fail[=BOOL] Quit when startup fails\n" +" --high-priority[=BOOL] Try to set high nice level\n" +" (only available as root, when SUID " +"or\n" +" with elevated RLIMIT_NICE)\n" +" --realtime[=BOOL] Try to enable realtime scheduling\n" +" (only available as root, when SUID " +"or\n" +" with elevated RLIMIT_RTPRIO)\n" +" --disallow-module-loading[=BOOL] Disallow module user requested " +"module\n" +" loading/unloading after startup\n" +" --disallow-exit[=BOOL] Disallow user requested exit\n" +" --exit-idle-time=SECS Terminate the daemon when idle and " +"this\n" +" time passed\n" +" --module-idle-time=SECS Unload autoloaded modules when idle " +"and\n" +" this time passed\n" +" --scache-idle-time=SECS Unload autoloaded samples when idle " +"and\n" +" this time passed\n" +" --log-level[=LEVEL] Increase or set verbosity level\n" +" -v Increase the verbosity level\n" +" --log-target={auto,syslog,stderr} Specify the log target\n" +" --log-meta[=BOOL] Include code location in log " +"messages\n" +" --log-time[=BOOL] Include timestamps in log messages\n" +" --log-backtrace=FRAMES Include a backtrace in log messages\n" +" -p, --dl-search-path=PATH Set the search path for dynamic " +"shared\n" +" objects (plugins)\n" +" --resample-method=METHOD Use the specified resampling method\n" +" (See --dump-resample-methods for\n" +" possible values)\n" +" --use-pid-file[=BOOL] Create a PID file\n" +" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n" +" platforms that support it.\n" +" --disable-shm[=BOOL] Disable shared memory support.\n" +"\n" +"STARTUP SCRIPT:\n" +" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module " +"with\n" +" the specified argument\n" +" -F, --file=FILENAME Run the specified script\n" +" -C Open a command line on the running " +"TTY\n" +" after startup\n" +"\n" +" -n Don't load default script file\n" +msgstr "" + +#: ../src/daemon/cmdline.c:247 +msgid "--daemonize expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:254 +msgid "--fail expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:264 +msgid "" +"--log-level expects log level argument (either numeric in range 0..4 or one " +"of debug, info, notice, warn, error)." +msgstr "" + +#: ../src/daemon/cmdline.c:276 +msgid "--high-priority expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:283 +msgid "--realtime expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:290 +msgid "--disallow-module-loading expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:297 +msgid "--disallow-exit expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:304 +msgid "--use-pid-file expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:321 +msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'." +msgstr "" + +#: ../src/daemon/cmdline.c:328 +msgid "--log-time expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:335 +msgid "--log-meta expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:354 +#, c-format +msgid "Invalid resample method '%s'." +msgstr "" + +#: ../src/daemon/cmdline.c:361 +msgid "--system expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:368 +msgid "--no-cpu-limit expects boolean argument" +msgstr "" + +#: ../src/daemon/cmdline.c:375 +msgid "--disable-shm expects boolean argument" +msgstr "" + +#: ../src/daemon/dumpmodules.c:60 +#, c-format +msgid "Name: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:63 +#, c-format +msgid "No module information available\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:66 +#, c-format +msgid "Version: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:68 +#, c-format +msgid "Description: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:70 +#, c-format +msgid "Author: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:72 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:73 +#, c-format +msgid "Load Once: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:75 +#, c-format +msgid "DEPRECATION WARNING: %s\n" +msgstr "" + +#: ../src/daemon/dumpmodules.c:79 +#, c-format +msgid "Path: %s\n" +msgstr "" + +#: ../src/daemon/daemon-conf.c:232 +#, c-format +msgid "[%s:%u] Invalid log target '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:248 +#, c-format +msgid "[%s:%u] Invalid log level '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:264 +#, c-format +msgid "[%s:%u] Invalid resample method '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:287 +#, c-format +msgid "[%s:%u] Invalid rlimit '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:294 +#, c-format +msgid "[%s:%u] rlimit not supported on this platform." +msgstr "" + +#: ../src/daemon/daemon-conf.c:310 +#, c-format +msgid "[%s:%u] Invalid sample format '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:328 +#, c-format +msgid "[%s:%u] Invalid sample rate '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:352 +#, c-format +msgid "[%s:%u] Invalid sample channels '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:370 +#, c-format +msgid "[%s:%u] Invalid channel map '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:388 +#, c-format +msgid "[%s:%u] Invalid number of fragments '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:406 +#, c-format +msgid "[%s:%u] Invalid fragment size '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:424 +#, c-format +msgid "[%s:%u] Invalid nice level '%s'." +msgstr "" + +#: ../src/daemon/daemon-conf.c:546 +#, c-format +msgid "Failed to open configuration file: %s" +msgstr "" + +#: ../src/daemon/daemon-conf.c:562 +msgid "" +"The specified default channel map has a different number of channels than " +"the specified default number of channels." +msgstr "" + +#: ../src/daemon/daemon-conf.c:638 +#, c-format +msgid "### Read from configuration file: %s ###\n" +msgstr "" + +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "" + +#: ../src/daemon/pulseaudio.desktop.in.h:1 +msgid "PulseAudio Sound System" +msgstr "" + +#: ../src/daemon/pulseaudio.desktop.in.h:2 +msgid "Start the PulseAudio Sound System" +msgstr "" + +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 +msgid "Mono" +msgstr "" + +#: ../src/pulse/channelmap.c:107 +msgid "Front Center" +msgstr "" + +#: ../src/pulse/channelmap.c:108 +msgid "Front Left" +msgstr "" + +#: ../src/pulse/channelmap.c:109 +msgid "Front Right" +msgstr "" + +#: ../src/pulse/channelmap.c:111 +msgid "Rear Center" +msgstr "" + +#: ../src/pulse/channelmap.c:112 +msgid "Rear Left" +msgstr "" + +#: ../src/pulse/channelmap.c:113 +msgid "Rear Right" +msgstr "" + +#: ../src/pulse/channelmap.c:115 +msgid "Low Frequency Emmiter" +msgstr "" + +#: ../src/pulse/channelmap.c:117 +msgid "Front Left-of-center" +msgstr "" + +#: ../src/pulse/channelmap.c:118 +msgid "Front Right-of-center" +msgstr "" + +#: ../src/pulse/channelmap.c:120 +msgid "Side Left" +msgstr "" + +#: ../src/pulse/channelmap.c:121 +msgid "Side Right" +msgstr "" + +#: ../src/pulse/channelmap.c:123 +msgid "Auxiliary 0" +msgstr "" + +#: ../src/pulse/channelmap.c:124 +msgid "Auxiliary 1" +msgstr "" + +#: ../src/pulse/channelmap.c:125 +msgid "Auxiliary 2" +msgstr "" + +#: ../src/pulse/channelmap.c:126 +msgid "Auxiliary 3" +msgstr "" + +#: ../src/pulse/channelmap.c:127 +msgid "Auxiliary 4" +msgstr "" + +#: ../src/pulse/channelmap.c:128 +msgid "Auxiliary 5" +msgstr "" + +#: ../src/pulse/channelmap.c:129 +msgid "Auxiliary 6" +msgstr "" + +#: ../src/pulse/channelmap.c:130 +msgid "Auxiliary 7" +msgstr "" + +#: ../src/pulse/channelmap.c:131 +msgid "Auxiliary 8" +msgstr "" + +#: ../src/pulse/channelmap.c:132 +msgid "Auxiliary 9" +msgstr "" + +#: ../src/pulse/channelmap.c:133 +msgid "Auxiliary 10" +msgstr "" + +#: ../src/pulse/channelmap.c:134 +msgid "Auxiliary 11" +msgstr "" + +#: ../src/pulse/channelmap.c:135 +msgid "Auxiliary 12" +msgstr "" + +#: ../src/pulse/channelmap.c:136 +msgid "Auxiliary 13" +msgstr "" + +#: ../src/pulse/channelmap.c:137 +msgid "Auxiliary 14" +msgstr "" + +#: ../src/pulse/channelmap.c:138 +msgid "Auxiliary 15" +msgstr "" + +#: ../src/pulse/channelmap.c:139 +msgid "Auxiliary 16" +msgstr "" + +#: ../src/pulse/channelmap.c:140 +msgid "Auxiliary 17" +msgstr "" + +#: ../src/pulse/channelmap.c:141 +msgid "Auxiliary 18" +msgstr "" + +#: ../src/pulse/channelmap.c:142 +msgid "Auxiliary 19" +msgstr "" + +#: ../src/pulse/channelmap.c:143 +msgid "Auxiliary 20" +msgstr "" + +#: ../src/pulse/channelmap.c:144 +msgid "Auxiliary 21" +msgstr "" + +#: ../src/pulse/channelmap.c:145 +msgid "Auxiliary 22" +msgstr "" + +#: ../src/pulse/channelmap.c:146 +msgid "Auxiliary 23" +msgstr "" + +#: ../src/pulse/channelmap.c:147 +msgid "Auxiliary 24" +msgstr "" + +#: ../src/pulse/channelmap.c:148 +msgid "Auxiliary 25" +msgstr "" + +#: ../src/pulse/channelmap.c:149 +msgid "Auxiliary 26" +msgstr "" + +#: ../src/pulse/channelmap.c:150 +msgid "Auxiliary 27" +msgstr "" + +#: ../src/pulse/channelmap.c:151 +msgid "Auxiliary 28" +msgstr "" + +#: ../src/pulse/channelmap.c:152 +msgid "Auxiliary 29" +msgstr "" + +#: ../src/pulse/channelmap.c:153 +msgid "Auxiliary 30" +msgstr "" + +#: ../src/pulse/channelmap.c:154 +msgid "Auxiliary 31" +msgstr "" + +#: ../src/pulse/channelmap.c:156 +msgid "Top Center" +msgstr "" + +#: ../src/pulse/channelmap.c:158 +msgid "Top Front Center" +msgstr "" + +#: ../src/pulse/channelmap.c:159 +msgid "Top Front Left" +msgstr "" + +#: ../src/pulse/channelmap.c:160 +msgid "Top Front Right" +msgstr "" + +#: ../src/pulse/channelmap.c:162 +msgid "Top Rear Center" +msgstr "" + +#: ../src/pulse/channelmap.c:163 +msgid "Top Rear Left" +msgstr "" + +#: ../src/pulse/channelmap.c:164 +msgid "Top Rear Right" +msgstr "" + +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 +msgid "(invalid)" +msgstr "" + +#: ../src/pulse/channelmap.c:761 +msgid "Stereo" +msgstr "" + +#: ../src/pulse/channelmap.c:766 +msgid "Surround 4.0" +msgstr "" + +#: ../src/pulse/channelmap.c:772 +msgid "Surround 4.1" +msgstr "" + +#: ../src/pulse/channelmap.c:778 +msgid "Surround 5.0" +msgstr "" + +#: ../src/pulse/channelmap.c:784 +msgid "Surround 5.1" +msgstr "" + +#: ../src/pulse/channelmap.c:791 +msgid "Surround 7.1" +msgstr "" + +#: ../src/pulse/error.c:43 +msgid "OK" +msgstr "" + +#: ../src/pulse/error.c:44 +msgid "Access denied" +msgstr "" + +#: ../src/pulse/error.c:45 +msgid "Unknown command" +msgstr "" + +#: ../src/pulse/error.c:46 +msgid "Invalid argument" +msgstr "" + +#: ../src/pulse/error.c:47 +msgid "Entity exists" +msgstr "" + +#: ../src/pulse/error.c:48 +msgid "No such entity" +msgstr "" + +#: ../src/pulse/error.c:49 +msgid "Connection refused" +msgstr "" + +#: ../src/pulse/error.c:50 +msgid "Protocol error" +msgstr "" + +#: ../src/pulse/error.c:51 +msgid "Timeout" +msgstr "" + +#: ../src/pulse/error.c:52 +msgid "No authorization key" +msgstr "" + +#: ../src/pulse/error.c:53 +msgid "Internal error" +msgstr "" + +#: ../src/pulse/error.c:54 +msgid "Connection terminated" +msgstr "" + +#: ../src/pulse/error.c:55 +msgid "Entity killed" +msgstr "" + +#: ../src/pulse/error.c:56 +msgid "Invalid server" +msgstr "" + +#: ../src/pulse/error.c:57 +msgid "Module initalization failed" +msgstr "" + +#: ../src/pulse/error.c:58 +msgid "Bad state" +msgstr "" + +#: ../src/pulse/error.c:59 +msgid "No data" +msgstr "" + +#: ../src/pulse/error.c:60 +msgid "Incompatible protocol version" +msgstr "" + +#: ../src/pulse/error.c:61 +msgid "Too large" +msgstr "" + +#: ../src/pulse/error.c:62 +msgid "Not supported" +msgstr "" + +#: ../src/pulse/error.c:63 +msgid "Unknown error code" +msgstr "" + +#: ../src/pulse/error.c:64 +msgid "No such extension" +msgstr "" + +#: ../src/pulse/error.c:65 +msgid "Obsolete functionality" +msgstr "" + +#: ../src/pulse/error.c:66 +msgid "Missing implementation" +msgstr "" + +#: ../src/pulse/error.c:67 +msgid "Client forked" +msgstr "" + +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 +#, c-format +msgid "%s %uch %uHz" +msgstr "" + +#: ../src/pulse/sample.c:184 +#, c-format +msgid "%0.1f GiB" +msgstr "" + +#: ../src/pulse/sample.c:186 +#, c-format +msgid "%0.1f MiB" +msgstr "" + +#: ../src/pulse/sample.c:188 +#, c-format +msgid "%0.1f KiB" +msgstr "" + +#: ../src/pulse/sample.c:190 +#, c-format +msgid "%u B" +msgstr "" + +#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100 +msgid "XOpenDisplay() failed" +msgstr "" + +#: ../src/pulse/client-conf-x11.c:93 +msgid "Failed to parse cookie data" +msgstr "" + +#: ../src/pulse/client-conf.c:111 +#, c-format +msgid "Failed to open configuration file '%s': %s" +msgstr "" + +#: ../src/pulse/context.c:550 +msgid "No cookie loaded. Attempting to connect without." +msgstr "" + +#: ../src/pulse/context.c:693 +#, c-format +msgid "fork(): %s" +msgstr "" + +#: ../src/pulse/context.c:748 +#, c-format +msgid "waitpid(): %s" +msgstr "" + +#: ../src/pulse/context.c:1435 +#, c-format +msgid "Received message for unknown extension '%s'" +msgstr "" + +#: ../src/utils/pacat.c:108 +#, c-format +msgid "Failed to drain stream: %s" +msgstr "" + +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "" + +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "" + +#: ../src/utils/pacat.c:136 +#, c-format +msgid "pa_stream_drain(): %s" +msgstr "" + +#: ../src/utils/pacat.c:159 +#, c-format +msgid "pa_stream_write() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:197 +#, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, c-format +msgid "pa_stream_peek() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "" + +#: ../src/utils/pacat.c:310 +#, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:314 +#, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "" + +#: ../src/utils/pacat.c:317 +#, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "" + +#: ../src/utils/pacat.c:321 +#, c-format +msgid "Using sample spec '%s', channel map '%s'." +msgstr "" + +#: ../src/utils/pacat.c:325 +#, c-format +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "" + +#: ../src/utils/pacat.c:335 +#, c-format +msgid "Stream error: %s" +msgstr "" + +#: ../src/utils/pacat.c:345 +#, c-format +msgid "Stream device suspended.%s" +msgstr "" + +#: ../src/utils/pacat.c:347 +#, c-format +msgid "Stream device resumed.%s" +msgstr "" + +#: ../src/utils/pacat.c:355 +#, c-format +msgid "Stream underrun.%s" +msgstr "" + +#: ../src/utils/pacat.c:362 +#, c-format +msgid "Stream overrun.%s" +msgstr "" + +#: ../src/utils/pacat.c:369 +#, c-format +msgid "Stream started.%s" +msgstr "" + +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "" + +#: ../src/utils/pacat.c:376 +msgid "not " +msgstr "" + +#: ../src/utils/pacat.c:383 +#, c-format +msgid "Stream buffer attributes changed.%s" +msgstr "" + +#: ../src/utils/pacat.c:415 +#, c-format +msgid "Connection established.%s" +msgstr "" + +#: ../src/utils/pacat.c:418 +#, c-format +msgid "pa_stream_new() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:446 +#, c-format +msgid "pa_stream_connect_playback() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:452 +#, c-format +msgid "pa_stream_connect_record() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, c-format +msgid "Connection failure: %s" +msgstr "" + +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "" + +#: ../src/utils/pacat.c:536 +#, c-format +msgid "write() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "" + +#: ../src/utils/pacat.c:571 +#, c-format +msgid "Failed to get latency: %s" +msgstr "" + +#: ../src/utils/pacat.c:576 +#, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "" + +#: ../src/utils/pacat.c:595 +#, c-format +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:605 +#, c-format +msgid "" +"%s [options]\n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +"\n" +" -r, --record Create a connection for recording\n" +" -p, --playback Create a connection for playback\n" +"\n" +" -v, --verbose Enable verbose operations\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -d, --device=DEVICE The name of the sink/source to " +"connect to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" +" --stream-name=NAME How to call this stream on the " +"server\n" +" --volume=VOLUME Specify the initial (linear) volume " +"in range 0...65536\n" +" --rate=SAMPLERATE The sample rate in Hz (defaults to " +"44100)\n" +" --format=SAMPLEFORMAT The sample type, one of s16le, " +"s16be, u8, float32le,\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" +" --channels=CHANNELS The number of channels, 1 for mono, " +"2 for stereo\n" +" (defaults to 2)\n" +" --channel-map=CHANNELMAP Channel map to use instead of the " +"default\n" +" --fix-format Take the sample format from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-rate Take the sampling rate from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-channels Take the number of channels and the " +"channel map\n" +" from the sink the stream is being " +"connected to.\n" +" --no-remix Don't upmix or downmix channels.\n" +" --no-remap Map channels by index instead of " +"name.\n" +" --latency=BYTES Request the specified latency in " +"bytes.\n" +" --process-time=BYTES Request the specified process time " +"per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" +msgstr "" + +#: ../src/utils/pacat.c:727 +#, c-format +msgid "" +"pacat %s\n" +"Compiled with libpulse %s\n" +"Linked with libpulse %s\n" +msgstr "" + +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 +#, c-format +msgid "Invalid client name '%s'" +msgstr "" + +#: ../src/utils/pacat.c:775 +#, c-format +msgid "Invalid stream name '%s'" +msgstr "" + +#: ../src/utils/pacat.c:812 +#, c-format +msgid "Invalid channel map '%s'" +msgstr "" + +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "" + +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "" + +#: ../src/utils/pacat.c:877 +#, c-format +msgid "Unknown file format %s." +msgstr "" + +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "" + +#: ../src/utils/pacat.c:906 +#, c-format +msgid "open(): %s" +msgstr "" + +#: ../src/utils/pacat.c:911 +#, c-format +msgid "dup2(): %s" +msgstr "" + +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "" + +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "" + +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "" + +#: ../src/utils/pacat.c:955 +msgid "" +"Warning: specified sample specification will be overwritten with " +"specification from file." +msgstr "" + +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "" + +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "" + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "" + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "" + +#: ../src/utils/pacat.c:1005 +msgid "recording" +msgstr "" + +#: ../src/utils/pacat.c:1005 +msgid "playback" +msgstr "" + +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" +msgstr "" + +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "" + +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "" + +#: ../src/utils/pasuspender.c:81 +#, c-format +msgid "fork(): %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:92 +#, c-format +msgid "execvp(): %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:109 +#, c-format +msgid "Failure to suspend: %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:124 +#, c-format +msgid "Failure to resume: %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:147 +#, c-format +msgid "WARNING: Sound server is not local, not suspending.\n" +msgstr "" + +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:176 +#, c-format +msgid "Got SIGINT, exiting.\n" +msgstr "" + +#: ../src/utils/pasuspender.c:194 +#, c-format +msgid "WARNING: Child process terminated by signal %u\n" +msgstr "" + +#: ../src/utils/pasuspender.c:212 +#, c-format +msgid "" +"%s [options] ... \n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +"\n" +msgstr "" + +#: ../src/utils/pasuspender.c:248 +#, c-format +msgid "" +"pasuspender %s\n" +"Compiled with libpulse %s\n" +"Linked with libpulse %s\n" +msgstr "" + +#: ../src/utils/pasuspender.c:277 +#, c-format +msgid "pa_mainloop_new() failed.\n" +msgstr "" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "" + +#: ../src/utils/pactl.c:141 +#, c-format +msgid "Currently in use: %u blocks containing %s bytes total.\n" +msgstr "" + +#: ../src/utils/pactl.c:144 +#, c-format +msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" +msgstr "" + +#: ../src/utils/pactl.c:147 +#, c-format +msgid "Sample cache size: %s\n" +msgstr "" + +#: ../src/utils/pactl.c:156 +#, c-format +msgid "Failed to get server information: %s" +msgstr "" + +#: ../src/utils/pactl.c:164 +#, c-format +msgid "" +"User name: %s\n" +"Host Name: %s\n" +"Server Name: %s\n" +"Server Version: %s\n" +"Default Sample Specification: %s\n" +"Default Channel Map: %s\n" +"Default Sink: %s\n" +"Default Source: %s\n" +"Cookie: %08x\n" +msgstr "" + +#: ../src/utils/pactl.c:205 +#, c-format +msgid "Failed to get sink information: %s" +msgstr "" + +#: ../src/utils/pactl.c:221 +#, c-format +msgid "" +"Sink #%u\n" +"\tState: %s\n" +"\tName: %s\n" +"\tDescription: %s\n" +"\tDriver: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tOwner Module: %u\n" +"\tMute: %s\n" +"\tVolume: %s%s%s\n" +"\t balance %0.2f\n" +"\tBase Volume: %s%s%s\n" +"\tMonitor Source: %s\n" +"\tLatency: %0.0f usec, configured %0.0f usec\n" +"\tFlags: %s%s%s%s%s%s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format +msgid "\tPorts:\n" +msgstr "" + +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "" + +#: ../src/utils/pactl.c:313 +#, c-format +msgid "" +"Source #%u\n" +"\tState: %s\n" +"\tName: %s\n" +"\tDescription: %s\n" +"\tDriver: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tOwner Module: %u\n" +"\tMute: %s\n" +"\tVolume: %s%s%s\n" +"\t balance %0.2f\n" +"\tBase Volume: %s%s%s\n" +"\tMonitor of Sink: %s\n" +"\tLatency: %0.0f usec, configured %0.0f usec\n" +"\tFlags: %s%s%s%s%s%s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 +msgid "n/a" +msgstr "" + +#: ../src/utils/pactl.c:375 +#, c-format +msgid "Failed to get module information: %s" +msgstr "" + +#: ../src/utils/pactl.c:393 +#, c-format +msgid "" +"Module #%u\n" +"\tName: %s\n" +"\tArgument: %s\n" +"\tUsage counter: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:412 +#, c-format +msgid "Failed to get client information: %s" +msgstr "" + +#: ../src/utils/pactl.c:430 +#, c-format +msgid "" +"Client #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:447 +#, c-format +msgid "Failed to get card information: %s" +msgstr "" + +#: ../src/utils/pactl.c:465 +#, c-format +msgid "" +"Card #%u\n" +"\tName: %s\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:479 +#, c-format +msgid "\tProfiles:\n" +msgstr "" + +#: ../src/utils/pactl.c:485 +#, c-format +msgid "\tActive Profile: %s\n" +msgstr "" + +#: ../src/utils/pactl.c:496 +#, c-format +msgid "Failed to get sink input information: %s" +msgstr "" + +#: ../src/utils/pactl.c:515 +#, c-format +msgid "" +"Sink Input #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tClient: %s\n" +"\tSink: %u\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tMute: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balance %0.2f\n" +"\tBuffer Latency: %0.0f usec\n" +"\tSink Latency: %0.0f usec\n" +"\tResample method: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:554 +#, c-format +msgid "Failed to get source output information: %s" +msgstr "" + +#: ../src/utils/pactl.c:574 +#, c-format +msgid "" +"Source Output #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tClient: %s\n" +"\tSource: %u\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tBuffer Latency: %0.0f usec\n" +"\tSource Latency: %0.0f usec\n" +"\tResample method: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:605 +#, c-format +msgid "Failed to get sample information: %s" +msgstr "" + +#: ../src/utils/pactl.c:623 +#, c-format +msgid "" +"Sample #%u\n" +"\tName: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balance %0.2f\n" +"\tDuration: %0.1fs\n" +"\tSize: %s\n" +"\tLazy: %s\n" +"\tFilename: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" + +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, c-format +msgid "Failure: %s" +msgstr "" + +#: ../src/utils/pactl.c:687 +#, c-format +msgid "Failed to upload sample: %s" +msgstr "" + +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "" + +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "" + +#: ../src/utils/pactl.c:869 +#, c-format +msgid "" +"%s [options] stat\n" +"%s [options] list\n" +"%s [options] exit\n" +"%s [options] upload-sample FILENAME [NAME]\n" +"%s [options] play-sample NAME [SINK]\n" +"%s [options] remove-sample NAME\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" +"%s [options] load-module NAME [ARGS ...]\n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" +msgstr "" + +#: ../src/utils/pactl.c:933 +#, c-format +msgid "" +"pactl %s\n" +"Compiled with libpulse %s\n" +"Linked with libpulse %s\n" +msgstr "" + +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "" + +#: ../src/utils/pactl.c:992 +msgid "Failed to open sound file." +msgstr "" + +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "" + +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "" + +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "" + +#: ../src/utils/pactl.c:1090 +msgid "" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "" + +#: ../src/utils/pactl.c:1103 +msgid "" +"You may not specify more than one source. You have to specify a boolean " +"value." +msgstr "" + +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "" + +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "" + +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "" + +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "" + +#: ../src/utils/pax11publish.c:61 +#, c-format +msgid "" +"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n" +"\n" +" -d Show current PulseAudio data attached to X11 display (default)\n" +" -e Export local PulseAudio data to X11 display\n" +" -i Import PulseAudio data from X11 display to local environment " +"variables and cookie file.\n" +" -r Remove PulseAudio data from X11 display\n" +msgstr "" + +#: ../src/utils/pax11publish.c:94 +#, c-format +msgid "Failed to parse command line.\n" +msgstr "" + +#: ../src/utils/pax11publish.c:108 +#, c-format +msgid "Server: %s\n" +msgstr "" + +#: ../src/utils/pax11publish.c:110 +#, c-format +msgid "Source: %s\n" +msgstr "" + +#: ../src/utils/pax11publish.c:112 +#, c-format +msgid "Sink: %s\n" +msgstr "" + +#: ../src/utils/pax11publish.c:114 +#, c-format +msgid "Cookie: %s\n" +msgstr "" + +#: ../src/utils/pax11publish.c:132 +#, c-format +msgid "Failed to parse cookie data\n" +msgstr "" + +#: ../src/utils/pax11publish.c:137 +#, c-format +msgid "Failed to save cookie data\n" +msgstr "" + +#: ../src/utils/pax11publish.c:152 +#, c-format +msgid "Failed to load client configuration file.\n" +msgstr "" + +#: ../src/utils/pax11publish.c:157 +#, c-format +msgid "Failed to read environment configuration data.\n" +msgstr "" + +#: ../src/utils/pax11publish.c:174 +#, c-format +msgid "Failed to get FQDN.\n" +msgstr "" + +#: ../src/utils/pax11publish.c:194 +#, c-format +msgid "Failed to load cookie data\n" +msgstr "" + +#: ../src/utils/pax11publish.c:211 +#, c-format +msgid "Not yet implemented.\n" +msgstr "" + +#: ../src/utils/pacmd.c:69 +msgid "No PulseAudio daemon running, or not running as session daemon." +msgstr "" + +#: ../src/utils/pacmd.c:74 +#, c-format +msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" +msgstr "" + +#: ../src/utils/pacmd.c:91 +#, c-format +msgid "connect(): %s" +msgstr "connect(): %s" + +#: ../src/utils/pacmd.c:99 +msgid "Failed to kill PulseAudio daemon." +msgstr "" + +#: ../src/utils/pacmd.c:107 +msgid "Daemon not responding." +msgstr "" + +#: ../src/utils/pacmd.c:161 +#, c-format +msgid "poll(): %s" +msgstr "poll(): %s" + +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 +#, c-format +msgid "read(): %s" +msgstr "read(): %s" + +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 +#, c-format +msgid "write(): %s" +msgstr "write(): %s" + +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 +msgid "Cannot access autospawn lock." +msgstr "" + +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 +#, c-format +msgid "" +"ALSA woke us up to write new data to the device, but there was actually " +"nothing to write!\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers.\n" +"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " +"returned 0 or another value < min_avail." +msgstr "" + +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 +#, c-format +msgid "" +"ALSA woke us up to read new data from the device, but there was actually " +"nothing to read!\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers.\n" +"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " +"returned 0 or another value < min_avail." +msgstr "" + +#: ../src/modules/alsa/module-alsa-card.c:152 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 +msgid "Off" +msgstr "オフ" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 +msgid "High Fidelity Playback (A2DP)" +msgstr "" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 +msgid "Telephony Duplex (HSP/HFP)" +msgstr "" + +#: ../src/modules/reserve-wrap.c:151 +msgid "PulseAudio Sound Server" +msgstr "" diff --git a/po/kn.po b/po/kn.po index b66365041..1977041a7 100644 --- a/po/kn.po +++ b/po/kn.po @@ -1,14 +1,14 @@ -# translation of pulseaudio.master-tx.pulseaudio.po to Kannada +# translation of pulseaudio.master-tx.kn.po to Kannada # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Shankar Prasad , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" +"Project-Id-Version: pulseaudio.master-tx.kn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-07 11:13+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-08 13:49+0530\n" "Last-Translator: Shankar Prasad \n" "Language-Team: Kannada \n" "MIME-Version: 1.0\n" @@ -17,7 +17,12 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -29,7 +34,7 @@ msgstr "" "ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA " "ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -41,7 +46,7 @@ msgstr "" "ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA " "ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -53,9 +58,17 @@ msgstr "" "ಇದಕ್ಕೆ ALSA ಚಾಲಕ '%s' ದಲ್ಲಿನ ಒಂದು ದೋಷದ ಕಾರಣವಿರಬಹುದು. ದಯವಿಟ್ಟುಈ ತೊಂದರೆಯನ್ನು ALSA " "ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "ವರ್ಚುವಲ್ LADSPA ಸಿಂಕ್" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -65,14 +78,27 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name=<ಸಿಂಕ್‌ನ ಹೆಸರು> sink_properties=<ಸಿಂಕ್‌ನ ಗುಣಗಳು> master=<ಫಿಲ್ಟರ್ " +"ಮಾಡಬೇಕಿರುವ ಸಿಂಕ್‌ನ ಹೆಸರು> format=<ನಮೂನೆ ವಿನ್ಯಾಸ> rate=<ನಮೂನೆ ದರ> " +"channels=<ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆ> channel_map=<ಚಾನಲ್ ನಕ್ಷೆ> plugin= " +"label= control=<ವಿರಾಮ ಚಿಹ್ನೆಗಳನ್ನು ಹೊಂದಿರುವ ಇನ್‌ಪುಟ್ ನಿಯಂತ್ರಣ " +"ಮೌಲ್ಯಗಳ ಪಟ್ಟಿ>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "ಆಂತರಿಕ ಆಡಿಯೊ" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" -msgstr "ಮಾಡೆಮ್:" +msgstr "ಮಾಡೆಮ್" #: ../src/daemon/ltdl-bind-now.c:124 msgid "Failed to find original lt_dlopen loader." @@ -86,220 +112,92 @@ msgstr "ಹೊಸ dl ಲೋಡರ್ ಅನ್ನು ನಿಯೋಜಿಸುವ msgid "Failed to add bind-now-loader." msgstr "bind-now-ಲೋಡರ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿಲ್ಲ." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "ವ್ಯವಸ್ಥೆಯ ಬಸ್‌ಗೆ ಸಂಪರ್ಕಜೋಡಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID ಇಂದ ಕಾಲರ್ ಅನ್ನು ಪಡೆಯಲಾಗಿಲ್ಲ: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "ಕಾಲರ್ ವಸ್ತುವಿನಲ್ಲಿ UID ಅನ್ನು ಅಣಿಗೊಳಿಸಲಾಗಲಿಲ್ಲ." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK ಅಧಿವೇಶನವನ್ನು ಪಡೆಯಲಾಗಲಿಲ್ಲ." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "ಅಧಿವೇಶನದ ವಸ್ತುವಿನಲ್ಲಿ UID ಅನ್ನು ಅಣಿಗೊಳಿಸಲಾಗಲಿಲ್ಲ." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction ಅನ್ನು ನಿಯೋಜಿಸಲಾಗಿಲ್ಲ." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id ಅನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext ಅನ್ನು ನಿಯೋಜಿಸಲಾಗಿಲ್ಲ." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext ಅನ್ನು ಆರಂಭಿಸಲಾಗಿಲ್ಲ: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "ಕಾಲರ್ ಅಧೀಕೃತವಾಗಿದುದೆ ಎಂದು ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "auth ಅನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit '%s' ನೊಂದಿಗೆ ಪ್ರತ್ಯುತ್ತರಿಸಿದೆ" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "%s ನಿಂದ ಸಂಕೇತವು ದೊರೆತಿದೆ." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "ನಿರ್ಗಮಿಸುತ್ತಿದೆ." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "ಬಳಕೆದಾರ '%s' ಅನ್ನು ಪತ್ತೆ ಮಾಡಲು ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "ಗುಂಪು '%s' ಅನ್ನು ಪತ್ತೆ ಮಾಡಲು ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "ಬಳಕೆದಾರ '%s' (UID %lu) ಹಾಗು ಗುಂಪು '%s' (GID %lu) ಕಂಡುಬಂದಿದೆ." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "ಬಳಕೆದಾರ '%s' ರ GID ಹಾಗು ಗುಂಪು '%s' ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "ಬಳಕೆದಾರ '%s' ರ ನೆಲೆ ಕೋಶವು '%s' ಆಗಿಲ್ಲ, ಆಲಕ್ಷಿಸಲಾಗುತ್ತಿದೆ." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' ಅನ್ನು ರಚಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "ಗುಂಪಿನ ಪಟ್ಟಿಯನ್ನು ಬದಲಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID ಅನ್ನು ಬದಲಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID ಅನ್ನು ಬದಲಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "ರೂಟ್ ಸವಲತ್ತುಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬಿಡಲಾಗಿದೆ." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "ವ್ಯವಸ್ಥೆಯಾದ್ಯಂತದ ಕ್ರಮಕ್ಕೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "ಆಜ್ಞಾ ಸಾಲನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"ನಾವು '%s' ಗುಂಪಿನಲ್ಲಿದ್ದೇವೆ, ಹಾಗು ಹೆಚ್ಚು-ಆದ್ಯತೆ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತೇವೆ." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "ನಾವು '%s' ಗುಂಪಿನಲ್ಲಿದ್ದೇವೆ, ಹಾಗು ರಿಯಲ್-ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತೇವೆ." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "ಹೆಚ್ಚು-ಆದ್ಯತೆ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ಅನುಮತಿಸುತ್ತದೆ." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "ಹೆಚ್ಚು-ಆದ್ಯತೆ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ನಿರಾಕರಿಸುತ್ತದೆ." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "ರಿಯಲ್-ಟೈಮ್ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ಅನುಮತಿಸುತ್ತದೆ." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "ರಿಯಲ್-ಟೈಮ್ ಸವಲತ್ತನ್ನು ಪಡೆದುಕೊ ಅನ್ನು PolicyKit ನಿರಾಕರಿಸುತ್ತದೆ." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID ರೂಟ್ ಅನ್ನು ಕರೆಯಲಾಗಿದೆ ಹಾಗು ಸಂರಚನೆಯಲ್ಲಿ ರಿಯಲ್-ಟೈಲ್ ಹಾಗು/ಅಥವ ಹೆಚ್ಚು-ಆದ್ಯತೆ " -"ಶೆಡ್ಯೂಲಿಂಗ್‌ಗೆ ಮನವಿ ಸಲ್ಲಿಸಲಾಗಿದೆ. ಆದರೆ, ಅಗತ್ಯವಿರುವ ಸವಲತ್ತುಗಳು ನಮ್ಮಲ್ಲಿಲ್ಲ:\n" -"ನಾವು '%s' ಗುಂಪಿನಲ್ಲಿಲ್ಲ,ಮನವಿ ಸಲ್ಲಿಸಲಾದ ಸವಲತ್ತುಗಳನ್ನು ಒದಗಿಸಲು PolicyKit " -"ನಿರಾಕರಿಸಿದೆ ಹಾಗು RLIMIT_NICE/RLIMIT_RTPRIO ಸಂಪನ್ಮೂಲದ ಮಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಲು ನಮ್ಮಿಂದ " -"ಸಾಧ್ಯವಿಲ್ಲ.\n" -"ರಿಯಲ್-ಟೈಲ್ ಹಾಗು/ಅಥವ ಹೆಚ್ಚು-ಆದ್ಯತೆ ಶೆಡ್ಯೂಲಿಂಗ್‌ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲು ದಯವಿಟ್ಟು ಸೂಕ್ತವಾದ " -"PolicyKit ಸವಲತ್ತುಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ, ಅಥವ '%s' ನ ಸದಸ್ಯರಾಗಿ, ಅಥವ ಈ ಬಳಕೆದಾರನಿಗಾಗಿ " -"RLIMIT_NICE/RLIMIT_RTPRIO ಸಂಪನ್ಮೂಲ ಮಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಿ." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"ಸಂರಚನೆಯಲ್ಲಿ ಹೆಚ್ಚು-ಆದ್ಯತೆಯ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಪಾಲಿಸಿಯಿಂದ ಅನುಮತಿ " -"ಇಲ್ಲ." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಹೆಚ್ಚಿಸಲಾಗಿದೆ" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO ವಿಫಲಗೊಂಡಿದೆ: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE ಅನ್ನು ಬಿಡಲಾಗುತ್ತಿದೆ" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"ಸಂರಚನೆಯಲ್ಲಿ ರಿಯಲ್-ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ ಆದರೆ ಪಾಲಿಸಿಯಿಂದ ಅನುಮತಿ ಇಲ್ಲ." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "ಡೀಮನ್ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "ಡೀಮನ್ PID %u ಯಾಗಿ ಚಲಾಯಿಗೊಳ್ಳುತ್ತಿದೆ" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "ಡೀಮನ್ ಅನ್ನು ಕೊಲ್ಲಲು ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -307,158 +205,163 @@ msgstr "" "ಈ ಪ್ರೋಗ್ರಾಮನ್ನು ರೂಟ್‌ ಆಗಿ ಚಲಾಯಿಸುವ ಉದ್ಧೇಶವನ್ನು ಹೊಂದಿಲ್ಲ (--system ಅನ್ನು ಸೂಚಿಸದೆ " "ಇದ್ದಲ್ಲಿ ಮಾತ್ರ)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "ನಿರ್ವಾಹಕ ಸವಲತ್ತುಗಳ ಅಗತ್ಯವಿದೆ." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "ವ್ಯವಸ್ಥೆಯ ಸನ್ನಿವೇಶದಿಂದ --start ಬೆಂಬಲಿತವಾಗಿಲ್ಲ." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ, ಆದರೆ --disallow-exit ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ, ಆದರೆ --disallow-module-loading ಅನ್ನು " "ಹೊಂದಿಸಲಾಗಿಲ್ಲ!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದ್ದು, SHM ಕ್ರಮವನ್ನು ಒತ್ತಾಯಪೂರ್ವಕವಾಗಿ " "ಅಶಕ್ತಗೊಳಿಸುತ್ತಿದೆ!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದ್ದು, ನಿರ್ಗಮಿಸುವ ಜಡ ಸಮಯವನ್ನು ಒತ್ತಾಯಪೂರ್ವಕವಾಗಿ " "ಅಶಕ್ತಗೊಳಿಸುತ್ತಿದೆ!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio ಅನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "ಪೈಪ್‌ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "ಡೀಮನ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಆರಂಭಿಸಲಾಗಿದೆ." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "ಇದು PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "ಕಂಪೈಲ್ ಮಾಡುವ ಅತಿಥೇಯ: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "ಕಂಪೈಲ್ ಮಾಡುವ CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "ಅತಿಥೇಯದಲ್ಲಿ ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿದೆ: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUಗಳು ಕಂಡುಬಂದಿವೆ." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "ಪುಟದ ಗಾತ್ರವು %lu ಬೈಟ್‌ಗಳಾಗಿವೆ" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ: ಹೌದು" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind ಬೆಂಬಲದೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ: ಇಲ್ಲ" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "ಪ್ರಶಸ್ತವಾದ ನಿರ್ಮಾಣ: ಹೌದು" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "ಪ್ರಶಸ್ತವಾದ ನಿರ್ಮಾಣ: ಇಲ್ಲ" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG ಅನ್ನು ಸೂಚಿಸಲಾಗಿದೆ, ಎಲ್ಲಾ ಪ್ರತಿಪಾದನೆಗಳನ್ನೂ ಅಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" "FASTPATH ಅನ್ನು ಸೂಚಿಸಲಾಗಿದೆ, ಕೇವಲ ವೇಗ ಮಾರ್ಗದ ಪ್ರತಿಪಾದನೆಗಳನ್ನೂ ಅಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "ಎಲ್ಲಾ ಪ್ರತಿಪಾದನೆಗಳನ್ನೂ ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "ಮೆಶೀನ್ ID ಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "ಮೆಶೀನ್ ID ಯು %s ಆಗಿದೆ." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "ಮೆಶೀನ್ ID ಯು %s ಆಗಿದೆ." +msgstr "ಅಧಿವೇಶನ ID ಯು %s ಆಗಿದೆ." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "ಚಲಾವಣಾಸಮಯ(ರನ್‌ಟೈಮ್) ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "ಸ್ಥಿತಿ ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "ಘಟಕಗಳ ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -467,16 +370,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"ಸರಿ, ನೀವು PA ಅನ್ನು ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ (ಸಿಸ್ಟಮ್ ಮೋಡ್) ಚಲಾಯಿಸುತ್ತಿದ್ದೀರಿ. ಸಾಮಾನ್ಯವಾಗಿ " +"ನೀವು ಹಾಗೆ ಮಾಡಬಾರದು ಎನ್ನುವುದನ್ನು ದಯವಿಟ್ಟು ನೆನಪಿಡಿ.\n" +"ನೀವು ಹಾಗೆ ಮಾಡಿದಲ್ಲಿ, ಮುಂದೆ ಏನಾದರೂ ತೊಂದರೆ ಆದಲ್ಲಿ ಅದು ನಿಮ್ಮದೆ ತಪ್ಪಿನ " +"ಕಾರಣದಿಂದಾಗಿರುತ್ತದೆ.\n" +"ವ್ಯವಸ್ಥೆಯ ಕ್ರಮವು (ಸಿಸ್ಟಮ್ ಮೋಡ್) ಏಕೆ ಒಂದು ಸರಿಯಲ್ಲದ ಬಳಕೆ ಎಂದು ಅರಿಯಲು ದಯವಿಟ್ಟು http://" +"pulseaudio.org/wiki/WhatIsWrongWithSystemMode ಅನ್ನು ನೋಡಿ." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "ತಾಜಾ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಲಭ್ಯವಿದೆ! Bon appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -484,27 +393,27 @@ msgstr "" "ಮಹಾಶಯರೆ, ನಿಮ್ಮ ಕರ್ನಲ್ ಕೊಳೆತುಹೋಗಿದೆ! ಅತ್ಯುತ್ತಮ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾದ " "ಲಿನಕ್ಸನ್ನು ಬಳಸುವಂತೆ ಅಡುಗೆಯವರು ಸಲಹೆ ಮಾಡುತ್ತಿದ್ದಾರೆ!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "ಡೀಮನ್ ಅನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "ಲೋಡ್ ಮಾಡಲಾದ ಯಾವುದೆ ಡೀಮನ್ ಇಲ್ಲದೆ ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲು ನಿರಾಕರಿಸಿದೆ." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳಿಕೆ ಪೂರ್ಣಗೊಂಡಿದೆ." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "ಡೀಮನ್ ಸ್ಥಗಿತಗೊಳಿಕೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "ಡೀಮನ್ ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸಲಾಗಿದೆ." @@ -759,79 +668,79 @@ msgstr "ಒಮ್ಮೆ ಲೋಡ್ ಮಾಡು: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "DEPRECATION WARNING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "ಮಾರ್ಗ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಮಟ್ಟ '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit ಗೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ರಚನೆ '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ದರ '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ಚಾನಲ್‌ಗಳು '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] ಅಮಾನ್ತವಾದ ಫ್ರಾಗ್ಮೆಂಟುಗಳ ಸಂಖ್ಯೆ '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಫ್ರಾಗ್ಮೆಂಟ್ ಗಾತ್ರ '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನೈಸ್‌ ಹಂತ '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -839,18 +748,14 @@ msgstr "" "ಸೂಚಿಸಲಾದ ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್ ನಕ್ಷೆಯು ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆಗಳಿಗಿಂತ ವಿಭಿನ್ನವಾದ " "ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿದೆ." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### ಸಂರಚನಾ ಕಡತದಿಂದ ಓದು: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "ರೂಟ್‌ ಸವಲತ್ತುಗಳನ್ನು ಬಿಡಲಾಗುತ್ತಿದೆ." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "CAP_SYS_NICE ಗಾಗಿನ ಯಶಸ್ವಿ ನಿಯಮಿತ ಸಾಮರ್ಥ್ಯಗಳು." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "ಸವಲತ್ತುಗಳನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲಾಗುತ್ತಿದೆ." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -860,28 +765,7 @@ msgstr "PulseAudio ಧ್ವನಿ ವ್ಯವಸ್ಥೆ" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio ಧ್ವನಿ ವ್ಯವಸ್ಥೆಯನ್ನು ಆರಂಭಿಸಿ" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio ಡೀಮನ್‌ಗಾಗಿ ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯ ಶೆಡ್ಯೂಲಿಂಗ್ (ಋಣಾತ್ಮಕ ಯೂನಿಕ್ಸ್‌ ನೈಸ್ ಹಂತ)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio ಡೀಮನ್‌ಗಾಗಿ ರಿಯಲ್-ಟೈಮ್ ಶೆಡ್ಯೂಲಿಂಗ್" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"PulseAudio ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳದಂತೆ ವ್ಯವಸ್ಥೆಯ ಪಾಲಿಸಿಯು " -"ತಡೆಯುತ್ತದೆ." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"PulseAudio ರಿಯಲ್-ಟೈಮ್‌ ಶೆಡ್ಯೂಲಿಂಗ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳದಂತೆ ವ್ಯವಸ್ಥೆಯ ಪಾಲಿಸಿಯು ತಡೆಯುತ್ತದೆ." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "ಮೊನೊ" @@ -1085,33 +969,33 @@ msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಎಡಭಾಗ" msgid "Top Rear Right" msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಬಲಭಾಗ" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(ಅಮಾನ್ಯ)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "ಸ್ಟೀರಿಯೋ" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "ಸರೌಂಡ್‌ 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "ಸರೌಂಡ್‌ 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "ಸರೌಂಡ್‌ 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "ಸರೌಂಡ್‌ 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "ಸರೌಂಡ್‌ 7.1" @@ -1215,27 +1099,35 @@ msgstr "ಅನ್ವಯಿಸುವಿಕೆಯು ಕಾಣಿಸುತ್ತ msgid "Client forked" msgstr "ಕ್ಲೈಂಟ್ ಅನ್ನು ಫೋರ್ಕ್ ಮಾಡಲಾಗಿದೆ" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1248,193 +1140,192 @@ msgstr "XOpenDisplay() ವಿಫಲಗೊಂಡಿದೆ" msgid "Failed to parse cookie data" msgstr "ಕುಕಿ ದತ್ತಾಂಶವನ್ನು ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "ಸಂರಚನಾ ಕಡತ '%s' ಅನ್ನು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "" "ಯಾವುದೆ ಕುಕಿಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ. ಕುಕಿ ಇಲ್ಲದೆ ಸಂಪರ್ಕಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "ಫೋರ್ಕ್(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "ಅಜ್ಞಾತ ವಿಸ್ತರಣೆ '%s' ಇಂದ ಸಂದೇಶವನ್ನು ಪಡೆದುಕೊಳ್ಳಲಾಗಿದೆ" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "ಸ್ಟ್ರೀಮನ್ನು ಬರಿದಾಗಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to drain stream: %s" +msgstr "ಸ್ಟ್ರೀಮನ್ನು ಬರಿದಾಗಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "ಪ್ಲೇಬ್ಯಾಕ್ ಸ್ಟ್ರೀಮನ್ನು ಬರಿದಾಗಿಸಲಾಗಿದೆ.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "ಪ್ಲೇಬ್ಯಾಕ್ ಸ್ಟ್ರೀಮನ್ನು ಬರಿದಾಗಿಸಲಾಗಿದೆ." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "ಪರಿಚಾರಕಕ್ಕೆ ಬರಿದಾಗಿಸುವ ಸಂಪರ್ಕ.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "ಪರಿಚಾರಕಕ್ಕೆ ಬರಿದಾಗಿಸುವ ಸಂಪರ್ಕ." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() failed: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() failed: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "ಸ್ಟ್ರೀಮನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() failed: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "ಸ್ಟ್ರೀಮನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "ಬಫರ್ ಮೆಟ್ರಿಕ್‌ಗಳು: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "ಬಫರ್ ಮೆಟ್ರಿಕ್‌ಗಳು: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "ಬಫರ್ ಮೆಟ್ರಿಕ್‌ಗಳು: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "ನಮೂನೆಯ ವಿವರ '%s' ಅನ್ನು ಬಳಸಿಕೊಂಡು, ಚಾನಲ್‌ ನಕ್ಷೆ '%s'.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "ಬಫರ್ ಮೆಟ್ರಿಕ್‌ಗಳು: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "ಸಾಧನ %s ಕ್ಕೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲಾಗಿದೆ (%u, %ssuspended).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "ನಮೂನೆಯ ವಿವರ '%s' ಅನ್ನು, ಚಾನಲ್‌ ನಕ್ಷೆ '%s' ಅನ್ನು ಬಳಸಿಕೊಂಡು." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "ಸ್ಟ್ರೀಮ್ ದೋಷ: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "ಸಾಧನ %s ಕ್ಕೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲಾಗಿದೆ (%u, %ssuspended)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "ಸ್ಟ್ರೀಮ್ ಸಾಧನವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ.%s \n" +msgid "Stream error: %s" +msgstr "ಸ್ಟ್ರೀಮ್ ದೋಷ: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "ಸ್ಟ್ರೀಮ್ ಸಾಧನವನ್ನು ಮರಳಿ ಆರಂಭಿಸಲಾಗಿದೆ.%s \n" +msgid "Stream device suspended.%s" +msgstr "ಸ್ಟ್ರೀಮ್ ಸಾಧನವನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲಾಗಿದೆ.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಕಡಿಮೆ ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n" +msgid "Stream device resumed.%s" +msgstr "ಸ್ಟ್ರೀಮ್ ಸಾಧನವನ್ನು ಮರಳಿ ಆರಂಭಿಸಲಾಗಿದೆ.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಹೆಚ್ಚು ಚಲಾಯಿಸಲಾಗಿದೆ.%s \n" +msgid "Stream underrun.%s" +msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಕಡಿಮೆ ಚಲಾಯಿಸಲಾಗಿದೆ.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ.%s \n" +msgid "Stream overrun.%s" +msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಹೆಚ್ಚು ಚಲಾಯಿಸಲಾಗಿದೆ.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "ಸಾಧನ %s ಅನ್ನು ಸ್ಟ್ರೀಮ್‌ ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ (%u, %ssuspended).%s \n" +msgid "Stream started.%s" +msgstr "ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ.%s " -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "ಸಾಧನ %s ಕ್ಕೆ ಸ್ಟ್ರೀಮ್‌ ಅನ್ನು ಸ್ಥಳಾಂತರಿಸಲಾಗಿದೆ (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "ಇಲ್ಲ " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "ಸ್ಟ್ರೀಮ್ ಬಫರ್ ಗುಣವಿಶೇಷತೆಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "ಸ್ಟ್ರೀಮ್ ಬಫರ್ ಗುಣವಿಶೇಷತೆಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ.%s \n" +msgid "Connection established.%s" +msgstr "ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() failed: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() failed: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() failed: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "ಸಂಪರ್ಕದ ವಿಫಲತೆ: %s\n" +msgid "Connection failure: %s" +msgstr "ಸಂಪರ್ಕದ ವಿಫಲತೆ: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF ಅನ್ನು ಪಡೆಯಲಾಗಿದೆ.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF ಅನ್ನು ಪಡೆಯಲಾಗಿದೆ." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "ಓದುವಿಕೆ() ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "write() failed: %s" +msgstr "write() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "ಸಂಕೇತ ದೊರೆತಿದೆ, ನಿರ್ಗಮಿಸುತ್ತಿದೆ." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "ಬರೆಯುವಿಕೆ() ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get latency: %s" +msgstr "ಅಗೋಚರತೆಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "ಸಂಕೇತ ದೊರೆತಿದೆ, ನಿರ್ಗಮಿಸುತ್ತಿದೆ.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "ಅಗೋಚರತೆಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "ಸಮಯ: %0.3f sec; ಅಗೋಚರತೆ: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() failed: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() ವಿಫಲಗೊಂಡಿದೆ: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1498,7 +1389,7 @@ msgstr "" " --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n" "\n" " -r, --record ರೆಕಾರ್ಡಿಂಗಿಗಾಗಿ ಒಂದು ಸಂಪರ್ಕವನ್ನು ರಚಿಸು\n" -" -p, --playback ಪ್ಲೇಬ್ಯಾಕಿಗಾಗಿ ಒಂದು ಸಂಪರ್ಕವನ್ನು ರಚಿಸಿ\n" +" -p, --playback ಪ್ಲೇಬ್ಯಾಕಿಗಾಗಿ ಒಂದು ಸಂಪರ್ಕವನ್ನು ರಚಿಸು\n" "\n" " -v, --verbose ವರ್ಬೋಸ್ ಕಾರ್ಯವನ್ನು ಶಕ್ತಗೊಳಿಸು\n" "\n" @@ -1506,7 +1397,7 @@ msgstr "" " -d, --device=DEVICE ಸಂಪರ್ಕಸಾಧಿಸಬೇಕಿರುವ ಸಿಂಕಿನ/ಆಕರದ ಹೆಸರು\n" " -n, --client-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಕ್ಲೈಂಟಿನಲ್ಲಿ ಏನೆಂದು " "ಕರೆಯಬೇಕು\n" -" --stream-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಕ್ಲೈಂಟಿನಲ್ಲಿ ಏನೆಂದು " +" --stream-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಏನೆಂದು " "ಕರೆಯಬೇಕು\n" " --volume=VOLUME ಆರಂಭಿಕ (ರೇಖೀಯ) ಪರಿಮಾಣವನ್ನು 0...65536 " "ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ತೋರಿಸು\n" @@ -1537,6 +1428,13 @@ msgstr "" "ಮಾಡು.\n" " --process-time=BYTES ಸೂಚಿಸಲಾದ ಪ್ರತಿ ಮನವಿಯ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯವನ್ನು " "ಬೈಟ್‌ಗಳಲ್ಲಿ ಮನವಿ ಮಾಡು.\n" +" --property=PROPERTY=VALUE ನಿಶ್ಚಿತ ಗುಣಲಕ್ಷಣವನ್ನು ನಿಶ್ಚಿತ ಮೌಲ್ಯವನ್ನು " +"ಹೊಂದಿಸಿ.\n" +" --raw ಕಚ್ಛಾ PCM ದತ್ತಾಂಶವನ್ನು ರೆಕಾರ್ಡು ಮಾಡು/" +"ಚಲಾಯಿಸು.\n" +" --file-format=FFORMAT ಫಾರ್ಮಾಟ್ ಮಾಡಲಾದ PCM ದತ್ತಾಂಶವನ್ನು ರೆಕಾರ್ಡು " +"ಮಾಡು/ಚಲಾಯಿಸು.\n" +" --list-file-formats ಲಭ್ಯವಿರುವ ಕಡತ ವಿನ್ಯಾಸಗಳ ಪಟ್ಟಿ.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1549,136 +1447,130 @@ msgstr "" "libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n" "libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'\n" +msgid "Invalid client name '%s'" +msgstr "ಅಮಾನ್ಯವಾದ ಕ್ಲೈಂಟಿನ ಹೆಸರು '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "ಅಮಾನ್ಯವಾದ ಅಗೋಚರತೆ ವಿವರಣೆ '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "ಅಮಾನ್ಯವಾದ ಸ್ಟ್ರೀಮ್‌ನ ಹೆಸರು '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "ಅಮಾನ್ಯವಾದ ಪ್ರಕ್ರಿಯೆ ಸಮಯದ ವಿವರಣೆ '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "ಅಮಾನ್ಯವಾದ ಅಗೋಚರತೆ ವಿವರಣೆ '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "ಅಮಾನ್ಯವಾದ ಪ್ರಕ್ರಿಯೆ ಸಮಯದ ವಿವರಣೆ '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "ಅಮಾನ್ಯವಾದ ಗುಣಲಕ್ಷಣ '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "ಅಮಾನ್ಯವಾದ ಕಡತ ವಿನ್ಯಾಸ %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "ಅಮಾನ್ಯವಾದ ನಮೂನೆ ವಿವರ\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "ಅಮಾನ್ಯವಾದ ನಮೂನೆ ವಿವರ" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "ತೆರೆ(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "ಬಹಳಷ್ಟು ಆರ್ಗುಮೆಂಟ್‌ಗಳು.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "ಬಹಳಷ್ಟು ಆರ್ಗುಮೆಂಟ್‌ಗಳು." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"ಎಚ್ಚರಿಕೆ: ಸೂಚಿಸಲಾದ ನಮೂನೆ ವಿವರಣೆಯನ್ನು ಕಡತದಲ್ಲಿನ ವಿವರಣೆಯಿಂದ ತಿದ್ದಿಬರೆಯಲಾಗುತ್ತದೆ." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ಕಡತದಿಂದ ನಮೂನೆಯ ವಿವರಣೆಯನ್ನು ನಿರ್ಧರಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "ಚಾನಲ್ ನಕ್ಷೆಯು ನಮೂನೆಯ ವಿವರಣೆಯೊಂದಿಗೆ ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "ಎಚ್ಚರಿಕೆ: ಕಡತದಿಂದ ಚಾನಲ್ ನಕ್ಷೆಯನ್ನು ನಿರ್ಧರಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "ಚಾನಲ್ ನಕ್ಷೆಯು ನಮೂನೆಯ ವಿವರಣೆಯೊಂದಿಗೆ ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "ಎಚ್ಚರಿಕೆ: ಕಡತಕ್ಕೆ ಚಾನಲ್ ನಕ್ಷೆಯನ್ನು ಬರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"ಒಂದು %s ಸ್ಟ್ರೀಮ್‌ ಅನ್ನು ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ಹಾಗು ಚಾನಲ್ ನಕ್ಷೆ '%s' ಯೊಂದಿಗೆ " +"ತೆರೆಯಲಾಗುತ್ತಿದೆ." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "ಒಂದು %s ಸ್ಟ್ರೀಮ್‌ ಅನ್ನು ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗುತ್ತಿದೆ.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "ರೆಕಾರ್ಡಿಂಗ್" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "ಪ್ಲೇಬ್ಯಾಕ್‌" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() ವಿಫಲಗೊಂಡಿದೆ." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() ವಿಫಲಗೊಂಡಿದೆ." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() ವಿಫಲಗೊಂಡಿದೆ." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() failed.\n" +msgid "pa_context_connect() failed: %s" +msgstr "pa_context_connect() ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() ವಿಫಲಗೊಂಡಿದೆ.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() failed.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" -msgstr "pa_context_connect() failed: %s" - -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() failed.\n" - -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() ವಿಫಲಗೊಂಡಿದೆ." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1705,7 +1597,12 @@ msgstr "ಮರಳಿ ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ: msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "ಎಚ್ಚರಿಕೆ: ಧ್ವನಿ ಪರಿಚಾರಕವು ಸ್ಥಳೀಯವಾಗಿಲ್ಲ, ತಾತ್ಕಾಲಿಕವಾಗಿ ತಡೆಹಿಡಿಯಲಾಗುತ್ತಿಲ್ಲ.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "ಸಂಪರ್ಕದ ವಿಫಲತೆ: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT ದೊರೆತಿದೆ, ನಿರ್ಗಮಿಸುತ್ತಿದೆ.\n" @@ -1744,34 +1641,49 @@ msgstr "" "libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n" "libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "ಅಂಕಿಅಂಶಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() ವಿಫಲಗೊಂಡಿದೆ.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() ವಿಫಲಗೊಂಡಿದೆ.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() ವಿಫಲಗೊಂಡಿದೆ.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "ಅಂಕಿಅಂಶಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "ಪ್ರಸಕ್ತ ಬಳಕೆಯಲ್ಲಿರುವುದು: %u ಖಂಡಗಳು ಒಟ್ಟು %s ಬೈಟ್‌ಗಳನ್ನು ಹೊಂದಿದೆ.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "ಸಂಪೂರ್ಣ ಜೀವಿತಾವಧಿಯ ಸಮಯದಲ್ಲಿ ನಿಯೋಜಿಸಲಾಗಿದ್ದು: %u ಖಂಡಗಳು ಒಟ್ಟು %s ಬೈಟ್‌ಗಳನ್ನು " "ಹೊಂದಿದೆ.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "ನಮೂನೆಯ ಕ್ಯಾಶೆ ಗಾತ್ರ: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "ಪರಿಚಾರಕದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get server information: %s" +msgstr "ಪರಿಚಾರಕದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1794,12 +1706,12 @@ msgstr "" "ಪೂರ್ವನಿಯೋಜಿತ ಆಕರ: %s\n" "ಕುಕಿ: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "ಸಿಂಕ್‌ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get sink information: %s" +msgstr "ಸಿಂಕ್‌ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1838,22 +1750,22 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tಪ್ರೊಫೈಲುಗಳು:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tಸಕ್ರಿಯ ಪ್ರೊಫೈಲುಗಳು: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "ಆಕರದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "\tPorts:\n" +msgstr "\tಸಂಪರ್ಕಸ್ಥಾನಗಳು:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tಸಕ್ರಿಯ ಸಂಪರ್ಕಸ್ಥಾನ: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "ಆಕರದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1892,20 +1804,20 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "ಅನ್ವಯಿಸುವುದಿಲ್ಲ" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "ಘಟಕದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get module information: %s" +msgstr "ಘಟಕದ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1922,12 +1834,12 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "ಕ್ಲೈಂಟಿನ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get client information: %s" +msgstr "ಕ್ಲೈಂಟಿನ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1942,12 +1854,12 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "ಕಾರ್ಡಿನ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get card information: %s" +msgstr "ಕಾರ್ಡಿನ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1964,22 +1876,22 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tಪ್ರೊಫೈಲುಗಳು:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tಸಕ್ರಿಯ ಪ್ರೊಫೈಲುಗಳು: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "ಸಿಂಕ್‌ ಇನ್‌ಪುಟ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "ಸಿಂಕ್‌ ಇನ್‌ಪುಟ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2016,12 +1928,12 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "ಆಕರದ ಔಟ್‌ಪುಟ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get source output information: %s" +msgstr "ಆಕರದ ಔಟ್‌ಪುಟ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2050,12 +1962,12 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to get sample information: %s" +msgstr "ನಮೂನೆಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2086,22 +1998,26 @@ msgstr "" "\tಗುಣಗಳು:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "ವಿಫಲತೆ: %s\n" +msgid "Failure: %s" +msgstr "ವಿಫಲತೆ: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "ನಮೂನೆಯನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s\n" +msgid "Failed to upload sample: %s" +msgstr "ನಮೂನೆಯನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "ಕಡತದ ಅಪ್ರಾಪ್ತ ಸಮಯದಲ್ಲಿ ಅಂತ್ಯ\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "ಕಡತದ ಅಪ್ರಾಪ್ತ ಸಮಯದಲ್ಲಿ ಅಂತ್ಯ" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT ದೊರೆತಿದೆ, ನಿರ್ಗಮಿಸುತ್ತಿದೆ." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2109,15 +2025,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2133,13 +2055,21 @@ msgstr "" "%s [ಆಯ್ಕೆಗಳು] upload-sample FILENAME [NAME]\n" "%s [ಆಯ್ಕೆಗಳು] play-sample NAME [SINK]\n" "%s [ಆಯ್ಕೆಗಳು] remove-sample NAME\n" -"%s [ಆಯ್ಕೆಗಳು] move-sink-input ID SINK\n" -"%s [ಆಯ್ಕೆಗಳು] move-source-output ID SOURCE\n" +"%s [ಆಯ್ಕೆಗಳು] move-sink-input SINKINPUT SINK\n" +"%s [ಆಯ್ಕೆಗಳು] move-source-output SOURCEOUTPUT SOURCE\n" "%s [ಆಯ್ಕೆಗಳು] load-module NAME [ARGS ...]\n" -"%s [ಆಯ್ಕೆಗಳು] unload-module ID\n" -"%s [ಆಯ್ಕೆಗಳು] suspend-sink [SINK] 1|0\n" -"%s [ಆಯ್ಕೆಗಳು] suspend-source [SOURCE] 1|0\n" -"%s [ಆಯ್ಕೆಗಳು] set-card-profile [CARD] [PROFILE] \n" +"%s [ಆಯ್ಕೆಗಳು] unload-module MODULE\n" +"%s [ಆಯ್ಕೆಗಳು] suspend-sink SINK 1|0\n" +"%s [ಆಯ್ಕೆಗಳು] suspend-source SOURCE 1|0\n" +"%s [ಆಯ್ಕೆಗಳು] set-card-profile CARD PROFILE\n" +"%s [ಆಯ್ಕೆಗಳು] set-sink-port SINK PORT\n" +"%s [ಆಯ್ಕೆಗಳು] set-source-port SOURCE PORT\n" +"%s [ಆಯ್ಕೆಗಳು] set-sink-volume SINK VOLUME\n" +"%s [ಆಯ್ಕೆಗಳು] set-source-volume SOURCE VOLUME\n" +"%s [ಆಯ್ಕೆಗಳು] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [ಆಯ್ಕೆಗಳು] set-sink-mute SINK 1|0\n" +"%s [ಆಯ್ಕೆಗಳು] set-source-mute SOURCE 1|0\n" +"%s [ಆಯ್ಕೆಗಳು] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help ಈ ನೆರವನ್ನು ತೋರಿಸು\n" " --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n" @@ -2148,7 +2078,7 @@ msgstr "" " -n, --client-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಕ್ಲೈಂಟಿನಲ್ಲಿ ಏನೆಂದು " "ಕರೆಯಬೇಕು\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2159,81 +2089,110 @@ msgstr "" "libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n" "libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "ಲೋಡ್ ಮಾಡಬೇಕಿರುವ ಒಂದು ಕಡತದ ನಮೂನೆಯನ್ನು ಸೂಚಿಸಿ\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "ಒಂದು %s ಸ್ಟ್ರೀಮ್‌ ಅನ್ನು ನಮೂನೆ ವಿವರಣೆ '%s' ಯೊಂದಿಗೆ ತೆರೆಯಲಾಗುತ್ತಿದೆ.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "ಚಲಾಯಿಸಲು ನೀವು ಒಂದು ನಮೂನೆಯ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "ತೆಗೆದು ಹಾಕಲು ನೀವು ಒಂದು ನಮೂನೆಯ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "ನೀವು ಒಂದು ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಸಿಂಕ್‌ ಅನ್ನು ಸೂಚಿಸಬೇಕು.\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "ಲೋಡ್ ಮಾಡಬೇಕಿರುವ ಒಂದು ಕಡತದ ನಮೂನೆಯನ್ನು ಸೂಚಿಸಿ" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "ನೀವು ಒಂದು ಆಕರ ಔಟ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಆಕರವನ್ನು ಸೂಚಿಸಬೇಕು.\n" +msgid "Failed to open sound file." +msgstr "ಧ್ವನಿ ಕಡತವನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "ನೀವು ಒಂದು ಘಟಕದ ಹೆಸರನ್ನು ಹಾಗು ಆರ್ಗುಮೆಂಟುಗಳನ್ನು ಸೂಚಿಸಬೇಕು\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "ಎಚ್ಚರಿಕೆ: ಕಡತದಿಂದ ನಮೂನೆಯ ವಿವರವನ್ನು ನಿರ್ಧರಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "ನೀವು ಒಂದು ಘಟಕ ಸೂಚಿಯನ್ನು ಸೂಚಿಸಬೇಕು\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "ಚಲಾಯಿಸಲು ನೀವು ಒಂದು ನಮೂನೆಯ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "ತೆಗೆದು ಹಾಕಲು ನೀವು ಒಂದು ನಮೂನೆಯ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "ನೀವು ಒಂದು ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಸಿಂಕ್‌ ಅನ್ನು ಸೂಚಿಸಬೇಕು." + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "ನೀವು ಒಂದು ಆಕರ ಔಟ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಆಕರವನ್ನು ಸೂಚಿಸಬೇಕು." + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "ನೀವು ಒಂದು ಘಟಕದ ಹೆಸರನ್ನು ಹಾಗು ಆರ್ಗುಮೆಂಟುಗಳನ್ನು ಸೂಚಿಸಬೇಕು." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "ನೀವು ಒಂದು ಘಟಕ ಸೂಚಿಯನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "ನೀವು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಸಿಂಕನ್ನು ಸೂಚಿಸಲಾಗುವುದಿಲ್ಲ. ನೀವು ಒಂದು ಬೂಲಿಯನ್‌ ಮೌಲ್ಯವನ್ನು " -"ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ.\n" +"ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "ನೀವು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಆಕರವನ್ನು ಸೂಚಿಸಲಾಗುವುದಿಲ್ಲ. ನೀವು ಒಂದು ಬೂಲಿಯನ್‌ ಮೌಲ್ಯವನ್ನು " -"ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ.\n" +"ಸೂಚಿಸಬೇಕಾಗುತ್ತದೆ." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "ಒಂದು ಕಾರ್ಡಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಪ್ರೊಫೈಲ್‌ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "ಒಂದು ಕಾರ್ಡಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಪ್ರೊಫೈಲ್‌ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "ಒಂದು ಕಾರ್ಡಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಪ್ರೊಫೈಲ್‌ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "ನೀವು ಒಂದು ಸಿಂಕಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "ಒಂದು ಕಾರ್ಡಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಪ್ರೊಫೈಲ್‌ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "ನೀವು ಒಂದು ಆಕರದ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "ಯಾವುದೆ ಆಜ್ಞೆಯನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "ನೀವು ಒಂದು ಸಿಂಕಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() failed: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "ಅಮಾನ್ಯವಾದ ಧ್ವನಿ ಪ್ರಮಾಣದ ವಿವರ" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "ನೀವು ಒಂದು ಆಕರದ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "ನೀವು ಒಂದು ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಸಿಂಕ್‌ ಅನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "ಅಮಾನ್ಯವಾದ ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿ" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "ನೀವು ಒಂದು ಸಿಂಕಿನ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "ನೀವು ಒಂದು ಆಕರದ ಹೆಸರು/ಸೂಚಿಯನ್ನು ಹಾಗು ಸಂಪರ್ಕಸ್ಥಾನದ ಹೆಸರನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "ನೀವು ಒಂದು ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿಯನ್ನು ಹಾಗು ಒಂದು ಸಿಂಕ್‌ ಅನ್ನು ಸೂಚಿಸಬೇಕು" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "ಅಮಾನ್ಯವಾದ ಸಿಂಕ್ ಇನ್‌ಪುಟ್ ಸೂಚಿ ವಿವರ" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "ಮಾನ್ಯವಾದ ಯಾವುದೆ ಆಜ್ಞೆಯನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2315,48 +2274,49 @@ msgstr "ಕುಕಿ ದತ್ತಾಂಶವನ್ನು ಲೋಡ್ ಮಾಡ msgid "Not yet implemented.\n" msgstr "ಇನ್ನೂ ಸಹ ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"ಯಾವುದೆ PulseAudio ಡೆಮನ್ ಚಾಲಿತಗೊಳ್ಳುತ್ತಿಲ್ಲ, ಅಥವ ಅಧಿವೇಶನ ಡೆಮನ್ ಆಗಿ ಚಾಲಿತಗೊಳ್ಳುತ್ತಿಲ್ಲ." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "ಸಾಕೆಟ್(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "ಸಂಪರ್ಕಿಸು(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio ಡೀಮನ್ ಅನ್ನು ಕೊಲ್ಲುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "ಡೀಮನ್ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "ಆಯ್ಕೆಮಾಡು(): %s" +msgid "poll(): %s" +msgstr "ಪೋಲ್(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "ಓದು(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "ಬರೆ(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "ಸ್ವಯಂಹೆಚ್ಚಿಸುವಿಕೆಯ ಲಾಕ್ ಅನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2371,7 +2331,7 @@ msgstr "" "ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ.POLLOUT ಸೆಟ್‌ನಿಂದ ನಾವು ಎಚ್ಚೆತ್ತುಗೊಂಡಿದ್ದೇವೆ -- ಆದರೆ ನಂತರದ " "snd_pcm_avail() 0 ಅಥವ min_avail ಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಇನ್ನೊಂದು ಮೌಲ್ಯವನ್ನು ಮರಳಿಸಿದೆ." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2387,127 +2347,22 @@ msgstr "" "snd_pcm_avail() 0 ಅಥವ min_avail ಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಇನ್ನೊಂದು ಮೌಲ್ಯವನ್ನು ಮರಳಿಸಿದೆ." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "ಜಡ" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "ಹೈ ಫಿಡಿಲಿಟಿ ಪ್ಲೇಬ್ಯಾಕ್ (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "ಹೈ ಫಿಡಿಲಿಟಿ ಕ್ಯಾಪ್ಚರ್ (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "ಟೆಲಿಫೋನಿ ಡ್ಯೂಪ್ಲೆಕ್ಸ್‌ (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" -msgstr "ಪಲ್ಸ್‍ಆಡಿಯೋ ಧ್ವನಿ ಪರಿಚಾರಕ" - -#~ msgid "Analog Mono" -#~ msgstr "ಅನಲಾಗ್ ಮೊನೊ" - -#~ msgid "Analog Stereo" -#~ msgstr "ಅನಲಾಗ್ ಸ್ಟೀರಿಯೋ" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "ಡಿಜಿಟಲ್ ಸ್ಟೀರಿಯೋ (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "ಡಿಜಿಟಲ್ ಸ್ಟೀರಿಯೋ (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "ಅನಲಾಗ್ 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "ಡಿಜಿಟಲ್ ಸರೌಂಡ್ 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "ಅನಲಾಗ್ ಸರೌಂಡ್ 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "ಅನಲಾಗ್ ಸರೌಂಡ್ 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "ಅನಲಾಗ್ ಸರೌಂಡ್ 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "ಡಿಜಿಟಲ್ ಸರೌಂಡ್ 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "ಡಿಜಿಟಲ್ ಸರೌಂಡ್ 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "ಔಟ್‌ಪುಟ್ %s + ಇನ್‌ಪುಟ್ %s" - -#~ msgid "Output %s" -#~ msgstr "ಔಟ್‌ಪುಟ್ %s" - -#~ msgid "Input %s" -#~ msgstr "ಇನ್‌ಪುಟ್ %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "ಸ್ಟ್ರೀಮನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "ಸ್ಟ್ರೀಮ್ ದೋಷ: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "ಸಂಪರ್ಕವನ್ನು ಸಾಧಿಸಲಾಗಿದೆ.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [ಆಯ್ಕೆಗಳು] [FILE]\n" -#~ "\n" -#~ " -h, --help ಈ ನೆರವನ್ನು ತೋರಿಸು\n" -#~ " --version ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು\n" -#~ "\n" -#~ " -v, --verbose ವರ್ಬೋಸ್ ಕಾರ್ಯವನ್ನು ಶಕ್ತಗೊಳಿಸು\n" -#~ "\n" -#~ " -s, --server=SERVER ಸಂಪರ್ಕಸಾಧಿಸಬೇಕಿರುವ ಪರಿಚಾರಕದ ಹೆಸರು\n" -#~ " -d, --device=DEVICE ಸಂಪರ್ಕಸಾಧಿಸಬೇಕಿರುವ ಸಿಂಕಿನ ಹೆಸರು\n" -#~ " -n, --client-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಕ್ಲೈಂಟಿನಲ್ಲಿ ಏನೆಂದು " -#~ "ಕರೆಯಬೇಕು\n" -#~ " --stream-name=NAME ಪರಿಚಾರಕದಲ್ಲಿ ಈ ಸ್ಟ್ರೀಮಿನಲ್ಲಿ ಏನೆಂದು " -#~ "ಕರೆಯಬೇಕು\n" -#~ " --volume=VOLUME ಆರಂಭಿಕ (ರೇಖೀಯ) ಪರಿಮಾಣವನ್ನು " -#~ "0...65536 ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ತೋರಿಸು\n" -#~ " --channel-map=CHANNELMAP ಬಳಕೆಗಾಗಿ ಚಾನಲ್ ನಕ್ಷೆಯನ್ನು ಹೊಂದಿಸು\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "libpulse %s ನೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಲಾಗಿದೆ\n" -#~ "libpulse %s ನೊಂದಿಗೆ ಜೋಡಿಸಲಾಗಿದೆ\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "ಕಡತ '%s' ಅನ್ನು ತೆರೆಯುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "ಮಾರ್ಗದ ನಕ್ಷೆಯು ಕಡತಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "ಸರಳ ವಿವರಣೆ(ಸ್ಪೆಕ್) '%s' ಅನ್ನು ಬಳಸಿಕೊಂಡು\n" +msgstr "PulseAudio ಧ್ವನಿ ಪರಿಚಾರಕ" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 000000000..461ec1445 --- /dev/null +++ b/po/ml.po @@ -0,0 +1,2350 @@ +# translation of pulseaudio.master-tx.ml.po to +# translation of pulseaudio.master-tx.pulseaudio.ml.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: pulseaudio.master-tx.ml\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 11:19+0530\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 +#, c-format +msgid "" +"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " +"ms).\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers." +msgstr "" +"snd_pcm_avail() നല്‍കിയ മൂല്ല്യം വളരെ വലുതാണു്: %lu ബൈറ്റുകള്‍ (%lu ms).\n" +"ഇതു് ALSA ഡ്രൈവര്‍ '%s'-ലുള്ള ഒരു ബഗാവാം. ദയവായി ഈ പ്രശ്നം ALSA ഡവലപ്പര്‍സിനെ അറിയിക്കുക." + +#: ../src/modules/alsa/alsa-util.c:1147 +#, c-format +msgid "" +"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" +"lu ms).\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers." +msgstr "" +"snd_pcm_delay() നല്‍കിയ മൂല്ല്യം വളരെ വലുതാണു്: %li ബൈറ്റുകള്‍ (%s%lu ms).\n" +"ഇതു് ALSA ഡ്രൈവര്‍ '%s'-ലുള്ള ഒരു ബഗാവാം. ദയവായി ഈ പ്രശ്നം ALSA ഡവലപ്പര്‍സിനെ അറിയിക്കുക." + +#: ../src/modules/alsa/alsa-util.c:1194 +#, c-format +msgid "" +"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " +"(%lu ms).\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers." +msgstr "" +"snd_pcm_mmap_begin() നല്‍കിയ മൂല്ല്യം വളരെ വലുതാണു്: %lu ബൈറ്റുകള്‍(%lu ms).\n" +"ഇതു് ALSA ഡ്രൈവര്‍ '%s'-ലുള്ള ഒരു ബഗാവാം. ദയവായി ഈ പ്രശ്നം ALSA ഡവലപ്പര്‍സിനെ അറിയിക്കുക." + +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "നള്‍ ആണെങ്കിലും ഒരു സിങ്കെങ്കിലും എപ്പോഴും ലഭ്യമാക്കുക" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "ഡമ്മി ഔട്ട്പുട്ട്" + +#: ../src/modules/module-ladspa-sink.c:49 +msgid "Virtual LADSPA sink" +msgstr "വിര്‍ച്ച്വല്‍ LADSPA സിങ്ക്" + +#: ../src/modules/module-ladspa-sink.c:53 +msgid "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" +msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" + +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "ക്ലോക്കഡ് NULL സിങ്ക്" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "നള്‍ ഔട്ട്പുട്ട്" + +#: ../src/pulsecore/sink.c:2613 +msgid "Internal Audio" +msgstr "ഇന്റേര്‍ണല്‍ ഓഡിയോ" + +#: ../src/pulsecore/sink.c:2618 +msgid "Modem" +msgstr "മോഡം" + +#: ../src/daemon/ltdl-bind-now.c:124 +msgid "Failed to find original lt_dlopen loader." +msgstr "യഥാര്‍ത്ഥ lt_dlopen ലോഡര്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/ltdl-bind-now.c:129 +msgid "Failed to allocate new dl loader." +msgstr "പുതിയ dl ലോഡര്‍ അനുവദിക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/ltdl-bind-now.c:142 +msgid "Failed to add bind-now-loader." +msgstr "bind-now-loader ചേര്‍ക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:141 +#, c-format +msgid "Got signal %s." +msgstr "%s സിഗ്നല്‍ ലഭ്യമായി." + +#: ../src/daemon/main.c:168 +msgid "Exiting." +msgstr "പുറത്തു് കടക്കുന്നു." + +#: ../src/daemon/main.c:186 +#, c-format +msgid "Failed to find user '%s'." +msgstr "'%s' എന്ന ഉപയോക്താവു് ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:191 +#, c-format +msgid "Failed to find group '%s'." +msgstr "'%s' എന്ന ഗ്രൂപ്പ് ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:195 +#, c-format +msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." +msgstr "ഉപയോക്താവു് '%s' (UID %lu) , ഗ്രൂപ്പ് '%s' (GID %lu) ലഭ്യമായി." + +#: ../src/daemon/main.c:200 +#, c-format +msgid "GID of user '%s' and of group '%s' don't match." +msgstr "ഉപയോക്താവു് '%s'-ന്റെയും ഗ്രൂപ്പ് '%s'-ന്റെയും GID ചേരുന്നില്ല." + +#: ../src/daemon/main.c:205 +#, c-format +msgid "Home directory of user '%s' is not '%s', ignoring." +msgstr "ഉപയോക്താവു് '%s'-ന്റെ ഹോം ഡയറക്ടറി '%s' അല്ല, ഉപേക്ഷിക്കുന്നു." + +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 +#, c-format +msgid "Failed to create '%s': %s" +msgstr "'%s' ഉണ്ടാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:220 +#, c-format +msgid "Failed to change group list: %s" +msgstr "ഗ്രൂപ്പ് ലിസ്റ്റ് മാറ്റുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:236 +#, c-format +msgid "Failed to change GID: %s" +msgstr "GID മാറ്റുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:252 +#, c-format +msgid "Failed to change UID: %s" +msgstr "UID മാറ്റുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:271 +msgid "Successfully dropped root privileges." +msgstr "റൂട്ട് ആനുകൂല്യങ്ങള്‍ വിജയകരമായി ഉപേക്ഷിച്ചിരിക്കുന്നു." + +#: ../src/daemon/main.c:279 +msgid "System wide mode unsupported on this platform." +msgstr "ഈ പ്ലാറ്റ്ഫോമില്‍ സിസ്റ്റം വൈഡ് മോഡ് പിന്തുണയ്ക്കുന്നില്ല." + +#: ../src/daemon/main.c:297 +#, c-format +msgid "setrlimit(%s, (%u, %u)) failed: %s" +msgstr "setrlimit(%s, (%u, %u)) പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:469 +msgid "Failed to parse command line." +msgstr "കമാന്‍ഡ് ലൈന്‍ പാഴ്സ് ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:536 +msgid "Daemon not running" +msgstr "ഡെമണ്‍ പ്രവര്‍ത്തനത്തിലില്ല" + +#: ../src/daemon/main.c:538 +#, c-format +msgid "Daemon running as PID %u" +msgstr "ഡെമണ്‍ PID %u ആയി പ്രവര്‍ത്തിക്കുന്നു" + +#: ../src/daemon/main.c:548 +#, c-format +msgid "Failed to kill daemon: %s" +msgstr "ഡെമണ്‍ നശിപ്പിക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:566 +msgid "" +"This program is not intended to be run as root (unless --system is " +"specified)." +msgstr "" +"ഈ പ്രോഗ്രാം റൂട്ടായി പ്രവര്‍ത്തിപ്പിക്കേണ്ടതല്ല (--system എന്നു് പറഞ്ഞിട്ടുണ്ടെങ്കില്‍ മാത്രം റൂട്ട് " +"ആവശ്യമുണ്ടു്)." + +#: ../src/daemon/main.c:568 +msgid "Root privileges required." +msgstr "റൂട്ട് ആനുകൂല്യങ്ങള്‍ ആവശ്യമുണ്ടു്." + +#: ../src/daemon/main.c:573 +msgid "--start not supported for system instances." +msgstr "സിസ്റ്റം ഇന്‍സ്റ്റന്‍സുകള്‍ക്ക് --start പിന്തുണയ്ക്കുന്നില്ല." + +#: ../src/daemon/main.c:578 +msgid "Running in system mode, but --disallow-exit not set!" +msgstr "സിസ്റ്റം മോഡില്‍ പ്രവര്‍ത്തിക്കുന്നു, പക്ഷേ --disallow-exit സജ്ജമാക്കിയിട്ടില്ല!" + +#: ../src/daemon/main.c:581 +msgid "Running in system mode, but --disallow-module-loading not set!" +msgstr "" +"സിസ്റ്റം മോഡില്‍ പ്രവര്‍ത്തിക്കുന്നു, പക്ഷേ --disallow-module-loading സജ്ജമാക്കിയിട്ടില്ല!" + +#: ../src/daemon/main.c:584 +msgid "Running in system mode, forcibly disabling SHM mode!" +msgstr "സിസ്റ്റം മോഡില്‍ പ്രവര്‍ത്തിക്കുന്നു, നിര്‍ബന്ധമായും SHM മോഡ് പ്രവര്‍ത്ത രഹിതമാക്കുന്നു!" + +#: ../src/daemon/main.c:589 +msgid "Running in system mode, forcibly disabling exit idle time!" +msgstr "" +"സിസ്റ്റം മോഡില്‍ പ്രവര്‍ത്തിക്കുന്നു, നിര്‍ബന്ധമായും എക്സിറ്റ് ഐഡില്‍ സമയം പ്രവര്‍ത്ത രഹിതമാക്കുന്നു!" + +#: ../src/daemon/main.c:616 +msgid "Failed to acquire stdio." +msgstr "stdio ലഭിക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:622 +#, c-format +msgid "pipe failed: %s" +msgstr "pipe പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:627 +#, c-format +msgid "fork() failed: %s" +msgstr "fork() പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 +#, c-format +msgid "read() failed: %s" +msgstr "read() പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/main.c:647 +msgid "Daemon startup failed." +msgstr "ഡെമണിന്റെ തുടക്കം പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:649 +msgid "Daemon startup successful." +msgstr "ഡെമണിന്റെ തുടക്കം വിജയിച്ചു." + +#: ../src/daemon/main.c:726 +#, c-format +msgid "This is PulseAudio %s" +msgstr "ഇതു് PulseAudio %s ആണു്" + +#: ../src/daemon/main.c:727 +#, c-format +msgid "Compilation host: %s" +msgstr "കംപൈലേഷന്‍ ഹോസ്റ്റ്: %s" + +#: ../src/daemon/main.c:728 +#, c-format +msgid "Compilation CFLAGS: %s" +msgstr "കംപൈലേഷന്‍ CFLAGS: %s" + +#: ../src/daemon/main.c:731 +#, c-format +msgid "Running on host: %s" +msgstr "ഹോസ്റ്റില്‍ പ്രവര്‍ത്തിക്കുന്നു: %s" + +#: ../src/daemon/main.c:734 +#, c-format +msgid "Found %u CPUs." +msgstr "%u സിപിയു ലഭ്യമായി." + +#: ../src/daemon/main.c:736 +#, c-format +msgid "Page size is %lu bytes" +msgstr "താളിന്റെ വ്യാപ്തി %lu ബൈറ്റുകളാണു്" + +#: ../src/daemon/main.c:739 +msgid "Compiled with Valgrind support: yes" +msgstr "Valgrind പിന്തുണയോടെ കംപൈല്‍ ചെയ്തിരിക്കുന്നു: ഉവ്വു്" + +#: ../src/daemon/main.c:741 +msgid "Compiled with Valgrind support: no" +msgstr "Valgrind പിന്തുണയോടെ കംപൈല്‍ ചെയ്തിരിക്കുന്നു: ഇല്ല" + +#: ../src/daemon/main.c:744 +#, c-format +msgid "Running in valgrind mode: %s" +msgstr "valgrind മോഡില്‍ പ്രവര്‍ത്തിപ്പിക്കുന്നു: %s" + +#: ../src/daemon/main.c:747 +msgid "Optimized build: yes" +msgstr "ഒപ്ടിമൈസ്ഡ് ബിള്‍ഡ്: ഉവ്വു്" + +#: ../src/daemon/main.c:749 +msgid "Optimized build: no" +msgstr "ഒപ്ടിമൈസ്ഡ് ബിള്‍ഡ്: ഇല്ല" + +#: ../src/daemon/main.c:753 +msgid "NDEBUG defined, all asserts disabled." +msgstr "NDEBUG നിഷ്കര്‍ഷിച്ചിരിക്കുന്നു, എല്ലാ asserts-ഉം പ്രവര്‍‌ത്ത രഹിതം." + +#: ../src/daemon/main.c:755 +msgid "FASTPATH defined, only fast path asserts disabled." +msgstr "FASTPATH നിഷ്കര്‍ഷിച്ചിരിക്കുന്നു, fast path asserts മാത്രം പ്രവര്‍‌ത്ത രഹിതം." + +#: ../src/daemon/main.c:757 +msgid "All asserts enabled." +msgstr "എല്ലാ asserts-ഉം പ്രവര്‍‌ത്ത സജ്ജം" + +#: ../src/daemon/main.c:761 +msgid "Failed to get machine ID" +msgstr "മഷീന്‍ ID ലഭ്യമാക്കുവാന്‍ സാധ്യമായില്ല" + +#: ../src/daemon/main.c:764 +#, c-format +msgid "Machine ID is %s." +msgstr "മഷീന്‍ ID %s ആണു്." + +#: ../src/daemon/main.c:768 +#, c-format +msgid "Session ID is %s." +msgstr "സെഷന്‍ ID %s ആണു്." + +#: ../src/daemon/main.c:774 +#, c-format +msgid "Using runtime directory %s." +msgstr "റണ്‍ടൈം ഡയറക്ടറി %s ഉപയോഗിക്കുന്നു." + +#: ../src/daemon/main.c:779 +#, c-format +msgid "Using state directory %s." +msgstr "സ്റ്റേറ്റ് ഡയറക്ടറി %s ഉപയോഗിക്കുന്നു." + +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "മൊഡ്യൂള്‍സ് ഡയറക്ടറി %s ഉപയോഗിക്കുന്നു." + +#: ../src/daemon/main.c:784 +#, c-format +msgid "Running in system mode: %s" +msgstr "സിസ്റ്റം മോഡില്‍ പ്രവര്‍ത്തിക്കുന്നു: %s" + +#: ../src/daemon/main.c:787 +msgid "" +"OK, so you are running PA in system mode. Please note that you most likely " +"shouldn't be doing that.\n" +"If you do it nonetheless then it's your own fault if things don't work as " +"expected.\n" +"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " +"explanation why system mode is usually a bad idea." +msgstr "" +"ശരി, അപ്പോള്‍ നിങ്ങള്‍ പിഎ സിസ്റ്റം മോഡിലാണു് പ്രവര്‍ത്തിപ്പിക്കുന്നതു്. ദയവായി ഇതുപേക്ഷിക്കുക.\n" +"ഇങ്ങനെ ചെയ്തുണ്ടാകുന്ന സകല തകരാറുകളുടേയും ഉത്തരവാദി നിങ്ങള്‍ സ്വയമാകുന്നു.\n" +"സിസ്റ്റം മോഡിലുള്ള പ്രവര്‍ത്തനം ഉത്തമമല്ലാത്തതിന്റെ കാരണങ്ങള്‍ക്കായിhttp://pulseaudio.org/" +"wiki/WhatIsWrongWithSystemMode കാണുക." + +#: ../src/daemon/main.c:804 +msgid "pa_pid_file_create() failed." +msgstr "pa_pid_file_create() പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:814 +msgid "Fresh high-resolution timers available! Bon appetit!" +msgstr "Fresh high-resolution timers available! Bon appetit!" + +#: ../src/daemon/main.c:816 +msgid "" +"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" +"resolution timers enabled!" +msgstr "" +"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" +"resolution timers enabled!" + +#: ../src/daemon/main.c:839 +msgid "pa_core_new() failed." +msgstr "pa_core_new() പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:899 +msgid "Failed to initialize daemon." +msgstr "ഡെമണ്‍ ആരംഭിക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/daemon/main.c:904 +msgid "Daemon startup without any loaded modules, refusing to work." +msgstr "ഒരു ഘടകങ്ങളും ലഭ്യമാകാതെ ഡെമണ്‍ ആരംഭിച്ചിരിക്കുന്നു, പ്രവര്‍ത്തനം നിഷേധിച്ചിരിക്കുന്നു." + +#: ../src/daemon/main.c:921 +msgid "Daemon startup complete." +msgstr "ഡെമണിന്റെ തുടക്കം പൂര്‍ണ്ണമായി." + +#: ../src/daemon/main.c:927 +msgid "Daemon shutdown initiated." +msgstr "ഡെമണ്‍ അടച്ചുപൂട്ടുന്നതു് ആരംഭിച്ചിരിക്കുന്നു." + +#: ../src/daemon/main.c:949 +msgid "Daemon terminated." +msgstr "ഡെമണ്‍ നിര്‍ത്തിയിരിക്കുന്നു." + +#: ../src/daemon/cmdline.c:115 +#, c-format +msgid "" +"%s [options]\n" +"\n" +"COMMANDS:\n" +" -h, --help Show this help\n" +" --version Show version\n" +" --dump-conf Dump default configuration\n" +" --dump-modules Dump list of available modules\n" +" --dump-resample-methods Dump available resample methods\n" +" --cleanup-shm Cleanup stale shared memory " +"segments\n" +" --start Start the daemon if it is not " +"running\n" +" -k --kill Kill a running daemon\n" +" --check Check for a running daemon (only " +"returns exit code)\n" +"\n" +"OPTIONS:\n" +" --system[=BOOL] Run as system-wide instance\n" +" -D, --daemonize[=BOOL] Daemonize after startup\n" +" --fail[=BOOL] Quit when startup fails\n" +" --high-priority[=BOOL] Try to set high nice level\n" +" (only available as root, when SUID " +"or\n" +" with elevated RLIMIT_NICE)\n" +" --realtime[=BOOL] Try to enable realtime scheduling\n" +" (only available as root, when SUID " +"or\n" +" with elevated RLIMIT_RTPRIO)\n" +" --disallow-module-loading[=BOOL] Disallow module user requested " +"module\n" +" loading/unloading after startup\n" +" --disallow-exit[=BOOL] Disallow user requested exit\n" +" --exit-idle-time=SECS Terminate the daemon when idle and " +"this\n" +" time passed\n" +" --module-idle-time=SECS Unload autoloaded modules when idle " +"and\n" +" this time passed\n" +" --scache-idle-time=SECS Unload autoloaded samples when idle " +"and\n" +" this time passed\n" +" --log-level[=LEVEL] Increase or set verbosity level\n" +" -v Increase the verbosity level\n" +" --log-target={auto,syslog,stderr} Specify the log target\n" +" --log-meta[=BOOL] Include code location in log " +"messages\n" +" --log-time[=BOOL] Include timestamps in log messages\n" +" --log-backtrace=FRAMES Include a backtrace in log messages\n" +" -p, --dl-search-path=PATH Set the search path for dynamic " +"shared\n" +" objects (plugins)\n" +" --resample-method=METHOD Use the specified resampling method\n" +" (See --dump-resample-methods for\n" +" possible values)\n" +" --use-pid-file[=BOOL] Create a PID file\n" +" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n" +" platforms that support it.\n" +" --disable-shm[=BOOL] Disable shared memory support.\n" +"\n" +"STARTUP SCRIPT:\n" +" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module " +"with\n" +" the specified argument\n" +" -F, --file=FILENAME Run the specified script\n" +" -C Open a command line on the running " +"TTY\n" +" after startup\n" +"\n" +" -n Don't load default script file\n" +msgstr "" +"%s [options]\n" +"\n" +"COMMANDS:\n" +" -h, --help Show this help\n" +" --version Show version\n" +" --dump-conf Dump default configuration\n" +" --dump-modules Dump list of available modules\n" +" --dump-resample-methods Dump available resample methods\n" +" --cleanup-shm Cleanup stale shared memory " +"segments\n" +" --start Start the daemon if it is not " +"running\n" +" -k --kill Kill a running daemon\n" +" --check Check for a running daemon (only " +"returns exit code)\n" +"\n" +"OPTIONS:\n" +" --system[=BOOL] Run as system-wide instance\n" +" -D, --daemonize[=BOOL] Daemonize after startup\n" +" --fail[=BOOL] Quit when startup fails\n" +" --high-priority[=BOOL] Try to set high nice level\n" +" (only available as root, when SUID " +"or\n" +" with elevated RLIMIT_NICE)\n" +" --realtime[=BOOL] Try to enable realtime scheduling\n" +" (only available as root, when SUID " +"or\n" +" with elevated RLIMIT_RTPRIO)\n" +" --disallow-module-loading[=BOOL] Disallow module user requested " +"module\n" +" loading/unloading after startup\n" +" --disallow-exit[=BOOL] Disallow user requested exit\n" +" --exit-idle-time=SECS Terminate the daemon when idle and " +"this\n" +" time passed\n" +" --module-idle-time=SECS Unload autoloaded modules when idle " +"and\n" +" this time passed\n" +" --scache-idle-time=SECS Unload autoloaded samples when idle " +"and\n" +" this time passed\n" +" --log-level[=LEVEL] Increase or set verbosity level\n" +" -v Increase the verbosity level\n" +" --log-target={auto,syslog,stderr} Specify the log target\n" +" --log-meta[=BOOL] Include code location in log " +"messages\n" +" --log-time[=BOOL] Include timestamps in log messages\n" +" --log-backtrace=FRAMES Include a backtrace in log messages\n" +" -p, --dl-search-path=PATH Set the search path for dynamic " +"shared\n" +" objects (plugins)\n" +" --resample-method=METHOD Use the specified resampling method\n" +" (See --dump-resample-methods for\n" +" possible values)\n" +" --use-pid-file[=BOOL] Create a PID file\n" +" --no-cpu-limit[=BOOL] Do not install CPU load limiter on\n" +" platforms that support it.\n" +" --disable-shm[=BOOL] Disable shared memory support.\n" +"\n" +"STARTUP SCRIPT:\n" +" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module " +"with\n" +" the specified argument\n" +" -F, --file=FILENAME Run the specified script\n" +" -C Open a command line on the running " +"TTY\n" +" after startup\n" +"\n" +" -n Don't load default script file\n" + +#: ../src/daemon/cmdline.c:247 +msgid "--daemonize expects boolean argument" +msgstr "--daemonize-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:254 +msgid "--fail expects boolean argument" +msgstr "--fail-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:264 +msgid "" +"--log-level expects log level argument (either numeric in range 0..4 or one " +"of debug, info, notice, warn, error)." +msgstr "" +"--log-level-നു് ലോഗ് ലവല്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു് (ഒന്നുകില്‍ 0..4 വരെയുള്ള ന്യൂമറിക് പരിധി " +"അല്ലെങ്കില്‍ debug, info, notice, warn, error എന്നിവയില്‍ ഒന്നു്)." + +#: ../src/daemon/cmdline.c:276 +msgid "--high-priority expects boolean argument" +msgstr "--high-priority-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:283 +msgid "--realtime expects boolean argument" +msgstr "--realtime-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:290 +msgid "--disallow-module-loading expects boolean argument" +msgstr "--disallow-module-loading-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:297 +msgid "--disallow-exit expects boolean argument" +msgstr "--disallow-exit-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:304 +msgid "--use-pid-file expects boolean argument" +msgstr "--use-pid-file-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:321 +msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'." +msgstr "തെറ്റായ ലോഗ് ടാര്‍ഗറ്റ്: 'syslog', 'stderr' അല്ലെങ്കില്‍ 'auto' ഉപയോഗിക്കുക." + +#: ../src/daemon/cmdline.c:328 +msgid "--log-time expects boolean argument" +msgstr "--log-time-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:335 +msgid "--log-meta expects boolean argument" +msgstr "--log-meta-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:354 +#, c-format +msgid "Invalid resample method '%s'." +msgstr "തെറ്റായ റീസാംപിള്‍ മാര്‍ഗ്ഗം '%s'." + +#: ../src/daemon/cmdline.c:361 +msgid "--system expects boolean argument" +msgstr "--system-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:368 +msgid "--no-cpu-limit expects boolean argument" +msgstr "--no-cpu-limit-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/cmdline.c:375 +msgid "--disable-shm expects boolean argument" +msgstr "--disable-shm-നു് ബൂളിയന്‍ ആര്‍ഗ്യുമെന്റ് ആവശ്യമുണ്ടു്" + +#: ../src/daemon/dumpmodules.c:60 +#, c-format +msgid "Name: %s\n" +msgstr "പേരു്: %s\n" + +#: ../src/daemon/dumpmodules.c:63 +#, c-format +msgid "No module information available\n" +msgstr "ഘടകത്തെപ്പറ്റിയുള്ള വിവരം ലഭ്യമല്ല\n" + +#: ../src/daemon/dumpmodules.c:66 +#, c-format +msgid "Version: %s\n" +msgstr "പതിപ്പു്: %s\n" + +#: ../src/daemon/dumpmodules.c:68 +#, c-format +msgid "Description: %s\n" +msgstr "വിവരണം: %s\n" + +#: ../src/daemon/dumpmodules.c:70 +#, c-format +msgid "Author: %s\n" +msgstr "രചയിതാവു്: %s\n" + +#: ../src/daemon/dumpmodules.c:72 +#, c-format +msgid "Usage: %s\n" +msgstr "ഉപയോഗം: %s\n" + +#: ../src/daemon/dumpmodules.c:73 +#, c-format +msgid "Load Once: %s\n" +msgstr "ഒരിക്കല്‍ ലഭ്യമാക്കുക: %s\n" + +#: ../src/daemon/dumpmodules.c:75 +#, c-format +msgid "DEPRECATION WARNING: %s\n" +msgstr "DEPRECATION WARNING: %s\n" + +#: ../src/daemon/dumpmodules.c:79 +#, c-format +msgid "Path: %s\n" +msgstr "പാഥ്: %s\n" + +#: ../src/daemon/daemon-conf.c:232 +#, c-format +msgid "[%s:%u] Invalid log target '%s'." +msgstr "[%s:%u] തെറ്റായ ലോഗ് ടാര്‍ഗറ്റ് '%s'." + +#: ../src/daemon/daemon-conf.c:248 +#, c-format +msgid "[%s:%u] Invalid log level '%s'." +msgstr "[%s:%u] തെറ്റായ ലോഗ് ലവല്‍ '%s'." + +#: ../src/daemon/daemon-conf.c:264 +#, c-format +msgid "[%s:%u] Invalid resample method '%s'." +msgstr "[%s:%u] തെറ്റായ റീസാംപിള്‍ മാര്‍ഗ്ഗം '%s'." + +#: ../src/daemon/daemon-conf.c:287 +#, c-format +msgid "[%s:%u] Invalid rlimit '%s'." +msgstr "[%s:%u] അസാധുവായ rlimit '%s'." + +#: ../src/daemon/daemon-conf.c:294 +#, c-format +msgid "[%s:%u] rlimit not supported on this platform." +msgstr "[%s:%u] ഈ പ്ലാറ്റ്ഫോമില്‍ rlimit-നുള്ള പിന്തുണ ലഭ്യമല്ല." + +#: ../src/daemon/daemon-conf.c:310 +#, c-format +msgid "[%s:%u] Invalid sample format '%s'." +msgstr "[%s:%u] തെറ്റായ സാംപിള്‍ മാതൃക '%s'." + +#: ../src/daemon/daemon-conf.c:328 +#, c-format +msgid "[%s:%u] Invalid sample rate '%s'." +msgstr "[%s:%u] തെറ്റായ സാംപിള്‍ റേറ്റ് '%s'." + +#: ../src/daemon/daemon-conf.c:352 +#, c-format +msgid "[%s:%u] Invalid sample channels '%s'." +msgstr "[%s:%u] തെറ്റായ സാംപിള്‍ ചാനലുകള്‍ '%s'." + +#: ../src/daemon/daemon-conf.c:370 +#, c-format +msgid "[%s:%u] Invalid channel map '%s'." +msgstr "[%s:%u] അസാധുവായ ചാനല്‍ മാപ്പ് '%s'." + +#: ../src/daemon/daemon-conf.c:388 +#, c-format +msgid "[%s:%u] Invalid number of fragments '%s'." +msgstr "[%s:%u] '%s' ഫ്രാഗ്മെന്റുകളുടെ തെറ്റായ എണ്ണം." + +#: ../src/daemon/daemon-conf.c:406 +#, c-format +msgid "[%s:%u] Invalid fragment size '%s'." +msgstr "[%s:%u] തെറ്റായ ഫ്രാഗ്മെന്റ് വ്യാപ്തി '%s'." + +#: ../src/daemon/daemon-conf.c:424 +#, c-format +msgid "[%s:%u] Invalid nice level '%s'." +msgstr "[%s:%u] അസാധുവായ nice സ്ഥാനം '%s'." + +#: ../src/daemon/daemon-conf.c:546 +#, c-format +msgid "Failed to open configuration file: %s" +msgstr "ക്രമീകരണ ഫയല്‍ തുറക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/daemon/daemon-conf.c:562 +msgid "" +"The specified default channel map has a different number of channels than " +"the specified default number of channels." +msgstr "" +"വ്യക്തമാക്കിയിട്ടുള്ള സ്വതവേയുള്ള ചാനല്‍ മാപ്പിനുള്ള ചാനലുകളുടെ എണ്ണം നല്‍കിയിരിക്കുന്ന സ്വതവേയുള്ള " +"ചാനലുകളുടെ എണ്ണത്തേക്കാള്‍ വ്യത്യസ്ഥമാണു്." + +#: ../src/daemon/daemon-conf.c:638 +#, c-format +msgid "### Read from configuration file: %s ###\n" +msgstr "### ക്രമീകരണ ഫയലില്‍ നിന്നും ലഭ്യമാക്കുക: %s ###\n" + +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "അനുമതികള്‍ വെടിപ്പാക്കുന്നു." + +#: ../src/daemon/pulseaudio.desktop.in.h:1 +msgid "PulseAudio Sound System" +msgstr "PulseAudio സൌണ്ട് സിസ്റ്റം" + +#: ../src/daemon/pulseaudio.desktop.in.h:2 +msgid "Start the PulseAudio Sound System" +msgstr "PulseAudio സൌണ്ട് സിസ്റ്റം ആരംഭിക്കുക" + +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 +msgid "Mono" +msgstr "മോണോ" + +#: ../src/pulse/channelmap.c:107 +msgid "Front Center" +msgstr "മദ്ധ്യം മുന്നില്‍" + +#: ../src/pulse/channelmap.c:108 +msgid "Front Left" +msgstr "ഇടതു്് മുന്നില്‍" + +#: ../src/pulse/channelmap.c:109 +msgid "Front Right" +msgstr "വലതു് മുന്നില്‍" + +#: ../src/pulse/channelmap.c:111 +msgid "Rear Center" +msgstr "മദ്ധ്യം അവസാനം" + +#: ../src/pulse/channelmap.c:112 +msgid "Rear Left" +msgstr "ഇടതു് അവസാനം" + +#: ../src/pulse/channelmap.c:113 +msgid "Rear Right" +msgstr "വലതു് അവസാനം" + +#: ../src/pulse/channelmap.c:115 +msgid "Low Frequency Emmiter" +msgstr "ലോ ഫ്രീക്വന്‍സി എമ്മിറ്റര്‍" + +#: ../src/pulse/channelmap.c:117 +msgid "Front Left-of-center" +msgstr "മുമ്പില്‍ ഇടതു് മദ്ധ്യം" + +#: ../src/pulse/channelmap.c:118 +msgid "Front Right-of-center" +msgstr "മുമ്പില്‍ വലതു് മദ്ധ്യം" + +#: ../src/pulse/channelmap.c:120 +msgid "Side Left" +msgstr "ഇടത്തു് വശം" + +#: ../src/pulse/channelmap.c:121 +msgid "Side Right" +msgstr "വലത്തു് വശം" + +#: ../src/pulse/channelmap.c:123 +msgid "Auxiliary 0" +msgstr "ഓക്സിലറി 0" + +#: ../src/pulse/channelmap.c:124 +msgid "Auxiliary 1" +msgstr "ഓക്സിലറി 1" + +#: ../src/pulse/channelmap.c:125 +msgid "Auxiliary 2" +msgstr "ഓക്സിലറി 2" + +#: ../src/pulse/channelmap.c:126 +msgid "Auxiliary 3" +msgstr "ഓക്സിലറി 3" + +#: ../src/pulse/channelmap.c:127 +msgid "Auxiliary 4" +msgstr "ഓക്സിലറി 4" + +#: ../src/pulse/channelmap.c:128 +msgid "Auxiliary 5" +msgstr "ഓക്സിലറി 5" + +#: ../src/pulse/channelmap.c:129 +msgid "Auxiliary 6" +msgstr "ഓക്സിലറി 6" + +#: ../src/pulse/channelmap.c:130 +msgid "Auxiliary 7" +msgstr "ഓക്സിലറി 7" + +#: ../src/pulse/channelmap.c:131 +msgid "Auxiliary 8" +msgstr "ഓക്സിലറി 8" + +#: ../src/pulse/channelmap.c:132 +msgid "Auxiliary 9" +msgstr "ഓക്സിലറി 9" + +#: ../src/pulse/channelmap.c:133 +msgid "Auxiliary 10" +msgstr "ഓക്സിലറി 10" + +#: ../src/pulse/channelmap.c:134 +msgid "Auxiliary 11" +msgstr "ഓക്സിലറി 11" + +#: ../src/pulse/channelmap.c:135 +msgid "Auxiliary 12" +msgstr "ഓക്സിലറി 12" + +#: ../src/pulse/channelmap.c:136 +msgid "Auxiliary 13" +msgstr "ഓക്സിലറി 13" + +#: ../src/pulse/channelmap.c:137 +msgid "Auxiliary 14" +msgstr "ഓക്സിലറി 14" + +#: ../src/pulse/channelmap.c:138 +msgid "Auxiliary 15" +msgstr "ഓക്സിലറി 15" + +#: ../src/pulse/channelmap.c:139 +msgid "Auxiliary 16" +msgstr "ഓക്സിലറി 16" + +#: ../src/pulse/channelmap.c:140 +msgid "Auxiliary 17" +msgstr "ഓക്സിലറി 17" + +#: ../src/pulse/channelmap.c:141 +msgid "Auxiliary 18" +msgstr "ഓക്സിലറി 18" + +#: ../src/pulse/channelmap.c:142 +msgid "Auxiliary 19" +msgstr "ഓക്സിലറി 19" + +#: ../src/pulse/channelmap.c:143 +msgid "Auxiliary 20" +msgstr "ഓക്സിലറി 20" + +#: ../src/pulse/channelmap.c:144 +msgid "Auxiliary 21" +msgstr "ഓക്സിലറി 21" + +#: ../src/pulse/channelmap.c:145 +msgid "Auxiliary 22" +msgstr "ഓക്സിലറി 22" + +#: ../src/pulse/channelmap.c:146 +msgid "Auxiliary 23" +msgstr "ഓക്സിലറി 23" + +#: ../src/pulse/channelmap.c:147 +msgid "Auxiliary 24" +msgstr "ഓക്സിലറി 24" + +#: ../src/pulse/channelmap.c:148 +msgid "Auxiliary 25" +msgstr "ഓക്സിലറി 25" + +#: ../src/pulse/channelmap.c:149 +msgid "Auxiliary 26" +msgstr "ഓക്സിലറി 26" + +#: ../src/pulse/channelmap.c:150 +msgid "Auxiliary 27" +msgstr "ഓക്സിലറി 27" + +#: ../src/pulse/channelmap.c:151 +msgid "Auxiliary 28" +msgstr "ഓക്സിലറി 28" + +#: ../src/pulse/channelmap.c:152 +msgid "Auxiliary 29" +msgstr "ഓക്സിലറി 29" + +#: ../src/pulse/channelmap.c:153 +msgid "Auxiliary 30" +msgstr "ഓക്സിലറി 30" + +#: ../src/pulse/channelmap.c:154 +msgid "Auxiliary 31" +msgstr "ഓക്സിലറി 31" + +#: ../src/pulse/channelmap.c:156 +msgid "Top Center" +msgstr "മുകളില്‍ മുമ്പില്‍" + +#: ../src/pulse/channelmap.c:158 +msgid "Top Front Center" +msgstr "മുകളില്‍ മുമ്പില്‍ മദ്ധ്യം" + +#: ../src/pulse/channelmap.c:159 +msgid "Top Front Left" +msgstr "മുകളില്‍ മുമ്പില്‍ ഇടത്തു്" + +#: ../src/pulse/channelmap.c:160 +msgid "Top Front Right" +msgstr "മുകളില്‍ മുമ്പില്‍ വലത്തു്" + +#: ../src/pulse/channelmap.c:162 +msgid "Top Rear Center" +msgstr "മുകളില്‍ അവസാനം മദ്ധ്യം" + +#: ../src/pulse/channelmap.c:163 +msgid "Top Rear Left" +msgstr "മുകളില്‍ അവസാനം ഇടത്തു്" + +#: ../src/pulse/channelmap.c:164 +msgid "Top Rear Right" +msgstr "മുകളില്‍ അവസാനം വലത്തു്" + +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 +msgid "(invalid)" +msgstr "(അസാധു)" + +#: ../src/pulse/channelmap.c:761 +msgid "Stereo" +msgstr "സ്റ്റീരിയോ" + +#: ../src/pulse/channelmap.c:766 +msgid "Surround 4.0" +msgstr "സറൌണ്ട് 4.0" + +#: ../src/pulse/channelmap.c:772 +msgid "Surround 4.1" +msgstr "സറൌണ്ട് 4.1" + +#: ../src/pulse/channelmap.c:778 +msgid "Surround 5.0" +msgstr "സറൌണ്ട് 5.0" + +#: ../src/pulse/channelmap.c:784 +msgid "Surround 5.1" +msgstr "സറൌണ്ട് 5.1" + +#: ../src/pulse/channelmap.c:791 +msgid "Surround 7.1" +msgstr "സറൌണ്ട് 7.1" + +#: ../src/pulse/error.c:43 +msgid "OK" +msgstr "ശരി" + +#: ../src/pulse/error.c:44 +msgid "Access denied" +msgstr "അനുമതി നിഷേധിച്ചിരിക്കുന്നു" + +#: ../src/pulse/error.c:45 +msgid "Unknown command" +msgstr "അപരിചിതമായ കമാന്‍ഡ്" + +#: ../src/pulse/error.c:46 +msgid "Invalid argument" +msgstr "തെറ്റായ ആര്‍ഗ്യുമെന്റ്" + +#: ../src/pulse/error.c:47 +msgid "Entity exists" +msgstr "എന്റിറ്റി നിലവിലുണ്ടു്" + +#: ../src/pulse/error.c:48 +msgid "No such entity" +msgstr "അത്തരം എന്റിറ്റിയില്ല" + +#: ../src/pulse/error.c:49 +msgid "Connection refused" +msgstr "കണക്ഷന്‍ നിഷേധിച്ചിരിക്കുന്നു" + +#: ../src/pulse/error.c:50 +msgid "Protocol error" +msgstr "പ്രോട്ടോക്കോളില്‍ പിശക്" + +#: ../src/pulse/error.c:51 +msgid "Timeout" +msgstr "സമയം കഴിഞ്ഞിരിക്കുന്നു" + +#: ../src/pulse/error.c:52 +msgid "No authorization key" +msgstr "ഓഥറൈസേഷന്‍ കീ നിലവിലില്ല" + +#: ../src/pulse/error.c:53 +msgid "Internal error" +msgstr "ആന്തരിക പിശക്" + +#: ../src/pulse/error.c:54 +msgid "Connection terminated" +msgstr "കണക്ഷന്‍ വിഛേദിച്ചിരിക്കുന്നു" + +#: ../src/pulse/error.c:55 +msgid "Entity killed" +msgstr "എന്റിറ്റി ഇല്ലാതാക്കിയിരിക്കുന്നു" + +#: ../src/pulse/error.c:56 +msgid "Invalid server" +msgstr "തെറ്റായ സര്‍വര്‍" + +#: ../src/pulse/error.c:57 +msgid "Module initalization failed" +msgstr "ഘടകം ആരംഭിക്കുന്നതില്‍ പരാജയപ്പെട്ടു" + +#: ../src/pulse/error.c:58 +msgid "Bad state" +msgstr "തെറ്റായ അവസ്ഥ" + +#: ../src/pulse/error.c:59 +msgid "No data" +msgstr "ഡേറ്റാ ലഭ്യമല്ല" + +#: ../src/pulse/error.c:60 +msgid "Incompatible protocol version" +msgstr "പൊരുത്തപ്പെടാത്ത പ്രോട്ടോക്കോള്‍ പതിപ്പു്" + +#: ../src/pulse/error.c:61 +msgid "Too large" +msgstr "വളരെ വലുതു്" + +#: ../src/pulse/error.c:62 +msgid "Not supported" +msgstr "പിന്തുണ ലഭ്യമല്ല" + +#: ../src/pulse/error.c:63 +msgid "Unknown error code" +msgstr "അപരിചിതമായ പിശക് കോഡ്" + +#: ../src/pulse/error.c:64 +msgid "No such extension" +msgstr "അത്തരം എക്സ്റ്റെന്‍ഷന്‍ ലഭ്യമല്ല" + +#: ../src/pulse/error.c:65 +msgid "Obsolete functionality" +msgstr "ഇല്ലാതാക്കിയ വിശേഷത" + +#: ../src/pulse/error.c:66 +msgid "Missing implementation" +msgstr "പ്രവര്‍ത്തനം ലഭ്യമല്ല" + +#: ../src/pulse/error.c:67 +msgid "Client forked" +msgstr "ക്ലൈന്റ് ഫോര്‍ക്ക് ചെയ്തിരിക്കുന്നു" + +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 +#, c-format +msgid "%s %uch %uHz" +msgstr "%s %uch %uHz" + +#: ../src/pulse/sample.c:184 +#, c-format +msgid "%0.1f GiB" +msgstr "%0.1f GiB" + +#: ../src/pulse/sample.c:186 +#, c-format +msgid "%0.1f MiB" +msgstr "%0.1f MiB" + +#: ../src/pulse/sample.c:188 +#, c-format +msgid "%0.1f KiB" +msgstr "%0.1f KiB" + +#: ../src/pulse/sample.c:190 +#, c-format +msgid "%u B" +msgstr "%u B" + +#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100 +msgid "XOpenDisplay() failed" +msgstr "XOpenDisplay() പരാജയപ്പെട്ടു" + +#: ../src/pulse/client-conf-x11.c:93 +msgid "Failed to parse cookie data" +msgstr "കുക്കി ഡേറ്റാ പാഴ്സ് ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു" + +#: ../src/pulse/client-conf.c:111 +#, c-format +msgid "Failed to open configuration file '%s': %s" +msgstr "ക്രമീകരണ ഫയല്‍ '%s' തുറക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/pulse/context.c:550 +msgid "No cookie loaded. Attempting to connect without." +msgstr "ഒരു കുക്കിയും ലഭ്യമല്ല. അതില്ലാതെ കണക്ട് ചെയ്യുവാന്‍‌ ശ്രമിക്കുന്നു." + +#: ../src/pulse/context.c:693 +#, c-format +msgid "fork(): %s" +msgstr "fork(): %s" + +#: ../src/pulse/context.c:748 +#, c-format +msgid "waitpid(): %s" +msgstr "waitpid(): %s" + +#: ../src/pulse/context.c:1435 +#, c-format +msgid "Received message for unknown extension '%s'" +msgstr "അപരിചിതമായ എക്സ്റ്റെന്‍ഷന്‍ '%s'-നുള്ള സന്ദേശം ലഭിച്ചിരിക്കുന്നു" + +#: ../src/utils/pacat.c:108 +#, c-format +msgid "Failed to drain stream: %s" +msgstr "സ്ട്രീം ഡ്രെയിന്‍ ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "പ്ലേബാക്ക് സ്ട്രീം ഡ്രെയിന്‍ ചെയ്തിരിക്കുന്നു." + +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "സര്‍വറിലേക്കുള്ള കണക്ഷന്‍ ഡ്രെയിന്‍ ചെയ്യുന്നു." + +#: ../src/utils/pacat.c:136 +#, c-format +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" + +#: ../src/utils/pacat.c:159 +#, c-format +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:197 +#, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, c-format +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "സ്ട്രീം വിജയകരമായി ഉണ്ടാക്കിയിരിക്കുന്നു." + +#: ../src/utils/pacat.c:310 +#, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:314 +#, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "ബഫര്‍ മെട്രിക്സ്: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" + +#: ../src/utils/pacat.c:317 +#, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "ബഫര്‍ മെട്രിക്സ്: maxlength=%u, fragsize=%u" + +#: ../src/utils/pacat.c:321 +#, c-format +msgid "Using sample spec '%s', channel map '%s'." +msgstr "സാംപിള്‍ സ്പെക് '%s', ചാനല്‍ മാപ്പ് '%s' ഉപയോഗിക്കുന്നു." + +#: ../src/utils/pacat.c:325 +#, c-format +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "ഡിവൈസ് %s-ലേക്ക് കണക്ട് ചെയ്തിരിക്കുന്നു (%u, %ssuspended)." + +#: ../src/utils/pacat.c:335 +#, c-format +msgid "Stream error: %s" +msgstr "സ്ട്രീം പിശക്: %s" + +#: ../src/utils/pacat.c:345 +#, c-format +msgid "Stream device suspended.%s" +msgstr "സ്ട്രീം ഡിവൈസ് സസ്പെന്‍ഡ് ചെയ്തിരിക്കുന്നു.%s" + +#: ../src/utils/pacat.c:347 +#, c-format +msgid "Stream device resumed.%s" +msgstr "സ്ട്രീം ഡിവൈസ് വീണ്ടും ആരംഭിച്ചിരിക്കുന്നു.%s" + +#: ../src/utils/pacat.c:355 +#, c-format +msgid "Stream underrun.%s" +msgstr "സ്ട്രീം അണ്ടര്‍റണ്‍.%s" + +#: ../src/utils/pacat.c:362 +#, c-format +msgid "Stream overrun.%s" +msgstr "സ്ട്രീ ഓവര്‍റണ്‍.%s" + +#: ../src/utils/pacat.c:369 +#, c-format +msgid "Stream started.%s" +msgstr "സ്ട്രീം ആരംഭിച്ചിരിക്കുന്നു.%s" + +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "ഡിവൈസ് %s-ലേക്ക് സ്ട്രീം നീക്കം ചെയ്തിരിക്കുന്നു (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 +msgid "not " +msgstr "അല്ല" + +#: ../src/utils/pacat.c:383 +#, c-format +msgid "Stream buffer attributes changed.%s" +msgstr "സ്ട്രീം ബഫര്‍ വിശേഷതകള്‍ മാറ്റിയിരിക്കുന്നു.%s" + +#: ../src/utils/pacat.c:415 +#, c-format +msgid "Connection established.%s" +msgstr "കണക്ഷന്‍ സ്ഥാപിച്ചിരിക്കുന്നു.%s" + +#: ../src/utils/pacat.c:418 +#, c-format +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:446 +#, c-format +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:452 +#, c-format +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, c-format +msgid "Connection failure: %s" +msgstr "കണക്ഷനില്‍ തകരാര്‍: %s" + +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF ലഭ്യമായിരിക്കുന്നു" + +#: ../src/utils/pacat.c:536 +#, c-format +msgid "write() failed: %s" +msgstr "write() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "സിഗ്നല്‍ ലഭ്യമായി, പുറത്തു് കടക്കുന്നു." + +#: ../src/utils/pacat.c:571 +#, c-format +msgid "Failed to get latency: %s" +msgstr "ലാറ്റന്‍സി ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:576 +#, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "സമയം: %0.3f sec; ലാറ്റന്‍സി: %0.0f usec." + +#: ../src/utils/pacat.c:595 +#, c-format +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:605 +#, c-format +msgid "" +"%s [options]\n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +"\n" +" -r, --record Create a connection for recording\n" +" -p, --playback Create a connection for playback\n" +"\n" +" -v, --verbose Enable verbose operations\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -d, --device=DEVICE The name of the sink/source to " +"connect to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" +" --stream-name=NAME How to call this stream on the " +"server\n" +" --volume=VOLUME Specify the initial (linear) volume " +"in range 0...65536\n" +" --rate=SAMPLERATE The sample rate in Hz (defaults to " +"44100)\n" +" --format=SAMPLEFORMAT The sample type, one of s16le, " +"s16be, u8, float32le,\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" +" --channels=CHANNELS The number of channels, 1 for mono, " +"2 for stereo\n" +" (defaults to 2)\n" +" --channel-map=CHANNELMAP Channel map to use instead of the " +"default\n" +" --fix-format Take the sample format from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-rate Take the sampling rate from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-channels Take the number of channels and the " +"channel map\n" +" from the sink the stream is being " +"connected to.\n" +" --no-remix Don't upmix or downmix channels.\n" +" --no-remap Map channels by index instead of " +"name.\n" +" --latency=BYTES Request the specified latency in " +"bytes.\n" +" --process-time=BYTES Request the specified process time " +"per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" +msgstr "" +"%s [options]\n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +"\n" +" -r, --record Create a connection for recording\n" +" -p, --playback Create a connection for playback\n" +"\n" +" -v, --verbose Enable verbose operations\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -d, --device=DEVICE The name of the sink/source to " +"connect to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" +" --stream-name=NAME How to call this stream on the " +"server\n" +" --volume=VOLUME Specify the initial (linear) volume " +"in range 0...65536\n" +" --rate=SAMPLERATE The sample rate in Hz (defaults to " +"44100)\n" +" --format=SAMPLEFORMAT The sample type, one of s16le, " +"s16be, u8, float32le,\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" +" --channels=CHANNELS The number of channels, 1 for mono, " +"2 for stereo\n" +" (defaults to 2)\n" +" --channel-map=CHANNELMAP Channel map to use instead of the " +"default\n" +" --fix-format Take the sample format from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-rate Take the sampling rate from the sink " +"the stream is\n" +" being connected to.\n" +" --fix-channels Take the number of channels and the " +"channel map\n" +" from the sink the stream is being " +"connected to.\n" +" --no-remix Don't upmix or downmix channels.\n" +" --no-remap Map channels by index instead of " +"name.\n" +" --latency=BYTES Request the specified latency in " +"bytes.\n" +" --process-time=BYTES Request the specified process time " +"per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" + +#: ../src/utils/pacat.c:727 +#, c-format +msgid "" +"pacat %s\n" +"Compiled with libpulse %s\n" +"Linked with libpulse %s\n" +msgstr "" +"pacat %s\n" +"libpulse %s-നൊപ്പം കംപൈല്‍ ചെയ്തിരിക്കുന്നു\n" +"libpulse %s-നൊപ്പം ലിങ്ക് ചെയ്തിരിക്കുന്നു\n" + +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 +#, c-format +msgid "Invalid client name '%s'" +msgstr "തെറ്റായ ക്ലൈന്റ് നാമം '%s'" + +#: ../src/utils/pacat.c:775 +#, c-format +msgid "Invalid stream name '%s'" +msgstr "തെറ്റായ സ്ട്രീം നാമം '%s'" + +#: ../src/utils/pacat.c:812 +#, c-format +msgid "Invalid channel map '%s'" +msgstr "തെറ്റായ ചാനല്‍ മാപ്പ് '%s'" + +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "തെറ്റായ ലാറ്റന്‍സി വിവരണം '%s'" + +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "തെറ്റായ പ്രക്രിയ സമയ വിവരണം '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "തെറ്റായ വിശേഷത '%s'" + +#: ../src/utils/pacat.c:877 +#, c-format +msgid "Unknown file format %s." +msgstr "അപരിചിതമായ ഫയല്‍ രീതി %s." + +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "തെറ്റായ മാതൃക വിവരണം" + +#: ../src/utils/pacat.c:906 +#, c-format +msgid "open(): %s" +msgstr "open(): %s" + +#: ../src/utils/pacat.c:911 +#, c-format +msgid "dup2(): %s" +msgstr "dup2(): %s" + +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "അനവധി ആര്‍ഗ്യുമെന്റുകള്‍." + +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "ഫയലിനുള്ള സാംപിള്‍ വിവരണം ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ഓ‍ഡിയോ ഫയല്‍ തുറക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:955 +msgid "" +"Warning: specified sample specification will be overwritten with " +"specification from file." +msgstr "" +"മുന്നറിയിപ്പു്: ഫയലില്‍ നിന്നുള്ള വിവരണം വ്യക്തമാക്കിയിരിക്കുന്ന സാംപിള്‍ വിവരണം മാറ്റിയെഴുതുന്നു." + +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ഫയലില്‍ നിന്നും സാംപിള്‍ വിവരണം ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "മുന്നറിയിപ്പു്: ഫയലില്‍ നിന്നും ചാനല്‍ മാപ്പ് ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "ചാനല്‍ മാപ്പ് സാംപിള്‍ വിവരണവുമായി ചേരുന്നില്ല" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "മുന്നറിയിപ്പു്: ഫയലിലേക്ക് ചാനല്‍ മാപ്പ് സൂക്ഷിക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "%s സ്ട്രീം തുറക്കുന്നു. ഇതിന്റെ സാംപിള്‍ വിവരണം '%s'-ഉം ചാനല്‍ മാപ്പ് '%s'-ഉം ആണു്." + +#: ../src/utils/pacat.c:1005 +msgid "recording" +msgstr "റിക്കോര്‍ഡ് ചെയ്യുന്നു" + +#: ../src/utils/pacat.c:1005 +msgid "playback" +msgstr "പ്ലേബാക്ക്" + +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" +msgstr "pa_context_connect() പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() പരാജയപ്പെട്ടു." + +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() പരാജയപ്പെട്ടു." + +#: ../src/utils/pasuspender.c:81 +#, c-format +msgid "fork(): %s\n" +msgstr "fork(): %s\n" + +#: ../src/utils/pasuspender.c:92 +#, c-format +msgid "execvp(): %s\n" +msgstr "execvp(): %s\n" + +#: ../src/utils/pasuspender.c:109 +#, c-format +msgid "Failure to suspend: %s\n" +msgstr "സസ്പെന്‍ഡ് ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു: %s\n" + +#: ../src/utils/pasuspender.c:124 +#, c-format +msgid "Failure to resume: %s\n" +msgstr "വീണ്ടും ആരംഭിക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s\n" + +#: ../src/utils/pasuspender.c:147 +#, c-format +msgid "WARNING: Sound server is not local, not suspending.\n" +msgstr "മുന്നറിയിപ്പു്: ശബ്ദ സര്‍വര്‍ ലോക്കലല്ല, സസ്പെന്‍ഡ് ചെയ്യുന്നില്ല.\n" + +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "കണക്ഷനില്‍ തകരാര്‍: %s\n" + +#: ../src/utils/pasuspender.c:176 +#, c-format +msgid "Got SIGINT, exiting.\n" +msgstr "SIGINT ലഭിച്ചു, പുറത്തു് കടക്കുന്നു.\n" + +#: ../src/utils/pasuspender.c:194 +#, c-format +msgid "WARNING: Child process terminated by signal %u\n" +msgstr "മുന്നറിയിപ്പു്: %u സിഗ്നല്‍ വഴി ചൈള്‍ പ്രക്രിയ അവസാനിച്ചിരിക്കുന്നു\n" + +#: ../src/utils/pasuspender.c:212 +#, c-format +msgid "" +"%s [options] ... \n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +"\n" +msgstr "" +"%s [options] ... \n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +"\n" + +#: ../src/utils/pasuspender.c:248 +#, c-format +msgid "" +"pasuspender %s\n" +"Compiled with libpulse %s\n" +"Linked with libpulse %s\n" +msgstr "" +"pasuspender %s\n" +"libpulse %s-നൊപ്പം കംപൈല്‍ ചെയ്തിരിക്കുന്നു\n" +"libpulse %s-നൊപ്പം ലിങ്ക് ചെയ്തിരിക്കുന്നു\n" + +#: ../src/utils/pasuspender.c:277 +#, c-format +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() പരാജയപ്പെട്ടു.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() പരാജയപ്പെട്ടു..\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() പരാജയപ്പെട്ടു.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "സ്ഥിതിവിവരക്കണക്കുകള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:141 +#, c-format +msgid "Currently in use: %u blocks containing %s bytes total.\n" +msgstr "നിലവില്‍ ഉപയോഗത്തില്‍: %u ബ്ലോക്കുകള്‍, മൊത്തം %s ബൈറ്റുകള്‍ അടങ്ങുന്നു.\n" + +#: ../src/utils/pactl.c:144 +#, c-format +msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" +msgstr "കാലാവധിയ്ക്കുള്ളില്‍ അനുവദിക്കുന്നു: %u ബ്ലോക്കുകള്‍, മൊത്തം %s ബൈറ്റുകള്‍ അടങ്ങുന്നു.\n" + +#: ../src/utils/pactl.c:147 +#, c-format +msgid "Sample cache size: %s\n" +msgstr "സാംപിള്‍ കാഷ് വ്യപ്തി: %s\n" + +#: ../src/utils/pactl.c:156 +#, c-format +msgid "Failed to get server information: %s" +msgstr "സര്‍വര്‍ വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:164 +#, c-format +msgid "" +"User name: %s\n" +"Host Name: %s\n" +"Server Name: %s\n" +"Server Version: %s\n" +"Default Sample Specification: %s\n" +"Default Channel Map: %s\n" +"Default Sink: %s\n" +"Default Source: %s\n" +"Cookie: %08x\n" +msgstr "" +"User name: %s\n" +"Host Name: %s\n" +"Server Name: %s\n" +"Server Version: %s\n" +"Default Sample Specification: %s\n" +"Default Channel Map: %s\n" +"Default Sink: %s\n" +"Default Source: %s\n" +"Cookie: %08x\n" + +#: ../src/utils/pactl.c:205 +#, c-format +msgid "Failed to get sink information: %s" +msgstr "സിങ്ക് വിവരം ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:221 +#, c-format +msgid "" +"Sink #%u\n" +"\tState: %s\n" +"\tName: %s\n" +"\tDescription: %s\n" +"\tDriver: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tOwner Module: %u\n" +"\tMute: %s\n" +"\tVolume: %s%s%s\n" +"\t balance %0.2f\n" +"\tBase Volume: %s%s%s\n" +"\tMonitor Source: %s\n" +"\tLatency: %0.0f usec, configured %0.0f usec\n" +"\tFlags: %s%s%s%s%s%s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Sink #%u\n" +"\tState: %s\n" +"\tName: %s\n" +"\tDescription: %s\n" +"\tDriver: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tOwner Module: %u\n" +"\tMute: %s\n" +"\tVolume: %s%s%s\n" +"\t balance %0.2f\n" +"\tBase Volume: %s%s%s\n" +"\tMonitor Source: %s\n" +"\tLatency: %0.0f usec, configured %0.0f usec\n" +"\tFlags: %s%s%s%s%s%s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format +msgid "\tPorts:\n" +msgstr "\tപോര്‍ട്ടുകള്‍:\n" + +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tസജീവമായ പോര്‍ട്ട്: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "സോഴ്സ് വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:313 +#, c-format +msgid "" +"Source #%u\n" +"\tState: %s\n" +"\tName: %s\n" +"\tDescription: %s\n" +"\tDriver: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tOwner Module: %u\n" +"\tMute: %s\n" +"\tVolume: %s%s%s\n" +"\t balance %0.2f\n" +"\tBase Volume: %s%s%s\n" +"\tMonitor of Sink: %s\n" +"\tLatency: %0.0f usec, configured %0.0f usec\n" +"\tFlags: %s%s%s%s%s%s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Source #%u\n" +"\tState: %s\n" +"\tName: %s\n" +"\tDescription: %s\n" +"\tDriver: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tOwner Module: %u\n" +"\tMute: %s\n" +"\tVolume: %s%s%s\n" +"\t balance %0.2f\n" +"\tBase Volume: %s%s%s\n" +"\tMonitor of Sink: %s\n" +"\tLatency: %0.0f usec, configured %0.0f usec\n" +"\tFlags: %s%s%s%s%s%s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 +msgid "n/a" +msgstr "n/a" + +#: ../src/utils/pactl.c:375 +#, c-format +msgid "Failed to get module information: %s" +msgstr "ഘടക വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:393 +#, c-format +msgid "" +"Module #%u\n" +"\tName: %s\n" +"\tArgument: %s\n" +"\tUsage counter: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Module #%u\n" +"\tName: %s\n" +"\tArgument: %s\n" +"\tUsage counter: %s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:412 +#, c-format +msgid "Failed to get client information: %s" +msgstr "ക്ലൈന്റ് വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:430 +#, c-format +msgid "" +"Client #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Client #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:447 +#, c-format +msgid "Failed to get card information: %s" +msgstr "കാര്‍ഡ് വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:465 +#, c-format +msgid "" +"Card #%u\n" +"\tName: %s\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Card #%u\n" +"\tName: %s\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:479 +#, c-format +msgid "\tProfiles:\n" +msgstr "\tപ്രൊഫൈലുകള്‍:\n" + +#: ../src/utils/pactl.c:485 +#, c-format +msgid "\tActive Profile: %s\n" +msgstr "\tസജീവമായ പ്രൊഫൈല്‍: %s\n" + +#: ../src/utils/pactl.c:496 +#, c-format +msgid "Failed to get sink input information: %s" +msgstr "സിങ്ക് ഇന്‍പുട്ട് വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:515 +#, c-format +msgid "" +"Sink Input #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tClient: %s\n" +"\tSink: %u\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tMute: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balance %0.2f\n" +"\tBuffer Latency: %0.0f usec\n" +"\tSink Latency: %0.0f usec\n" +"\tResample method: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Sink Input #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tClient: %s\n" +"\tSink: %u\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tMute: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balance %0.2f\n" +"\tBuffer Latency: %0.0f usec\n" +"\tSink Latency: %0.0f usec\n" +"\tResample method: %s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:554 +#, c-format +msgid "Failed to get source output information: %s" +msgstr "സോഴ്സ് ഔട്ട്പുട്ട് വിവരം ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:574 +#, c-format +msgid "" +"Source Output #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tClient: %s\n" +"\tSource: %u\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tBuffer Latency: %0.0f usec\n" +"\tSource Latency: %0.0f usec\n" +"\tResample method: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Source Output #%u\n" +"\tDriver: %s\n" +"\tOwner Module: %s\n" +"\tClient: %s\n" +"\tSource: %u\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tBuffer Latency: %0.0f usec\n" +"\tSource Latency: %0.0f usec\n" +"\tResample method: %s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:605 +#, c-format +msgid "Failed to get sample information: %s" +msgstr "മാതൃകയുടെ വിവരങ്ങള്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:623 +#, c-format +msgid "" +"Sample #%u\n" +"\tName: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balance %0.2f\n" +"\tDuration: %0.1fs\n" +"\tSize: %s\n" +"\tLazy: %s\n" +"\tFilename: %s\n" +"\tProperties:\n" +"\t\t%s\n" +msgstr "" +"Sample #%u\n" +"\tName: %s\n" +"\tSample Specification: %s\n" +"\tChannel Map: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balance %0.2f\n" +"\tDuration: %0.1fs\n" +"\tSize: %s\n" +"\tLazy: %s\n" +"\tFilename: %s\n" +"\tProperties:\n" +"\t\t%s\n" + +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, c-format +msgid "Failure: %s" +msgstr "പരാജയം: %s" + +#: ../src/utils/pactl.c:687 +#, c-format +msgid "Failed to upload sample: %s" +msgstr "മാതൃക അപ്ലോഡ് ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു: %s" + +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "ഫയല്‍ അനുചിതമായ അവസാനം" + +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT ലഭ്യമായി, പുറത്തു് കടക്കുന്നു." + +#: ../src/utils/pactl.c:869 +#, c-format +msgid "" +"%s [options] stat\n" +"%s [options] list\n" +"%s [options] exit\n" +"%s [options] upload-sample FILENAME [NAME]\n" +"%s [options] play-sample NAME [SINK]\n" +"%s [options] remove-sample NAME\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" +"%s [options] load-module NAME [ARGS ...]\n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" +msgstr "" +"%s [options] stat\n" +"%s [options] list\n" +"%s [options] exit\n" +"%s [options] upload-sample FILENAME [NAME]\n" +"%s [options] play-sample NAME [SINK]\n" +"%s [options] remove-sample NAME\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" +"%s [options] load-module NAME [ARGS ...]\n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" +"\n" +" -h, --help Show this help\n" +" --version Show version\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" + +#: ../src/utils/pactl.c:933 +#, c-format +msgid "" +"pactl %s\n" +"Compiled with libpulse %s\n" +"Linked with libpulse %s\n" +msgstr "" +"pactl %s\n" +"libpulse %s-നൊപ്പം കംപൈല്‍ ചെയ്തിരിക്കുന്നു\n" +"libpulse %s-നൊപ്പം ലിങ്ക് ചെയ്തിരിക്കുന്നു\n" + +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "ലഭ്യമാക്കുന്നതിലുള്ള മാതൃകാ ഫയല്‍ ദയവായി വ്യക്തമാക്കുക" + +#: ../src/utils/pactl.c:992 +msgid "Failed to open sound file." +msgstr "ശബ്ദ ഫയല്‍ തുറക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "മുന്നറിയിപ്പു്: ഫയലില്‍ നിന്നും മാതൃകയുടെ വിവരണം കണ്ടുപിടിക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "പ്രവര്‍ത്തിപ്പിക്കുവാനുള്ള മാതൃകയുടെ പേരു് നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "നീക്കം ചെയ്യുന്നതിനുള്ള മാതൃകയുടെ പേരു് നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "ഒരു സിങ്ക് ഇന്‍പുട്ട് ഇന്‍ഡക്സും സിങ്കും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "ഒരു സോഴ്സ് ഔട്ട്പുട്ട് ഇന്‍ഡക്സും സോഴ്സും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "ഒരു മൌഡ്യൂള്‍ നാമവും ആര്‍ഗ്യുമെന്റുകളും നല്‍കേണ്ടതുണ്ടു്." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "ഒരു മൌഡ്യൂള്‍ ഇന്‍ഡക്സ് നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1090 +msgid "" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "" +"ഒരു സിങ്കില്‍ കൂടുതല്‍ നിങ്ങള്‍ നല്‍കേണ്ടതില്ല. കൂടാതെ, ഒരു ബൂളിയന്‍ മൂല്ല്യവും നിങ്ങള്‍ നല്‍കേണ്ടതാണു്." + +#: ../src/utils/pactl.c:1103 +msgid "" +"You may not specify more than one source. You have to specify a boolean " +"value." +msgstr "" +"ഒരു സോഴ്സില്‍ കൂടുതല്‍ നിങ്ങള്‍ നല്‍കേണ്ടതില്ല. കൂടാതെ, ഒരു ബൂളിയന്‍ മൂല്ല്യവും നിങ്ങള്‍ നല്‍കേണ്ടതാണു്." + +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "ഒരു കാര്‍ഡ് നാമം/ഇന്‍ഡക്സും പ്രൊഫൈല്‍ നാമവും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "ഒരു സിങ്ക് നാമം/ഇന്‍ഡക്സും പോര്‍ട്ട് നാമവും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "ഒരു സോഴ്സ് നാമം/ഇന്‍ഡക്സും പോര്‍ട്ട് നാമവും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "ഒരു സിങ്ക് നാമം/ഇന്‍ഡക്സും വോള്യവും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "തെറ്റായ വോള്യം വിവരണങ്ങള്‍" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "ഒരു സോഴ്സ് നാമം/ഇന്‍ഡക്സും വോള്യവും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "ഒരു സിങ്ക് ഇന്‍പുട്ട് ഇന്‍ഡക്സും വോള്യവും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "തെറ്റായ സിങ്ക് ഇന്‍പുട്ട് ഇന്‍ഡക്സ്" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "ഒരു സിങ്ക് നാമം/ഇന്‍ഡക്സും മ്യൂട്ട് ബൂളിയനും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "ഒരു സോഴ്സ് നാമം/ഇന്‍ഡക്സും മ്യൂട്ട് ബൂളിയനും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "ഒരു സിങ്ക് ഇന്‍പുട്ട് ഇന്‍ഡക്സും മ്യൂട്ട് ബൂളിയനും നല്‍കേണ്ടതുണ്ടു്" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "തെറ്റായ സിങ്ക് ഇന്‍പുട്ട് ഇന്‍ഡക്സ് സ്പെസിഫിക്കേഷന്‍" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "ശരിയായ കമാന്‍ഡുകള്‍ നല്‍കിയിട്ടില്ല." + +#: ../src/utils/pax11publish.c:61 +#, c-format +msgid "" +"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n" +"\n" +" -d Show current PulseAudio data attached to X11 display (default)\n" +" -e Export local PulseAudio data to X11 display\n" +" -i Import PulseAudio data from X11 display to local environment " +"variables and cookie file.\n" +" -r Remove PulseAudio data from X11 display\n" +msgstr "" +"%s [-D display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n" +"\n" +" -d Show current PulseAudio data attached to X11 display (default)\n" +" -e Export local PulseAudio data to X11 display\n" +" -i Import PulseAudio data from X11 display to local environment " +"variables and cookie file.\n" +" -r Remove PulseAudio data from X11 display\n" + +#: ../src/utils/pax11publish.c:94 +#, c-format +msgid "Failed to parse command line.\n" +msgstr "കമാന്‍ഡ് ലൈന്‍ പാഴ്സ് ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു.\n" + +#: ../src/utils/pax11publish.c:108 +#, c-format +msgid "Server: %s\n" +msgstr "സര്‍വര്‍: %s\n" + +#: ../src/utils/pax11publish.c:110 +#, c-format +msgid "Source: %s\n" +msgstr "സോഴ്സ്: %s\n" + +#: ../src/utils/pax11publish.c:112 +#, c-format +msgid "Sink: %s\n" +msgstr "സിങ്ക്: %s\n" + +#: ../src/utils/pax11publish.c:114 +#, c-format +msgid "Cookie: %s\n" +msgstr "കുക്കി: %s\n" + +#: ../src/utils/pax11publish.c:132 +#, c-format +msgid "Failed to parse cookie data\n" +msgstr "കുക്കീ ഡേറ്റാ പാഴ്സ് ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു\n" + +#: ../src/utils/pax11publish.c:137 +#, c-format +msgid "Failed to save cookie data\n" +msgstr "കുക്കീ ഡേറ്റാ സൂക്ഷിക്കുന്നതില്‍ പരാജയപ്പെട്ടു\n" + +#: ../src/utils/pax11publish.c:152 +#, c-format +msgid "Failed to load client configuration file.\n" +msgstr "ക്ലൈന്റ് ക്രമീകരണ ഫയല്‍ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു\n" + +#: ../src/utils/pax11publish.c:157 +#, c-format +msgid "Failed to read environment configuration data.\n" +msgstr "എന്‍വയോണ്മെന്റ് ക്രമീകരണ ഡേറ്റാ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു\n" + +#: ../src/utils/pax11publish.c:174 +#, c-format +msgid "Failed to get FQDN.\n" +msgstr "FQDN ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു\n" + +#: ../src/utils/pax11publish.c:194 +#, c-format +msgid "Failed to load cookie data\n" +msgstr "കുക്കീ ഡേറ്റാ ലഭ്യമാക്കുന്നതില്‍ പരാജയപ്പെട്ടു\n" + +#: ../src/utils/pax11publish.c:211 +#, c-format +msgid "Not yet implemented.\n" +msgstr "ഇതുവരെ ലഭ്യമാക്കിയിട്ടില്ല.\n" + +#: ../src/utils/pacmd.c:69 +msgid "No PulseAudio daemon running, or not running as session daemon." +msgstr "പള്‍സ്ഓഡിയോ ഡെമണ്‍ പ്രവര്‍ത്തനതിലില്ല, സെഷന്‍ ഡെമണായും പ്രവര്‍ത്തിക്കുന്നില്ല." + +#: ../src/utils/pacmd.c:74 +#, c-format +msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" +msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" + +#: ../src/utils/pacmd.c:91 +#, c-format +msgid "connect(): %s" +msgstr "connect(): %s" + +#: ../src/utils/pacmd.c:99 +msgid "Failed to kill PulseAudio daemon." +msgstr "പള്‍സ്ഓഡിയോ ഡെമണ്‍ ഇല്ലാതാക്കുന്നതില്‍ പരാജയപ്പെട്ടു." + +#: ../src/utils/pacmd.c:107 +msgid "Daemon not responding." +msgstr "ഡെമണ്‍ മറുപടി നല്‍കുന്നില്ല." + +#: ../src/utils/pacmd.c:161 +#, c-format +msgid "poll(): %s" +msgstr "poll(): %s" + +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 +#, c-format +msgid "read(): %s" +msgstr "read(): %s" + +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 +#, c-format +msgid "write(): %s" +msgstr "write(): %s" + +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 +msgid "Cannot access autospawn lock." +msgstr "ഓട്ടോസ്പൌണ്‍ ലോക്ക് ലഭ്യമാക്കുവാന്‍ സാധ്യമല്ല." + +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 +#, c-format +msgid "" +"ALSA woke us up to write new data to the device, but there was actually " +"nothing to write!\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers.\n" +"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " +"returned 0 or another value < min_avail." +msgstr "" +"ഡിവൈസില്‍ നിന്നും പുതിയ ഡേറ്റാ ലഭ്യമാക്കുന്നതിനായി ALSA നമുക്കു് അറിയിപ്പു് നല്‍കിയിരിക്കുന്നു, " +"പക്ഷേ ഡേറ്റാ ലഭ്യമല്ല!\n" +"ഇതു് ALSA ഡ്രൈവര്‍ '%s'-ലുള്ള ഒരു ബഗാവാം. ദയവായി ഈ പ്രശ്നം ALSA ഡവലപ്പര്‍സിനെ അറിയിക്കുക.\n" +"POLLOUT സെറ്റ് വഴി നമ്മെ അറിയിച്ചിരിക്കുന്നു -- പക്ഷേ, snd_pcm_avail() ലഭ്യമാക്കിയതു് 0 " +"അല്ലെങ്കില്‍ മറ്റൊരു മൂല്ല്യം < min_avail ആണു്." + +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 +#, c-format +msgid "" +"ALSA woke us up to read new data from the device, but there was actually " +"nothing to read!\n" +"Most likely this is a bug in the ALSA driver '%s'. Please report this issue " +"to the ALSA developers.\n" +"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " +"returned 0 or another value < min_avail." +msgstr "" +"ഡിവൈസില്‍ നിന്നും പുതിയ ഡേറ്റാ ലഭ്യമാക്കുന്നതിനായി ALSA നമുക്കു് അറിയിപ്പു് നല്‍കിയിരിക്കുന്നു, " +"പക്ഷേ ഡേറ്റാ ലഭ്യമല്ല!\n" +"ഇതു് ALSA ഡ്രൈവര്‍ '%s'-ലുള്ള ഒരു ബഗാവാം. ദയവായി ഈ പ്രശ്നം ALSA ഡവലപ്പര്‍സിനെ അറിയിക്കുക.\n" +"POLLIN സെറ്റ് വഴി നമ്മെ അറിയിച്ചിരിക്കുന്നു -- പക്ഷേ, snd_pcm_avail() ലഭ്യമാക്കിയതു് 0 " +"അല്ലെങ്കില്‍ മറ്റൊരു മൂല്ല്യം < min_avail ആണു്." + +#: ../src/modules/alsa/module-alsa-card.c:152 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 +msgid "Off" +msgstr "ഓഫ്" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 +msgid "High Fidelity Playback (A2DP)" +msgstr "ഹൈ ഫിഡലിറ്റി പ്ലേബാക്ക് (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "ഹൈ ഫിഡലിറ്റി കാപ്ചര്‍ (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 +msgid "Telephony Duplex (HSP/HFP)" +msgstr "ടെലിഫോണി ഡ്യൂപ്ലെക്സ് (HSP/HFP)" + +#: ../src/modules/reserve-wrap.c:151 +msgid "PulseAudio Sound Server" +msgstr "പള്‍സ്ഓഡിയോ സൌണ്ട് സര്‍വര്‍" diff --git a/po/mr.po b/po/mr.po index 6e3c759ac..0e7eda9d3 100644 --- a/po/mr.po +++ b/po/mr.po @@ -1,23 +1,29 @@ -# translation of pulseaudio.master-tx.pulseaudio.po to marathi +# translation of pulseaudio.master-tx.po to Marathi # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Sandeep Shedmake , 2009. +# Sandeep Shedmake , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" +"Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-06 13:43+0530\n" -"Last-Translator: Sandeep Shedmake \n" -"Language-Team: marathi\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 15:34+0530\n" +"Last-Translator: Sandeep Shedmake \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:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -29,7 +35,7 @@ msgstr "" "हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग अशू शकते. कृपया या अडचणीस ALSA डेव्हलपर करीता " "कळवा." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -41,7 +47,7 @@ msgstr "" "हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग अशू शकते. कृपया या अडचणीस ALSA डेव्हलपर करीता " "कळवा." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -53,9 +59,17 @@ msgstr "" "हे सहसा ALSA ड्राइवर '%s' अंतर्गत बग अशू शकते. कृपया या अडचणीस ALSA डेव्हलपर करीता " "कळवा." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "नल्ल असल्यावरही नेहमी किमान एक सींक लोड करून ठेवा" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "डम्मी आऊटपुट" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "आभासी LADSPA सींक" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -65,12 +79,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name=<सींक करीता नाव> sink_properties=<सींक करीता गुणधर्म> " +"master=<फिल्टरजोगी सींकचे नाव> format=<चाचणी रूपण> rate=<चाचणी दर> " +"channels=<वाहिनींची संख्या> channel_map=<वाहिनी नकाशा> plugin= label= control=<इंपुट कंट्रोल मुल्यांची स्वल्पविराम विभाजीत " +"सूची>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "क्लॉक्ड् NULL सींक" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "Null आऊटपुट" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "आंतरीक ऑडिओ" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "मोडेम" @@ -86,367 +113,247 @@ msgstr "नवीन dl दाखलकर्ता वाटप करण्य msgid "Failed to add bind-now-loader." msgstr "bind-now-loader समावेष करण्यास अपयशी." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "प्रणाली बसशी जुळवणी करण्यास अशक्य: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID पासून कॉलर प्राप्त करणे अशक्य: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "कॉलर ऑबजेक्ट वरील UID निश्चित करणे अशक्य." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK सत्र प्राप्त करणे अपयशी." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "सत्र ऑबजेक्ट वरील UID निश्चित करणे अशक्य." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction वाटप करणे अशक्य." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id निश्चित करणे अशक्य" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext वाटप करणे अशक्य." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext प्रारंभ करणे अशक्य: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "कॉलर अधिकृत आहे की नाही हे ओळखणे शक्य नाही: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "परवानगी प्राप्त करणे अशक्य: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit ने '%s' सह प्रतिसाद दिला" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "संकेत %s प्राप्त झाले." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "बाहेर पडत आहे." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "वापरकर्ता '%s' शोधणे अशक्य." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "गट '%s' शोधण्यास अपयशी." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "वापरकर्ता '%s' (UID %lu) व गट '%s' (GID %lu) आढळले." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "वापरकर्ता '%s' व गट '%s' चे GID जुळत नाही." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "वापरकर्ता '%s' ची मुख्य डिरेक्ट्री '%s' नाही, दुर्लक्ष करत आहे." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' बनवण्यास अपयशी: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "गट यादी बदलवण्यास अपयशी: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID बदलवण्यास अपयशी: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID बदलवण्यास अपयशी: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "रूट परवानगी यशस्वीरित्या वगळले." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "प्रणाली भर पद्धत या प्लॅटफॉर्म करीता समर्थीत नाही." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) अपयशी: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "आदेश ओळ वाचण्यास अपयशी." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "आपण गट '%s' अंतर्गत आहोत, उच्च-प्राधन्यक्रम वेळपत्रक करीता परवानगी देते." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "आपण गट '%s' अंतर्गत आहोत, रियल-टाईम वेळपत्रक करीता परवानगी देते." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit आपल्याला acquire-high-priority परवानगी देतो." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit acquire-high-priority परवानगी नकारतो." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit acquire-real-time परवानगी पुरवितो." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit acquire-real-time परवानगी नकारतो." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID रूटला कॉल केले व वास्तविक-वेळ व/किंवा संयोजना अंतर्गत उच्च-प्राधान्यक्रम वेळपत्रक " -"विनंतीकृत केले. तरी, आमच्याकडे आवश्यक परवानगी नाही:\n" -"आम्ही गट '%s' अंतर्गत नाही, PolicyKit ने विनंतीकृत परवानगी देण्यास नकार दिला व " -"RLIMIT_NICE/RLIMIT_RTPRIO स्त्रोत मर्यादा वाढविणे आवश्यक आहे.\n" -"रियल-टाइम/उच्च-प्राधान्यक्रम वेळपत्रक कार्यान्वीत करण्याकरीता कृपयायोग्य PolicyKit " -"परवानगी प्राप्त करा, किंवा '%s' चे सदस्य बनवा, किंवा या वापरकर्ता करीताRLIMIT_NICE/" -"RLIMIT_RTPRIO स्त्रोत मर्यादा वाढवा." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"संयोजना अंतर्गत उच्च-प्राधान्यक्रम वेळपत्रक कार्यान्वीत केले करार द्वारे स्वीकार्य नाही." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "यशस्वीरित्या RLIMIT_RTPRIO वाढवले" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO अपयशी: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE करीता प्रयत्न बंद केले" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"संयोजना अंतर्गत रियल-टाईम वेळपत्र कार्यान्वीत करत आहे परंतु करार द्वारे स्वीकार्य नाही." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "डिमन कार्यरत नाही" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "डिमन PID %u नुरूप कार्यरत आहे" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "डिमन नष्ट करण्यास अपयशी: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "हा कार्यक्रम रूट नुरूप चालविण्याकरीता नाही (जोपर्यंत --system निश्चित नाही)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "रूट परवानगी आवश्यक." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "प्रणाली घटनांकरीता --start समर्थीत नाही." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "प्रणाली पद्धती अंतर्गत कार्यरत, परंतु --disallow-exit निश्चित केले नाही!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "प्रणाली पद्धती अंतर्गत कार्यरत, परंतु --disallow-module-loading निश्चित केले नाही!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "प्रणाली पद्धती अंतर्गत कार्यरत, SHM पद्धत जबरनरित्या अकार्यान्वीत करत आहे!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "प्रणाली पद्धती अंतर्गत कार्यरत, रिकामे वेळ जबरनरित्या अकार्यान्वीत करत आहे!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio प्राप्त करण्यास अपयशी." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "पाइप अपयशी: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() अपयशी: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() अपयशी: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "डिमन स्टार्टअप अपयशी." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "डिमन स्टार्टअप यशस्वी." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "हे PulseAudio %s आहे" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "कंपाइलेशन यजमान: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "कंपाइलेशन CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "यजमान वर कार्यरत: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUs आढळले." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "पान आकार %lu बाईटस् आहे" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind समर्थनशी कंपाईल केले: होय" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind समर्थनशी कंपाईल केले: नाही" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind पद्धतीत कार्यरत: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "अनुकूल बिल्ड: होय" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "अनुकूल बिल्ड: नाही" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG वर्णीकृत, सर्व asserts अकार्यान्वीत." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH वर्णीकृत, फक्त जलद मार्गीय asserts अकार्यान्वीत केले." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "सर्व asserts कार्यान्वीत केले." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "मशीन ID प्राप्त करण्यास अपयशी" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "मशीन ID %s आहे." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "मशीन ID %s आहे." +msgstr "सत्र ID %s आहे." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "रनटाईम डिरेक्ट्री %s वापरत आहे." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "स्थिती डिरेक्ट्री %s वापरत आहे." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "घटक डिरेक्ट्री %s वापरत आहे." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "प्रणाली पद्धतीत कार्यरत: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -455,16 +362,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"ठिक आहे, तुम्ही PA प्रणाली मोडमध्ये चालवत आहात. कृपया लक्षात ठेवा असे करण्यास फारशी " +"आवश्यकता नाही.\n" +"असे कार्यान्वीत केल्यास, काहिक घटक योग्यप्रकारे कार्य नसेल करत असल्यास त्याला तुम्हीच " +"जबाबदार राहणार.\n" +"प्रणाली मोड दोकादायक आहे यासाठी कृपया http://pulseaudio.org/wiki/" +"WhatIsWrongWithSystemMode वाचा." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() अपयशी." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "नवीन उच्च-बिंदूता टाइमर उपलब्ध! Bon appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -472,27 +385,27 @@ msgstr "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() अपयशी." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "डिमन प्रारंभ करण्यास अपयशी." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "विना विभाग दाखल केल्यास डिमन प्रारंभ झाले, कार्य करण्यास नकार." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "डिमन स्टार्टअप पूर्ण झाले." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "डिमन पूर्णपणे बंद करण्यास प्रारंभ केले." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "डिमन नष्ट केले." @@ -742,79 +655,79 @@ msgstr "एकदा दाखल करा: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "DEPRECATION WARNING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "मार्ग: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] अवैध लॉग स्तर '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] अवैध पुन्ह सॅम्पल पद्धत '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] अवैध rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit या प्लॅटफॉर्म वर समर्थीत नाही." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] अवैध सॅम्पल स्वरूप '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] अवैध सॅम्पल दर '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] अवैध सॅम्पल मार्ग '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] अवैध मार्ग मॅप '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] अवैध तुकडे '%s' यांची एकूण संख्या." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] अवैध तुकड्याचे आकार '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] अवैध nice स्तर '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "संयोजना फाइल उघडण्यास अपयशी: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -822,18 +735,14 @@ msgstr "" "निश्चित मुलभूत वाहिनी मॅपकडे निश्चित एकूण मुलभूत वाहिनी पेक्षा वेगळे वाहिनी संख्या " "समाविष्टीत आहे." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### संयोजना फाइल: %s पासून वाचा ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "रुट परवानगी वगळत आहे." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "क्षमता यशस्वीरित्या CAP_SYS_NICE करीता मर्यादीत केले." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "परवानगी वगळत आहे." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -843,25 +752,7 @@ msgstr "PulseAudio आवाज प्रणाली" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio आवाज प्रणाली सुरू करा" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio डिमन करीता उच्च-प्राधान्यक्रम वेळपत्रक (नकारात्मक Unix nice स्तर)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio डिमन करीता रियल-टाइम वेळपत्रक" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "प्रणाली करार PulseAudio ला उच्च-प्राधान्यक्रम वेळपत्रक प्राप्त करण्यापासून रोखते." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "प्रणाली करार PulseAudio ला रियल-टाइम वेळपत्रक प्राप्त करण्यापासून रोखते." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "मोनो" @@ -891,7 +782,7 @@ msgstr "पाठीमागे उजवीकडे" #: ../src/pulse/channelmap.c:115 msgid "Low Frequency Emmiter" -msgstr "कमी क्रिक्वेन्सी स्त्रोत" +msgstr "कमी क्रिक्वेन्सी स्रोत" #: ../src/pulse/channelmap.c:117 msgid "Front Left-of-center" @@ -1065,33 +956,33 @@ msgstr "वरील पाठीमागचे डावे" msgid "Top Rear Right" msgstr "वरील पाठीमागचे उजवे" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(अवैध)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "स्टिरीओ" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "सराऊन्ड 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "सराऊन्ड 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "सराऊन्ड 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "सराऊन्ड 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "सराऊन्ड 7.1" @@ -1195,27 +1086,35 @@ msgstr "लागू केले आहे असे आढळले नाह msgid "Client forked" msgstr "क्लाऐंट विभाजीत केले" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1228,192 +1127,191 @@ msgstr "XOpenDisplay() अपयशी" msgid "Failed to parse cookie data" msgstr "कुकी डेटा वाचण्यास अपयशी" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "संयोजना फाइल '%s' उघडण्यास अपयशी: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "कुकी दाखल केले नाही. जुळवणीचा प्रयत्न करत आहे." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "अपरिचीत वाढ '%s' करीता संदेश प्राप्त झाले" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "स्ट्रीम रिकामे करण्यास अपयशी: %s\n" +msgid "Failed to drain stream: %s" +msgstr "स्ट्रीम रिकामे करण्यास अपयशी: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "प्लेबॅक स्ट्रीम रिकामे केले.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "प्लेबॅक स्ट्रीम रिकामे झाले." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "सर्वर करीता जुळवणी ड्रेन केली.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "सर्व्हर करीता जुळवणी ड्रेन केली." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() अपयशी: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() अपयशी: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() अपयशी: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() अपयशी: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "स्ट्रीम यशस्वीरित्या बनवले.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() अपयशी: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() अपयशी: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "स्ट्रीम यशस्वीरित्या निर्माण केले." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "बफर मेट्रीक: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() अपयशी: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "बफर मेट्रीक: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "बफर मेट्रीक्स्: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "उदाहरणतया spec '%s', वाहिनी नकाशा '%s' वापरत आहे.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "बफर मेट्रीक्स्: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "साधन %s शी जुळले (%u, %s सस्पेंड केले).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "उदाहरणार्थ spec '%s', वाहिनी नकाशा '%s' वापरत आहे." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "स्ट्रीम त्रुटी: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "साधन %s शी जुळले (%u, %s सस्पेंड केले)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "स्ट्रीम साधन सस्पेंड केले.%s \n" +msgid "Stream error: %s" +msgstr "स्ट्रीम त्रुटी: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "स्ट्रीम साधन पुन्हा सुरू केले.%s \n" +msgid "Stream device suspended.%s" +msgstr "स्ट्रीम साधन सस्पेंड केले.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "स्ट्रीम underrun.%s \n" +msgid "Stream device resumed.%s" +msgstr "स्ट्रीम साधन पुनः सुरू केले.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "स्ट्रीम overrun.%s \n" +msgid "Stream underrun.%s" +msgstr "स्ट्रीम underrun.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "स्ट्रीम सुरू केले.%s \n" +msgid "Stream overrun.%s" +msgstr "स्ट्रीम overrun.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "स्ट्रीम साधन %s कडे स्थानांतरीत केले (%u, %ssuspended).%s \n" +msgid "Stream started.%s" +msgstr "स्ट्रीम started.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "स्ट्रीम साधन %s कडे स्थानांतरीत केले (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "नाही " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "स्ट्रीम बफर गुणधर्म बदलले.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "स्ट्रीम बफर गुणधर्म बदलले.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "जुळवणी स्थापीत केली.%s \n" +msgid "Connection established.%s" +msgstr "जुळवणी स्थापीत केली.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() अपयशी: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() अपयशी: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() अपयशी: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() अपयशी: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() अपयशी: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() अपयशी: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "जुळवणी अपयशी: %s\n" +msgid "Connection failure: %s" +msgstr "जुळवणी अपयशी: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF प्राप्त झाले.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF प्राप्त झाले." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() अपयशी: %s\n" +msgid "write() failed: %s" +msgstr "write() अपयशी: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "संकेत प्राप्त झाले, बाहेर पडत आहे." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() अपयशी: %s\n" +msgid "Failed to get latency: %s" +msgstr "विलंब प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "संकेत प्राप्त झाले, बाहेर पडत आहे.\n" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "विलंब प्राप्त करण्यास अपयशी: %s\n" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "वेळ: %0.3f sec; विलंब: %0.0f usec." -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "वेळ: %0.3f sec; विलंब: %0.0f usec. \r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() अपयशी: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() अपयशी: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1495,8 +1393,10 @@ msgstr "" "44100)\n" " --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" " --channels=CHANNELS The number of channels, 1 for mono, " "2 for stereo\n" " (defaults to 2)\n" @@ -1519,6 +1419,11 @@ msgstr "" "bytes.\n" " --process-time=BYTES Request the specified process time " "per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1531,136 +1436,127 @@ msgstr "" "libpulse %s शी कंपाई केले\n" "libpulse %s शी लिंक केले\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "अवैध वाहिनी नकाशा '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "अवैध पुन्ह सॅम्पल पद्धत '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "अवैध वाहिनी नकाशा '%s'\n" +msgid "Invalid client name '%s'" +msgstr "अवैध क्लाएंटचे नाव '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "अवैध विलंब संयोजना '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "अवैध स्ट्रीमचे नाव '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "अवैध कार्य वेळ संयोजना '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "अवैध वाहिनी नकाशा '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "अवैध पुन्ह सॅम्पल पद्धत '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "अवैध विलंब संयोजना '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "अवैध कार्य वेळ संयोजना '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "अवैध गुणधर्म '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "अपरिचीत फाइल रूपण %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "अवैध सॅम्पल संयोजना\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "अवैध सॅम्पल संयोजना" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "खूप जास्त बाब.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "खूप जास्त बाब." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "सॅम्पल माहिती प्राप्त करण्यास अपयशी: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "फाइलसाठी सॅम्पल माहिती प्राप्त करण्यास अपयशी." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "आवाज फाइल उघडण्यास अपयशी.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "आवाज फाइल उघडण्यास अपयशी." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "सावधानता: निर्देशीत चाचणी संयोजना फाइलमधील संयोजनाशी खोडून पुनः लिहीली जाईल." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "सॅम्पल माहिती प्राप्त करण्यास अपयशी: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "फाइलपासून चाचणी संयोजना माहिती प्राप्त करण्यास अपयशी." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "सावधानता: फाइलपासून वाहिनी नकाशा ओळखण्यास अपयशी." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "वाहिनी नकाशा सॅम्पल संयोजनाशी जुळत नाही\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "वाहिनी नकाशा चाचणी संयोजनाशी जुळत नाही" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "सावधानता: वाहिनी नकाशा फाइलमध्ये लिहण्यास अपयशी." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "%s स्ट्रीम चाचणी संयोजना '%s' व वाहिनी नकाशा '%s' सह उघडत आहे." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "%s स्ट्रीम सॅम्पल संयोजना '%s' शी उघडत आहे.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "रेकॉर्डींग" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "प्लेबॅक" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() अपयशी." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() अपयशी." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() अपयशी." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() अपयशी.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() अपयशी.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() अपयशी.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() अपयशी: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() अपयशी.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rrttime_new() अपयशी." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() अपयशी.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() अपयशी." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1687,7 +1583,12 @@ msgstr "पुन्हा चालू करण्यास अपयशी: % msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "सावधानता: आवाज सर्वर स्थानीय नाही, सस्पेंड करत नाही.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "जुळवणी अपयशी: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT प्राप्त झाले, बाहेर पडत आहे.\n" @@ -1727,32 +1628,47 @@ msgstr "" "libpulse %s शी कंपाई केले\n" "libpulse %s शी लिंक केले\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "आकडेवारी प्राप्त करण्यास अपयशी: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() अपयशी.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() अपयशी.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() अपयशी.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "आकडेवारी प्राप्त करण्यास अपयशी: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "वर्तमानक्षणी वापरणीत आहे: %2$s बाईटस् समाविष्टीत एकूण %1$u ब्लॉक्स् .\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "संपूर्ण कार्यकाळवेळी लागू केले: %2$s बाईटस् समाविष्टीत एकूण %1$u ब्लॉक्स् .\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "सॅपल कॅशे आकार: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "सर्वर माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get server information: %s" +msgstr "सर्वर माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1771,16 +1687,16 @@ msgstr "" "सर्वर आवृत्ती: %s\n" "मुलभूत सॅम्पल संयोनजा: %s\n" "मुलभूत वाहिनी नकाशा: %s\n" -"मुलभूत सिंक: %s\n" -"मुलभूत स्त्रोत: %s\n" +"मुलभूत सींक: %s\n" +"मुलभूत स्रोत: %s\n" "कुकीज: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "sink माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get sink information: %s" +msgstr "sink माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1819,22 +1735,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format msgid "\tPorts:\n" -msgstr "\tसंक्षिप्त माहिती:\n" +msgstr "\tपोर्टस्:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tसक्रीय संक्षिप्त माहिती: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "स्त्रोत माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "\tActive Port: %s\n" +msgstr "\tसक्रीय पोर्ट: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "स्रोत माहिती प्राप्त करण्यास अपयशी: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1873,20 +1789,20 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "विभाग माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get module information: %s" +msgstr "विभाग माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1903,12 +1819,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "क्लाऐंट माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get client information: %s" +msgstr "क्लाऐंट माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1923,12 +1839,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "कार्ड माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get card information: %s" +msgstr "कार्ड माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1945,22 +1861,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tसंक्षिप्त माहिती:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tसक्रीय संक्षिप्त माहिती: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "सिंक इनपुट माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "सींक इंपुट माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1997,12 +1913,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "स्त्रोत आऊटपुट माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get source output information: %s" +msgstr "स्रोत आऊटपुट माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2031,12 +1947,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "सॅम्पल माहिती प्राप्त करण्यास अपयशी: %s\n" +msgid "Failed to get sample information: %s" +msgstr "सॅम्पल माहिती प्राप्त करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2067,22 +1983,26 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "अपयशी: %s\n" +msgid "Failure: %s" +msgstr "अपयशी: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "सॅम्पल अपलोड करण्यास अपयशी: %s\n" +msgid "Failed to upload sample: %s" +msgstr "सॅम्पल अपलोड करण्यास अपयशी: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "फाइलची अयोग्य समाप्ती\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "फाइलची अयोग्य समाप्ती" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT प्राप्त झाले, बाहेर पडत आहे." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2090,15 +2010,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2114,13 +2040,21 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2130,7 +2064,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2141,81 +2075,108 @@ msgstr "" "libpulse %s सह कंपाईल केले\n" "libpulse %s सह जुळले\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "कृपया दाखल करण्याजोगी तात्पूर्ती फाइल निश्चित करा\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "आवाज फाइल उघडण्यास अपयशी.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "%s स्ट्रीम सॅम्पल संयोजना '%s' शी उघडत आहे.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "चालविण्याकरीता तुम्हाला तात्पूर्ते नाव निश्चित करावे लागेल\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "काढूण टाकण्याकरीता तुम्हाला तात्पूर्ते नाव निश्चित करावे लागेल\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "तुम्हाला सिंक इनपुट निर्देशांक व सिंक निश्चित करावे लागेल\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "कृपया दाखल करण्याजोगी तात्पूर्ती फाइल निर्देशीत करा" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "तुम्हाला आऊट इनडेक्स स्त्रोत व स्त्रोत निश्चित करावे लागेल\n" +msgid "Failed to open sound file." +msgstr "आवाज फाइल उघडण्यास अपयशी." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "तुम्हाला विभागाचे नाव व बाब निश्चित करावे लागेल.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "सावधानता: फाइलपासून चाचणी संयोजना ओळखण्यास अपयशी." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "तुम्हाला विभाग निर्देशांक निश्चित करावे लागेल\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "चालवण्याकरीता तुम्हाला तात्पूर्ते नाव निश्चित करावे लागेल" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "काढून टाकण्याकरीता तुम्हाला तात्पूर्ते नाव निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "तुम्हाला सींक इंपुट निर्देशांक व सींक निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "तुम्हाला आऊटपुट इंडेक्स स्रोत व स्रोत निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "तुम्हाला विभागाचे नाव व बाब निश्चित करावे लागेल." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "तुम्हाला विभाग इंडेक्स् निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"तुम्ही एकापेक्षा जास्त सिंक निश्चित करू शकत नाही. तुम्हाला बूलीयन मूल्य निश्चित करावे " -"लागेल.\n" +"तुम्ही एकापेक्षा जास्त सींक निश्चित करू शकत नाही. तुम्हाला बूलीयन मूल्य निश्चित करावे लागेल." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"तुम्ही एकापेक्षा जास्त स्त्रोत निश्चित करू शकत नाही. तुम्हाला बूलीयन मूल्य निश्चित करावे " -"लागेल.\n" +"तुम्ही एकापेक्षा जास्त स्रोत निश्चित करू शकत नाही. तुम्हाला बूलीयन मूल्य निश्चित करावे लागेल." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "तुम्हाला कार्ड नाव/निर्देशांक व संक्षिप्त नाव निश्चित करावे\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "तुम्हाला कार्डचे नाव/इंडेक्स् व प्रोफाइल नाव निश्चित करावे लागेल" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "तुम्हाला कार्ड नाव/निर्देशांक व संक्षिप्त नाव निश्चित करावे\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "तुम्हाला सींक नाव/इंडेक्स् व पोर्टचे नाव निश्चित करावे लागेल" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "तुम्हाला कार्ड नाव/निर्देशांक व संक्षिप्त नाव निश्चित करावे\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "तुम्हाला स्रोत नाव/इंडेक्स् व पोर्टचे नाव निश्चित करावे लागेल" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "वैध आदेश निश्चित केले नाही.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "तुम्हाला सींक नाव/इंडेक्स् व पोर्टचे नाव निश्चित करावे लागेल" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() अपयशी: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "अवैध खंडाची संयोजना" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "तुम्हाला स्रोत नाव/इंडेक्स् व खंडाचे नाव निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "तुम्हाला सींक इंपुट इंडेक्स् व सींक निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "अवैध सींक इंपुट इंडेक्स्" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "तुम्हाला सींक नाव/इंडेक्स् व पोर्टचे नाव निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "तुम्हाला स्रोत नाव/इंडेक्स् व पोर्टचे नाव निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "तुम्हाला सींक इंपुट निर्देशांक व सींक निश्चित करावे लागेल" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "अवैध सींक इंपुट इंडेक्स् संयोजना" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "वैध आदेश निश्चित केले नाही." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2249,12 +2210,12 @@ msgstr "सर्वर: %s\n" #: ../src/utils/pax11publish.c:110 #, c-format msgid "Source: %s\n" -msgstr "स्त्रोत: %s\n" +msgstr "स्रोत: %s\n" #: ../src/utils/pax11publish.c:112 #, c-format msgid "Sink: %s\n" -msgstr "सिंक: %s\n" +msgstr "सींक: %s\n" #: ../src/utils/pax11publish.c:114 #, c-format @@ -2296,48 +2257,48 @@ msgstr "कुकी डेटा दाखल करण्यास अपय msgid "Not yet implemented.\n" msgstr "अजूनही लागू केले नाही.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "PulseAudio डिमन कार्यरत नाही, किंवा सत्र डिमन नुरूप कार्यरत नाही." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio डिमन पूर्णपणे नष्ट करण्यास अपयशी." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "डिमन प्रतिसाद देत नाही." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn कुलूप करीता प्रवेश प्राप्य अशक्य." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2352,7 +2313,7 @@ msgstr "" "POLLOUT द्वारे सज्ज होणे शक्य आहे -- तरी परस्पर snd_pcm_avail() ने 0 पूरविले किंवा इतर " "मूल्य < min_avail असावे." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2368,129 +2329,22 @@ msgstr "" "मूल्य < min_avail असावे." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "बंद करा" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" -msgstr "High Fidelity Playback (A2DP)" +msgstr "हाय फिडेलिटी प्लेबॅक (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "हाय फिडीलीटी कॅपचर (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" -msgstr "Telephony Duplex (HSP/HFP)" +msgstr "टेलिफोनी ड्युप्लेक्स् (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio आवाज सर्वर" - -#~ msgid "Analog Mono" -#~ msgstr "ऍनलॉग मोनो" - -#~ msgid "Analog Stereo" -#~ msgstr "ऍनलॉग स्टिरीओ" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "डिजीटल स्टिरीओ (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "डिजीटल स्टिरीओ (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "ऍनलॉग सराऊन्ड 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "डिजीटल सराऊन्ड 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "ऍनलॉग सराऊन्ड 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "ऍनलॉग सराऊन्ड 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "ऍनलॉग सराऊन्ड 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "डिजीटल सराऊन्ड 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "ऍनलॉग सराऊन्ड 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "आऊटपुट %s + इनपुट %s" - -#~ msgid "Output %s" -#~ msgstr "आऊटपुट %s" - -#~ msgid "Input %s" -#~ msgstr "इनपुट %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "स्ट्रीम यशस्वीरित्या बनवले\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "स्ट्रीम त्रुटी: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "जुळवणी स्थापीत.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "%s शी कंपाई केले\n" -#~ "libpulse %s शी जुळले\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "अवैध वाहिनी नकाशा\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "फाइल '%s' उघडण्यास अपयशी\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "वाहिनी नकाशा फाइलशी जुळत नाही.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "तात्पूर्ते spec '%s' वापरत आहे\n" diff --git a/po/nl.po b/po/nl.po index a75efed00..073423cb0 100644 --- a/po/nl.po +++ b/po/nl.po @@ -2,22 +2,26 @@ # Copyright (C) 2009 THE pulseaudio.master-tx'S COPYRIGHT HOLDER # This file is distributed under the same license as the pulseaudio.master-tx package. # Geert Warrink , 2009. -# , fuzzy # # msgid "" msgstr "" "Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-15 21:04+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 16:03+0200\n" "Last-Translator: Geert Warrink \n" -"Language-Team: Dutch \n" +"Language-Team: nl \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Transfer-Encoding: \n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -30,7 +34,7 @@ msgstr "" "Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit " "probleem a.u.b. aan de ALSA ontwikkelaars." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -43,7 +47,7 @@ msgstr "" "Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit " "probleem a.u.b. aan de ALSA ontwikkelaars." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -56,9 +60,18 @@ msgstr "" "Waarschijnlijk is dit een bug in de ALSA driver '%s'. Rapporteer dit " "probleem a.u.b aan de ALSA ontwikkelaars." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" +"Houdt altijd ten minste een afvoer ingeladen zelfs als het de null afvoer is." + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "Dummy output" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Virtuele LADSPA afoer" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -68,12 +81,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "Geklokte MULL afvoer" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "Null output" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Intern geluid" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -89,220 +115,92 @@ msgstr "Kon die nieuwe dl lader niet toekennen." msgid "Failed to add bind-now-loader." msgstr "Kon bind-now-loader niet toevoegen." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Kan niet verbinden met systeem bus: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Kan geen bezoeker krijgen van PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Kan UID niet instellen op caller object." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Kon geen CK sessie krijgen." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Kan UID niet instellen op sessie object." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Kan PolKitAction niet toekennen." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Kan action_id niet instellen" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Kan PolKitContext niet toekennen." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Kan PolKitContext niet intialiseren: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Kon niet bepalen of bezoeker gemachtigd is: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Kan geen authorisatie krijgen: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit antwoordde met '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Ontving signaal %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Afsluiten." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Kon gebruiker '%s' niet vinden." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Kon groep '%s' niet vinden." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Gebruiker '%s' (UID %lu) en groep '%s' (GID %lu) gevonden." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID van gebruiker '%s' en van groep '%s' passen niet bij elkaar." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Persoonlijke map van gebruiker '%s' is niet '%s', negeer het." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Aanmaken van '%s': %s mislukte" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Veranderen van groeps lijst: '%s' mislukte" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Veranderen van GID: %s mislukte" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Veranderen van UID: %s mislukte" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Root rechten met succes laten vervallen." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Systeem brede mode wordt op dit platform niet ondersteund." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) mislukte: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Analyseren van de commandoregel mislukte." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "Wij zijn in de groep '%s', wat plannen met hoge prioriteit toestaat." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Wij zijn in de groep '%s', war real-time planning toestaat." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit kent ons acquire-high-priority rechten toe." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit weigert ons acquire-high-priority rechten." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit kent ons acquire-real-time rechten toe." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit weigert ons acquire-real-time rechten." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Aangeroepen met SUID root en real-time en/of high-priority inplannen was " -"verzocht in de configuratie. Echter de nodige rechten ontbreken:\n" -"We zijn niet in groep '%s', PolicyKit weigert om ons de gevraagde rechten te " -"geven en we hebben geen rect om de RLIMIT_NICE/RLIMIT_RTPRIO limieten te " -"verhogen.\n" -"Voor het aanzetten van real-time/high-priority inplannen mort je juiste " -"PolicyKit privileges hebben, of lid van '%s\" worden, of de RLIMIT_NICE/" -"RLIMIT_RTPRIO limieten voor deze gebruiker verhogen." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Hoge prioriteit inplannen is aangezet in de configuratie maar niet " -"toegestaan door de richtlijnen." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO met succes verhoogd" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO mislukte: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Opgeven CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Real-time inplannen is aangezet in de configuratie maar niet toegestaan door " -"de richtlijnen." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Daemon draait niet" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Daemon draait met PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Afschieten mislukt van daemon: '%s'" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -310,151 +208,156 @@ msgstr "" "Dit programma is niet bedoeld om als root gedraaid te worden (behalve als --" "system is opgegeven)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Root rechten vereisd" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start wordt niet ondersteund voor systeem instances" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "Draaiend in systeem mode, maar --disallow-exit is niet gezet!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Draaiend in systeem mode, maar --disallow-module-loading is niet gezet!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Draaiend in systeem mode, geforceerd uitzetten van SHM mode!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "Draaiend in systeem mode, geforceerd uitzetten van exit idle time!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Verkrijgen van stdio mislukte." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe mislukte: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() mislukte: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() mislukte: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Daemon opstarten mislukte." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Daemon met succes opgestart." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Dit is PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Compilatie host: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Compilatie CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Draaiend op host: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPU's gevonden." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Pagina grootte is %lu bytes" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Gecompileerd met Valgrind ondersteuning: ja" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Gecompileerd met Valgrind ondersteuning: nee" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Draaiend in valgrind mode: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimaal gebouwd: ja" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimaak gebouwd: nee" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG gedefinieerd, alle verklaringen uitgezet." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH gedefinieerd, alleen snel pad verklaringen uitgezet." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Alle verklaringen aangezet." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Machine ID verkrijgen mislukte" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "Machine ID is: %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "Machine ID is: %s." +msgstr "Sessie ID is: %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Gebruik van runtime map %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Verbruik van state map %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Gebruik van module map %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Draaiend in systeem mode: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -463,16 +366,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"OK, dus je draait PA in systeem mode. Merk a.u.b. op dat je dit " +"waarschijnlijk niet moet doen.\n" +"Als je het toch doet dan is het je eigen schuld als dingen niet werken zoals " +"verwacht.\n" +"Lees a.u.b.http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode voor een " +"uitleg waarom systeem mode gewoonlijk een slecht idee is." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() mislukte." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -480,27 +389,27 @@ msgstr "" "Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met " "aangezette high-resolution timers!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() mislukte." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Initialiseren van de daemon mislukte." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Daemon opgestart zonder geladen modules, dat werkt niet." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Daemon opstarten is klaar." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Daemon afsluiten is begonnen." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Daemon is afgesloten." @@ -760,124 +669,104 @@ msgstr "Laad eenmaal: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "OUDERE VERSIE WAARSCHUWING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Pad: %s\n" -#: ../src/daemon/daemon-conf.c:216 -#, c-format -msgid "[%s:%u] Invalid log target '%s'." -msgstr "" - #: ../src/daemon/daemon-conf.c:232 #, c-format -msgid "[%s:%u] Invalid log level '%s'." -msgstr "" +msgid "[%s:%u] Invalid log target '%s'." +msgstr "[%s:%u] Ongeldig log doel '%s'." #: ../src/daemon/daemon-conf.c:248 #, c-format -msgid "[%s:%u] Invalid resample method '%s'." -msgstr "" +msgid "[%s:%u] Invalid log level '%s'." +msgstr "[%s:%u] Ongeldig log niveau '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:264 +#, c-format +msgid "[%s:%u] Invalid resample method '%s'." +msgstr "[%s:%u] Ongeldige her-bemonster methode '%s'." + +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." -msgstr "" - -#: ../src/daemon/daemon-conf.c:278 -#, c-format -msgid "[%s:%u] rlimit not supported on this platform." -msgstr "" +msgstr "[%s:%u] Ongeldige rlimit '%s'." #: ../src/daemon/daemon-conf.c:294 #, c-format -msgid "[%s:%u] Invalid sample format '%s'." -msgstr "" +msgid "[%s:%u] rlimit not supported on this platform." +msgstr "[%s:%u] rlimit wordt niet ondersteund op dit platform." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:310 +#, c-format +msgid "[%s:%u] Invalid sample format '%s'." +msgstr "[%s:%u] Ongeldig bemonster formaat '%s'." + +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." -msgstr "" +msgstr "[%s:%u] Ongeldige bemonster snelheid '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." -msgstr "" +msgstr "[%s:%u] Ongeldige bemonster kanalen '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." -msgstr "" +msgstr "[%s:%u] Ongeldige kanalen map '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." -msgstr "" +msgstr "[%s:%u] Ongeldig aantal fragmenten '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." -msgstr "" +msgstr "[%s:%u] Ongeldige fragment grootte '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." -msgstr "" +msgstr "[%s:%u] Ongeldig nice niveau '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" -msgstr "" +msgstr "Openen van configuratie bestand %s mislukte." -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "" +"De opgegeven standaard kanalen map heeft een ander aantal kanalen dan de " +"opgegeven standaard aantal kanalen." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" -msgstr "" +msgstr "### Lees in het configuratie bestand: %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 "" +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Rechten opschonen." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" -msgstr "" +msgstr "PulseAudio geluidssysteem" #: ../src/daemon/pulseaudio.desktop.in.h:2 msgid "Start the PulseAudio Sound System" -msgstr "" +msgstr "Start het PulseAudio geluidssysteem" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1081,33 +970,33 @@ msgstr "boven achter links" msgid "Top Rear Right" msgstr "boven achter rechts" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(ongeldig)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1211,222 +1100,229 @@ msgstr "Implementatie ontbreekt" msgid "Client forked" msgstr "Client afgesplitst" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" #: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100 msgid "XOpenDisplay() failed" -msgstr "" +msgstr "XOpenDisplay() mislukte" #: ../src/pulse/client-conf-x11.c:93 msgid "Failed to parse cookie data" -msgstr "" +msgstr "Analyseren van cookie data mislukte" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" -msgstr "" +msgstr "Open van configuratie bestand '%s' mislukte: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." -msgstr "" +msgstr "Geen cookie geladen. Probeer zonder cookie te verbinden." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" -msgstr "" +msgstr "Ontving boodschap voor onbekende extensie '%s'" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "" +msgid "Failed to drain stream: %s" +msgstr "Afvoeren stroom %s mislukte" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Afspelen van afgevoerde stroom." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Vervinding naar server afvoeren." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() mislukte: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() mislukte: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() mislukte: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Stroom met succes aangemaakt." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() mislukte: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Buffer metriek: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Buffer metriek: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Gebruik bemonster spec '%s', kanaal map '%s'." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Verbonden met apparaat %s (%u, %sopgeschort)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "" +msgid "Stream error: %s" +msgstr "Stroom fout: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "" +msgid "Stream device suspended.%s" +msgstr "Stroom apparaat opgeschort.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "" +msgid "Stream device resumed.%s" +msgstr "Stroom apparaat hervat.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "" +msgid "Stream underrun.%s" +msgstr "Stroom te weinig data.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "" +msgid "Stream overrun.%s" +msgstr "Stroom data overschrijding.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "" +msgid "Stream started.%s" +msgstr "Stroom gestart.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Stroom verplaatst naar apparaat %s (%u, %sopgeschort).%s" + +#: ../src/utils/pacat.c:376 msgid "not " -msgstr "" +msgstr "niet" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "" +msgid "Stream buffer attributes changed.%s" +msgstr "Stroom buffer attributen veranderden.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "" +msgid "Connection established.%s" +msgstr "Verbinding bereikt.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() mislukte: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() mislukte: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() mislukte: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "" +msgid "Connection failure: %s" +msgstr "Verbindingsfout: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Kreeg EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "" +msgid "write() failed: %s" +msgstr "write() mislukte: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Ontving signaal, afsluiten." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "" +msgid "Failed to get latency: %s" +msgstr "Latentie krijgen mislukte: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Tijd: %0.3f sec; Latentie: %0.0f usec." -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() mislukte: %s" #: ../src/utils/pacat.c:605 #, c-format @@ -1487,6 +1383,64 @@ msgid "" " --file-format=FFORMAT Record/play formatted PCM data.\n" " --list-file-formats List available file formats.\n" msgstr "" +"%s [opties]\n" +"\n" +" -h, --help Laat deze hulp zien\n" +" --version Laat versie zien\n" +"\n" +" -r, --record Maak een verbinding voor opnemen\n" +" -p, --playback Maak een verbinding voor afspelen\n" +"\n" +" -v, --verbose Zet breedsprakigheid aan\n" +"\n" +" -s, --server=SERVER De naam van de server waarmee " +"verbonden moet worden\n" +" -d, --device=DEVICE De naam van de afoer/bron waarmee " +"verbonden moet worden\n" +" -n, --client-name=NAME Hoe wordt deze cliënt op de server " +"genoemd\n" +" --stream-name=NAME Hoe wordt deze stroom op de server " +"genoemd\n" +" --volume=VOLUME Geef het begins (lineare) volume in " +"reeks 0...65536\n" +" --rate=SAMPLERATE De bemonstersnelheid in Hz " +"(standaard 44100)\n" +" --format=SAMPLEFORMAT Het bemonster type, een van s16le, " +"s16be, u8, float32le,\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (standaard " +"s16ne)\n" +" --channels=CHANNELS Het aantal kanalen, 1 voor mono, 2 " +"voor stereo\n" +" (standaard 2)\n" +" --channel-map=CHANNELMAP Kanaal map te gebruiken in plaats " +"van de standaard\n" +" --fix-format Neem het bemonsteringsformaat over " +"van de afoer waar de stroom\n" +" mee verbonden is.\n" +" --fix-rate Neem de bemonsteringssnelheid over " +"van de afvoer waar de stroom\n" +" mee verbonden is.\n" +" --fix-channels Neem het aantal kanalen en de kanaal " +"map over\n" +" van de afvoer waar de stroom mee " +"verbonden is.\n" +" --no-remix Doe geen upmix of downmix van " +"kanalen.\n" +" --no-remap Map kanalen met index in plaats van " +"met naam.\n" +" --latency=BYTES Verzoek de opgegeven latentie in " +"bytes.\n" +" --process-time=BYTES Verzoek de opgegeven proces tijd per " +"verzoek in bytes.\n" +" --property=PROPERTY=VALUE Zet de opgegeven eigenschap op de " +"opgegeven waarde.\n" +" --raw Opnemen/afspelen van ruwe PCM data.\n" +" --file-format=FFORMAT Opnemen/afspelen van geformateerde " +"data.\n" +" --list-file-formats Laat beschikbare bestandsformaten " +"zien.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1495,170 +1449,174 @@ msgid "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" msgstr "" +"pacat %s\n" +"Gecompileerd met libpulse %s\n" +"Gelinkt met libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Ongeldige resample methode '%s'." - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Ongeldige resample methode '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "" +msgid "Invalid client name '%s'" +msgstr "Ongeldige cliënt naam '%s'." -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "" +msgid "Invalid stream name '%s'" +msgstr "Ongeldige stroom naam '%s'." -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "" +msgid "Invalid channel map '%s'" +msgstr "Ongeldige kanaal map '%s'." -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Ongeldige resample methode '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Ongeldige latentie specificatie '%s'." -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Ongeldige proces tijd specificatie '%s'." + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Ongeldige eigenschap '%s'." + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Ongeldig bestandsformaat %s" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Ongeldige bemonster specificatie" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Te veel argumenten." -#: ../src/utils/pacat.c:930 -msgid "Failed to generate sample specification for file.\n" -msgstr "" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Bemonster specificatie voor bestand aanmaken mislukte." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Analyseren van de commandoregel mislukte." +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Openen van geluidsbestand mislukte." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Waarschuwing: opgegeven bemonster specificatie zal overschreven worden met " +"de specificatie van het bestand." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -msgid "Failed to determine sample specification from file.\n" -msgstr "" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Bepalen van bemonster specificatie van het bestand mislukte." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Waarschuwing: Bepalen van kanaal map van bestand mislukte." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Kanaal map komt niet overeen met bemonster specificatie." -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Waarschuwing: schrijven van kanaal map naar bestand mislukte." -#: ../src/utils/pacat.c:1005 +#: ../src/utils/pacat.c:1004 #, c-format msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"Openen van een %s stroom met bemonster specificatie '%s' en kanaal map '%s'." -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "recording" -msgstr "" +msgstr "opnemen" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" -msgstr "" +msgstr "afspelen" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() mislukte." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() mislukte." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_cotext_new() mislukte." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "" +msgid "pa_context_connect() failed: %s" +msgstr "pa_context_connect() mislukte: %s" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() mislukte." -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" -msgstr "pa_core_new() mislukte." - -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "" - -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() mislukte." #: ../src/utils/pasuspender.c:81 #, c-format msgid "fork(): %s\n" -msgstr "" +msgstr "fork(): %s\n" #: ../src/utils/pasuspender.c:92 #, c-format msgid "execvp(): %s\n" -msgstr "" +msgstr "execvp(): %s\n" #: ../src/utils/pasuspender.c:109 #, c-format msgid "Failure to suspend: %s\n" -msgstr "" +msgstr "Opschorten mislukte: %s\n" #: ../src/utils/pasuspender.c:124 #, c-format msgid "Failure to resume: %s\n" -msgstr "" +msgstr "Vervolgen mislukte: %s\n" #: ../src/utils/pasuspender.c:147 #, c-format msgid "WARNING: Sound server is not local, not suspending.\n" -msgstr "" +msgstr "WAARSCHUWING: Geluidsserver is niet locaal, geen opschorten.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Verbonding mislukte: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" -msgstr "" +msgstr "Kreeg SIGINT, verlaten.\n" #: ../src/utils/pasuspender.c:194 #, c-format msgid "WARNING: Child process terminated by signal %u\n" -msgstr "" +msgstr "WAARSCHUWING: kind proces afgesloten door signaal %u\n" #: ../src/utils/pasuspender.c:212 #, c-format @@ -1671,6 +1629,13 @@ msgid "" "to\n" "\n" msgstr "" +"%s [opties] ... \n" +"\n" +" -h, --help Laat deze hulp zien\n" +" --version Laat versie zien\n" +" -s, --server=SERVER De naam van de server waarmee " +"verbonden wordt\n" +"\n" #: ../src/utils/pasuspender.c:248 #, c-format @@ -1679,33 +1644,53 @@ msgid "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" msgstr "" +"pasuspender %s\n" +"Gecompileerd met libpulse %s\n" +"Gelinkt met libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() mislukte.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() mislukte.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() mislukte.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Verkrijgen van statistiek %s mislukte" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" -msgstr "" +msgstr "Op dit moment in gebruik: %u blokken bevattende in totaal %s bytes.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" +"Toegewezen tijdens de gehele levensduur: %u blokken bevattende in totaal %s " +"butes.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" -msgstr "" +msgstr "Bemonstering cache grootte: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "" +msgid "Failed to get server information: %s" +msgstr "Server informatie verkrijgen mislukte: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1718,13 +1703,22 @@ msgid "" "Default Source: %s\n" "Cookie: %08x\n" msgstr "" +"Gebruikersnaam: %s\n" +"Hostnaam: %s\n" +"Servernaam: %s\n" +"Server versie: %s\n" +"Standaard bemonsterings specificatie: %s\n" +"Standaard kanaal map: %s\n" +"Standaard afvoer: %s\n" +"Standaard bron: %s\n" +"Cookie: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "" +msgid "Failed to get sink information: %s" +msgstr "Verkrijgen afvoer informatie mislukte: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1745,23 +1739,40 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Afvoer #%u\n" +"\tToestand: %s\n" +"\tNaam: %s\n" +"\tBeschrijving: %s\n" +"\tDriver: %s\n" +"\tBemonsterings specificatie: %s\n" +"\tKanaal map: %s\n" +"\tModule eigenaar: %u\n" +"\tDemping: %s\n" +"\tVolume: %s%s%s\n" +"\t balans %0.2f\n" +"\tBasis volume: %s%s%s\n" +"\tMonitor bron: %s\n" +"\tLatentie: %0.0f usec, ingesteld %0.0f usec\n" +"\tVlaggen: %s%s%s%s%s%s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format msgid "\tPorts:\n" -msgstr "" +msgstr "\tPoorten:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "Auteur: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "" +msgid "\tActive Port: %s\n" +msgstr "\tActieve poort: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Verkrijgen van bron informatie mislukte: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1782,21 +1793,38 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Bron #%u\n" +"\tToestand: %s\n" +"\tNaam: %s\n" +"\tBeschrijving: %s\n" +"\tDriver: %s\n" +"\tBemonsterings specificatie: %s\n" +"\tKanaal map: %s\n" +"\tModule eigenaar: %u\n" +"\tDemping: %s\n" +"\tVolume: %s%s%s\n" +"\t balans %0.2f\n" +"\tBasis volume: %s%s%s\n" +"\tMonitor afvoer: %s\n" +"\tLatentie: %0.0f usec, ingesteld %0.0f usec\n" +"\tVlaggen: %s%s%s%s%s%s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" -msgstr "" +msgstr "n.v.t." -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "" +msgid "Failed to get module information: %s" +msgstr "Verkrijgen van module informatie mislukte: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1806,13 +1834,19 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Module #%u\n" +"\tNaam: %s\n" +"\tArgument: %s\n" +"\tGebruiks teller: %s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "" +msgid "Failed to get client information: %s" +msgstr "Verkrijgen van cliënt informatie mislukte: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1821,13 +1855,18 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Cliënt #%u\n" +"\tDriver: %s\n" +"\tModule eigenaar: %s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "" +msgid "Failed to get card information: %s" +msgstr "Verkrijgen van kaart informatie mislukte: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1837,23 +1876,29 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Kaart #%u\n" +"\tNaam: %s\n" +"\tDriver: %s\n" +"\tModule eigenaar: %s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" -msgstr "" +msgstr "\tProfielen:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" -msgstr "" +msgstr "\tActieve profiel: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "" +msgid "Failed to get sink input information: %s" +msgstr "Verkrijgen van afvoer input informatie mislukte: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1873,13 +1918,29 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Afvoer input #%u\n" +"\tDriver: %s\n" +"\tModule eigenaar: %s\n" +"\tCliënt: %s\n" +"\tSink: %u\n" +"\tBemonsterings specificatie: %s\n" +"\tKanaal map: %s\n" +"\tDemping: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balans %0.2f\n" +"\tBuffer latentie: %0.0f usec\n" +"\tAfvoer latentie: %0.0f usec\n" +"\tHerbemonsterings methode: %s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "" +msgid "Failed to get source output information: %s" +msgstr "Verkrijgen van bron output informatie mislukte: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -1895,13 +1956,25 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Bron output #%u\n" +"\tDriver: %s\n" +"\tModule eigenaaar: %s\n" +"\tCliënt: %s\n" +"\tBron: %u\n" +"\tBemonsterings specificatie: %s\n" +"\tKanaal map: %s\n" +"\tBuffer latentie: %0.0f usec\n" +"\tBron latentie: %0.0f usec\n" +"\tHerbemonsterings methode: %s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "" +msgid "Failed to get sample information: %s" +msgstr "Verkrijgen van bemonsterings informatie mislukte: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -1918,22 +1991,39 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" +"Monster #%u\n" +"\tNaam: %s\n" +"\tBemonsterings specificatie: %s\n" +"\tKanaal map: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balans %0.2f\n" +"\tDuur: %0.1fs\n" +"\tGrootte: %s\n" +"\tTraagheid: %s\n" +"\tBestandsnaam: %s\n" +"\tEigenschappen:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "" +msgid "Failure: %s" +msgstr "Mislukt: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "" +msgid "Failed to upload sample: %s" +msgstr "Uploaden van monster mislukte: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Voortijdig einde van bestand" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Ontving SIGINT, afsluiten." + +#: ../src/utils/pactl.c:869 #, c-format msgid "" "%s [options] stat\n" @@ -1942,15 +2032,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -1960,83 +2056,150 @@ msgid "" " -n, --client-name=NAME How to call this client on the " "server\n" msgstr "" +"%s [opties] stat\n" +"%s [opties] list\n" +"%s [opties] exit\n" +"%s [opties] upload-sample BESTANDNAAM [NAAM]\n" +"%s [opties] play-sample NAAM [AFVOER]\n" +"%s [opties] remove-sample NAAM\n" +"%s [opties] move-sink-input AFVOERINPUT AFVOER\n" +"%s [opties] move-source-output BRONOUTPUT BRON\n" +"%s [opties] load-module NAAM [ARG ...]\n" +"%s [opties] unload-module MODULE\n" +"%s [opties] suspend-sink AFVOER 1|0\n" +"%s [opties] suspend-source BRON 1|0\n" +"%s [opties] set-card-profile KAART PROFIEL\n" +"%s [opties] set-sink-port AFVOER POORT\n" +"%s [opties] set-source-port BRON POORT\n" +"%s [opties] set-sink-volume AFVOER VOLUME\n" +"%s [opties] set-source-volume BRON VOLUME\n" +"%s [opties] set-sink-input-volume AFVOERINPUT VOLUME\n" +"%s [opties] set-sink-mute AFVOER 1|0\n" +"%s [opties] set-source-mute BRON 1|0\n" +"%s [opties] set-sink-input-mute AFVOERINPUT 1|0\n" +"\n" +" -h, --help Laat deze hulp zien\n" +" --version Laat versie zien\n" +"\n" +" -s, --server=SERVER The name of the server to connect " +"to\n" +" -n, --client-name=NAME How to call this client on the " +"server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" msgstr "" +"pactl %s\n" +"Gecompileerd met libpulse %s\n" +"Gelint met libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "" - -#: ../src/utils/pactl.c:951 -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Geef a.u.b een bemonsterings bestand op om te laden" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "" +msgid "Failed to open sound file." +msgstr "Openen geluidsbestand mislukte." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." msgstr "" +"Waarschuwing: Bepalen van bemonsterings specificatie van bestand mislukte." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Je moet een monster naam opgeven om af te spelen" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Je moet een monster naam opgeven om te verwijderen" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Je moet een afvoer input index en een afvoer opgeven" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Je moet een bron output index en een bron opgeven" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Je moet een module naam en argumenten opgeven." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Je moet een module index opgeven" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" +"Je kunt niet meer dan een afvoer opgeven. Je moet een boolean waarde opgeven" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" +"Je kunt niet meerd dan een bron opgeven. Je moet een boolean waarde opgeven." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Je moet een kaart naam/index en een profiel naam opgeven" -#: ../src/utils/pactl.c:1073 -msgid "You have to specify a sink name/index and a port name\n" -msgstr "" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Je moet een afvoer naam/index en een poort naam opgeven" -#: ../src/utils/pactl.c:1084 -msgid "You have to specify a source name/index and a port name\n" -msgstr "" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Je moet een bron naam/index en een poort naam opgeven" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Je moet een afvoer naam/index en een volume opgeven" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Ongeldige volume opgave" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Je moet een bron naam/index en een volume opgeven" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Je moet een afvoer input index en een volume opgeven" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Ongeldige afvoer input index" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Je moet een afvoer naam/index en een dempings boolean opgeven" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Je moet een bron naam/index en een dempings boolean opgeven" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Je moet een afvoer input index en een dempings boolean opgeven" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Ongeldige afvoer input index opgave" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Geen geldig commando opgegeven." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2049,109 +2212,118 @@ msgid "" "variables and cookie file.\n" " -r Remove PulseAudio data from X11 display\n" msgstr "" +"%s [-D scherm] [-S server] [-O afvoer] [-I bron] [-c bestand] [-d|-e|-i|-" +"r]\n" +"\n" +" -d Laat huidige PulseAudio data zien horende bij X11 scherm (standaard)\n" +" -e Exporteer locale PulseAudio data naar X11 scherm\n" +" -i Importeer PulseAudio data van X11 scherm naar locale omgevings " +"variabelen en cookie bestand.\n" +" -r Verwijder PulseAudio data van X11 scherm\n" #: ../src/utils/pax11publish.c:94 #, c-format msgid "Failed to parse command line.\n" -msgstr "" +msgstr "Commando regel ontleden mislukte.\n" #: ../src/utils/pax11publish.c:108 #, c-format msgid "Server: %s\n" -msgstr "" +msgstr "Server: %s\n" #: ../src/utils/pax11publish.c:110 #, c-format msgid "Source: %s\n" -msgstr "" +msgstr "Bron: %s\n" #: ../src/utils/pax11publish.c:112 #, c-format msgid "Sink: %s\n" -msgstr "" +msgstr "Afvoer: %s\n" #: ../src/utils/pax11publish.c:114 #, c-format msgid "Cookie: %s\n" -msgstr "" +msgstr "Cookie: %s\n" #: ../src/utils/pax11publish.c:132 #, c-format msgid "Failed to parse cookie data\n" -msgstr "" +msgstr "Cookie data ontleden mislukte\n" #: ../src/utils/pax11publish.c:137 #, c-format msgid "Failed to save cookie data\n" -msgstr "" +msgstr "Cookie data opslaan mislukte\n" #: ../src/utils/pax11publish.c:152 #, c-format msgid "Failed to load client configuration file.\n" -msgstr "" +msgstr "Cliënt configuratie bestand laden mislukte.\n" #: ../src/utils/pax11publish.c:157 #, c-format msgid "Failed to read environment configuration data.\n" -msgstr "" +msgstr "Omgevings configuratie bestand lezen mislukte.\n" #: ../src/utils/pax11publish.c:174 #, c-format msgid "Failed to get FQDN.\n" -msgstr "" +msgstr "FQDN verkrijgen mislukte.\n" #: ../src/utils/pax11publish.c:194 #, c-format msgid "Failed to load cookie data\n" -msgstr "" +msgstr "Cookie data laden mislukte\n" #: ../src/utils/pax11publish.c:211 #, c-format msgid "Not yet implemented.\n" -msgstr "" +msgstr "Nog niet geïmplementeerd.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"Er draait geen PulseAudio daemon, of het draait niet als sessie daemon." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" -msgstr "" - -#: ../src/utils/pacmd.c:83 -#, c-format -msgid "connect(): %s" -msgstr "" +msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" #: ../src/utils/pacmd.c:91 -msgid "Failed to kill PulseAudio daemon." -msgstr "" +#, c-format +msgid "connect(): %s" +msgstr "connect(): %s" #: ../src/utils/pacmd.c:99 +msgid "Failed to kill PulseAudio daemon." +msgstr "PulseAudio daemon uitzetten mislukte." + +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." -msgstr "" +msgstr "Daemon reageert niet." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" -msgstr "" +msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" -msgstr "" +msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." -msgstr "" +msgstr "Kan geen toegang krijgen tot autospawn blokkade." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2161,8 +2333,14 @@ msgid "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"ALSA maakte ons wakker om nieuwe data naar het apparaat te schrijven, maar " +"er was niets om weg te schrijven!\n" +"Waarschijnlijk is dit een fout in de ALSA driver '%s\". Rapporteer dit " +"probleem a.u.b. aan de ALSA ontwikkelaars.\n" +"We werden gewekt met POLLOUT ingesteld -- echter een opvolgende snd_pcm_avail" +"() gaf 0 terug of een andere waarde < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2172,23 +2350,134 @@ msgid "" "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"ALSA maakte ons wakker om nieuwe data van het apparaat te lezen, maar er was " +"niets om te lezen!\n" +"Waarschijnlijk is dit een fout in de ALSA driver '%s\". Rapporteer dit " +"probleem a.u.b. aan de ALSA ontwikkelaars.\n" +"We werden gewekt met POLLIN ingesteld -- echter een opvolgende snd_pcm_avail" +"() gaf 0 terug of een andere waarde < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" -msgstr "" +msgstr "Uiy" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" -msgstr "" +msgstr "High Fidelity Playback (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "High Fidelity Afvangen (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" -msgstr "" +msgstr "Telefonie Duplex (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" -msgstr "" +msgstr "PulseAudio geluids server" + +#, fuzzy +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Ongeldige resample methode '%s'." + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Kan niet verbinden met systeem bus: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Kan geen bezoeker krijgen van PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Kan UID niet instellen op caller object." + +#~ msgid "Failed to get CK session." +#~ msgstr "Kon geen CK sessie krijgen." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Kan UID niet instellen op sessie object." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Kan PolKitAction niet toekennen." + +#~ msgid "Cannot set action_id" +#~ msgstr "Kan action_id niet instellen" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Kan PolKitContext niet toekennen." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Kan PolKitContext niet intialiseren: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Kon niet bepalen of bezoeker gemachtigd is: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Kan geen authorisatie krijgen: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit antwoordde met '%s'" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "" +#~ "Wij zijn in de groep '%s', wat plannen met hoge prioriteit toestaat." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "Wij zijn in de groep '%s', war real-time planning toestaat." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "PolicyKit kent ons acquire-high-priority rechten toe." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit weigert ons acquire-high-priority rechten." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit kent ons acquire-real-time rechten toe." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit weigert ons acquire-real-time rechten." + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "Aangeroepen met SUID root en real-time en/of high-priority inplannen was " +#~ "verzocht in de configuratie. Echter de nodige rechten ontbreken:\n" +#~ "We zijn niet in groep '%s', PolicyKit weigert om ons de gevraagde rechten " +#~ "te geven en we hebben geen rect om de RLIMIT_NICE/RLIMIT_RTPRIO limieten " +#~ "te verhogen.\n" +#~ "Voor het aanzetten van real-time/high-priority inplannen mort je juiste " +#~ "PolicyKit privileges hebben, of lid van '%s\" worden, of de RLIMIT_NICE/" +#~ "RLIMIT_RTPRIO limieten voor deze gebruiker verhogen." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "Hoge prioriteit inplannen is aangezet in de configuratie maar niet " +#~ "toegestaan door de richtlijnen." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO met succes verhoogd" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO mislukte: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Opgeven CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "Real-time inplannen is aangezet in de configuratie maar niet toegestaan " +#~ "door de richtlijnen." #~ msgid "Analog Mono" #~ msgstr "Analoog mono" diff --git a/po/or.po b/po/or.po index 1fcf836e4..6f1e2d9ae 100644 --- a/po/or.po +++ b/po/or.po @@ -1,14 +1,14 @@ -# translation of pulseaudio.master-tx.pulseaudio.po to Oriya +# translation of pulseaudio.master-tx.or.po to Oriya # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Manoj Kumar Giri , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" +"Project-Id-Version: pulseaudio.master-tx.or\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-09 13:16+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-09 21:03+0530\n" "Last-Translator: Manoj Kumar Giri \n" "Language-Team: Oriya \n" "MIME-Version: 1.0\n" @@ -22,8 +22,20 @@ msgstr "" "\n" "\n" "\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" +"\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -36,7 +48,7 @@ msgstr "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -49,7 +61,7 @@ msgstr "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -62,9 +74,17 @@ msgstr "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "ଆଭାସୀ LADSPA ସିଙ୍କ" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -74,12 +94,24 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name=<ସିଙ୍କର ନାମ> sink_properties=<ସିଙ୍କର ଗୁଣଧର୍ମ> master=<ସିଙ୍କ ଛାଣକର ନାମ> " +"format=<ନମୁନା ସଜ୍ଜିକରଣ ଶୈଳୀ> rate=<ନମୁନା ହାର> channels=<ଚ୍ୟାନେଲ ସଂଖ୍ୟା> " +"channel_map=<ଚ୍ୟାନେଲ ମ୍ୟାପ> plugin= label= control=<କମା ଦ୍ୱାରା ପୃଥକ ନିବେଶ ନିୟନ୍ତ୍ରଣ ମୂଲ୍ୟ ତାଲିକା>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "ମଡେମ" @@ -95,216 +127,92 @@ msgstr "ନୂତନ dl ଧାରକକୁ ବଣ୍ଟନ କରିବାରେ msgid "Failed to add bind-now-loader." msgstr "bind-now-loaderକୁ ଯୋଗ କରିବାରେ ବିଫଳ।" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "ତନ୍ତ୍ର ପରିପଥ ସହିତ ସଂଯୋଗ କରିପାରିବେ ନାହିଁ: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PIDରୁ କଲରକୁ ପାଇପାରିବେ ନାହିଁ: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "କଲର ବସ୍ତୁରେ UID କୁ ସେଟ କରିପାରିବେ ନାହିଁ।" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK ଅଧିବେଶନକୁ ପାଇବାରେ ବିଫଳ।" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "ଅଧିବେଶନ ବସ୍ତୁରେ UID ସେଟ କରିପାରିବେ ନାହିଁ।" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitActionକୁ ବଣ୍ଟନ କରିପାରିବେ ନାହିଁ।" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id ସେଟ କରିପାରିବେ ନାହିଁ" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext ବଣ୍ଟନ କରିପାରିବେ ନାହିଁ।" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContextକୁ ଆରମ୍ଭ କରିପାରିବେ ନାହିଁ: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "କଲର ଅଧିକାର ପ୍ରାପ୍ତ କି ନୁହଁ ତାହା ନିର୍ଦ୍ଧାରଣ କରି ପାରିଲା ନାହିଁ: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "auth ପାଇଲା ନାହିଁ: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit '%s' ସହିତ ଉତ୍ତର ଦେଇଥିଲା" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "ସଂକେତ %s ପାଇଲା।" -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "ଉତ୍ତେଜିତ କରୁଅଛି।" -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "ଚାଳକ '%s' କୁ ଖୋଜିବାରେ ବିଫଳ।" -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "ସମୂହ '%s' କୁ ଖୋଜି ପାଇବାରେ ବିଫଳ।" -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "ଚାଳକ '%s' (UID %lu) ଏବଂ ସମୂହ '%s' (GID %lu) ମିଳିଲା।" -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "ଚାଳକ '%s' ଏବଂ ସମୂହ '%s' ର GID ମେଳଖାଏନାହିଁ।" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "ଚାଳକ '%s' ର ମୂଖ୍ୟ ଡିରେକ୍ଟୋରୀଟି '%s' ନୁହଁ, ଅଗ୍ରାହ୍ୟ କରୁଅଛି।" -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' ନିର୍ମାଣ କରିବାରେ ବିଫଳ: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "ସମୂହ ତାଲିକାକୁ ପରିବର୍ତ୍ତନ କରିବାରେ ବିଫଳ: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID କୁ ପରିବର୍ତ୍ତନ କରିବାରେ ବିଫଳ ହୋଇଛି: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID କୁ ପରିବର୍ତ୍ତନ କରିବାରେ ବିଫଳ ହୋଇଛି: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "ମୂଖ୍ୟ ଚାଳକ ଅଧିକାରକୁ ସଫଳତାର ସହିତ ପକାଯାଇଛି।" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "ତନ୍ତ୍ରମୟ ଧାରା ଏହି ପ୍ଲାଟଫର୍ମରେ ଅସମର୍ଥିତ।" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) ବିଫଳ ହୋଇଛି: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "ପାଠ୍ୟ ନିର୍ଦ୍ଦେଶକୁ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ।" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "ଆମେ ମାନେ ଶ୍ରେଣୀ '%s'ରେ ଅଛୁ, ଉଚ୍ଚ-ପ୍ରାଥମିକତା ଯୋଜନାକୁ ଅନୁମତି ଦେଇ।" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "ଆମେ ମାନେ ଶ୍ରେଣୀ '%s'ରେ ଅଛୁ, ପ୍ରକୃତ- ସମୟ ଯୋଜନାକୁ ଅନୁମତି ଦେଇ।" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit ଆମକୁ acquire-high-priority ଅଧିକାର ଦେଇଥାଏ।" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit acquire-high-priority ଅଧିକାରକୁ ବାରଣ କରିଥାଏ।" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit ଆମକୁ acquire-real-time ଅଧିକାର ଦେଇଥାଏ।" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit acquire-real-time ଅଧିକାରକୁ ବାରଣ କରିଥାଏ।" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "ଉଚ୍ଚ-ପ୍ରାଥମିକ ଯୋଜନା ବିନ୍ୟାସରେ ସକ୍ରିୟ କିନ୍ତୁ ନୀତି ଦ୍ୱାରା ଅନୁମୋଦିତ ନୁହଁ।" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO କୁ ସଫଳତାର ସହିତ ବୃଦ୍ଧିକରିଥାଏ" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO ବିଫଳ ହୋଇଛି: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE କୁ ତ୍ୟାଗ କରିଥାଏ" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "Real-time ଯୋଜନା ବିନ୍ୟାସ ଫାଇଲରେ ସକ୍ରିୟ ହୋଇଥାଏ କିନ୍ତୁ ନିତୀ ଦ୍ୱାରା ଅନୁମୋଦିତ ନୁହଁ।" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "ଡେମନ ଚାଲୁନାହିଁ" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "ଡେମନ PID %u ପରି ଚାଲୁଅଛି" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "ଡେମନକୁ ବନ୍ଦ କରିବାରେ ବିଫଳ: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -312,150 +220,155 @@ msgstr "" "ଏହି ପ୍ରଗ୍ରାମଟି ମୂଖ୍ୟ ଚାଳକ ଭାବରେ ଚଲାଇବା ପାଇଁ ନିର୍ଦ୍ଦିଷ୍ଟ ହୋଇନାହିଁ (unless --system is " "specified)।" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "ମୂଖ୍ୟ ଚାଳକ ଅଧିକାର ଆବଶ୍ୟକ।" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start ତନ୍ତ୍ର ସ୍ଥିତି ପାଇଁ ସମର୍ଥିତ ନୁହଁ।" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, କିନ୍ତୁ --disallow-exit କୁ ସେଟ କରାଯାଇନାହିଁ!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, କିନ୍ତୁ --disallow-module-loading କୁ ସେଟ କରାଯାଇନାହିଁ!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, SHM ଧାରାକୁ ବାଧ୍ଯତାମୁଳକ ଭାବରେ ନିଷ୍କ୍ରିୟ କରିଥାଏ!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି, ପ୍ରସ୍ଥାନ ସ୍ଥିର ସମୟକୁ ବାଧ୍ଯତାମୁଳକ ଭାବରେ ନିଷ୍କ୍ରିୟ କରିଥାଏ!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio କୁ ଅଧିକାର କରିବାରେ ବିଫଳ।" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "ପାଇପ ବିଫଳ ହୋଇଛି: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() ବିଫଳ ହୋଇଛି: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() ବିଫଳ ହୋଇଛି: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "ଡେମନ ଆରମ୍ଭ ବିଫଳ ହୋଇଛି।" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "ଡେମନ ଆରମ୍ଭ ସଫଳ ହୋଇଛି।" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "ଏହା ହେଉଛି PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "ସଂକଳନ ଆଧାର: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "ସଂକଳନ CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "ଆଧାରରେ ଚାଲୁଅଛି: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUs ମିଳିଛି।" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "ପୃଷ୍ଠା ଆକାରଟି ହେଉଛି %lu ବାଇଟ" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind ସମର୍ଥନ ସହିତ ସଂକଳନ ହୋଇଛି: yes" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind ସମର୍ଥନ ସହିତ ସଂକଳନ ହୋଇଛି: no" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind ଧାରାରେ ଚାଲୁଅଛି: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "ଉପଯୁକ୍ତ ନିର୍ମାଣ: yes" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "ଉପଯୁକ୍ତ ନିର୍ମାଣ: no" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG କୁ ବ୍ୟାଖ୍ୟା କରାଯାଇଛି, ସମସ୍ତ ନିଶ୍ଚୟକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH କୁ ବ୍ୟାଖ୍ୟା କରାଯାଇଛି, କେବଳ ତୀବ୍ର ପଥ ନିଶ୍ଚୟକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "ସମସ୍ତ ନିଶ୍ଚୟକୁ ସକ୍ରିୟ କରାଯାଇଛି।" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "ଯନ୍ତ୍ର ID ପାଇବାରେ ବିଫଳ" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "ଯନ୍ତ୍ର ID ଟି ହେଉଛି %s।" -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "ଯନ୍ତ୍ର ID ଟି ହେଉଛି %s।" +msgstr "ଅଧିବେଶନ ID ଟି ହେଉଛି %s।" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "ପ୍ରଚଳିତ ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରୁଅଛି।" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "ସ୍ଥିତି ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରି।" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "ଏକକାଂଶ ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରି।" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -464,16 +377,21 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"OK, ଆପଣ PA କୁ ତନ୍ତ୍ର ଧାରାରେ ଚଲାଉଛନ୍ତି। ଦୟାକରି ମନେ ରଖନ୍ତୁ ଯେ ଆପଣ ପ୍ରାୟତଃ ତାହା " +"କରୁନାହାନ୍ତି।\n" +"ଯଦି ଆପଣ ତାହା କରନ୍ତି ଏବଂ ସବୁକିଛି ଠିକରେ ନଚାଲେ ତେବେ ତାହା ଆପଣଙ୍କର ନିଜର ଦୋଷ।\n" +"ତନ୍ତ୍ର ଧାରାଟି ସାଧାରଣତଃ କାହିଁକି ଖରାପ ତାହା ବିଷୟରେ ଜାଣିବା ପାଇଁ ଦୟାକରି http://pulseaudio." +"org/wiki/WhatIsWrongWithSystemMode କୁ ପଢ଼ନ୍ତୁ।" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।" -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "ସତେଜ ଉଚ୍ଚ-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବ୍ଧ! Bon appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -481,27 +399,27 @@ msgstr "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।" -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "ଡେମନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "ଧାରଣ ହୋଇଥିବା ଏକକାଂଶଗୁଡ଼ିକ ବିନା ଡେମନ ଆରମ୍ଭ ହୋଇଛି, କାର୍ଯ୍ୟ କରିବାକୁ ବାରଣ କରୁଅଛି।" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "ଡେମନ ଆରମ୍ଭ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "ଡେମନ ବନ୍ଦକୁ ଆରମ୍ଭ କରାଯାଇଛି।" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "ଡେମନକୁ ସମାପ୍ତ କରାଯାଇଛି।" @@ -750,79 +668,79 @@ msgstr "ଥରେ ଧାରଣ କରନ୍ତୁ: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "DEPRECATION WARNING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "ପଥ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ '%s'।" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] ଅବୈଧ ଲଗ ସ୍ତର%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] ଅବୈଧ ପୁନଃ ମିଶ୍ରଣ ଧାରା '%s'।" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] ଅବୈଧ rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit ଏହି ପ୍ଲାଟଫର୍ମରେ ସମର୍ଥିତ ନୁହଁ।" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଶୈଳୀ '%s'।" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] ଅବୈଧ ନମୁନା ହାର '%s'।" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଚ୍ୟାନେଲ '%s'।" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] ଅବୈଧ ସଂଖ୍ୟକ ଖଣ୍ଡଗୁଡ଼ିକ '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] ଅବୈଧ ଖଣ୍ଡ ଆକାର '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] ଅବୈଧ ସୁନ୍ଦର ସ୍ତର '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "ବିନ୍ୟାସ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -830,18 +748,14 @@ msgstr "" "ନିର୍ଦ୍ଦିଷ୍ଟିତ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚ୍ୟାନେଲ ମ୍ୟାପରେ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସଂଖ୍ୟକ ଚ୍ୟାନେଲ ବ୍ୟତିତ ଭିନ୍ନ ସଂଖ୍ୟକ " "ଚ୍ୟାନେଲ ଉଲ୍ଲେଖ ଅଛି।" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### ବିନ୍ୟାସ ଫାଇଲରୁ ପଢ଼ନ୍ତୁ: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "ମୂଖ୍ୟ ଚାଳକ ଅଧିକାରଗୁଡ଼ିକୁ ବାତିଲ କରୁଅଛି।" - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "CAP_SYS_NICE କୁ ସୀମିତ କ୍ଷମତା ସଫଳତାର ସହିତ ଦିଆହୋଇଛି।" +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "ଅଧିକାରଗୁଡ଼ିକୁ ବାତିଲ କରୁଅଛି।" #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -851,25 +765,7 @@ msgstr "PulseAudio ଧ୍ୱନି ତନ୍ତ୍ର" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio ଧ୍ୱନି ତନ୍ତ୍ରକୁ ଆରମ୍ଭ କରନ୍ତୁ" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio ଡେମନ ପାଇଁ ଉଚ୍ଚ-ପ୍ରାଥମିକତା ଯୋଜନା (ଋଣାତ୍ମକ Unix ସୁନ୍ଦର ସ୍ତର)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio ଡେମନ ପାଇଁ ପ୍ରକୃତ-ସମୟ ଯୋଜନା" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "ତନ୍ତ୍ର ନୀତି PulseAudio କୁ ଉଚ୍ଚ-ପ୍ରାଥମିକ ଯୋଜନାକୁ ଗ୍ରହଣ କରିବାରୁ ଅଟକାଇଥାଏ।" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "ତନ୍ତ୍ର ନୀତି PulseAudio କୁ ପ୍ରକୃତ-ସମୟ ଯୋଜନାକୁ ଗ୍ରହଣ କରିବାରୁ ଅଟକାଇଥାଏ।" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "ମୋନୋ" @@ -1073,33 +969,33 @@ msgstr "ଉପର ପଛ ବାମ ପାଖ" msgid "Top Rear Right" msgstr "ଉପର ପଛ ଡ଼ାହାଣ ପାଖ" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(ଅବୈଧ)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "ଷ୍ଟେରିଓ" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "ଚତୁଃ ପାର୍ଶ୍ୱ 7.1" @@ -1203,27 +1099,35 @@ msgstr "ଅନୁପସ୍ଥିତ ପ୍ରୟୋଗ" msgid "Client forked" msgstr "ଗ୍ରାହକ ଶାଖାଯୁକ୍ତ ହୋଇଛି" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1236,192 +1140,191 @@ msgstr "XOpenDisplay() ବିଫଳ ହୋଇଛି" msgid "Failed to parse cookie data" msgstr "କୁକି ତଥ୍ୟକୁ ବିଶ୍ଳେଷଣ କରିବାରେ ବିଫଳ" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "ବିନ୍ୟାସ ଫାଇଲ '%s' କୁ ଖୋଲିବାରେ ବିଫଳ: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "କୌଣସି କୁକି ଧାରଣ କରାଯାଇନାହିଁ। ତାହା ବିନା ସଂଯୋଗ କରିବାକୁ ପ୍ରଚେଷ୍ଚା କରୁଅଛି।" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "ଅଜଣା ଅନୁଲଗ୍ନ '%s' ପାଇଁ ସନ୍ଦେଶ ଗ୍ରହଣ କରିଅଛି" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "ଧାରାକୁ ବାହାର କରିବାରେ ବିଫଳ ହୋଇଛି: %s\n" +msgid "Failed to drain stream: %s" +msgstr "ଧାରାକୁ ବାହାର କରିବାରେ ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "ପଛଚଲା ଧାରାକୁ ବାହାର କରାଯାଇଛି।\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "ପଛଚଲା ଧାରାକୁ ବାହାର କରାଯାଇଛି।" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "ସର୍ଭର ପ୍ରତି ଡ୍ରେନିଙ୍ଗ ସଂଯୋଗ।\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "ସର୍ଭର ପ୍ରତି ଡ୍ରେନିଙ୍ଗ ସଂଯୋଗ।" -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "ଧାରା ସଫଳତାର ସହିତ ନିର୍ମାଣ ହୋଇଛି।\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "ଧାରା ସଫଳତାର ସହିତ ନିର୍ମାଣ ହୋଇଛି।" + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "ବଫର ମେଟ୍ରିକସ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "ବଫର ମେଟ୍ରିକସ: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "ବଫର ମେଟ୍ରିକସ: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "ନମୁନା spec '%s' ବ୍ୟବହାର କରି, ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'।\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "ବଫର ମେଟ୍ରିକସ: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "ଉପକରଣ %s ସହିତ ସଂଯୁକ୍ତ ହୋଇଛି (%u, %ssuspended)।\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "ନମୁନା spec '%s' ବ୍ୟବହାର କରି, ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'।" -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "ଧାରା ତ୍ରୁଟି: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "ଉପକରଣ %s ସହିତ ସଂଯୁକ୍ତ ହୋଇଛି (%u, %ssuspended)।" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "ଧାରା ଉପକରଣ ନିଲମ୍ବିତ ହୋଇଛି।%s \n" +msgid "Stream error: %s" +msgstr "ଧାରା ତ୍ରୁଟି: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "ଧାରା ଉପକରଣ ପୁନଃ ଚଳନ ହୋଇଛି।%s \n" +msgid "Stream device suspended.%s" +msgstr "ଧାରା ଉପକରଣ ନିଲମ୍ବିତ ହୋଇଛି।%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "ଧାରା underrun.%s \n" +msgid "Stream device resumed.%s" +msgstr "ଧାରା ଉପକରଣ ପୁନଃ ଚଳନ ହୋଇଛି।%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "ଧାରା overrun.%s \n" +msgid "Stream underrun.%s" +msgstr "ଧାରା underrun.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "ଧାରା ଆରମ୍ଭ ହୋଇଛି।%s \n" +msgid "Stream overrun.%s" +msgstr "ଧାରା overrun.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "ଧାରା ଉପକରଣ %sକୁ ଗତି କରିଛି (%u, %ssuspended).%s \n" +msgid "Stream started.%s" +msgstr "ଧାରା ଆରମ୍ଭ ହୋଇଛି।%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "ଧାରା ଉପକରଣ %sକୁ ଗତି କରିଛି (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "not " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "ଧାରା ବଫର ଗୁଣଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ ହୋଇଛି।%s\n" +msgid "Stream buffer attributes changed.%s" +msgstr "ଧାରା ବଫର ଗୁଣଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ ହୋଇଛି।%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "ସଂଯୋଗ ସ୍ଥାପିତ ହୋଇଛି।%s \n" +msgid "Connection established.%s" +msgstr "ସଂଯୋଗ ସ୍ଥାପିତ ହୋଇଛି।%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s\n" +msgid "Connection failure: %s" +msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF ପାଇଅଛି।\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF ପାଇଅଛି।" -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() ବିଫଳ ହୋଇଛି: %s\n" +msgid "write() failed: %s" +msgstr "write() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "ସଂକେତ ପାଇଲା, ପ୍ରସ୍ଥାନ କରୁଅଛି।" + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() ବିଫଳ ହୋଇଛି: %s\n" +msgid "Failed to get latency: %s" +msgstr "ବିଳମ୍ବତା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "ସଂକେତ ପାଇଲା, ପ୍ରସ୍ଥାନ କରୁଅଛି।\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "ବିଳମ୍ବତା ପାଇବାରେ ବିଫଳ: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "ସମୟ: %0.3f sec; ବିଳମ୍ବତା: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() ବିଫଳ ହୋଇଛି: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() ବିଫଳ ହୋଇଛି: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1479,7 +1382,7 @@ msgid "" " --file-format=FFORMAT Record/play formatted PCM data.\n" " --list-file-formats List available file formats.\n" msgstr "" -"%s [options]\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ]\n" "\n" " -h, --help ଏହି ସହାୟତା ଦର୍ଶାନ୍ତୁ\n" " --version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ\n" @@ -1502,28 +1405,32 @@ msgstr "" "s16be, u8, float32le,\n" " float32be, ulaw, alaw, s32le, s32be " "(defaults to s16ne)\n" -" --channels=CHANNELS The number of channels, 1 for mono, " -"2 for stereo\n" -" (defaults to 2)\n" -" --channel-map=CHANNELMAP Channel map to use instead of the " -"default\n" -" --fix-format Take the sample format from the sink " -"the stream is\n" -" being connected to.\n" -" --fix-rate Take the sampling rate from the sink " -"the stream is\n" -" being connected to.\n" -" --fix-channels Take the number of channels and the " -"channel map\n" -" from the sink the stream is being " -"connected to.\n" -" --no-remix Don't upmix or downmix channels.\n" -" --no-remap Map channels by index instead of " -"name.\n" -" --latency=BYTES Request the specified latency in " -"bytes.\n" -" --process-time=BYTES Request the specified process time " -"per request in bytes.\n" +" --channels=CHANNELS ଚ୍ୟାନେଲ ସଂଖ୍ୟା, ମୋନୋ ପାଇଁ 1, ଷ୍ଟେରିଓ ପାଇଁ " +"2\n" +" (2 ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ)\n" +" --channel-map=CHANNELMAP ପୂର୍ବନିର୍ଦ୍ଧାରିତ ପରିବର୍ତ୍ତେ ବ୍ୟବହାର କରିବାକୁ ଥିବା " +"ଚ୍ୟାନେଲ ମ୍ୟାପ\n" +" --fix-format ନମୁନା ବିଶେଷ ଲକ୍ଷଣ ସଜ୍ଜିକରଣ ଶୈଳୀକୁ ସିଙ୍କରୁ " +"ଗ୍ରହଣ କରନ୍ତୁ\n" +" ଯାହା ସହିତ ଧାରାଟି ସଂଯୁକ୍ତ।\n" +" --fix-rate ନମୁନା ବିଶେଷ ଲକ୍ଷଣ ସଜ୍ଜିକରଣ ଶୈଳୀକୁ ସିଙ୍କରୁ " +"ଗ୍ରହଣ କରନ୍ତୁ\n" +" ଯାହା ସହିତ ଧାରାଟି ସଂଯୁକ୍ତ।\n" +" --fix-channels ଚ୍ୟାନେଲ ସଂଖ୍ୟା ଏବଂ ଚ୍ୟାନେଲ ମ୍ୟାପକୁ " +"ସିଙ୍କରୁଗ୍ରହଣ କରନ୍ତୁ\n" +" ଯାହା ସହିତ ଧାରାଟି ସଂଯୁକ୍ତ।\n" +" --no-remix ଚ୍ୟାନେଲଗୁଡ଼ିକୁ upmix ଅଥବା downmix କରନ୍ତୁ " +"ନାହିଁ।\n" +" --no-remap ନାମ ପରିବର୍ତ୍ତେ ଅନୁକ୍ରମଣିକା ଅନୁସାରେ " +"ଚ୍ୟାନେଲଗୁଡ଼ିକୁ ମ୍ୟାପ କରନ୍ତୁ।\n" +" --latency=BYTES ନିର୍ଦ୍ଦିଷ୍ଟିତ ବିଳମ୍ବତାକୁ ବାଇଟରେ ଆବେଦନ କରନ୍ତୁ।\n" +" --process-time=BYTES ଅନୁରୋଧ ପ୍ରତି ନିର୍ଦ୍ଦିଷ୍ଟିତ ବିଳମ୍ବତାକୁ ବାଇଟରେ " +"ଆବେଦନ କରନ୍ତୁ।\n" +" --property=PROPERTY=VALUE ନିର୍ଦ୍ଦିଷ୍ଟିତ ମୂଲ୍ୟ ପାଇଁ ଉଲ୍ଲିଖିତ ଗୁଣଧର୍ମକୁ ସେଟ " +"କରନ୍ତୁ।\n" +" --raw ଅପରିପକ୍ୱ PCM ତଥ୍ୟକୁ ଲିପିବଦ୍ଧ କରନ୍ତୁ/ଚଲାନ୍ତୁ।\n" +" --file-format=FFORMAT ସଜ୍ଜିକୃତ PCM ତଥ୍ୟକୁ ଲିପିବଦ୍ଧ କରନ୍ତୁ/ଚଲାନ୍ତୁ।\n" +" --list-file-formats ତାଲିକା ଉପଲବ୍ଧ ଫାଇଲ ସଜ୍ଜିକରଣ ଶୈଳୀ।\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1536,136 +1443,127 @@ msgstr "" "libpulse %s ସହିତ ସଂକଳିତ\n" "libpulse %s ସହିତ ସଂଯୁକ୍ତ\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "ଅବୈଧ ପୁନଃ ପ୍ରତିଦର୍ଶନ ଧାରା '%s'।" - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'\n" +msgid "Invalid client name '%s'" +msgstr "ଅବୈଧ କ୍ଲାଏଣ୍ଟ ନାମ '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "ଅବୈଧ ବିଳମ୍ବତା ବିଶେଷ ଲକ୍ଷଣ '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "ଅବୈଧ ଧାରା ନାମ '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "ଅବୈଧ ପଦ୍ଧତି ସମୟ ବିଶେଷ ଲକ୍ଷଣ '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "ଅବୈଧ ପୁନଃ ପ୍ରତିଦର୍ଶନ ଧାରା '%s'।" +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "ଅବୈଧ ବିଳମ୍ବତା ବିଶେଷ ଲକ୍ଷଣ '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "ଅବୈଧ ପଦ୍ଧତି ସମୟ ବିଶେଷ ଲକ୍ଷଣ '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "ଅବୈଧ ଗୁଣଧର୍ମ '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "ଅଜଣା ଫାଇଲ ସଜ୍ଜିକରଣ ଶୈଳୀ %s।" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "ଅବୈଧ ନମୁନା ବିଶେଷ ଲକ୍ଷଣ\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "ଅବୈଧ ନମୁନା ବିଶେଷ ଲକ୍ଷଣ" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "ଅତ୍ୟଧିକ ସ୍ୱତନ୍ତ୍ରଚର।\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "ଅତ୍ୟଧିକ ସ୍ୱତନ୍ତ୍ରଚର।" -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "ନମୁନା ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "ଫାଇଲ ପାଇଁ ନମୁନା ସୂଚନା ସୃଷ୍ଟି କରିବାରେ ବିଫଳ।" -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "ଧ୍ୱନି ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ଧ୍ୱନି ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "ଚେତାବନୀ: ଉଲ୍ଲିଖିତ ନମୁନା ବିଶେଷ ଲକ୍ଷଣକୁ ଫାଇଲରୁ ବିଶେଷ ଲକ୍ଷଣ ସହିତ ନବଲିଖନ କରାଯିବ।" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "ନମୁନା ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ଫାଇଲରୁ ନମୁନା ସୂଚନା ନିର୍ଦ୍ଧାରଣ କରିବାରେ ବିଫଳ।" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "ଚେତାବନୀ: ଫାଇଲରୁ ଚ୍ୟାନେଲ ମ୍ୟାପ ନିର୍ଦ୍ଧାରଣ କରିବାରେ ବିଫଳ।" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "ନମୁନା ବିଶେଷ ଲକ୍ଷଣ ସହିତ ଚ୍ୟାନେଲ ମ୍ୟାପ ମେଳ ଖାଉନାହିଁ\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "ନମୁନା ବିଶେଷ ଲକ୍ଷଣ ସହିତ ଚ୍ୟାନେଲ ମ୍ୟାପ ମେଳ ଖାଉନାହିଁ" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "ଚେତାବନୀ: ଚ୍ୟାନେଲ ମ୍ୟାପକୁ ଫାଇଲରେ ଲେଖିବାରେ ବିଫଳ।" + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "ନମୁନା ବିଶେଷ ଲକ୍ଷଣ '%s' ଏବଂ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s' ସହିତ ଗୋଟିଏ %s ଧାରାକୁ ଖୋଲୁଅଛି।" #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "ନମୁନା ବିଶେଷ ଲକ୍ଷଣ '%s' ସହିତ ଗୋଟିଏ %s ଧାରାକୁ ଖୋଲୁଅଛି।\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "ଅନୁଲିପି କରୁଅଛି" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "ପଛଚଲା" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।" + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() ବିଫଳ ହୋଇଛି।" + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() ବିଫଳ ହୋଇଛି।" + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() ବିଫଳ ହୋଇଛି।\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() ବିଫଳ ହୋଇଛି।\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() ବିଫଳ ହୋଇଛି।\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() ବିଫଳ ହୋଇଛି।" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।" #: ../src/utils/pasuspender.c:81 #, c-format @@ -1692,7 +1590,12 @@ msgstr "ପୁନଃ ଚଳନ କରିବାରେ ବିଫଳ: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "WARNING: ଧ୍ୱନି ସର୍ଭରଟି ସ୍ଥାନୀୟ ନୁହଁ, ନିଲମ୍ବିତ କରୁନାହିଁ।\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "ସଂଯୋଗ ବିଫଳ ହୋଇଛି: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT ପାଇଛି, ଉତ୍ସାହିତ କରୁଅଛି।\n" @@ -1731,32 +1634,47 @@ msgstr "" "libpulse %s ସହିତ ସଂକଳିତ\n" "libpulse %s ସହିତ ସଂଯୁକ୍ତ\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "ପରିସଂଖ୍ୟାନ ପାଇବାରେ ବିଫଳ: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() ବିଫଳ ହୋଇଛି।\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() ବିଫଳ ହୋଇଛି।\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() ବିଫଳ ହୋଇଛି।\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "ପରିସଂଖ୍ୟାନ ପାଇବାରେ ବିଫଳ: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "ବର୍ତ୍ତମାନ ବ୍ୟବହାରରେ ଅଛି: %u ବ୍ଲକ ସମୁଦାୟ %s ବାଇଟ ଧାରଣ କରିଥାଏ।\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "ସମଗ୍ର ଜୀବନରେ ବଣ୍ଟିତ ହୋଇଥାଏ: %u ବ୍ଲକ ସମୁଦାୟ %s ବାଇଟ ଧାରଣ କରିଥାଏ।\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "ନମୁନା କ୍ୟାଶେ ଆକାର: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "ସର୍ଭର ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get server information: %s" +msgstr "ସର୍ଭର ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1779,12 +1697,12 @@ msgstr "" "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଉତ୍ସ: %s\n" "କୁକି: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "ସିଙ୍କ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get sink information: %s" +msgstr "ସିଙ୍କ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1823,22 +1741,22 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tରୂପରେଖଗୁଡ଼ିକ:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tସକ୍ରିୟ ରୂପରେଖା: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "ଉତ୍ସ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "\tPorts:\n" +msgstr "\tସଂଯୋଗିକୀଗୁଡ଼ିକ:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tସକ୍ରିୟ ସଂଯୋଗିକୀ: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "ଉତ୍ସ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1877,20 +1795,20 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "ଏକକାଂଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get module information: %s" +msgstr "ଏକକାଂଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1907,12 +1825,12 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "ଗ୍ରାହକ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get client information: %s" +msgstr "ଗ୍ରାହକ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1927,12 +1845,12 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "କାର୍ଡ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get card information: %s" +msgstr "କାର୍ଡ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1949,22 +1867,22 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tରୂପରେଖଗୁଡ଼ିକ:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tସକ୍ରିୟ ରୂପରେଖା: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "ସିଙ୍କ ନିବେଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "ସିଙ୍କ ନିବେଶ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2001,12 +1919,12 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "ଉତ୍ସ ଫଳାଫଳ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get source output information: %s" +msgstr "ଉତ୍ସ ଫଳାଫଳ ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2035,12 +1953,12 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "ନମୁନା ସୂଚନା ପାଇବାରେ ବିଫଳ: %s\n" +msgid "Failed to get sample information: %s" +msgstr "ନମୁନା ସୂଚନା ପାଇବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2071,22 +1989,26 @@ msgstr "" "\tଗୁଣଧର୍ମ:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "ବିଫଳତା: %s\n" +msgid "Failure: %s" +msgstr "ବିଫଳତା: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "ନମୁନାକୁ ଧାରଣ କରିବାରେ ବିଫଳ: %s\n" +msgid "Failed to upload sample: %s" +msgstr "ନମୁନାକୁ ଧାରଣ କରିବାରେ ବିଫଳ: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "ଫାଇଲର ସମୟ ପୂର୍ବ ସମାପ୍ତି\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "ଫାଇଲର ସମୟ ପୂର୍ବ ସମାପ୍ତି" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT ପାଇଛି, ଉତ୍ସାହିତ କରୁଅଛି।" + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2094,15 +2016,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2112,29 +2040,35 @@ msgid "" " -n, --client-name=NAME How to call this client on the " "server\n" msgstr "" -"%s [options] stat\n" -"%s [options] list\n" -"%s [options] exit\n" -"%s [options] upload-sample FILENAME [NAME]\n" -"%s [options] play-sample NAME [SINK]\n" -"%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" -"%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] stat\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] list\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] exit\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] upload-sample FILENAME [NAME]\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] play-sample NAME [SINK]\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] remove-sample NAME\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] move-sink-input ID SINK\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] move-source-output ID SOURCE\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] load-module NAME [ARGS ...]\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] unload-module ID\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] suspend-sink [SINK] 1|0\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] suspend-source [SOURCE] 1|0\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-card-profile [CARD] [PROFILE] \n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-sink-port [SINK] [PORT] \n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-source-port [SOURCE] [PORT] \n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-sink-volume SINK VOLUME\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-source-volume SOURCE VOLUME\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-sink-mute SINK 1|0\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-source-mute SOURCE 1|0\n" +"%s [ବିକଳ୍ପଗୁଡ଼ିକ] set-sink-input-mute SINKINPUT 1|0\n" "\n" -" -h, --help Show this help\n" -" --version Show version\n" +" -h, --help ଏହି ସହାୟତାକୁ ଦର୍ଶାନ୍ତୁ\n" +" --version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ\n" "\n" -" -s, --server=SERVER The name of the server to connect " -"to\n" -" -n, --client-name=NAME How to call this client on the " -"server\n" +" -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଁ ସର୍ଭରର ନାମ\n" +" -n, --client-name=NAME ସର୍ଭରରେ ଏହି କ୍ଲାଏଣ୍ଟକୁ କିପରି ଡାକିବେ\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2145,81 +2079,108 @@ msgstr "" "libpulse %s ସହିତ ସଂକଳିତ\n" "libpulse %s ସହିତ ସଂଯୁକ୍ତ\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "ଧାରଣ କରିବା ପାଇଁ ଗୋଟିଏ ନୁମନା ଫାଇଲ ଉଲ୍ଲେଖ କରନ୍ତୁ\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "ଧ୍ୱନି ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "ନମୁନା ବିଶେଷ ଲକ୍ଷଣ '%s' ସହିତ ଗୋଟିଏ %s ଧାରାକୁ ଖୋଲୁଅଛି।\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "ଚଲାଇବା ପାଇଁ ଆପଣଙ୍କୁ ଗୋଟିଏ ନମୁନା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "କାଢ଼ିବା ପାଇଁ ଆପଣଙ୍କୁ ଗୋଟିଏ ନମୁନା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "ଧାରଣ କରିବା ପାଇଁ ଗୋଟିଏ ନୁମନା ଫାଇଲ ଉଲ୍ଲେଖ କରନ୍ତୁ" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଉତ୍ସ ନିର୍ଗମ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ଉତ୍ସ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" +msgid "Failed to open sound file." +msgstr "ଧ୍ୱନି ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ।" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଏକକାଂଶ ନାମ ଏବଂ ସ୍ୱତନ୍ତ୍ରଚରଗୁଡ଼ିକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ।\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "ଚେତାବନୀ: ଫାଇଲରୁ ନମୁନା ବିଶେଷ ଲକ୍ଷଣକୁ ନିର୍ଦ୍ଧାରଣ କରିବାରେ ବିଫଳ।" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଏକକାଂଶ ଅନୁକ୍ରମଣିକାକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ ନୁହଁ\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "ଚଲାଇବା ପାଇଁ ଆପଣଙ୍କୁ ଗୋଟିଏ ନମୁନା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "କାଢ଼ିବା ପାଇଁ ଆପଣଙ୍କୁ ଗୋଟିଏ ନମୁନା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଉତ୍ସ ନିର୍ଗମ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ଉତ୍ସ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଏକକାଂଶ ନାମ ଏବଂ ସ୍ୱତନ୍ତ୍ରଚରଗୁଡ଼ିକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ।" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଏକକାଂଶ ଅନୁକ୍ରମଣିକାକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ ନୁହଁ" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"ଆପଣଙ୍କୁ ଗୋଟିଏରୁ ଅଧିକ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ପଡ଼ିନପାରେ। ଆପଣଙ୍କୁ ଗୋଟିଏ ବୁଲିଆନ ମୂଲ୍ୟ ଉଲ୍ଲେଖ କରିବାକୁ " -"ହେବ।\n" +"ଆପଣଙ୍କୁ ଗୋଟିଏରୁ ଅଧିକ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ପଡ଼ିନପାରେ। ଆପଣଙ୍କୁ ଗୋଟିଏ ବୁଲିଆନ ମୂଲ୍ୟ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ।" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"ଆପଣଙ୍କୁ ଗୋଟିଏରୁ ଅଧିକ ଉତ୍ସ ଉଲ୍ଲେଖ କରିବାକୁ ପଡ଼ିନପାରେ। ଆପଣଙ୍କୁ ଗୋଟିଏ ବୁଲିଆନ ମୂଲ୍ୟ ଉଲ୍ଲେଖ କରିବାକୁ " -"ହେବ।\n" +"ଆପଣଙ୍କୁ ଗୋଟିଏରୁ ଅଧିକ ଉତ୍ସ ଉଲ୍ଲେଖ କରିବାକୁ ପଡ଼ିନପାରେ। ଆପଣଙ୍କୁ ଗୋଟିଏ ବୁଲିଆନ ମୂଲ୍ୟ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ।" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ କାର୍ଡ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ରୂପରେଖା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ କାର୍ଡ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ରୂପରେଖା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ କାର୍ଡ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ରୂପରେଖା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ସଂଯୋଗିକୀ ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ କାର୍ଡ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ରୂପରେଖା ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଉତ୍ସ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ସଂଯୋଗିକୀ ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "କୌଣସି ବୈଧ ନିର୍ଦ୍ଦେଶ ଉଲ୍ଲେଖ କରାଯାଇନାହିଁ।\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ସଂଯୋଗିକୀ ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() ବିଫଳ ହୋଇଛି: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "ଅବୈଧ ନମୁନା ବିଶେଷ ଲକ୍ଷଣ" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଉତ୍ସ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ସଂଯୋଗିକୀ ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "ଅବୈଧ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ସଂଯୋଗିକୀ ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଉତ୍ସ ନାମ/ଅନୁକ୍ରମଣିକା ଏବଂ ସଂଯୋଗିକୀ ନାମ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା ଏବଂ ଗୋଟିଏ ସିଙ୍କ ଉଲ୍ଲେଖ କରିବାକୁ ହେବ" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "ଅବୈଧ ସିଙ୍କ ନିବେଶ ଅନୁକ୍ରମଣିକା ବିଶେଷ ଲକ୍ଷଣ" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "କୌଣସି ବୈଧ ନିର୍ଦ୍ଦେଶ ଉଲ୍ଲେଖ କରାଯାଇନାହିଁ।" #: ../src/utils/pax11publish.c:61 #, c-format @@ -2299,48 +2260,48 @@ msgstr "କୁକି ତଥ୍ୟ ଧାରଣ କରିବାରେ ବିଫ msgid "Not yet implemented.\n" msgstr "ଅପର୍ଯ୍ୟନ୍ତ କାର୍ଯ୍ୟକାରୀ ହୋଇନାହିଁ।\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "କୌଣସି PulseAudio ଡେମନ ଚାଲୁନାହିଁ, କିମ୍ବା ଅଧିବେଶନ ଡେମନ ପରି ଚାଲୁନାହିଁ।" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "ସକେଟ(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "ସଂଯୋଗ କରନ୍ତୁ(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio ଡେମନକୁ ବନ୍ଦ କରିବାରେ ବିଫଳ।" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "ଡେମନ ଉତ୍ତର ଦେଉନାହିଁ।" -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "ବାଛନ୍ତୁ(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "ପଢ଼ନ୍ତୁ(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "ଲେଖନ୍ତୁ(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn ଅପରିବର୍ତ୍ତନୀୟତାକୁ ଅଭିଗମ୍ୟ କରିହେଉ ନାହିଁ" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2357,7 +2318,7 @@ msgstr "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2375,125 +2336,22 @@ msgstr "" "returned 0 or another value < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "ଅଫ" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "ଉଚ୍ଚ ଫିଡିଲିଟି ପଛଚଲା (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "ଉଚ୍ଚ ଫିଡିଲିଟି ପଛଚଲା (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "ଟେଲିଫୋନି ଡ୍ୟୁପ୍ଲେକ୍ସ (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio ଧ୍ୱନି ସର୍ଭର" - -#~ msgid "Analog Mono" -#~ msgstr "ଅନୁରୂପ ମୋନୋ" - -#~ msgid "Analog Stereo" -#~ msgstr "ଅନୁରୂପ ଷ୍ଟେରିଓ" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "ସାଂଖିକ ଷ୍ଟେରିଓ (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "ସାଂଖିକ ଷ୍ଟେରିଓ (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "ସାଂଖିକ ଚତୁର୍ପାର୍ଶ୍ୱ 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "ସାଂଖିକ ଚତୁର୍ପାର୍ଶ୍ୱ 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "ଅନୁରୂପ ଚତୁର୍ପାର୍ଶ୍ୱ 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "ଫଳାଫଳ %s + ନିବେଶ %s" - -#~ msgid "Output %s" -#~ msgstr "ଫଳାଫଳ %s" - -#~ msgid "Input %s" -#~ msgstr "ନିବେଶ %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "ଧାରା ସଫଳତାର ସହିତ ନିର୍ମିତ ହୋଇଛି\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "ଧାରା ତ୍ରୁଟି: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "ସଂଯୋଗ ସ୍ଥାପିତ ହୋଇସାରିଛି।\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help ଏହି ସହାୟତା ଦର୍ଶାନ୍ତୁ\n" -#~ " --version ସଂସ୍କରଣ ଦର୍ଶାନ୍ତୁ\n" -#~ "\n" -#~ " -v, --verbose verbose ପ୍ରୟୋଗକୁ ସକ୍ରିୟ କରନ୍ତୁ\n" -#~ "\n" -#~ " -s, --server=SERVER ସଂଯୋଗ କରିବା ପାଇଁ ସର୍ଭରର ନାମ\n" -#~ " -d, --device=DEVICE ସଂଯୋଗ କରିବା ପାଇଁ ସିଙ୍କର ନାମ\n" -#~ " -n, --client-name=NAME ସର୍ଭର ଉପରେ ଏହି ଗ୍ରାହକଙ୍କୁ କିପରି ଡ଼ାକିବେ\n" -#~ " --stream-name=NAME ସର୍ଭର ଉପରେ ଏହି ଧାରାକୁ କିପରି ଡ଼ାକିବେ\n" -#~ " --volume=VOLUME ପ୍ରାରମ୍ଭିକ (ସିଧା) ଆକାରକୁ ସୀମା " -#~ "0...65536 ମଧ୍ଯରେ ଉଲ୍ଲେଖ କରନ୍ତୁ\n" -#~ " --channel-map=CHANNELMAP ବ୍ୟବହାର ପାଇଁ ଚ୍ୟାନେଲ ମ୍ୟାପକୁ ସେଟ କରନ୍ତୁ\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "libpulse %s ସହିତ ସଂକଳିତ\n" -#~ "libpulse %s ସହିତ ସଂଯୁକ୍ତ\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "ଫାଇଲ '%s' କୁ ଖୋଲିବାରେ ବିଫଳ\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "ଚ୍ୟାନେଲ ମ୍ୟାପ ଫାଇଲ ସହିତ ମେଳ ଖାଉନାହିଁ।\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "ନମୁନା spec '%s' ବ୍ୟବହାର କରି\n" diff --git a/po/pa.po b/po/pa.po index 5f5585e06..2f0097abc 100644 --- a/po/pa.po +++ b/po/pa.po @@ -9,17 +9,22 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio.master-tx.pa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-06-06 07:38+0530\n" -"Last-Translator: A S Alam \n" -"Language-Team: American English \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 11:19+0530\n" +"Last-Translator: Jaswinder Singh \n" +"Language-Team: Punjabi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 0.3\n" +"X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -30,7 +35,7 @@ msgstr "" "snd_pcm_avail() ਤੋਂ ਇੱਕ ਮੁੱਲ ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹੁਤ ਵੱਡਾ ਹੈ: %lu ਬਾਈਟ (%lu ms)।\n" "ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮੁੱਦੇ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।" -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -41,7 +46,7 @@ msgstr "" "snd_pcm_delay() ਤੋਂ ਇੱਕ ਮੁੱਲ ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹੁਤ ਵੱਡਾ ਹੈ: %li ਬਾਈਟ (%s%lu ms)।\n" "ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮੁੱਦੇ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।" -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -52,9 +57,17 @@ msgstr "" "snd_pcm_mmap_begin() ਤੋਂ ਇੱਕ ਮੁੱਲ ਮਿਲਿਆ ਹੈ, ਜੋ ਬਹੁਤ ਵੱਡਾ ਹੈ: %lu ਬਾਈਟ (%lu ms)।\n" "ਇਹ ALSA ਡਰਾਈਵਰ '%s' ਵਿਚਲਾ ਬੱਗ ਲੱਗਦਾ ਹੈ। ਇਸ ਮੁੱਦੇ ਦੀ ALSA ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਰਿਪੋਰਟ ਦਿਓ ਜੀ।" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "ਹਮੇਸ਼ਾਂ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਸਿੰਕ ਲੋਡ ਹੀ ਰੱਖੋ ਭਾਵੇਂ ਇਹ ਇੱਕ ਜ਼ੀਰੋ (null) ਹੇਵੋ" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "ਡੰਮੀ ਆਊਟਪੁੱਟ" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "ਵਰਚੁਅਲ LADSPA ਸਿੰਕ" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -64,12 +77,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "ਕਲਾਕਡ NULL ਸਿੰਕ" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "ਜ਼ੀਰੋ (Null) ਆਉਟਪੁੱਟ" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "ਮਾਡਮ" @@ -85,365 +111,246 @@ msgstr "ਨਵਾਂ dl ਲੋਡਰ ਦੇਣ ਲਈ ਫੇਲ੍ਹ।" msgid "Failed to add bind-now-loader." msgstr "ਬਾਈਂਡ-ਨਾਓ-ਲੋਡਰ ਜੋੜਨ ਵਿੱਚ ਫੇਲ੍ਹ ਹੋਇਆ।" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "ਸਿਸਟਮ ਬੱਸ ਨਾਲ ਜੁੜਨ ਨਹੀਂ ਸਕਿਆ: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID ਤੋਂ ਕਾਲਰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਿਆ: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "ਕਾਲਰ ਐਬਜੈਕਟ ਤੇ UID ਸੈੱਟ ਨਹੀਂ ਕਰ ਸਕਿਆ।" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK ਸ਼ੈਸ਼ਨ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਫੇਲ।" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "ਸ਼ੈਸ਼ਨ ਆਬਜੈਕਟ ਤੇ UID ਸੈੱਟ ਨਹੀਂ ਕਰ ਸਕਿਆ।" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction ਨਹੀਂ ਦੇ ਸਕਿਆ।" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext ਜਾਰੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext ਨੂੰ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰ ਸਕਿਆ: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "ਪਤਾ ਨਹੀਂ ਕਰ ਸਕਿਆ ਕਿ ਕੀ ਕਾਲਰ ਪਰਮਾਣਿਤ ਹੈ: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "ਪਰਮਾਣਕਿਤਾ ਨਹੀਂ ਲੈ ਸਕਦਾ: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit ਦੇ ਜਵਾਬ ਵਜੋਂ '%s' ਮਿਲਿਆ ਹੈ" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "%s ਸਿਗਨਲ ਮਿਲਿਆ ਹੈ।" -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "'%s' ਯੂਜ਼ਰ ਲੱਭਣ ਵਿੱਚ ਫੇਲ੍ਹ ਹੋਇਆ ਹੈ।" -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "'%s' ਗਰੁੱਪ ਲੱਭਣ ਵਿੱਚ ਫੇਲ ਹੋਇਆ ਹੈ।" -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "ਯੂਜ਼ਰ '%s' (UID %lu) ਅਤੇ ਗਰੁੱਪ '%s' (GID %lu) ਲੱਭੇ ਹਨ।" -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "ਯੂਜ਼ੂ '%s' ਅਤੇ ਗਰੁੱਪ '%s' ਦਾ GID ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ।" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "ਯੂਜ਼ੂ '%s' ਦੀ ਘਰ ਡਾਇਰੈਕਟਰੀ '%s' ਨਹੀਂ, ਅਣਡਿੱਠਾ ਕਰ ਰਿਹਾ।" -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' ਬਣਾਉਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "ਗਰੁੱਪ ਲਿਸਟ ਬਦਲਣ ਲਈ ਫੇਲ੍ਹ: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID ਬਦਲਣ ਲਈ ਫੇਲ੍ਹ: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID ਬਦਲਣ ਲਈ ਫੇਲ੍ਹ: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "ਰੂਟ ਅਧਿਕਾਰ ਸਫਲਤਾਪੂਰਕ ਹਟਾਏ ਗਏ।" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਿਸਟਮ ਸੰਬੰਧੀ ਮੋਡ ਨੂੰ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) ਫੇਲ੍ਹ ਹੋਇਆ: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "ਕਮਾਂਡ ਲਾਈਨ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ।" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "ਅਸੀਂ ਗਰੁੱਪ '%s' ਵਿੱਚ ਹਾਂ, ਜਿਸ ਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ ਤਹਿ ਕੀਤਾ ਗਿਆ ਹੈ।" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "ਅਸੀਂ ਗਰੁੱਪ '%s' ਵਿੱਚ ਹਾਂ, ਜਿਸ ਨੂੰ ਰੀਅਲ-ਟਾਈਮ ਤਹਿ ਕੀਤਾ ਗਿਆ ਹੈ।" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit ਸਾਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ-ਪ੍ਰਾਪਤੀ ਅਧਿਕਾਰ ਦਿੰਦੀ ਹੈ।" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit ਵਧੇਰੇ-ਤਰਜੀਹ-ਪ੍ਰਾਪਤੀ ਅਧਿਕਾਰ ਹਟਾਉਂਦੀ ਹੈ।" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit ਸਾਨੂੰ ਰੀਅਲ-ਟਾਈਮ-ਪ੍ਰਾਪਤੀ ਅਧਿਕਾਰ ਦਿੰਦੀ ਹੈ।" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit ਰੀਅਲ-ਟਾਈਮ-ਪ੍ਰਾਪਤੀ ਅਧਿਕਾਰ ਹਟਾਉਂਦੀ ਹੈ।" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "ਸੰਰਚਨਾ ਵਿੱਚ ਵਧੇਰੇ-ਤਰਜੀਹ ਯੋਗ ਕੀਤੀ ਗਈ ਹੈ, ਪਰ ਪਾਲਸੀ ਵਲੋਂ ਮਨਜ਼ੂਰ ਨਹੀਂ ਕੀਤੀ।" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO ਨੂੰ ਸਫਲਤਾਪੂਰਕ ਵਧਾਇਆ ਗਿਆ" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO ਫੇਲ੍ਹ: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE ਨੂੰ ਹਟਾ ਰਿਹਾ ਹੈ" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "ਰੀਅਲ-ਟਾਈਮ ਤਹਿ ਨੂੰ ਸੰਰਚਨਾ ਵਿੱਚ ਯੋਗ ਕਰਨ ਨਾਲ, ਪਰ ਪਾਲਸੀ ਵਲੋਂ ਮਨਜੂਰ ਨਹੀਂ ਕੀਤੀ।" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "ਡੈਮਨ PID %u ਤੌਰ ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "ਡੈਮਨ ਖਤਮ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "ਇਹ ਪਰੋਗਰਾਮ ਰੂਟ ਦੇ ਤੌਰ ਤੇ ਚਲਾਉਣ ਲਈ ਨਹੀਂ ਹੈ (ਜਦੋਂ ਤੱਕ --system ਦਿੱਤਾ ਨਹੀਂ ਜਾਂਦਾ)।" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "ਰੂਟ ਅਧਿਕਾਰਾਂ ਦੀ ਲੋੜ ਹੈ।" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start ਨੂੰ ਸਿਸਟਮ ਮੌਕਿਆਂ ਲਈ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ --disallow-exit ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ --disallow-module-loading ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਜ਼ਬਰਦਸਤੀ SHM ਮੋਡ ਨੂੰ ਅਯੋਗ ਕਰ ਰਿਹਾ ਹੈ!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ, ਜ਼ਬਰਦਸਤੀ idle ਟਾਈਲ ਬੰਦ ਨੂੰ ਅਯੋਗ ਕਰ ਰਿਹਾ ਹੈ!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "ਸਟੂਡੀਓ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ।" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe ਫੇਲ੍ਹ: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਫੇਲ੍ਹ ਹੋਈ।" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਸਫ਼ਲ ਹੋਈ।" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "ਇਹ ਪਲਸਆਡੀਓ %s ਹੈ" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "ਕੰਪਾਈਲੇਸ਼ਨ ਹੋਸਟ: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "ਕੰਪਾਈਲੇਸ਼ਨ CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "ਹੋਸਟ ਤੇ ਚੱਲ ਰਿਹਾ ਹੈ: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUs ਲੱਭੇ।" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "ਪੇਜ਼ ਸਾਈਜ਼ %lu ਬਾਈਟ ਹੈ" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind ਸਹਿਯੋਗ ਨਾਲ ਕੰਪਾਈਲ: ਹਾਂ" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind ਸਹਿਯੋਗ ਨਾਲ ਕੰਪਾਈਲ: ਨਹੀਂ" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Valgrind ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "ਓਪਟੀਮਾਈਜ਼ਡ ਬਿਲਡ: ਹਾਂ" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "ਓਪਟੀਮਾਈਜ਼ਡ ਬਿਲਡ: ਨਹੀਂ" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG ਪਰਿਭਾਸ਼ਤ, ਸਭ asserts ਅਯੋਗ ਹਨ।" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH ਪਰਿਭਾਸ਼ਤ, ਸਿਰਫ ਫਾਸਟ ਪਾਥ asserts ਅਯੋਗ ਹਨ।" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "ਸਭ asserts ਯੋਗ ਕੀਤੇ ਹਨ।" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "ਮਸ਼ੀਨ ID ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "ਮਸ਼ੀਨ ID %s ਹੈ।" -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "ਮਸ਼ੀਨ ID %s ਹੈ।" +msgstr "ਸ਼ੈਸ਼ਨ ID %s ਹੈ।" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "ਰਨਟਾਈਮ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "ਸਟੇਟ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "ਮੈਡਿਊਲ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -452,43 +359,48 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"ਠੀਕ ਹੈ, ਤਾਂ ਤੁਸੀਂ PA ਨੂੰ ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚਲਾ ਰਹੇ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਰੱਖੋ ਕਿ ਤੁਹਾਨੂੰ ਇਹ ਕਰਨਾ " +"ਨਹੀਂ ਚਾਹੀਦਾ।\n" +"ਜੇ ਤੁਸੀਂ ਅਜਿਹਾ ਕੀਤਾ ਹੈ ਤਾਂ ਇਹ ਤੁਹਾਡੀ ਗਲਤੀ ਹੈ ਜੇ ਲੋੜ-ਮੁਤਾਬਕ ਠੀਕ ਕੰਮ ਨਾ ਚੱਲਿਆ।\n" +"ਕਿਰਪਾ ਕਰਕੇ ਸਿਸਟਮ ਮੋਡ ਦੇ ਗਲਤ ਹੋਣ ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://pulseaudio.org/wiki/" +"WhatIsWrongWithSystemMode ਵੇਖੋ।" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() ਫੇਲ੍ਹ ਹੈ।" -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "ਤਾਜ਼ੀ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਉਪਲੱਬਧ ਹੈ! Bon appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "" "ਮਿੱਤਰਾ, ਤੇਰਾ ਕਰਨਲ ਪੁਰਾਣਾ ਹੈ! ਚੀਫ ਦੀ ਅੱਜ ਦੀ ਸਿਫਾਰਸ਼ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਯੋਗ ਨਾਲ ਲੀਨਕਸ ਹੈ!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() ਫੇਲ੍ਹ ਹੈ।" -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "ਡੈਮਨ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ।" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਬਿਨਾਂ ਕਿਸੇ ਲੋਡ ਕੀਤੇ ਮੈਡਿਊਲ, ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਮੁਕੰਮਲ।" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "ਡੈਮਨ ਬੰਦ ਕਰਨਾ ਸ਼ੁਰੂ ਹੋ ਗਿਆ।" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "ਡੈਮਨ ਬੰਦ ਹੋ ਗਿਆ।" @@ -738,96 +650,92 @@ msgstr "ਇੱਕ ਵਾਰ ਲੋਡ ਕਰੋ: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "DEPRECATION WARNING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "ਪਾਥ: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] ਗਲਤੀ ਲਾਗ ਲੈਵਲ '%s'।" -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ rlimit '%s'।" -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit ਨੂੰ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਫਾਰਮੈਟ '%s'।" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਰੇਟ '%s'।" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਚੈਨਲ '%s'।" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'।" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] ਫਰੈਗਮੈਂਟਾਂ ਦਾ ਅਢੁੱਕਵਾਂ ਨੰਬਰ '%s'।" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਫਰੈਗਮੈਂਟ ਅਕਾਰ '%s'।" -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ nice ਲੈਵਲ '%s'।" -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "ਦਿੱਤੇ ਡਿਫਾਲਟ ਚੈਨਲ ਮੈਪ ਦੀ ਦਿੱਤੇਤ ਚੈਨਲ ਗਿਣਤੀ ਨਾਲੋਂ ਇੱਕ ਵੱਖਰੀ ਚੈਨਲ ਗਿਣਤੀ ਹੈ।" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚੋਂ ਪੜਿਆ: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "ਰੂਟ ਅਧਿਕਾਰ ਹਟਾ ਰਿਹਾ ਹੈ।" - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "CAP_SYS_NICE ਨੂੰ ਸਫਲਤਾਪੂਰਕ ਸੀਮਿਤ ਸਮੱਰਥਾ।" +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "ਅਧਿਕਾਰ ਹਟਾ ਰਿਹਾ ਹੈ।" #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -837,25 +745,7 @@ msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਸਿਸਟਮ" msgid "Start the PulseAudio Sound System" msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਸਿਸਟਮ ਚਲਾਓ" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਲਈ ਵਧੇਰੇ-ਤਰਜੀਹ ਸੈਡਿਊਲ (ਨਾਂ-ਵਾਚਕ ਯੂਨੈਕਸ ਨਾਈਸ ਲੈਵਲ)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਰੀਅਲ-ਟਾਈਮ ਸੈਡਿਊਲ" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "ਸਿਸਟਮ ਪਾਲਸੀ ਪਲਸਆਡੀਓ ਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ ਸੈਡਿਊਲ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ।" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "ਸਿਸਟਮ ਪਾਲਸੀ ਪਲਸਆਡੀਓ ਨੂੰ ਵਧੇਰੇ-ਤਰਜੀਹ ਰੀਅਲ-ਟਾਈਮ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਰੋਕਦੀ ਹੈ।" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "ਮੋਨੋ" @@ -1059,33 +949,33 @@ msgstr "ਉੱਤੇ ਪਿੱਛੇ ਖੱਬੇ" msgid "Top Rear Right" msgstr "ਉੱਤੇ ਪਿੱਛੇ ਸੱਜੇ" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(ਅਢੁੱਕਵਾਂ)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "ਸਟੀਰੀਓ" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "ਸਰਾਊਂਡਿੰਗ 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "ਸਰਾਊਂਡਿੰਗ 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "ਸਰਾਊਂਡਿੰਗ 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "ਸਰਾਊਂਡਿੰਗ 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "ਸਰਾਊਂਡਿੰਗ 7.1" @@ -1189,27 +1079,35 @@ msgstr "ਗੈਰ-ਮੌਜੂਦ ਨਿਰਧਾਰਨ" msgid "Client forked" msgstr "ਕਲਾਇਟ ਅੱਡ ਕੀਤਾ" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1222,192 +1120,191 @@ msgstr "XOpenDisplay() ਫੇਲ੍ਹ ਹੈ" msgid "Failed to parse cookie data" msgstr "ਕੂਕੀ ਡਾਟਾ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ '%s' ਨੂੰ ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "ਕੋਈ ਕੂਕੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "ਅਣਜਾਣੀ ਇਕਸਟੈਂਸ਼ਨ '%s' ਲਈ ਸੁਨੇਹਾ ਮਿਲਿਆ ਹੈ" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "ਸਟਰੀਮ ਡਰੇਨ ਫੇਲ੍ਹ ਹੋਇਆ: %s\n" +msgid "Failed to drain stream: %s" +msgstr "ਸਟਰੀਮ ਡਰੇਨ ਫੇਲ੍ਹ ਹੋਇਆ: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "ਪਲੇਬੈਕ ਸਟਰੀਮ ਡਰੇਨ ਕੀਤੀ।\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "ਪਲੇਬੈਕ ਸਟਰੀਮ ਡਰੇਨ ਕੀਤੀ।" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਡਰੇਨ ਹੋ ਰਿਹਾ ਹੈ।\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਡਰੇਨ ਹੋ ਰਿਹਾ ਹੈ।" -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "ਸਟਰੀਮ ਸਫਲਤਾਪੂਰਕ ਬਣ ਗਈ ਹੈ।\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "ਸਟਰੀਮ ਸਫਲਤਾਪੂਰਕ ਬਣ ਗਈ ਹੈ।" + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "ਸਧਾਰਨ spec '%s', ਚੈਨਲ ਮੈਪ '%s' ਦੀ ਵਰਤੋਂ।\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Buffer metrics: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "%s ਜੰਤਰ ਨਾਲ ਕੁਨਕੈਟ ਕੀਤਾ (%u, %ssuspended)।\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "ਸਧਾਰਨ spec '%s', ਚੈਨਲ ਮੈਪ '%s' ਦੀ ਵਰਤੋਂ।" -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "%s ਜੰਤਰ ਨਾਲ ਕੁਨਕੈਟ ਕੀਤਾ (%u, %ssuspended)।" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "ਸਟਰੀਮ ਜੰਤਰ ਸਸਪੈਂਡ ਕੀਤਾ ਹੈ।%s \n" +msgid "Stream error: %s" +msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "ਸਟਰੀਮ ਜੰਤਰ ਮੁੜ-ਪ੍ਰਾਪਤ ਕੀਤਾ।%s \n" +msgid "Stream device suspended.%s" +msgstr "ਸਟਰੀਮ ਜੰਤਰ ਸਸਪੈਂਡ ਕੀਤਾ ਹੈ।%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "ਸਟਰੀਮ ਅੰਡਰਰਨ।%s \n" +msgid "Stream device resumed.%s" +msgstr "ਸਟਰੀਮ ਜੰਤਰ ਮੁੜ-ਪ੍ਰਾਪਤ ਕੀਤਾ।%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "ਸਟਰੀਮ ਓਵਰਰਨ।%s \n" +msgid "Stream underrun.%s" +msgstr "ਸਟਰੀਮ ਅੰਡਰਰਨ।%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "ਸਟਰੀਮ ਸ਼ੁਰੂ ਕੀਤੀ। %s\n" +msgid "Stream overrun.%s" +msgstr "ਸਟਰੀਮ ਓਵਰਰਨ।%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "ਸਟਰੀਮ ਨੂੰ ਜੰਤਰ %s ਤੋਂ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ ਹੈ (%u, %ssuspended)।%s \n" +msgid "Stream started.%s" +msgstr "ਸਟਰੀਮ ਸ਼ੁਰੂ ਕੀਤੀ। %s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "ਸਟਰੀਮ ਨੂੰ ਜੰਤਰ %s ਤੋਂ ਤਬਦੀਲ ਕੀਤਾ ਗਿਆ ਹੈ (%u, %ssuspended)।%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "ਨਹੀਂ " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "ਸਟਰੀਮ ਬਫਰ ਐਟਰੀਬਿਊਟ ਤਬਦੀਲ ਕੀਤੇ ਗਏ।%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "ਸਟਰੀਮ ਬਫਰ ਐਟਰੀਬਿਊਟ ਤਬਦੀਲ ਕੀਤੇ ਗਏ।%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣ ਗਿਆ।%s \n" +msgid "Connection established.%s" +msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣ ਗਿਆ।%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ: %s\n" +msgid "Connection failure: %s" +msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF ਮਿਲਿਆ।\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF ਮਿਲਿਆ।" -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "write() failed: %s" +msgstr "write() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "ਸਿਗਨਲ ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।" + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "Failed to get latency: %s" +msgstr "ਵਕਫਾ ਪ੍ਰਾਪਤੀ ਫੇਲ ਹੋਈ: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "ਸਿਗਨਲ ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।\n" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "ਵਕਫਾ ਪ੍ਰਾਪਤੀ ਫੇਲ ਹੋਈ: %s\n" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "ਟਾਈਮ: %0.3f ਸਕਿੰਟ; ਵਕਫਾ: %0.0f usec।" -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "ਸਮਾਂ: %0.3f ਸਕਿੰਟ; ਵਕਫਾ: %0.0f usec। \r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() ਫੇਲ੍ਹ ਹੈ: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() ਫੇਲ੍ਹ ਹੈ: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1489,8 +1386,10 @@ msgstr "" "44100)\n" " --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" " --channels=CHANNELS The number of channels, 1 for mono, " "2 for stereo\n" " (defaults to 2)\n" @@ -1513,6 +1412,11 @@ msgstr "" "bytes.\n" " --process-time=BYTES Request the specified process time " "per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1525,136 +1429,127 @@ msgstr "" "libpulse %s ਦੇ ਕੰਪਾਇਲ\n" "libpulse %s ਨਾਲ ਲਿੰਕ ਕੀਤਾ\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "ਅਢੁੱਕਵਾਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।" - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'\n" +msgid "Invalid client name '%s'" +msgstr "ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "ਅਢੁੱਕਵਾਂ ਵਕਫਾ ਹਦਾਇਤ '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "ਅਢੁੱਕਵਾਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "ਅਢੁੱਕਵਾਂ ਪਰੋਸੈੱਸ ਟਾਈਮ ਹਦਾਇਤ '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "ਅਢੁੱਕਵਾਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।" +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "ਅਢੁੱਕਵਾਂ ਵਕਫਾ ਹਦਾਇਤ '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "ਅਢੁੱਕਵਾਂ ਪਰੋਸੈੱਸ ਟਾਈਮ ਹਦਾਇਤ '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "ਅਢੁੱਕਵਾਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "ਅਣਜਾਣ ਫਾਇਲ ਫਾਰਮੈਟ %s" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਹਦਾਇਤ\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਹਦਾਇਤ" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "ਬਹੁਤ ਵੱਧ ਆਰਗੂਮੈਂਟ।\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "ਬਹੁਤ ਵੱਧ ਆਰਗੂਮੈਂਟ।" -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "ਚੈਨਲ ਮੈਪ ਸੈਂਪਲ ਹਦਾਇਤ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "ਚੈਨਲ ਮੈਪ ਸੈਂਪਲ ਹਦਾਇਤ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।" + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਅਤੇ ਚੈਨਲ ਮੈਪ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।" #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "ਰਿਕਾਰਡਿੰਗ" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "ਪਲੇਅਬੈਕ" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() ਫੇਲ੍ਹ ਹੈ।" + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() ਫੇਲ੍ਹ ਹੈ।" + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() ਫੇਲ੍ਹ ਹੈ।" + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() ਫੇਲ੍ਹ ਹੈ।\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() ਫੇਲ੍ਹ ਹੈ।\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() ਫੇਲ੍ਹ ਹੈ।\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() ਫੇਲ੍ਹ ਹੈ: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() ਫੇਲ੍ਹ ਹੈ।\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new() ਫੇਲ੍ਹ ਹੈ।" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() ਫੇਲ੍ਹ ਹੈ।\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() ਫੇਲ੍ਹ ਹੈ।" #: ../src/utils/pasuspender.c:81 #, c-format @@ -1681,7 +1576,12 @@ msgstr "ਮੁੜ-ਪ੍ਰਾਪਤੀ ਫੇਲ: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "ਚੇਤਾਵਨੀ: ਸਾਊਂਡ ਸਰਵਰ ਲੋਕਲ ਨਹੀਂ ਹੈ, ਸਸਪੈਂਡ ਨਹੀਂ ਹੋ ਰਿਹਾ।\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।\n" @@ -1721,32 +1621,47 @@ msgstr "" "libpulse %s ਨਾਲ ਕੰਪਾਇਲ\n" "libpulse %s ਨਾਲ ਲਿੰਕ\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "ਅੰਕੜੇ ਪ੍ਰਾਪਤੀ ਫੇਲ੍ਹ: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() ਫੇਲ੍ਹ ਹੈ।\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() ਫੇਲ੍ਹ ਹੈ।\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() ਫੇਲ੍ਹ ਹੈ।\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "ਅੰਕੜੇ ਪ੍ਰਾਪਤੀ ਫੇਲ੍ਹ: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "ਹੁਣ ਵਰਤੋਂ ਵਿੱਚ ਹੈ: %u ਬਲਾਕ ਵਿੱਚ ਕੁੱਲ %s ਬਾਈਟ ਹਨ।\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "ਪੂਰੇ ਲਾਈਫਟਾਈਮ ਵਿੱਚ ਜਾਰੀ ਕੀਤਾ ਗਿਆ: %u ਬਲਾਕ ਵਿੱਚ ਕੁੱਲ %s ਬਾਈਟ ਹਨ।\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "ਸੈਂਪਲ ਕੈਸ਼ ਸਾਈਜ਼: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਫੇਲ ਹੋਇਆ: %s\n" +msgid "Failed to get server information: %s" +msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਫੇਲ ਹੋਇਆ: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1769,12 +1684,12 @@ msgstr "" "Default Source: %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "ਸਿੰਕ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s\n" +msgid "Failed to get sink information: %s" +msgstr "ਸਿੰਕ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1813,22 +1728,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format msgid "\tPorts:\n" -msgstr "\tਪਰੋਫਾਈਲ:\n" +msgstr "\tਪੋਰਟ:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tਸਰਗਰਮ ਪਰੋਫਾਈਲ: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "ਸਰੋਤ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "\tActive Port: %s\n" +msgstr "\tਸਰਗਰਮ ਪੋਰਟ: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "ਸਰੋਤ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1867,20 +1782,20 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "ਉਪਲੱਬਧ ਨਹੀਂ" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "ਮੋਡੀਊਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "Failed to get module information: %s" +msgstr "ਮੋਡੀਊਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1897,12 +1812,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "ਕਲਾਇਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "Failed to get client information: %s" +msgstr "ਕਲਾਇਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1917,12 +1832,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "ਕਾਰਡ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "Failed to get card information: %s" +msgstr "ਕਾਰਡ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1939,22 +1854,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tਪਰੋਫਾਈਲ:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tਸਰਗਰਮ ਪਰੋਫਾਈਲ: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "ਇੰਪੁੱਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "ਇੰਪੁੱਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1991,12 +1906,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "ਸਰੋਤ ਆਉਟਪੁੱਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "Failed to get source output information: %s" +msgstr "ਸਰੋਤ ਆਉਟਪੁੱਟ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2025,12 +1940,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "Failed to get sample information: %s" +msgstr "ਸੈਂਪਲ ਜਾਣਕਾਰੀ ਲੈਣ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2061,22 +1976,26 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "ਫੇਲ੍ਹ: %s\n" +msgid "Failure: %s" +msgstr "ਫੇਲ੍ਹ: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "ਸੈਂਪਲ ਅੱਪਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ: %s\n" +msgid "Failed to upload sample: %s" +msgstr "ਸੈਂਪਲ ਅੱਪਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "ਫਾਇਲ ਦਾ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਅੰਤ\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "ਫਾਇਲ ਦਾ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਅੰਤ" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT ਮਿਲਿਆ, ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।" + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2084,15 +2003,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2108,13 +2033,21 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2124,7 +2057,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2135,77 +2068,106 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸੈਂਪਲ ਫਾਇਲ ਦਿਓ\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "ਖੇਡਣ ਲਈ ਤੁਹਾਨੂੰ ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "ਹਟਾਉਣ ਲਈ ਤੁਹਾਨੂੰ ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "ਤੁਹਾਨੂੰ ਇੰਪੁੱਟ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "ਲੋਡ ਕਰਨ ਲਈ ਸੈਂਪਲ ਫਾਇਲ ਦਿਓ" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਸਰੋਤ ਆਉਟਪੁੱਟ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਰੋਤ ਦੇਣਾ ਪਵੇਗਾ\n" +msgid "Failed to open sound file." +msgstr "ਸਾਊਂਡ ਫਾਇਲ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ।" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਮੋਡੀਊਲ ਨਾਂ ਅਤੇ ਆਰਗੂਮੈਂਟ ਦੇਣਾ ਪਵੇਗਾ।\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "ਇੱਕ %s ਸਟਰੀਮ ਨੂੰ ਸੈਂਪਲ ਹਦਾਇਤ '%s' ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ।" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਮੈਡੀਊਲ ਲਿਸਟ ਦੇਣੀ ਪਵੇਗੀ\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "ਖੇਡਣ ਲਈ ਤੁਹਾਨੂੰ ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "ਹਟਾਉਣ ਲਈ ਤੁਹਾਨੂੰ ਸੈਂਪਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "ਤੁਹਾਨੂੰ ਇੰਪੁੱਟ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਸਰੋਤ ਆਉਟਪੁੱਟ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਰੋਤ ਦੇਣਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਮੋਡੀਊਲ ਨਾਂ ਅਤੇ ਆਰਗੂਮੈਂਟ ਦੇਣਾ ਪਵੇਗਾ।" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਮੈਡੀਊਲ ਲਿਸਟ ਦੇਣੀ ਪਵੇਗੀ" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "ਤੁਸੀਂ ਇੱਕ ਤੋਂ ਵੱਧ ਸਿੰਕ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤੁਹਾਨੂੰ ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ ਦੇਣਾ ਪਵੇਗਾ।\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "ਤੁਸੀਂ ਇੱਕ ਤੋਂ ਵੱਧ ਸਿੰਕ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤੁਹਾਨੂੰ ਇੱਕ ਬੁਲੀਅਨ ਮੁੱਲ ਦੇਣਾ ਪਵੇਗਾ।" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "ਤੁਸੀਂ ਇੱਕ ਤੋਂ ਵੱਧ ਸਰੋਤ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤੁਹਾਨੂੰ ਬੁਲੀਅਨ ਮੁੱਲ ਦੇਣਾ ਪਵੇਗਾ।\n" +"value." +msgstr "ਤੁਸੀਂ ਇੱਕ ਤੋਂ ਵੱਧ ਸਰੋਤ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਤੁਹਾਨੂੰ ਬੁਲੀਅਨ ਮੁੱਲ ਦੇਣਾ ਪਵੇਗਾ।" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "ਕੋਈ ਯੋਗ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ।\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() ਫੇਲ੍ਹ ਹੈ: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਹਦਾਇਤ" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "ਤੁਹਾਨੂੰ ਇੰਪੁੱਟ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "ਅਢੁੱਕਵੀਂ ਸਿੰਕ ਇੰਪੁੱਟ ਸੂਚੀ" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਕਾਰਡ ਨਾਂ/ਲਿਸਟ ਅਤੇ ਪਰੋਫਾਈਲ ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "ਤੁਹਾਨੂੰ ਇੰਪੁੱਟ ਲਿਸਟ ਅਤੇ ਇੱਕ ਸਿੰਕ ਨੂੰ ਸਿੰਕ ਕਰਨਾ ਪਵੇਗਾ" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਹਦਾਇਤ" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "ਕੋਈ ਯੋਗ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ।" #: ../src/utils/pax11publish.c:61 #, c-format @@ -2286,48 +2248,48 @@ msgstr "ਕੂਕੀ ਡਾਟਾ ਲੋਡ ਕਰਨ ਵਿੱਚ ਫੇਲ\n" msgid "Not yet implemented.\n" msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ।\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "ਕੋਈ ਪਲਸ-ਆਡੀਓ ਡੈਮਨ ਨਹੀਂ ਚੱਲ ਰਿਹਾ, ਜਾਂ ਸ਼ੈਸ਼ਨ ਡੈਮਨ ਤੌਰ ਤੇ ਨਹੀਂ ਚੱਲ ਰਿਹਾ।" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "ਪਲਸਆਡੀਓ ਡੈਮਨ ਬੰਦ ਕਰਨ ਵਿੱਚ ਫੇਲ।" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "ਡੈਮਨ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਹੀ।" -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn ਲਾਕ ਵਰਤ ਨਹੀਂ ਸਕਦਾ।" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2344,7 +2306,7 @@ msgstr "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2362,129 +2324,22 @@ msgstr "" "returned 0 or another value < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "ਬੰਦ" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "ਹਾਈ ਫਡੈਲਿਟੀ ਪਲੇਅਬੈਕ (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "ਹਾਈ ਫਡੈਲਿਟੀ ਪਲੇਅਬੈਕ (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "ਟੈਲੀਫੋਨੀ ਡੁਪਲੈਕਸ (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "ਪਲਸਆਡੀਓ ਸਾਊਂਡ ਡਰਾਇਵਰ" - -#~ msgid "Analog Mono" -#~ msgstr "ਐਨਾਲਾਗ ਮੋਨੋ" - -#~ msgid "Analog Stereo" -#~ msgstr "ਐਨਾਲਾਗ ਸਟੀਰੀਓ" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "ਡਿਜ਼ੀਟਲ ਸਟੀਰੀਓ (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "ਡਿਜ਼ਿਟਲ ਸਟੀਰੀਓ (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "ਐਨਾਲਾਗ ਸਰਾਊਂਡਿੰਗ 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "ਡਿਜ਼ਿਟਲ ਸਰਾਊਂਡਿੰਗ 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "ਐਨਾਲਾਗ ਸਰਾਊਂਡਿੰਗ 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "ਐਨਾਲਾਗ ਸਰਾਊਂਡਿੰਗ 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "ਐਨਾਲਾਗ ਸਰਾਊਂਡਿੰਗ 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "ਡਿਜ਼ਿਟਲ ਸਰਾਊਂਡਿੰਗ 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "ਐਨਾਲਾਗ ਸਰਾਊਂਡਿੰਗ 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "ਆਉਟਪੁੱਟ %s + ਇੰਪੁੱਟ %s" - -#~ msgid "Output %s" -#~ msgstr "ਆਉਟਪੁੱਟ %s" - -#~ msgid "Input %s" -#~ msgstr "ਇੰਪੁੱਟ %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "ਸਟਰੀਮ ਠੀਕ ਤਰ੍ਹਾਂ ਬਣਾਈ ਗਈ।\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "ਸਟਰੀਮ ਗਲਤੀ: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ।\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "ਗਲਤ ਚੈਨਲ ਮੈਪ\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "ਚੈਨਲ ਮੈਪ ਫਾਇਲ ਨਾਲ ਨਹੀਂ ਮਿਲਦਾ।\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "ਸੈਂਪਲ spec '%s' ਦੀ ਵਰਤੋਂ\n" diff --git a/po/pl.po b/po/pl.po index df5260626..6b0141bbd 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,15 +5,20 @@ msgid "" msgstr "" "Project-Id-Version: pl\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-06-09 00:03+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-03 12:25+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -25,7 +30,7 @@ msgstr "" "Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten " "problem programistom ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -37,7 +42,7 @@ msgstr "" "Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten " "problem programistom ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -49,9 +54,17 @@ msgstr "" "Prawdopodobnie jest to błąd sterownika ALSA \"%s\". Proszę zgłosić ten " "problem programistom ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Wirtualny odpływ LADSPA" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -61,12 +74,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= " +"rate= channels= channel_map= plugin= label= " +"control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Wewnętrzny dźwięk" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -83,222 +109,92 @@ msgstr "Przydzielenie nowego programu wczytującego dl nie powiodło się." msgid "Failed to add bind-now-loader." msgstr "Dodanie bind-now-loader nie powiodło się." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Nie można połączyć się z magistralą systemową: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Nie można uzyskać obiektu caller z PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Nie można ustawić UID obiektu caller." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Uzyskanie sesji CK nie powiodło się." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Nie można ustawić UID obiektowi sesji." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Nie można przydzielić PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Nie można ustawić action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Nie można przydzielić PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Nie można zainicjować PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Nie można ustalić, czy obiekt caller jest upoważniony: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Nie można uzyskać upoważnienia: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit zwróciło \"%s\"" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Otrzymano sygnał %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Wyłączanie." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Znalezienie użytkownika \"%s\" nie powiodło się." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Znalezienie grupy \"%s\" nie powiodło się." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Znaleziono użytkownika \"%s\" (UID %lu) i grupę \"%s\" (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID użytkownika \"%s\" i grupy \"%s\" nie zgadzają się." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Folder domowy użytkownika \"%s\" nie jest \"%s\", ignorowanie." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Utworzenie \"%s\" nie powiodło się: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Zmiana listy grup nie powiodła się: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Zmiana GID nie powiodła się: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Zmiana UID nie powiodła się: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Pomyślnie porzucono uprawnienia roota." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Tryb systemowy nie jest obsługiwany na tej platformie." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) nie powiodło się: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Analiza wiersza poleceń nie powiodła się." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Jesteśmy w grupie \"%s\", co umożliwia szeregowanie o wysokim priorytecie." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Jesteśmy w grupie \"%s\", co umożliwia szeregowanie w czasie rzeczywistym." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit nadał uprawnienie \"acquire-high-priority\"." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit odmówił nadania uprawnienia \"acquire-high-priority\"." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit nadał uprawnienie \"acquire-real-time\"." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit odmówił nadania uprawnienia \"acquire-real-time\"." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"W konfiguracji zażądano SUID roota i szeregowanie w czasie rzeczywistym i/" -"lub o wysokim priorytecie. Brak wymaganych uprawnień:\n" -"Nie jesteśmy w grupie \"%s\", PolicyKit odmawia przyznania żądanych " -"uprawnień i brak ograniczeń zwiększania zasobów RLIMIT_NICE/RLIMIT_RTPRIO.\n" -"Aby włączyć szeregowanie w czasie rzeczywistym i/lub o wysokim priorytecie, " -"należy uzyskać odpowiednie uprawnienia PolicyKit, zostać członkiem grupy \"%s" -"\" lub zwiększyć ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego " -"użytkownika." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Szeregowanie o wysokim priorytecie jest włączone w konfiguracji, ale nie " -"jest zezwolone przez politykę." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Pomyślnie zwiększono RLIMIT_RTPRIO" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO nie powiodło się: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Oddawanie CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Szeregowanie w czasie rzeczywistym jest włączone w konfiguracji, ale nie " -"jest zezwolone przez politykę." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Demon nie jest uruchomiony" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Demon jest uruchomiony jako PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Zniszczenie demona nie powiodło się: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -306,155 +202,160 @@ msgstr "" "Ten program nie powinien być uruchomiany jako root (chyba, że podano --" "system)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Wymagane są uprawnienia roota." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start nie jest obsługiwane przy uruchamianiu systemowym." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "Uruchamianie w trybie systemowym, ale --disallow-exit nie jest ustawione!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Uruchamianie w trybie systemowym, ale --disallow-module-loading nie jest " "ustawione!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Uruchamianie w trybie systemowym, wymuszanie wyłączenia trybu SHM!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Uruchamianie w trybie systemowym, wymuszanie wyłączenia czasu oczekiwania na " "zakończenie!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Uzyskanie standardowego wejścia/wyjścia nie powiodło się." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "potok nie powiódł się: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() nie powiodło się: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() nie powiodło się: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Uruchomienie demona nie powiodło się." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Pomyślnie uruchomiono demona." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "To jest PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Komputer kompilacji: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS kompilacji: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Uruchamianie na komputerze: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Znaleziono %u procesorów." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Rozmiar strony to %lu bajtów" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Skompilowano z obsługą Valgrind: tak" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Skompilowano z obsługą Valgrind: nie" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Uruchamianie w trybie Valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Budowanie optymalizowane: tak" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Budowanie optymalizowane: nie" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "Podano NDEBUG, wszystkie asercje zostały wyłączone." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "Podano FASTPATH, tylko szybkie asercje ścieżek zostały wyłączone." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Wszystkie asercje są włączone." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Uzyskanie identyfikatora komputera nie powiodło się" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "Identyfikator komputera to %s." -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, c-format msgid "Session ID is %s." msgstr "Identyfikator sesji to %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Używanie folderu wykonywania %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Używanie folderu stanu %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Używanie folderu modułów %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Uruchamianie w trybie systemowym: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -463,16 +364,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"OK, więc PA jest uruchomione w trybie systemowym. Proszę zauważyć, że " +"prawdopodobnie tak nie powinno być.\n" +"Jeśli mimo to tak jest, to twoja wina, jeśli coś nie działa tak jak " +"powinno.\n" +"Proszę przeczytać http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode, " +"gdzie wyjaśniono, dlaczego tryb systemowy jest zwykle złym pomysłem." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() nie powiodło się." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -480,27 +387,27 @@ msgstr "" "Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi " "zegarami o wysokiej rozdzielczości!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() nie powiodło się." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Zainicjowanie demona nie powiodło się." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Zakończono uruchamianie demona." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Zainicjowano wyłączenie demona." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Demon został zniszczony." @@ -766,72 +673,72 @@ msgstr "OSTRZEŻENIE O PRZESTARZAŁOŚCI: %s\n" msgid "Path: %s\n" msgstr "Ścieżka: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Nieprawidłowy dziennik docelowy \"%s\"." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Nieprawidłowy poziom dziennika \"%s\"." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Nieprawidłowa metoda resamplingu \"%s\"." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Nieprawidłowy rlimit \"%s\"." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit nie jest obsługiwany na tej platformie." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Nieprawidłowy format próbki \"%s\"." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Nieprawidłowa częstotliwość próbki \"%s\"." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Nieprawidłowe kanały próbki \"%s\"." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Nieprawidłowa mapa kanałów \"%s\"." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Nieprawidłowa liczba fragmentów \"%s\"." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Nieprawidłowy rozmiar fragmentu \"%s\"." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Nieprawidłowy poziom nice \"%s\"." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Otwarcie pliku konfiguracji nie powiodło się: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -839,18 +746,14 @@ msgstr "" "Podana domyślna mapa kanałów ma inną liczbę kanałów niż podana domyślna " "liczba kanałów." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Odczytano z pliku konfiguracji: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Porzucanie uprawnień roota." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Pomyślnie ograniczono możliwości do CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Czyszczenie uprawnień." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -860,31 +763,7 @@ msgstr "System dźwięku PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Uruchomienie systemu dźwięku PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Szeregowanie o wysokim priorytecie (ujemny poziom nice Uniksa) dla demona " -"PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Szeregowanie w czasie rzeczywistym dla demona PulseAudio" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania o wysokim " -"priorytecie." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania w czasie " -"rzeczywistym." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1088,33 +967,33 @@ msgstr "Górny tylny lewy" msgid "Top Rear Right" msgstr "Górny tylny prawy" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(nieprawidłowe)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1218,27 +1097,35 @@ msgstr "Brak implementacji" msgid "Client forked" msgstr "Rozdzielono klienta" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1251,189 +1138,188 @@ msgstr "XOpenDisplay() nie powiodło się" msgid "Failed to parse cookie data" msgstr "Analiza danych ciasteczka nie powiodło się" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Otwarcie pliku konfiguracji \"%s\" nie powiodło się: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Nie wczytano ciasteczka. Próbowanie połączenia się bez niego." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Otrzymano komunikat z nieznanego powodu \"%s\"" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Opróżnienie strumienia nie powiodło się: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Opróżnienie strumienia nie powiodło się: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Opróżniono strumień odtwarzania.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Opróżniono strumień odtwarzania." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Opróżnianie połączenia z serwerem.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Opróżnianie połączenia z serwerem." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() nie powiodło się: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() nie powiodło się: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() nie powiodło się: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() nie powiodło się: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Pomyślnie utworzono strumień.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() nie powiodło się: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() nie powiodło się: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Pomyślnie utworzono strumień." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Metryka bufora: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() nie powiodło się: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Metryka bufora: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Metryka bufora: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Używanie przykładowej specyfikacji \"%s\", mapa kanałów \"%s\".\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Metryka bufora: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Połączono się z urządzeniem %s (%u, %swstrzymane).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Używanie przykładowej specyfikacji \"%s\", mapa kanałów \"%s\"." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Błąd strumienia: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Połączono się z urządzeniem %s (%u, %swstrzymane)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Wstrzymano urządzenie strumienia.%s \n" +msgid "Stream error: %s" +msgstr "Błąd strumienia: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Wznowiono urządzenie strumienia.%s \n" +msgid "Stream device suspended.%s" +msgstr "Wstrzymano urządzenie strumienia.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Niedopełniono strumień.%s \n" +msgid "Stream device resumed.%s" +msgstr "Wznowiono urządzenie strumienia.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Przepełniono strumień.%s \n" +msgid "Stream underrun.%s" +msgstr "Niedopełniono strumień.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "Utworzono strumień.%s \n" +msgid "Stream overrun.%s" +msgstr "Przepełniono strumień.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Strumień został przeniesiony do urządzenia %s (%u, %swstrzymane).%s \n" +msgid "Stream started.%s" +msgstr "Utworzono strumień.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Strumień został przeniesiony do urządzenia %s (%u, %swstrzymane).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "nie " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Zmieniono atrybuty bufora strumienia.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Zmieniono atrybuty bufora strumienia.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Ustanowiono połączenie.%s \n" +msgid "Connection established.%s" +msgstr "Ustanowiono połączenie.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() nie powiodło się: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() nie powiodło się: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() nie powiodło się: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() nie powiodło się: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() nie powiodło się: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() nie powiodło się: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Połączenie nie powiodło się: %s\n" +msgid "Connection failure: %s" +msgstr "Połączenie nie powiodło się: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Otrzymano EOF.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Otrzymano EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() nie powiodło się: %s\n" +msgid "write() failed: %s" +msgstr "write() nie powiodło się: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Otrzymano sygnał, wyłączanie." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() nie powiodło się: %s\n" +msgid "Failed to get latency: %s" +msgstr "Uzyskanie opóźnienia nie powiodło się: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Otrzymano sygnał, wyłączanie.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Uzyskanie opóźnienia nie powiodło się: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Czas: %0.3f sekundy; opóźnienie: %0.0f usekundy. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() nie powiodło się: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() nie powiodło się: %s" #: ../src/utils/pacat.c:605 #, c-format @@ -1561,137 +1447,131 @@ msgstr "" "Skompilowane za pomocą libpulse %s\n" "Skonsolidowane za pomocą libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid client name '%s'\n" -msgstr "Nieprawidłowa nazwa klienta \"%s\"\n" +msgid "Invalid client name '%s'" +msgstr "Nieprawidłowa nazwa klienta \"%s\"" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Nieprawidłowa nazwa strumienia \"%s\"\n" +msgid "Invalid stream name '%s'" +msgstr "Nieprawidłowa nazwa strumienia \"%s\"" -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Nieprawidłowa mapa kanałów \"%s\"\n" +msgid "Invalid channel map '%s'" +msgstr "Nieprawidłowa mapa kanałów \"%s\"" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:841 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Nieprawidłowe określenie opóźnienia \"%s\"\n" +msgid "Invalid latency specification '%s'" +msgstr "Nieprawidłowe określenie opóźnienia \"%s\"" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:848 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Nieprawidłowe określenie czasu procesu \"%s\"\n" +msgid "Invalid process time specification '%s'" +msgstr "Nieprawidłowe określenie czasu procesu \"%s\"" -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:860 #, c-format -msgid "Invalid property '%s'\n" -msgstr "Nieprawidłowa własność \"%s\"\n" +msgid "Invalid property '%s'" +msgstr "Nieprawidłowa własność \"%s\"" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." msgstr "Nieznany format pliku %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Nieprawidłowe określenie próbki\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Nieprawidłowe określenie próbki" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Za dużo parametrów.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Za dużo parametrów." -#: ../src/utils/pacat.c:930 -msgid "Failed to generate sample specification for file.\n" -msgstr "Utworzenie określenia próbki dla pliku nie powiodło się.\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Utworzenie określenia próbki dla pliku nie powiodło się." -#: ../src/utils/pacat.c:950 -msgid "Failed to open audio file.\n" -msgstr "Otwarcie pliku dźwiękowego nie powiodło się.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Otwarcie pliku dźwiękowego nie powiodło się." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" "Ostrzeżenie: podane określenie próbki zostanie zastąpione przez określenie z " -"pliku.\n" +"pliku." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -msgid "Failed to determine sample specification from file.\n" -msgstr "Ustalenie określenia próbki z pliku nie powiodło się.\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Ustalenie określenia próbki z pliku nie powiodło się." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "Ostrzeżenie: ustalenie mapy kanałów z pliku nie powiodło się.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Ostrzeżenie: ustalenie mapy kanałów z pliku nie powiodło się." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Mapa kanałów nie zgadza się z określeniem próbki\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Mapa kanałów nie zgadza się z określeniem próbki" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "Ostrzeżenie: zapisanie mapy kanałów do pliku nie powiodło się.\n" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Ostrzeżenie: zapisanie mapy kanałów do pliku nie powiodło się." -#: ../src/utils/pacat.c:1005 +#: ../src/utils/pacat.c:1004 #, c-format msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" "Otwieranie strumienia %s za pomocą określenie próbki \"%s\" i mapy kanałów " -"\"%s\".\n" +"\"%s\"." -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "recording" msgstr "nagrywanie" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "odtwarzanie" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() nie powiodło się." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() nie powiodło się." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() nie powiodło się." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() nie powiodło się.\n" +msgid "pa_context_connect() failed: %s" +msgstr "pa_context_connect() nie powiodło się: %s" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() nie powiodło się.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() nie powiodło się." -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() nie powiodło się.\n" - -#: ../src/utils/pacat.c:1066 -#, c-format -msgid "pa_context_connect() failed: %s\n" -msgstr "pa_context_connect() nie powiodło się: %s\n" - -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() nie powiodło się.\n" - -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() nie powiodło się.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() nie powiodło się." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1719,7 +1599,12 @@ msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "" "OSTRZEŻENIE: serwer dźwięku nie jest lokalny, nie zostanie wstrzymany.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Połączenie nie powiodło się: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Otrzymano SIGINT, wyłączanie.\n" @@ -1758,34 +1643,49 @@ msgstr "" "Skompilowane za pomocą libpulse %s\n" "Skonsolidowane za pomocą libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Uzyskanie statystyk nie powiodło się: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() nie powiodło się.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() nie powiodło się.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() nie powiodło się.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Uzyskanie statystyk nie powiodło się: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Obecnie używane: %u bloków zawierających razem %s bajtów.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "Przydzielono podczas całego czasu uruchomienia: %u bloków zawierających " "razem %s bajtów.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Rozmiar pamięci podręcznej próbek: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Uzyskanie informacji o serwerze nie powiodło się: %s\n" +msgid "Failed to get server information: %s" +msgstr "Uzyskanie informacji o serwerze nie powiodło się: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1808,12 +1708,12 @@ msgstr "" "Domyślne źródło: %s\n" "Ciasteczko: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Uzyskanie informacji o odpływie nie powiodło się: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Uzyskanie informacji o odpływie nie powiodło się: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1852,22 +1752,22 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tProfile:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tAktywny profil: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Uzyskanie informacji o źródle nie powiodło się: %s\n" +msgid "\tPorts:\n" +msgstr "\tPorty:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tAktywny port: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Uzyskanie informacji o źródle nie powiodło się: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1906,20 +1806,20 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "nie dotyczy" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Uzyskanie informacji o module nie powiodło się: %s\n" +msgid "Failed to get module information: %s" +msgstr "Uzyskanie informacji o module nie powiodło się: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1936,12 +1836,12 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Uzyskanie informacji o kliencie nie powiodło się: %s\n" +msgid "Failed to get client information: %s" +msgstr "Uzyskanie informacji o kliencie nie powiodło się: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1956,12 +1856,12 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Uzyskanie informacji o karcie nie powiodło się: %s\n" +msgid "Failed to get card information: %s" +msgstr "Uzyskanie informacji o karcie nie powiodło się: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1978,22 +1878,22 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfile:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tAktywny profil: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Uzyskanie informacji o wejściu odpływu nie powiodło się: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Uzyskanie informacji o wejściu odpływu nie powiodło się: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2030,12 +1930,12 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "Uzyskanie informacji o wyjściu źródła nie powiodło się: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Uzyskanie informacji o wyjściu źródła nie powiodło się: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2064,12 +1964,12 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Uzyskanie informacji o próbce nie powiodło się: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Uzyskanie informacji o próbce nie powiodło się: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2100,22 +2000,26 @@ msgstr "" "\tWłaściwości:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Niepowodzenie: %s\n" +msgid "Failure: %s" +msgstr "Niepowodzenie: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Usunięcie próbki nie powiodło się: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Wysłanie próbki nie powiodło się: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Przedwczesny koniec pliku\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Przedwczesny koniec pliku" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Otrzymano SIGINT, wyłączanie." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2123,15 +2027,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2147,13 +2057,22 @@ msgstr "" "%s [opcje] upload-sample NAZWAPLIKU [NAZWA]\n" "%s [opcje] play-sample NAZWA [ODPŁYW]\n" "%s [opcje] remove-sample NAZWA\n" -"%s [opcje] move-sink-input IDENTYFIKATOR ODPŁYW\n" -"%s [opcje] move-source-output IDENTYFIKATOR ŹRÓDŁO\n" +"%s [opcje] move-sink-input WEJŚCIE_ODPŁYWU ODPŁYW\n" +"%s [opcje] move-source-output WYJŚCIE_ODPŁYWU ŹRÓDŁO\n" "%s [opcje] load-module NAZWA [PARAMETRY...]\n" -"%s [opcje] unload-module IDENTYFIKATOR\n" -"%s [opcje] suspend-sink [ODPŁYW] 1|0\n" -"%s [opcje] suspend-source [ŹRÓDŁO] 1|0\n" -"%s [opcje] set-card-profile [KARTA] [PROFIL] \n" +"%s [opcje] unload-module MODUŁ\n" +"%s [opcje] suspend-sink SINK 1|0\n" +"%s [opcje] suspend-source SOURCE 1|0\n" +"%s [opcje] set-card-profile KARTA PROFIL\n" +"%s [opcje] set-sink-port ODPŁYW PORT\n" +"%s [opcje] set-source-port ŹRÓDŁO PORT\n" +"%s [opcje] set-sink-volume ODPŁYW GŁOŚNOŚĆ\n" +"%s [opcje] set-source-volume ŹRÓDŁO GŁOŚNOŚĆ\n" +"%s [opcje] set-sink-input-volume WYJŚCIE_ODPŁYWU GŁOŚNOŚĆ\n" +"%s [opcje] set-sink-mute ODPŁYW 1|0\n" +"%s [opcje] set-source-mute ŹRÓDŁO 1|0\n" +"%s [opcje] set-sink-input-mute WEJŚCIE_ODPŁYWU 1|0\n" +"\n" "\n" " -h, --help Wyświetla tę pomoc\n" " --version Wyświetla wersję\n" @@ -2161,7 +2080,7 @@ msgstr "" " -s, --server=SERWER Nazwa serwera do połączenia się\n" " -n, --client-name=NAZWA Jak nazwać tego klienta na serwerze\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2172,78 +2091,108 @@ msgstr "" "Skompilowane za pomocą libpulse %s\n" "Skonsolidowane za pomocą libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Proszę podać plik próbki do wczytania\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Otwarcie pliku dźwiękowego nie powiodło się.\n" - -#: ../src/utils/pactl.c:951 -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Ostrzeżenie: ustalenie określenia próbki z pliku nie powiodło się.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Należy podać nazwę próbki do odtworzenia\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Należy podać nazwę próbki do usunięcia\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Należy podać indeks odpływu wejścia i odpływ\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Proszę podać plik próbki do wczytania" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Należy podać indeks źródła wyjścia i źródło\n" +msgid "Failed to open sound file." +msgstr "Otwarcie pliku dźwiękowego nie powiodło się." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Należy podać nazwę modułu i parametry.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "Ostrzeżenie: ustalenie określenia próbki z pliku nie powiodło się." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Należy podać indeks modułu\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Należy podać nazwę próbki do odtworzenia" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Należy podać nazwę próbki do usunięcia" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Należy podać indeks odpływu wejścia i odpływ" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Należy podać indeks źródła wyjścia i źródło" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Należy podać nazwę modułu i parametry." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Należy podać indeks modułu" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"Nie można podać więcej niż jednego odpływu. Należy podać wartość logiczną.\n" +"Nie można podać więcej niż jednego odpływu. Należy podać wartość logiczną." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"Nie można podać więcej niż jednego źródła. Należy podać wartość logiczną.\n" +"Nie można podać więcej niż jednego źródła. Należy podać wartość logiczną." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Należy podać nazwę karty/indeks i nazwę profilu\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Należy podać nazwę karty/indeks i nazwę profilu" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Należy podać nazwę karty/indeks i nazwę profilu\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Należy podać nazwę odpływu/indeks i nazwę portu" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Należy podać nazwę karty/indeks i nazwę profilu\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Należy podać nazwę źródła/indeks i nazwę portu" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "Nie podano prawidłowego polecenia.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Należy podać nazwę odpływu/indeks i głośność" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() nie powiodło się: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Nieprawidłowe określenie głośności" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Należy podać nazwę źródła/indeks i głośność" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Należy podać indeks odpływu wejścia i głośność" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Nieprawidłowy indeks wejścia odpływu" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Należy podać nazwę odpływu/indeks i zmienną logiczną wyciszenia" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Należy podać nazwę źródła/indeks i zmienną logiczną wyciszenia" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Należy podać indeks odpływu wejścia i zmienną logiczną wyciszenia" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Nieprawidłowe określenie indeksu wejścia odpływu" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Nie podano prawidłowego polecenia." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2324,50 +2273,50 @@ msgstr "Wczytanie danych ciasteczka nie powiodło się\n" msgid "Not yet implemented.\n" msgstr "Niezaimplementowane.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" "Demon PulseAudio nie jest uruchomiony, lub nie jest uruchomiony jako demon " "sesji." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "gniazdo(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Zniszczenie demona PulseAudio nie powiodło się." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Demon nie odpowiada." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Nie można uzyskać dostępu do blokady automatycznego wznawiania." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2384,7 +2333,7 @@ msgstr "" "Wybudzono za pomocą ustawienia POLLOUT - ale jednoczesne wywołanie " "snd_pcm_avail() zwróciło zero lub inną wartość < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2402,60 +2351,22 @@ msgstr "" "snd_pcm_avail() zwróciło zero lub inną wartość < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Wyłącz" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Odtwarzanie o wysokiej dokładności (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Przechwytywanie o wysokiej dokładności (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Duplex telefoniczny (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "Serwer dźwięku PulseAudio" - -#~ msgid "Analog Mono" -#~ msgstr "Analogowe mono" - -#~ msgid "Analog Stereo" -#~ msgstr "Analogowe stereo" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "Cyfrowe stereo (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "Cyfrowe stereo (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "Analogowe surround 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "Cyfrowe surround 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "Analogowe surround 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "Analogowe surround 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "Analogowe surround 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "Cyfrowe surround 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "Analogowe surround 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "Wyjście %s + wejście %s" - -#~ msgid "Output %s" -#~ msgstr "Wyjście %s" - -#~ msgid "Input %s" -#~ msgstr "Wejście %s" diff --git a/po/pt.po b/po/pt.po index b44d622d6..070a8bc80 100644 --- a/po/pt.po +++ b/po/pt.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: \n" "Last-Translator: Rui Gouveia \n" "Language-Team: pt \n" @@ -12,7 +12,12 @@ msgstr "" "X-Poedit-Language: Portuguese\n" "X-Poedit-Country: PORTUGAL\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, fuzzy, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -25,7 +30,7 @@ msgstr "" "Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este " "problema aos programadores do ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -38,7 +43,7 @@ msgstr "" "Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este " "problema aos programadores do ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -51,10 +56,19 @@ msgstr "" "Provavelmente isto é um erro no driver ALSA '%s'. Por favor, reporte este " "problema aos programadores do ALSA." -#: ../src/modules/module-ladspa-sink.c:49 -msgid "Virtual LADSPA sink" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" msgstr "" +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + +#: ../src/modules/module-ladspa-sink.c:49 +#, fuzzy +msgid "Virtual LADSPA sink" +msgstr "Alarme virtual" + #: ../src/modules/module-ladspa-sink.c:53 msgid "" "sink_name= sink_properties= " @@ -64,11 +78,20 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "Saída %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Áudio Interno" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -84,220 +107,92 @@ msgstr "Não foi possível alocar o novo carregador \"dl\"." msgid "Failed to add bind-now-loader." msgstr "Não foi possível adicionar \"bind-now-loader\"." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Incapaz de se ligar ao bus de sistema: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Não foi possível obter chamador a partir do PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Não foi possível definir o UID no objecto chamador." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Falha ao obter sessão CK." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Não foi possível definir o UID no objecto da sessão." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Não é possível alocar PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "impossível definir action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Não é possível alocar contexto PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Incapaz de inicializar o PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Não foi possível determinar se o chamador está autorizado: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Não foi possível obter autenticação: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit respondeu com '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Foi obtido o sinal %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "A sair." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Falha ao procurar o utilizador '%s'." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Falha ao procurar o grupo '%s'." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Foi encontrado utilizador '%s' (UID %lu) e grupo '%s' (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID do utilizador '%s' e do grupo '%s' não coincidem." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Directório pessoal do utilizador '%s' não é '%s'. A ignorar." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Falha ao criar o '%s': %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Falhou a alteração da lista de grupos: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Não foi possível mudar o GID: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Não foi possível mudar o UID: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Privilégios de root cedidos com sucesso." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Modo de sistema não suportado nesta plataforma." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) falhou: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Não foi possível processar linha de comando." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "Estamos no grupo '%s', permitindo escalonamento de alta-prioridade." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "" -"O PolicyKit permite-nos o privilégio \"acquire-high-priority\" (adquirir " -"alta prioridade)." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "" -"O PolicyKit recusa-nos o privilégio \"acquire-high-priority\" (adquirir alta " -"prioridade)." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "" -"O PolicyKit permite-nos o privilégio \"acquire-real-time\" (adquirir tempo " -"real)." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "" -"O PolicyKit recusa-nos o privilégio \"acquire-real-time\" (adquirir tempo " -"real)." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Escalonamento de alta prioridade activo na configuração, mas não permitido " -"pela politica." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO aumentado com sucesso" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO falhou: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "A desistir de CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Escalonamento em tempo real activo na configuração, mas não permitido pela " -"politica." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Serviço não está a executar" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Serviço a executar como PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Tentativa de matar serviço falhou: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -305,154 +200,159 @@ msgstr "" "Este programa não pretende ser executado como root (a não ser que a opção --" "system seja especificada)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "São necessários privilégios de root." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start não é suportado para instâncias do sistema." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "A executar em modo de sistema, mas --disallow-exit não está definido!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "A executar em modo de sistema, mas --disallow-module-loading não está " "definido!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "A executar em modo de sistema, a forçar a desactivação do modo SHM!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "A executar em modo de sistema, a forçar a desactivação da saída por " "inactividade!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Não foi possível adquirir o stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe falhou: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() falhou: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() falhou: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Arranque do serviço falhou." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Arranque do serviço sucedeu." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Isto é PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Máquina de compilação: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS utilizadas na compilação: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "A executar na máquina: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Foram encontrados %u CPUs." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Tamanho da página é %lu bytes" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Compilado com suporte para Valgrind: sim" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Compilado com suporte para Valgrind: não" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "A executar em modo \"valgrind\": %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimizado: sim" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Compilação optimizada: não" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definido, todas as declarações desactivadas." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH definido, apenas as declarações \"fast path\" desactivadas." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Todas as declarações desactivadas." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "A tentativa de ler o ID da máquina falhou" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "O ID da máquina é %s." -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, fuzzy, c-format msgid "Session ID is %s." -msgstr "O ID da máquina é %s." +msgstr "A sessão está fechada" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Execução a utilizar o directório %s" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "A manter o estado no directório %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, fuzzy, c-format +msgid "Using modules directory %s." +msgstr "Execução a utilizar o directório %s" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Execução em modo de sistema: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -462,15 +362,15 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() falhou." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Timer \"frescos\" de alta resolução disponíveis. Bom apetite!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -478,32 +378,32 @@ msgstr "" "Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com " "timers de alta resolução activos!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() falhou." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Falha ao inicializar serviço." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Serviço arrancou sem módulos carregados. A recusar trabalhar." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Arranque do serviço completo." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Encerramento do serviço iniciado." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Serviço terminado." #: ../src/daemon/cmdline.c:115 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -596,7 +496,7 @@ msgstr "" "\n" "OPTIONS:\n" " --system[=BOOL] Executa em modo de sistema\n" -" -D, --daemonize[=BOOL] Passa serviço depois de executar\n" +" -D, --daemonize[=BOOL] Passa a serviço depois de executar\n" " --fail[=BOOL] Termina quando o arranque falha\n" " --high-priority[=BOOL] Tenta definir um alto nível de " "execução\n" @@ -647,15 +547,14 @@ msgstr "" "partilhada.\n" "\n" "STARTUP SCRIPT:\n" -" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module " -"with\n" -" the specified argument\n" -" -F, --file=FILENAME Run the specified script\n" -" -C Open a command line on the running " -"TTY\n" -" after startup\n" +" -L, --load=\"MODULE ARGUMENTS\" Carrega o módulo especificado com\n" +" o argumento especificado\n" +" -F, --file=FILENAME Executa o script especificado\n" +" -C Abre uma linha de comando no TTY " +"(consola) em execução\n" +" depois do arranque\n" "\n" -" -n Don't load default script file\n" +" -n Não carrega o script por omissão\n" #: ../src/daemon/cmdline.c:247 msgid "--daemonize expects boolean argument" @@ -760,99 +659,98 @@ msgid "Load Once: %s\n" msgstr "Carregar Uma Vez: %s\n" #: ../src/daemon/dumpmodules.c:75 -#, c-format +#, fuzzy, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "Aviso de Impressão" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Caminho: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] ficheiro registo de destino inválido '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Nível do ficheiro de registo inválido '%s'." -#: ../src/daemon/daemon-conf.c:248 -#, c-format +#: ../src/daemon/daemon-conf.c:264 +#, fuzzy, c-format msgid "[%s:%u] Invalid resample method '%s'." -msgstr "" +msgstr "nome do método de acesso" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit inválido '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit não é suportado nesta plataforma." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Formato da amostra inválido '%s'." -#: ../src/daemon/daemon-conf.c:312 -#, c-format +#: ../src/daemon/daemon-conf.c:328 +#, fuzzy, c-format msgid "[%s:%u] Invalid sample rate '%s'." -msgstr "" +msgstr "Taxa de amostragem em kHz" -#: ../src/daemon/daemon-conf.c:336 -#, c-format +#: ../src/daemon/daemon-conf.c:352 +#, fuzzy, c-format msgid "[%s:%u] Invalid sample channels '%s'." -msgstr "" +msgstr "Número de canais de audio" -#: ../src/daemon/daemon-conf.c:354 -#, c-format +#: ../src/daemon/daemon-conf.c:370 +#, fuzzy, c-format msgid "[%s:%u] Invalid channel map '%s'." -msgstr "" +msgstr "Activar mapa de _radar" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Número inválido de fragmentos '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Tamanho do fragmento inválido '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] nível nice inválido '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Falha ao abrir ficheiro de configuração: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "" +"O mapa de canais especificado tem um número de canais diferente do número de " +"canais definido por omissão." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Ler configuração a partir do ficheiro: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." +#: ../src/daemon/caps.c:62 +#, fuzzy +msgid "Cleaning up privileges." msgstr "A largar privilégios de root." -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "" - #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" msgstr "Sistema de Som PulseAudio" @@ -861,25 +759,7 @@ msgstr "Sistema de Som PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Inciar o Sistema de Som PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1083,33 +963,33 @@ msgstr "Topo Traseira Esquerda" msgid "Top Rear Right" msgstr "Topo Traseira Direita" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(inválido)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Estéreo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1213,27 +1093,35 @@ msgstr "Implementação em falta" msgid "Client forked" msgstr "Cliente efectuou um fork" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1246,188 +1134,192 @@ msgstr "XOpenDisplay() falhou" msgid "Failed to parse cookie data" msgstr "Não foi possível processar dados da cookie" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Falha ao abrir ficheiro de configuração '%s': %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Nenhuma cookie carregada. A tentar ligar sem cookie." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Recebida mensagem para extensão desconhecida '%s'" -#: ../src/utils/pacat.c:107 -#, c-format -msgid "Failed to drain stream: %s\n" +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" msgstr "Falhou ao esvaziar fluxo: %s\n" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "" +#: ../src/utils/pacat.c:113 +#, fuzzy +msgid "Playback stream drained." +msgstr "O álbum do fluxo actual." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "" +#: ../src/utils/pacat.c:123 +#, fuzzy +msgid "Draining connection to server." +msgstr "Ligação ao Servidor Recusada" -#: ../src/utils/pacat.c:135 -#, c-format -msgid "pa_stream_drain(): %s\n" +#: ../src/utils/pacat.c:136 +#, fuzzy, c-format +msgid "pa_stream_drain(): %s" msgstr "pa_stream_drain(): %s\n" -#: ../src/utils/pacat.c:158 -#, c-format -msgid "pa_stream_write() failed: %s\n" +#: ../src/utils/pacat.c:159 +#, fuzzy, c-format +msgid "pa_stream_write() failed: %s" msgstr "pa_stream_write() falhou: %s\n" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 -#, c-format -msgid "pa_stream_peek() failed: %s\n" +#: ../src/utils/pacat.c:197 +#, fuzzy, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() falhou: %s\n" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, fuzzy, c-format +msgid "pa_stream_peek() failed: %s" msgstr "pa_stream_peek() falhou: %s\n" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +#, fuzzy +msgid "Stream successfully created." msgstr "Fluxo criado com sucesso.\n" -#: ../src/utils/pacat.c:305 -#, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +#: ../src/utils/pacat.c:310 +#, fuzzy, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "pa_stream_get_buffer_attr() falhou: %s\n" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:314 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "Métricas do Buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -#: ../src/utils/pacat.c:312 -#, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +#: ../src/utils/pacat.c:317 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "Métricas do Buffer: maxlength=%u, fragsize=%u\n" -#: ../src/utils/pacat.c:316 -#, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "" +#: ../src/utils/pacat.c:321 +#, fuzzy, c-format +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Utilizando especificação da amostra '%s'\n" -#: ../src/utils/pacat.c:320 -#, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +#: ../src/utils/pacat.c:325 +#, fuzzy, c-format +msgid "Connected to device %s (%u, %ssuspended)." msgstr "Ligado ao dispositivo %s (%u, %ssuspended).\n" -#: ../src/utils/pacat.c:330 -#, c-format -msgid "Stream error: %s\n" +#: ../src/utils/pacat.c:335 +#, fuzzy, c-format +msgid "Stream error: %s" msgstr "Erro de fluxo: %s\n" -#: ../src/utils/pacat.c:340 -#, c-format -msgid "Stream device suspended.%s \n" -msgstr "" +#: ../src/utils/pacat.c:345 +#, fuzzy, c-format +msgid "Stream device suspended.%s" +msgstr "Nenhum dispositivo configurado" -#: ../src/utils/pacat.c:342 -#, c-format -msgid "Stream device resumed.%s \n" -msgstr "" +#: ../src/utils/pacat.c:347 +#, fuzzy, c-format +msgid "Stream device resumed.%s" +msgstr "Nenhum dispositivo configurado" -#: ../src/utils/pacat.c:350 -#, c-format -msgid "Stream underrun.%s \n" +#: ../src/utils/pacat.c:355 +#, fuzzy, c-format +msgid "Stream underrun.%s" msgstr "Fluxo com falta de dados.%s \n" -#: ../src/utils/pacat.c:357 -#, c-format -msgid "Stream overrun.%s \n" +#: ../src/utils/pacat.c:362 +#, fuzzy, c-format +msgid "Stream overrun.%s" msgstr "Fluxo com excesso de dados.%s \n" -#: ../src/utils/pacat.c:364 -#, c-format -msgid "Stream started.%s \n" +#: ../src/utils/pacat.c:369 +#, fuzzy, c-format +msgid "Stream started.%s" msgstr "Fluxo iniciado.%s \n" -#: ../src/utils/pacat.c:371 -#, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "" +#: ../src/utils/pacat.c:376 +#, fuzzy, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Ligado ao dispositivo %s (%u, %ssuspended).\n" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "negação" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" +msgid "Stream buffer attributes changed.%s" msgstr "" -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" +#: ../src/utils/pacat.c:415 +#, fuzzy, c-format +msgid "Connection established.%s" msgstr "Ligação Estabelecida.%s \n" -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" +#: ../src/utils/pacat.c:418 +#, fuzzy, c-format +msgid "pa_stream_new() failed: %s" msgstr "pa_stream_new() falhou: %s\n" -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +#: ../src/utils/pacat.c:446 +#, fuzzy, c-format +msgid "pa_stream_connect_playback() failed: %s" msgstr "pa_stream_connect_playback() falhou: %s\n" -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" +#: ../src/utils/pacat.c:452 +#, fuzzy, c-format +msgid "pa_stream_connect_record() failed: %s" msgstr "pa_stream_connect_record() falhou: %s\n" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, fuzzy, c-format +msgid "Connection failure: %s" msgstr "Ligação falhou: %s\n" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +#, fuzzy +msgid "Got EOF." msgstr "Obtive EOF.\n" -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "read() falhou: %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" +#: ../src/utils/pacat.c:536 +#, fuzzy, c-format +msgid "write() failed: %s" msgstr "write() falhou: %s\n" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" +#: ../src/utils/pacat.c:557 +#, fuzzy +msgid "Got signal, exiting." msgstr "Recebido sinal, a sair.\n" -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" msgstr "Falhou a obtenção da latência: %s\n" -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Tempo: %0.3f sec; Latency: %0.0f usec. \r" -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +#: ../src/utils/pacat.c:595 +#, fuzzy, c-format +msgid "pa_stream_update_timing_info() failed: %s" msgstr "pa_stream_update_timing_info() falhou: %s\n" #: ../src/utils/pacat.c:605 @@ -1497,136 +1389,142 @@ msgid "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" msgstr "" +"pacat %s\n" +"Compilado com libpulse %s\n" +"Ligado com libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Método de resample inválido '%s'." +msgid "Invalid client name '%s'" +msgstr "Nome de máquina inválido" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:775 #, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Método de resample inválido '%s'." +msgid "Invalid stream name '%s'" +msgstr "Nome de máquina inválido" -#: ../src/utils/pacat.c:813 -#, c-format -msgid "Invalid channel map '%s'\n" -msgstr "" +#: ../src/utils/pacat.c:812 +#, fuzzy, c-format +msgid "Invalid channel map '%s'" +msgstr "Mapa de canais inválido '%s'\n" -#: ../src/utils/pacat.c:842 -#, c-format -msgid "Invalid latency specification '%s'\n" +#: ../src/utils/pacat.c:841 +#, fuzzy, c-format +msgid "Invalid latency specification '%s'" msgstr "Especificação da latência inválida '%s'\n" -#: ../src/utils/pacat.c:849 -#, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "" - -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:848 #, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Método de resample inválido '%s'." +msgid "Invalid process time specification '%s'" +msgstr "Especificação da infra-estrutura da impressora inválida: %1" -#: ../src/utils/pacat.c:878 -#, c-format +#: ../src/utils/pacat.c:860 +#, fuzzy, c-format +msgid "Invalid property '%s'" +msgstr "Tipo de propriedade inválido %s para propriedade %s" + +#: ../src/utils/pacat.c:877 +#, fuzzy, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Formato de ficheiro desconhecido" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" +#: ../src/utils/pacat.c:896 +#, fuzzy +msgid "Invalid sample specification" msgstr "Especificação da amostra inválida\n" -#: ../src/utils/pacat.c:907 -#, c-format -msgid "open(): %s\n" +#: ../src/utils/pacat.c:906 +#, fuzzy, c-format +msgid "open(): %s" msgstr "open(): %s\n" -#: ../src/utils/pacat.c:912 -#, c-format -msgid "dup2(): %s\n" +#: ../src/utils/pacat.c:911 +#, fuzzy, c-format +msgid "dup2(): %s" msgstr "dup2(): %s\n" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" +#: ../src/utils/pacat.c:918 +#, fuzzy +msgid "Too many arguments." msgstr "demasiados argumentos.\n" -#: ../src/utils/pacat.c:930 +#: ../src/utils/pacat.c:929 #, fuzzy -msgid "Failed to generate sample specification for file.\n" +msgid "Failed to generate sample specification for file." msgstr "não foi possível obter informações da amostra: %s\n" -#: ../src/utils/pacat.c:950 +#: ../src/utils/pacat.c:949 #, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Falha ao abrir ficheiro de som.\n" +msgid "Failed to open audio file." +msgstr "Falha ao abrir ficheiro temporário" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 #, fuzzy -msgid "Failed to determine sample specification from file.\n" +msgid "Failed to determine sample specification from file." msgstr "não foi possível obter informações da amostra: %s\n" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" +#: ../src/utils/pacat.c:967 +#, fuzzy +msgid "Warning: Failed to determine channel map from file." +msgstr "não foi possível obter informações da amostra: %s\n" + +#: ../src/utils/pacat.c:978 +#, fuzzy +msgid "Channel map doesn't match sample specification" +msgstr "Mapa de canais não corresponde com ficheiro.\n" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." msgstr "" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" #: ../src/utils/pacat.c:1005 -#, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "a gravar" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "reprodução" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 -#, c-format -msgid "pa_mainloop_new() failed.\n" +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +#, fuzzy +msgid "pa_mainloop_new() failed." msgstr "pa_mainloop_new() falhou.\n" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1050 +#, fuzzy +msgid "io_new() failed." msgstr "io_new() falhou.\n" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +#, fuzzy +msgid "pa_context_new() failed." msgstr "pa_context_new() falhou.\n" -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() falhou: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() falhou.\n" +#: ../src/utils/pacat.c:1071 +#, fuzzy +msgid "pa_context_rttime_new() failed." +msgstr "não foi possível obter o novo contexto.\n" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +#, fuzzy +msgid "pa_mainloop_run() failed." msgstr "pa_mainloop_run() falhou.\n" #: ../src/utils/pasuspender.c:81 @@ -1654,7 +1552,12 @@ msgstr "Falhou ao restaurar: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "Atenção: Servidor de Som não local, suspender ignorado.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Ligação falhou: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Obtido SIGINT, a sair.\n" @@ -1684,32 +1587,47 @@ msgid "" "Linked with libpulse %s\n" msgstr "" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() falhou.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() falhou.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() falhou.\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Falhou a obtenção de estatísticas: %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Tamanho cache da amostra: %s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "Não foi possível obter informações do servidor: %s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1723,12 +1641,12 @@ msgid "" "Cookie: %08x\n" msgstr "" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "não foi possível obter informações do depósito: %s\n" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1750,22 +1668,22 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, fuzzy, c-format msgid "\tPorts:\n" msgstr "\tPrefis:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, fuzzy, c-format msgid "\tActive Port: %s\n" -msgstr "\tPerfil Activo: %s\n" +msgstr "MÁQUINA:PORTO" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "não foi possível obter informações da fonte: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1787,20 +1705,20 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/d" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "não foi possível obter informações do módulo: %s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1811,12 +1729,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "não foi possível obter informações do cliente: %s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1826,12 +1744,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" msgstr "não foi possível obter informações da carta: %s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1842,22 +1760,23 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tPrefis:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tPerfil Activo: %s\n" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "" +"Não foi possível obter informações sobre o Método de Introdução de Dados" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1878,12 +1797,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" +msgstr "não foi possível obter informações da fonte: %s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -1900,12 +1819,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "não foi possível obter informações da amostra: %s\n" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -1923,21 +1842,27 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Falhou: %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "Não foi possível enviar amostra: %s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "Fim prematuro de ficheiro\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "Obtido SIGINT, a sair.\n" + +#: ../src/utils/pactl.c:869 #, c-format msgid "" "%s [options] stat\n" @@ -1946,15 +1871,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -1965,7 +1896,7 @@ msgid "" "server\n" msgstr "" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -1976,81 +1907,134 @@ msgstr "" "Compilado com libpulse %s\n" "Linkado com libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "Por favor, especifique um ficheiro de amostra para carregar\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "Falha ao abrir ficheiro de som.\n" -#: ../src/utils/pactl.c:951 -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "" +#: ../src/utils/pactl.c:1004 +#, fuzzy +msgid "Warning: Failed to determine sample specification from file." +msgstr "não foi possível obter informações da amostra: %s\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "Tem de especificar um nome de amostra para reproduzir\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "Tem de especificar um nome de amostra para remover\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" msgstr "Tem de especificar um índice de entrada de depósito e um depósito\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" msgstr "Tem de especificar um índice de saída de fonte e uma fonte\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "Tem de especificar um nome de módulo e argumentos.\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "Tem de especificar um índice de módulo\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 +#, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "Não pode especificar mais do que um depósito. Tem de especificar um valor " "booleano.\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 +#, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "Não pode especificar mais do que uma fonte. Tem de especificar um valor " "booleano.\n" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" - -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" +msgid "You have to specify a card name/index and a profile name" msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" +msgid "You have to specify a sink name/index and a port name" msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1137 +#, fuzzy +msgid "You have to specify a source name/index and a port name" +msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" + +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Especificação da amostra inválida\n" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "Tem de especificar um índice de entrada de depósito e um depósito\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Tem de especificar um nome/índice de carta e um nome de perfil\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Tem de especificar um índice de entrada de depósito e um depósito\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Especificação da amostra inválida\n" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "O comando especificado é inválido.\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() falhou: %s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2123,48 +2107,48 @@ msgstr "Não foi possível carregar os dados da cookie\n" msgid "Not yet implemented.\n" msgstr "Ainda não implementado.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Não foi possível terminar o serviço PulseAudio." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Serviço não responde." -#: ../src/utils/pacmd.c:146 -#, c-format -msgid "select(): %s" -msgstr "select(): %s" +#: ../src/utils/pacmd.c:161 +#, fuzzy, c-format +msgid "poll(): %s" +msgstr "fork(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Impossível aceder ao lock \"autospawn\"." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2181,7 +2165,7 @@ msgstr "" "Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de " "snd_pcm_avail() retornou 0 ou outro valor < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2199,15 +2183,20 @@ msgstr "" "snd_pcm_avail() retornou 0 ou outro valor < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Desligado" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Reprodução Alta Fidelidade (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +#, fuzzy +msgid "High Fidelity Capture (A2DP)" +msgstr "Reprodução Alta Fidelidade (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Telefonia Duplex (HSP/HFP)" @@ -2215,6 +2204,82 @@ msgstr "Telefonia Duplex (HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "Servidor de Som PulseAudio" +#, fuzzy +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Nome de máquina inválido" + +#, fuzzy +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "não foi possível obter informações da amostra: %s\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Incapaz de se ligar ao bus de sistema: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Não foi possível obter chamador a partir do PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Não foi possível definir o UID no objecto chamador." + +#~ msgid "Failed to get CK session." +#~ msgstr "Falha ao obter sessão CK." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Não foi possível definir o UID no objecto da sessão." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Não é possível alocar PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "impossível definir action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Não é possível alocar contexto PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Incapaz de inicializar o PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Não foi possível determinar se o chamador está autorizado: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Não foi possível obter autenticação: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit respondeu com '%s'" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Escalonamento de alta-prioridade (nível 'nice' negativo em Unix) para o " +#~ "serviço PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Escalonamento em tempo-real para o serviço PulseAudio" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "Politica do sistema impede o PulseAudio de obter escalonamento de alta-" +#~ "prioridade." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "Politica do sistema impede o PulseAudio de obter escalonamento de tempo-" +#~ "real." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() falhou: %s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "Impossível ligar ao servidor." + #~ msgid "Analog Mono" #~ msgstr "Mono Analógico" @@ -2248,6 +2313,60 @@ msgstr "Servidor de Som PulseAudio" #~ msgid "Analog Surround 7.1" #~ msgstr "Analog Surround 7.1" +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "Estamos no grupo '%s', permitindo escalonamento de alta-prioridade." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "" +#~ "O PolicyKit permite-nos o privilégio \"acquire-high-priority\" (adquirir " +#~ "alta prioridade)." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "" +#~ "O PolicyKit recusa-nos o privilégio \"acquire-high-priority\" (adquirir " +#~ "alta prioridade)." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "" +#~ "O PolicyKit permite-nos o privilégio \"acquire-real-time\" (adquirir " +#~ "tempo real)." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "" +#~ "O PolicyKit recusa-nos o privilégio \"acquire-real-time\" (adquirir tempo " +#~ "real)." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "Escalonamento de alta prioridade activo na configuração, mas não " +#~ "permitido pela politica." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO aumentado com sucesso" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO falhou: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "A desistir de CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "Escalonamento em tempo real activo na configuração, mas não permitido " +#~ "pela politica." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "Capacidades limitadas com sucesso em CAP_SYS_NICE." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() falhou.\n" + #~ msgid "Stream successfully created\n" #~ msgstr "Fluxo criado com sucesso\n" @@ -2266,17 +2385,14 @@ msgstr "Servidor de Som PulseAudio" #~ "Compilado com libpulse %s\n" #~ "Linkado com libpulse %s\n" +#~ msgid "Invalid channel map\n" +#~ msgstr "Mapa de canais inválido\n" + #~ msgid "Failed to open file '%s'\n" #~ msgstr "Falha ao abrir o ficheiro '%s'\n" -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "Utilizando especificação da amostra '%s'\n" - #~ msgid "Output %s + Input %s" #~ msgstr "Saída %s + Entrada %s" -#~ msgid "Output %s" -#~ msgstr "Saída %s" - #~ msgid "Input %s" #~ msgstr "Entrada %s" diff --git a/po/pt_BR.po b/po/pt_BR.po index fd4f53919..1340f74ac 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,24 +1,30 @@ -# Brazilian Translation of PulseAudio -# Copyright (C) 2008 pulseaudio +# Brazilian Portuguese translation of PulseAudio +# Copyright (C) 2008,2009 pulseaudio # This file is distributed under the same license as the pulseaudio package. # Fabian Affolter , 2008. +# Igor Pires Soares , 2009. # msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2008-11-21 01:21-0300\n" -"Last-Translator: Henrique (LonelySpooky) Junior \n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-08-24 19:26-0300\n" +"Last-Translator: Igor Pires Soares \n" "Language-Team: Brazilian-Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: Brazilian Portuguese\n" +"X-Poedit-Language: Portuguese\n" "X-Poedit-Country: Brazil\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -26,8 +32,12 @@ msgid "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." msgstr "" +"O snd_pcm_avail() retornou um valor que é excepcionalmente grande: %lu bytes " +"(%lu ms).\n" +"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, " +"relate esse problema aos desenvolvedores do ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -35,8 +45,12 @@ msgid "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." msgstr "" +"O snd_pcm_delay() retornou um valor que é excepcionalmente grande: %li bytes " +"(%s%lu ms).\n" +"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, " +"relate esse problema aos desenvolvedores do ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -44,10 +58,22 @@ msgid "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." msgstr "" +"O snd_pcm_mmap_begin() retornou um valor que é excepcionalmente grande: %lu " +"bytes (%lu ms).\n" +"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, " +"relate esse problema aos desenvolvedores do ALSA." + +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Destino Virtual LADSPA" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -57,236 +83,126 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= " +"rate= channels= channel_map= plugin= label= " +"control=" -#: ../src/pulsecore/sink.c:2394 -#, fuzzy -msgid "Internal Audio" -msgstr "Erro interno" - -#: ../src/pulsecore/sink.c:2400 -msgid "Modem" +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" msgstr "" +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 +msgid "Internal Audio" +msgstr "Áudio interno" + +#: ../src/pulsecore/sink.c:2618 +msgid "Modem" +msgstr "Modem" + #: ../src/daemon/ltdl-bind-now.c:124 -#, fuzzy msgid "Failed to find original lt_dlopen loader." -msgstr "Falha em encontrar o carregador original dlopen" +msgstr "Falha ao localizar o carregador original lt_dlopen." #: ../src/daemon/ltdl-bind-now.c:129 -#, fuzzy msgid "Failed to allocate new dl loader." -msgstr "Falha em encontrar o carregador original dlopen" +msgstr "Falha ao alocar o novo carregador dl." #: ../src/daemon/ltdl-bind-now.c:142 msgid "Failed to add bind-now-loader." msgstr "Falha em adicionar o bind-now-loader." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Não foi possível conectar com o barramento do sistema: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Não foi possível obter quem chamou pelo PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Não foi possível definir o UID sobre o objeto que chamou." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Falha em obter a sessão CK." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Não foi possível definir o UID do objeto da sessão." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Não foi possível alocar o PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Não foi possível definir a action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Não foi possível alocar o PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Não foi possível iniciar o PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Não foi possível determinar se o solicitante está autorizado: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Não foi possível obter auth: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit respondeu com '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Sinal %s recebido." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Saindo." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." -msgstr "Falha em encontrar o usuário '%s'." +msgstr "Falha ao localizar o usuário \"%s\"." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." -msgstr "Falha em encontrar o grupo '%s'." +msgstr "Falha ao localizar o grupo \"%s\"." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." -msgstr "Usuário '%s' (UID %lu) e grupo '%s' (GID %lu) encontrados." +msgstr "Usuário \"%s\" (UID %lu) e grupo \"%s\" (GID %lu) localizados." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "O GID do usuário'%s' e do grupo '%s' não combinam." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." -msgstr "O diretório Home do usuário '%s' não é '%s', ignorando." +msgstr "O diretório pessoal do usuário \"%s\" não é \"%s\", ignorando." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" -msgstr "Falha em criar '%s': %s" +msgstr "Falha ao criar \"%s\": %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" -msgstr "Falha em alterar a lista de grupos: %s" +msgstr "Falha ao alterar a lista de grupos: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" -msgstr "Falha em mudar o GID: %s" +msgstr "Falha ao alterar o GID: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" -msgstr "Falha em mudar o UID: %s" +msgstr "Falha ao alterar o UID: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Os privilégios do root foram retirados com sucesso." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "O modo ampliado do sistema não tem suporte nessa plataforma." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) falhou: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Falha em interpretar a linha de comando." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"O escalonamento de alta prioridade foi habilitado para esta configuração, " -"mas não é permitida pela política." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "RLIMIT_RTPRIO aumentado com sucesso" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO falhou: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Abandonando CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"O escalonamento de tempo real foi habilitado pela configuração, mas não é " -"permitido pela política." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "O daemon não está em execução" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Daemon executando como PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Falha em encerrar o daemon: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -294,153 +210,159 @@ msgstr "" "Este programa não é para ser executado como root (a não ser que --system " "seja especificado)." -#: ../src/daemon/main.c:724 -#, fuzzy +#: ../src/daemon/main.c:568 msgid "Root privileges required." -msgstr "Privilégios de rot são requeridos." +msgstr "Privilégios de root requeridos." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start não tem suporte para instâncias de sistemas." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "Executando em no modo system, mas --disallow-exit não foi configurado!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Executando no modo system, mas --disallow-module-loading não foi configurado!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Executando no modo system, desabilitando forçadamente o exit idle time!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Falha em adquirir o stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "O pipe falhou: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "O fork() falhou: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "A operação read() falhou: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Falha na partida do daemon." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Os daemons foram iniciados com sucesso." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Este é o PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Host de compilação: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "Compilação CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Executando no host: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." -msgstr "" +msgstr "%u CPUs localizadas." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "O tamanho da página é %lu bytes" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Compilado com suporte do Valgrind: sim" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Compilado com suporte do Valgrind: não" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Executando em modo valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Build otimizado: sim" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Build otimizado: não" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." -msgstr "" +msgstr "NDEBUG definido, todas as declarações desabilitadas." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" +"FASTPATH definido, somente as declarações do \"fast path\" foram " +"desabilitadas." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." -msgstr "" +msgstr "Todas as declarações habilitadas." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Falha em obter o ID da máquina" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "A ID da máquina é %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "A ID da máquina é %s." +msgstr "O ID da sessão é %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Usando o diretório de runtime %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Usando o diretório de estado %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Usando o diretório de módulos %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Executando em modo do sistema: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -449,16 +371,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"OK, então você está executando o PA no modo de sistema. Por favor, note que " +"é mais provável que você não deveria estar fazendo isso.\n" +"Todavia, se você o fizer, então a culpa será sua se as coisas não " +"funcionarem como esperado.\n" +"Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para " +"obter um explicação sobre porque o modo de sistema é uma má idéia." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() falhou." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -466,33 +394,33 @@ msgstr "" "Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de " "alta resolução habilitados!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() falhou." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Falha em iniciar o daemon." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" "O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "A partida dos Daemon está completa." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "O encerramento do Daemon foi iniciado." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Daemon terminado." #: ../src/daemon/cmdline.c:115 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -573,24 +501,24 @@ msgstr "" " --dump-modules Descarrega a lista de módulos " "disponíveis\n" " --dump-resample-methods Descarrega os métodos de " -"reamostragem (resample)\n" +"reamostragem\n" " --cleanup-shm Limpa os segmentos de memória " "compartilhados\n" " --start Inicia o daemon se ele não estiver " "em execução\n" " -k --kill Encerra um daemon em execução\n" -" --check Verifica um daemon em execução\n" +" --check Verifica se há um daemon em execução " +"(somente retorna o código de saída)\n" "\n" "OPÇÕES:\n" " --system[=BOOL] Executa como uma instância do " -"sistema em escala ampla \n" -" -D, --daemonize[=BOOL] Torna um daemom (daemonize) depois " -"da partida\n" +"sistema em escala ampla\n" +" -D, --daemonize[=BOOL] Torna-se um daemom após o início\n" " --fail[=BOOL] Sai quando a partida falha\n" " --high-priority[=BOOL] Tenta definir um nível alto de nice\n" " (disponível apenas, quando SUID ou\n" " com RLIMIT_NICE) elevado\n" -" --realtime[=BOOL] Tenta habilidar o escalonamento em " +" --realtime[=BOOL] Tenta habilitar o escalonamento em " "tempo real\n" " (disponível apenas como root, quando " "SUID ou\n" @@ -603,35 +531,40 @@ msgstr "" " --exit-idle-time=SECS Termina um daemon quando ocioso e " "este\n" " tempo foi decorrido\n" -" --module-idle-time=SECS Descarrega os modulos " +" --module-idle-time=SECS Descarrega os módulos " "autocarregáveis quando ociosos e\n" -" tempo foi decorrido\n" +" este tempo foi decorrido\n" " --scache-idle-time=SECS Descarrega amostras quando ociosas " "e\n" -" este tempo tenha passado\n" +" este tempo foi decorrido\n" " --log-level[=LEVEL] Aumenta ou define o grau de " -"verbosidade\n" -" -v Aumenta o nível de verbosidade\n" -" --log-target={auto,syslog,stderr} Especifica o alvo do log\n" -" -p, --dl-search-path=PATH Define o caminho de busca (search " -"paht)para objetos (plugins)\n" -" dinamicamente commpartilhados\n" +"detalhamento\n" +" -v Aumenta o nível de detalhamento\n" +" --log-target={auto,syslog,stderr} Especifica o destino do log\n" +" --log-meta[=BOOL] Inclui a localização do código na " +"mensagem de log\n" +" --log-time[=BOOL] Inclui carimbos de hora nas " +"mensagens de log\n" +" --log-backtrace=FRAMES Inclui um backtrace na mensagem de " +"log\n" +" -p, --dl-search-path=PATH Define o caminho de pesquisa para " +"objetos (plugins)\n" +" dinamicamente compartilhados\n" " --resample-method=METHOD Usa o método de reamostragem " "especificado\n" " (Veja --dump-resample-methods para\n" " valores possíveis)\n" -" --use-pid-file[=BOOL] Cria um arquivo PID file\n" +" --use-pid-file[=BOOL] Cria um arquivo PID\n" " --no-cpu-limit[=BOOL] Não instala um limitador de carga de " -"CPU load em\n" +"CPU em\n" " plataformas que o suportem.\n" -" --disable-shm[=BOOL] Desabilita o suporte a memória " +" --disable-shm[=BOOL] Desabilita o suporte à memória " "compartilhada.\n" "\n" -"STARTUP SCRIPT:\n" -" -L, --load=\"MODULE ARGUMENTS\" Carrega um plugin especificado " -"com\n" +"SCRIPT DE INÍCIO:\n" +" -L, --load=\"ARGUMENTOS DO MÓDULO\" Carrega um plugin especificado com\n" " o argumento especificado\n" -" -F, --file=FILENAME Executa o script especificado\n" +" -F, --file=NOME_DO_ARQUIVO Executa o script especificado\n" " -C Abre uma linha de comando no TTY em " "execução\n" " depois da partida\n" @@ -668,9 +601,8 @@ msgid "--disallow-module-loading expects boolean argument" msgstr "--disallow-module-loading espera um argumento booleano" #: ../src/daemon/cmdline.c:297 -#, fuzzy msgid "--disallow-exit expects boolean argument" -msgstr "--disallow-exit argumento booleano" +msgstr "--disallow-exit espera um argumento booleano" #: ../src/daemon/cmdline.c:304 msgid "--use-pid-file expects boolean argument" @@ -681,14 +613,12 @@ msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'." msgstr "Log target inválido: use 'syslog', 'stderr' ou 'auto'." #: ../src/daemon/cmdline.c:328 -#, fuzzy msgid "--log-time expects boolean argument" -msgstr "--realtime espera um argumento booleano" +msgstr "--log-time espera um argumento booleano" #: ../src/daemon/cmdline.c:335 -#, fuzzy msgid "--log-meta expects boolean argument" -msgstr "--disallow-exit argumento booleano" +msgstr "--log-meta espera um argumento booleano" #: ../src/daemon/cmdline.c:354 #, c-format @@ -745,127 +675,104 @@ msgstr "Carrega uma vez: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "AVISO DE OBSOLESCÊNCIA: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Caminho: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Alvo do log inválido '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Nível de log inválido '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Método de reamostragem inválido '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] rlimit inválido '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit não tem suporte nessa plataforma." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Formato de amostragem inválido '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Taxa de amostragem inválida '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Canais de amostragem inválidos'%s'." -#: ../src/daemon/daemon-conf.c:354 -#, fuzzy, c-format +#: ../src/daemon/daemon-conf.c:370 +#, c-format msgid "[%s:%u] Invalid channel map '%s'." -msgstr "[%s:%u] Canais de amostragem inválidos'%s'." +msgstr "[%s:%u] Mapa de canais \"%s\" inválido." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Números de fragmentos inválidos '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Número de nice inválido'%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Falha em abrir o arquivo de configuração: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "" +"O mapa padrão dos canais especificado tem um número diferente de canais do " +"que o número de canais padrão especificado." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Lido do arquivo de configuração: %s ###\n" -#: ../src/daemon/caps.c:63 -#, fuzzy -msgid "Dropping root privileges." -msgstr "Descartando os privilégios de root." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "As capacidades foram limitadas com sucesso para CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Limpando privilégios." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" -msgstr "" +msgstr "Sistema de som PulseAudio" #: ../src/daemon/pulseaudio.desktop.in.h:2 msgid "Start the PulseAudio Sound System" -msgstr "" +msgstr "Iniciar o sistema de som PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -#, fuzzy -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Falha em cancelar o daemon do PulseAudio." - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -#, fuzzy -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1069,35 +976,35 @@ msgstr "Posterior Superior Esquerdo" msgid "Top Rear Right" msgstr "Posterior Superior Direito" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(Inválido)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" -msgstr "" +msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" -msgstr "" +msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" -msgstr "" +msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" -msgstr "" +msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" -msgstr "" +msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" -msgstr "" +msgstr "Surround 7.1" #: ../src/pulse/error.c:43 msgid "OK" @@ -1189,40 +1096,48 @@ msgstr "Não existe tal extensão" #: ../src/pulse/error.c:65 msgid "Obsolete functionality" -msgstr "" +msgstr "Funcionalidade obsoleta" #: ../src/pulse/error.c:66 msgid "Missing implementation" -msgstr "" +msgstr "Implementação faltando" #: ../src/pulse/error.c:67 msgid "Client forked" +msgstr "Cliente bifurcado" + +#: ../src/pulse/error.c:68 +msgid "Input/Output error" msgstr "" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" -msgstr "" +msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" -msgstr "" +msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" -msgstr "" +msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" -msgstr "" +msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" -msgstr "" +msgstr "%u B" #: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100 msgid "XOpenDisplay() failed" @@ -1232,192 +1147,191 @@ msgstr "XOpenDisplay() falhou" msgid "Failed to parse cookie data" msgstr "Falhou ao analisar os dados do cookie" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Falha em abrir o arquivo de configuração '%s': %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Nenhum cookie foi carregado. Tentativa de conexão sem eles." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Falha em drenar o fluxo: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Falha ao drenar o fluxo: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Drenado o fluxo de playback.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Fluxo de reprodução drenado." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Drenando a conexão par ao servidor.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Drenando conexão para o servidor." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() falhou: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() falhou: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() falhou: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() falhou: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "O fluxo (stream) foi criado com sucesso.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() falhou: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() falhou: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Fluxo criado com sucesso." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Metrica do buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() falhou: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Métrica do buffer: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Métricas do buffer: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Usando a espeficifação de amostragem '%s', mapa do canal '%s'.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Métricas do buffer: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Conectado ao dispositivo %s (%u, %ssuspended).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Usando especificação de amostragem \"%s\", mapa de canais \"%s\"." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Erro de fluxo: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Conectado ao dispositivo %s (%u, %ssuspended)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Dispositivo de fluxo suspenso.%s \n" +msgid "Stream error: %s" +msgstr "Erro de fluxo: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Dispositivo de fluxo prosseguiu.%s \n" +msgid "Stream device suspended.%s" +msgstr "Dispositivo de fluxo suspenso.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Extravazamento do fluxo. %s\n" +msgid "Stream device resumed.%s" +msgstr "O dispositivo de fluxo continuou.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "O fluxo extravazou.%s \n" +msgid "Stream underrun.%s" +msgstr "Subestimação do fluxo.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "O fluxo iniciou: %s\n" +msgid "Stream overrun.%s" +msgstr "Superestimação do fluxo.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "O fluxo foi movido para o dispositivo %s (%u, %ssuspended).%s \n" +msgid "Stream started.%s" +msgstr "Fluxo iniciado.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Fluxo movido para o dispositivo %s (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "não" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 +#, c-format +msgid "Stream buffer attributes changed.%s" +msgstr "Atributos do buffer de fluxo alterados.%s" + +#: ../src/utils/pacat.c:415 +#, c-format +msgid "Connection established.%s" +msgstr "Conexão estabelecida.%s" + +#: ../src/utils/pacat.c:418 +#, c-format +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() falhou: %s" + +#: ../src/utils/pacat.c:446 +#, c-format +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() falhou: %s" + +#: ../src/utils/pacat.c:452 +#, c-format +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() falhou: %s" + +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, c-format +msgid "Connection failure: %s" +msgstr "Falha na conexão: %s" + +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Atingiu EOF." + +#: ../src/utils/pacat.c:536 +#, c-format +msgid "write() failed: %s" +msgstr "write() falhou: %s" + +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Sinal recebido, saindo." + +#: ../src/utils/pacat.c:571 +#, c-format +msgid "Failed to get latency: %s" +msgstr "Falha ao obter a latência: %s" + +#: ../src/utils/pacat.c:576 #, fuzzy, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Extravazamento do fluxo. %s\n" - -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" -msgstr "Conexão estabelecida.%s \n" - -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() falhou: %s\n" - -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() falhou: %s\n" - -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() falhou: %s\n" - -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" -msgstr "Falha na conexão: %s\n" - -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Atingiu EOF.\n" - -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "read() falhou: %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" -msgstr "write() falhou: %s\n" - -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Sinal recebido, saindo (exiting).\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Falhou em obter a latência: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Tempo: %0.3f s; Latência: %0.0f us. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "Falha em pa_stream_update_timing_info(): %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() falhou: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1481,44 +1395,58 @@ msgstr "" " --version Mostra a versão\n" "\n" " -r, --record Cria uma conexão para gravação\n" -" -p, --playback Cria uma conexão para playback\n" +" -p, --playback Cria uma conexão para reprodução\n" "\n" -" -v, --verbose Habilita operações no modo verboso\n" +" -v, --verbose Habilita operações no modo " +"detalhado\n" "\n" -" -s, --server=SERVER Nome do servidor a ser conectado\n" -" -d, --device=DEVICE O nome do destino/fonte a conectar\n" -" -n, --client-name=NAME Como chamar o cliente no servidor\n" -" --stream-name=NAME Como chamar este fluxo no " -"servidorn --volume=VOLUME Especifica a faixa (linear) " -"inicial de volume no intervalo 0...65536\n" -" --rate=SAMPLERATE Taxa de amostragem em Hz (o padrão é " -"44100)\n" -" --format=SAMPLEFORMAT Tipo de amostragem, um de s16le, " +" -s, --server=SERVIDOR Nome do servidor a conectar-se\n" +" -d, --device=DISPOSITIVO O nome do destino/fonte a " +"conectar-se\n" +" -n, --client-name=NOME Como chamar este cliente no " +"servidor\n" +" --stream-name=NOME Como chamar este fluxo no servidor\n" +" --volume=VOLUME Especifica a faixa (linear) inicial " +"de volume no intervalo 0...65536\n" +" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem em Hz (o " +"padrão é 44100)\n" +" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, um de s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(o padrão é s16ne)\n" -" --channels=CHANNELS O número de canais, 1 para mono, 2 " +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (o padrão é " +"s16ne)\n" +" --channels=CANAIS O número de canais, 1 para mono, 2 " "para estéreo\n" " (o padrão é 2)\n" -" --channel-map=CHANNELMAP Mapeamento de canais a ser usando em " -"lugar do padrão\n" +" --channel-map=MAPA_DE_CANAIS Mapeamento de canais a ser usado " +"no lugar do padrão\n" " --fix-format Obtém o formato da amostragem do " "destino onde o fluxo\n" -" está sendo conectado.\n" -" --fix-rate Obtém o taxa de amostragem do " +" está sendo conectado.\n" +" --fix-rate Obtém a taxa de amostragem do " "destino onde o fluxo está\n" " sendo conectado.\n" " --fix-channels Obtém o número de canais e o mapa de " "canais\n" " do destino onde o fluxo está sendo " "conectado.\n" -" --no-remix Don't upmix or downmix channels.\n" -" --no-remap Map channels by index instead of " -"name.\n" -" --latency=BYTES Request the specified latency in " -"bytes.\n" -" --process-time=BYTES Request the specified process time " -"per request in bytes.\n" +" --no-remix Não realizar upmix nem downmix dos " +"canais.\n" +" --no-remap Mapear os canais por índice em vez " +"de nome.\n" +" --latency=BYTES Requisitar a latência especificada " +"em bytes.\n" +" --process-time=BYTES Requisitar o tempo de processo " +"especificado por requisições em bytes.\n" +" --property=PROPRIEDADE=VALOR Define a propriedade especificada " +"para o valor especificado.\n" +" --raw Grava/reproduz dados PCM não " +"tratados.\n" +" --file-format=FORMATO_DO_ARQ. Grava/reproduz dados PCM " +"formatados.\n" +" --list-file-formats Lista os formatos de arquivo " +"disponíveis.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1531,136 +1459,131 @@ msgstr "" "Compilado com libpulse %s\n" "Linkado com libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Mapa de canal inválido '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Método de reamostragem inválido '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Mapa de canal inválido '%s'\n" +msgid "Invalid client name '%s'" +msgstr "Nome do cliente \"%s\" inválido" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Especificação de latência inválida '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "Nome do fluxo \"%s\" inválido" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Especificação do tempo do processo inválida '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "Mapa de canais \"%s\" inválido" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Método de reamostragem inválido '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Especificação de latência inválida \"%s\"" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Especificação do tempo de processo \"%s\" inválida" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Propriedade \"%s\" inválida" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Formato de arquivo %s desconhecido." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Especificação de amostragem inválida\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Especificação de amostragem inválida" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Argumentos em excesso.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Argumentos em excesso." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Falha em obter informações sobre a amostragem: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Falha ao gerar a especificação de amostragem para o arquivo." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Falha em abrir o arquivo de som.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Falha ao abrir o arquivo de áudio." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Aviso: a especificação de amostragem especificada será sobrescrita pela " +"especificação do arquivo." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Falha em obter informações sobre a amostragem: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Falha ao determinar a especificação de amostragem a partir do arquivo." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "O mapeamento do canal não casa com a especificação da amostragem\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Aviso: falha ao determinar o mapa de canais a partir do arquivo." + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "O mapa de canais não combina com a especificação da amostragem" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Aviso: falha ao gravar o mapa de canais no arquivo." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"Abrindo um fluxo %s com a especificação de amostragem \"%s\" e mapeamento de " +"canais \"%s\"." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "gravando" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "playback" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() falhou." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() falhou." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() falhou." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() falhou.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() falhou.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() falhou.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_new() falhou: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() falhou.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() falhou." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() falhou.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() falhou." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1689,7 +1612,12 @@ msgstr "" "AVISO: O servidor de som não é local, Sound server is not local, não está em " "suspenso.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Falha na conexão: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Recebido o SIGINT, saindo.\n" @@ -1728,33 +1656,48 @@ msgstr "" "Compilado com libpulse %s\n" "Linkado com libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() falhou.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() falhou.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() falhou.\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Falha em obter as estatísticas: %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Em uso no momento: %u blocos contendo %s bytes no total.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Alocado por todo o tempo: %u blocos contendo %s bytes no total.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Tamanho do cache para amostragem: %s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "Falha em obter a informação do servidor: %s\n" -#: ../src/utils/pactl.c:157 -#, fuzzy, c-format +#: ../src/utils/pactl.c:164 +#, c-format msgid "" "User name: %s\n" "Host Name: %s\n" @@ -1766,22 +1709,23 @@ msgid "" "Default Source: %s\n" "Cookie: %08x\n" msgstr "" -"Nome do Usuário: %s\n" -"Nome do Host: %s\n" -"Nome do Servidor: %s\n" -"Versão do Servidor: %s\n" +"Nome do usuário: %s\n" +"Nome da máquina: %s\n" +"Nome do servidor: %s\n" +"Versão do servidor: %s\n" "Especificação padrão de amostragem: %s\n" +"Mapa de canais padrão: %s\n" "Destino padrão: %s\n" "Fonte padrão %s\n" "Cookie: %08x\n" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "Falha em obter a informação do destino: %s\n" -#: ../src/utils/pactl.c:214 -#, fuzzy, c-format +#: ../src/utils/pactl.c:221 +#, c-format msgid "" "Sink #%u\n" "\tState: %s\n" @@ -1801,36 +1745,41 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Destino #%u ***\n" -"Nome: %s\n" -"Driver: %s\n" -"Especificação de amostragem: %s\n" -"Mapa de canais: %s\n" -"Propretário do módulo: %u\n" -"Volume: %s\n" -"Fonte do monitor: %s\n" -"Latência: %0.0f us, configurado %0.0f us\n" -"Flags: %s%s%s%s%s%s\n" -"Propriedades:\n" -"%s" +"Destino #%u\n" +"\tEstado: %s\n" +"\tNome: %s\n" +"\tDescrição: %s\n" +"\tDriver: %s\n" +"\tEspecificação da amostragem: %s\n" +"\tMapa dos canais: %s\n" +"\tMódulo proprietário: %u\n" +"\tMudo: %s\n" +"\tVolume: %s%s%s\n" +"\t balanço %0.2f\n" +"\tVolume base: %s%s%s\n" +"\tFonte de monitoração: %s\n" +"\tLatência: %0.0f usec, %0.0f usec configurado\n" +"\tSinalizadores: %s%s%s%s%s%s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format msgid "\tPorts:\n" -msgstr "" +msgstr "\tPortas:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "O pipe falhou: %s" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, c-format -msgid "Failed to get source information: %s\n" +msgid "\tActive Port: %s\n" +msgstr "\tPorta ativa: %s\n" + +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "Falha em obter a informação da fonte: %s\n" -#: ../src/utils/pactl.c:306 -#, fuzzy, c-format +#: ../src/utils/pactl.c:313 +#, c-format msgid "" "Source #%u\n" "\tState: %s\n" @@ -1850,34 +1799,39 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Fonte #%u ***\n" -"Nome: %s\n" -"Driver: %s\n" -"Especificação de amostragem: %s\n" -"Mapa do canal: %s\n" -"Proprietário do módulo: %u\n" -"Volume: %s\n" -"Monitor do destino: %s\n" -"Latência: %0.0f us, configurado %0.0f us:\n" -"Flags: %s%s%s%s%s%s\n" -"Propriedades:\n" -"%s" +"Fonte #%u\n" +"\tEstado: %s\n" +"\tNome: %s\n" +"\tDescrição: %s\n" +"\tDriver: %s\n" +"\tEspecificação da amostragem: %s\n" +"\tMapa dos canais: %s\n" +"\tMódulo proprietário: %u\n" +"\tMudo: %s\n" +"\tVolume: %s%s%s\n" +"\t balanço %0.2f\n" +"\tVolume base: %s%s%s\n" +"\tMonitor do destino: %s\n" +"\tLatência: %0.0f usec, %0.0f usec configurado\n" +"\tSinalizadores: %s%s%s%s%s%s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "Falha em obter a informação do módulo: %s\n" -#: ../src/utils/pactl.c:386 -#, fuzzy, c-format +#: ../src/utils/pactl.c:393 +#, c-format msgid "" "Module #%u\n" "\tName: %s\n" @@ -1886,19 +1840,20 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Módulo #%u ***\n" -"Nome: %s\n" -"Argumento: %s\n" -"Contador de uso: %s\n" -"Auto descarregar: %s\n" +"Módulo #%u\n" +"\tNome: %s\n" +"\tArgumento: %s\n" +"\tContador de uso: %s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "Falhou ao obter a informação do cliente: %s\n" -#: ../src/utils/pactl.c:423 -#, fuzzy, c-format +#: ../src/utils/pactl.c:430 +#, c-format msgid "" "Client #%u\n" "\tDriver: %s\n" @@ -1906,19 +1861,19 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Cliente #%u ***\n" -"Driver: %s\n" -"Poprietário do módulo: %s\n" -"Propriedades:\n" -"%s" +"Cliente #%u\n" +"\tDriver: %s\n" +"\tMódulo proprietário: %s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, fuzzy, c-format -msgid "Failed to get card information: %s\n" -msgstr "Falha em obter a informação do autoload: %s\n" +msgid "Failed to get card information: %s" +msgstr "Falha ao obter as informações da placa: %s\n" -#: ../src/utils/pactl.c:458 -#, fuzzy, c-format +#: ../src/utils/pactl.c:465 +#, c-format msgid "" "Card #%u\n" "\tName: %s\n" @@ -1927,29 +1882,30 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Cliente #%u ***\n" -"Driver: %s\n" -"Poprietário do módulo: %s\n" -"Propriedades:\n" -"%s" +"Placa #%u\n" +"\tNome: %s\n" +"\tDriver: %s\n" +"\tMódulo proprietário: %s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" -msgstr "" +msgstr "\tPerfis:\n" -#: ../src/utils/pactl.c:478 -#, fuzzy, c-format -msgid "\tActive Profile: %s\n" -msgstr "O pipe falhou: %s" - -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:485 #, c-format -msgid "Failed to get sink input information: %s\n" +msgid "\tActive Profile: %s\n" +msgstr "\tPerfil ativo: %s\n" + +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "Falha na obtenção da informação de entrada do destino: %s\n" -#: ../src/utils/pactl.c:508 -#, fuzzy, c-format +#: ../src/utils/pactl.c:515 +#, c-format msgid "" "Sink Input #%u\n" "\tDriver: %s\n" @@ -1968,27 +1924,30 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Entrada do destino #%u ***\n" -"Driver: %s\n" -"Proprietário do módulo: %s\n" -"Cliente: %s\n" -"Destino: %u\n" -"Especificação da amostragem: %s\n" -"Mapa de canais: %s\n" -"Volume: %s\n" -"Latência do buffer: %0.0f us\n" -"Latência do destino %0.0f usec\n" -"Método de reamostragem (resample): %s\n" -"Propriedades:\n" -"%s" +"Entrada do destino #%u\n" +"\tDriver: %s\n" +"\tMódulo proprietário: %s\n" +"\tCliente: %s\n" +"\tDestino: %u\n" +"\tEspecificação da amostragem: %s\n" +"\tMapa dos canais: %s\n" +"\tMudo: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balanço %0.2f\n" +"\tLatência do buffer: %0.0f usec\n" +"\tLatência do destino: %0.0f usec\n" +"\tMétodo de reamostragem: %s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" msgstr "Falha em obter informações sobre a saída da fonte: %s\n" -#: ../src/utils/pactl.c:567 -#, fuzzy, c-format +#: ../src/utils/pactl.c:574 +#, c-format msgid "" "Source Output #%u\n" "\tDriver: %s\n" @@ -2003,26 +1962,26 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Saída da Fonte #%u ***\n" -"Driver: %s\n" -"Proprietário do Módulo: %s\n" -"Cliente: %s\n" -"Fonte: %u\n" -"Especificação de Amostragem: %s\n" -"Mapa do Canal: %s\n" -"Latência do Buffer: %0.0f usec\n" -"Latência da Fonte: %0.0f usec\n" -"Método de Reamostragem (resample): %s\n" -"Propriedades:\n" -"%s" +"Saída da fonte #%u\n" +"\tDriver: %s\n" +"\tMódulo proprietário: %s\n" +"\tCliente: %s\n" +"\tFonte: %u\n" +"\tEspecificação da amostragem: %s\n" +"\tMapa dos canais: %s\n" +"\tLatência do buffer: %0.0f usec\n" +"\tLatência da fonte: %0.0f usec\n" +"\tMétodo de reamostragem: %s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "Falha em obter informações sobre a amostragem: %s\n" -#: ../src/utils/pactl.c:616 -#, fuzzy, c-format +#: ../src/utils/pactl.c:623 +#, c-format msgid "" "Sample #%u\n" "\tName: %s\n" @@ -2038,33 +1997,41 @@ msgid "" "\tProperties:\n" "\t\t%s\n" msgstr "" -"*** Amostragem #%u ***\n" -"Nome: %s\n" -"Volume: %s\n" -"Especificação da Amostragem: %s\n" -"Mapa de Canais: %s\n" -"Duração: %0.1fs\n" -"Tamanho: %s\n" -"Lazy: %s\n" -"Nome do Arquivo: %s\n" -"Propriedades:\n" -"%s" +"Amostra #%u\n" +"\tNome: %s\n" +"\tEspecificação da amostragem: %s\n" +"\tMapa dos canais: %s\n" +"\tVolume: %s\n" +"\t %s\n" +"\t balanço %0.2f\n" +"\tDuração: %0.1fs\n" +"\tTamanho: %s\n" +"\tLazy: %s\n" +"\tNome do arquivo: %s\n" +"\tPropriedades:\n" +"\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Falha: %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "Falha em carregar a amostra: %s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "Fim prematuro do arquivo\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "Recebido o SIGINT, saindo.\n" + +#: ../src/utils/pactl.c:869 #, fuzzy, c-format msgid "" "%s [options] stat\n" @@ -2073,15 +2040,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2091,18 +2064,21 @@ msgid "" " -n, --client-name=NAME How to call this client on the " "server\n" msgstr "" -"%s [options] stat\n" -"%s [options] list\n" -"%s [options] exit\n" -"%s [options] upload-sample FILENAME [NAME]\n" -"%s [options] play-sample NAME [SINK]\n" -"%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" -"%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" +"%s [opções] stat\n" +"%s [opções] list\n" +"%s [opções] exit\n" +"%s [opções] upload-sample NOME_DO_ARQUIVO [NOME]\n" +"%s [opções] play-sample NOME [DESTINO]\n" +"%s [opções] remove-sample NOME\n" +"%s [opções] move-sink-input ID DESTINO\n" +"%s [opções] move-source-output ID FONTE\n" +"%s [opções] load-module NOME [ARGS ...]\n" +"%s [opções] unload-module ID\n" +"%s [opções] suspend-sink [DESTINO] 1|0\n" +"%s [opções] suspend-source [FONTE] 1|0\n" +"%s [opções] set-card-profile [PLACA] [PERFIL] \n" +"%s [opções] set-sink-port [DESTINO] [PORTA] \n" +"%s [opções] set-source-port [FONTE] [PORTA] \n" "\n" " -h, --help Mostra essa ajuda\n" " --version Mostra a versão\n" @@ -2111,7 +2087,7 @@ msgstr "" " -n, --client-name=NAME Como chamar este cliente no " "servidor \n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2122,89 +2098,136 @@ msgstr "" "Compilado com libpulse %s\n" "Linkado com libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "Por favor, especifique o arquivo de amostra a ser carregado\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "Falha em abrir o arquivo de som.\n" -#: ../src/utils/pactl.c:951 +#: ../src/utils/pactl.c:1004 #, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Abrindo um %s fluxo com a especificação de amostragem '%s'.\n" +msgid "Warning: Failed to determine sample specification from file." +msgstr "" +"Aviso: falha ao determinar a especificação da amostragem a partir do " +"arquivo.\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "Você deve especificar um nome da amostra para ser executada\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "Você deve especificar um nome da amostra para ser removida\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "" -"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" +msgstr "Você tem que especificar a entrada para o destino e um destino\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" msgstr "Você tem que especificar um índice de saída da fonte e uma fonte\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "Você deve especificar um nome do módulo e seus argumentos\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "Você deve especificar um índice de um módulo\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 #, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"Você não pode especificar mais de um destino. Pelo menos um valor booleano " -"deve ser especificado.\n" +"Você não pode especificar mais de um destino. Você tem que especificar um " +"valor booleano.\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 #, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"Você não pode especificar mais de uma fonte. Pelo menos um valor booleano " -"deve ser especificado.\n" +"Você não pode especificar mais de uma fonte. Você tem que especificar um " +"valor booleano.\n" -#: ../src/utils/pactl.c:1062 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a card name/index and a profile name\n" -msgstr "" -"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n" +msgid "You have to specify a card name/index and a profile name" +msgstr "Você tem que especificar um nome/índice da placa e um nome de perfil\n" -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "" -"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n" +msgid "You have to specify a sink name/index and a port name" +msgstr "Você tem que especificar um nome/índice do destino e o nome da porta\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1137 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "" -"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n" +msgid "You have to specify a source name/index and a port name" +msgstr "Você tem que especificar um nome/índice da fonte e o nome da porta\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "Você tem que especificar um nome/índice do destino e o nome da porta\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Especificação de amostragem inválida" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "Você tem que especificar um nome/índice da fonte e o nome da porta\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "Você tem que especificar a entrada para o destino e um destino\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Você tem que especificar um nome/índice do destino e o nome da porta\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Você tem que especificar um nome/índice da fonte e o nome da porta\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Você tem que especificar a entrada para o destino e um destino\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Especificação de amostragem inválida" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "Nenhum comando válido especificado.\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_new() falhou: %s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2285,48 +2308,50 @@ msgstr "Falha em carregar os dados do cookie\n" msgid "Not yet implemented.\n" msgstr "Ainda não implementado.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"Nenhum daemon do PulseAudio em execução ou não está em execução como daemon " +"de sessão." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 -msgid "Failed to kill PulseAudio daemon." -msgstr "Falha em cancelar o daemon do PulseAudio." - #: ../src/utils/pacmd.c:99 +msgid "Failed to kill PulseAudio daemon." +msgstr "Falha ao matar o daemon do PulseAudio." + +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." -msgstr "Daemon não responde." +msgstr "O daemon não responde." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Não foi possível acessar a trava de autogeração." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2336,8 +2361,14 @@ msgid "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"O ALSA nos acordou para gravar novos dados no dispositivo, mas não há nada a " +"ser gravado!\n" +"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, " +"relate esse problema para os desenvolvedores do ALSA.\n" +"Nós fomos acordados com o conjunto POLLOUT -- entretanto, a snd_pcm_avail() " +"subseqüente retornou 0 ou outro valor < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2347,23 +2378,155 @@ msgid "" "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"O ALSA nos acordou para ler novos dados no dispositivo, mas não há nada a " +"ser lido!\n" +"É mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, " +"relate esse problema para os desenvolvedores do ALSA.\n" +"Nós fomos acordados com o conjunto POLLIN -- entretanto, a snd_pcm_avail() " +"subseqüente retornou 0 ou outro valor < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" -msgstr "" +msgstr "Desligado" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" -msgstr "" +msgstr "Reprodução de alta fidelidade (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +#, fuzzy +msgid "High Fidelity Capture (A2DP)" +msgstr "Reprodução de alta fidelidade (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" -msgstr "" +msgstr "Duplex telefônico (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" -msgstr "" +msgstr "Servidor de som PulseAudio" + +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "Nome do cliente \"%s\" inválido\n" + +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "" +#~ "Falha ao determinar a especificação de amostragem a partir do arquivo.\n" + +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "Não foi possível conectar com o barramento do sistema: %s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "Não foi possível obter quem chamou pelo PID: %s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "Não foi possível definir o UID sobre o objeto que chamou." + +#~ msgid "Failed to get CK session." +#~ msgstr "Falha em obter a sessão CK." + +#~ msgid "Cannot set UID on session object." +#~ msgstr "Não foi possível definir o UID do objeto da sessão." + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "Não foi possível alocar o PolKitAction." + +#~ msgid "Cannot set action_id" +#~ msgstr "Não foi possível definir a action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "Não foi possível alocar o PolKitContext." + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "Não foi possível iniciar o PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "Não foi possível determinar se o solicitante está autorizado: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "Não foi possível obter auth: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit respondeu com '%s'" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "" +#~ "Escalonamento de alta prioridade (nível de nice Unix negativo) para o " +#~ "daemon do PulseAudio" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "Escalonamento em tempo real para o daemon do PulseAudio" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "" +#~ "Uma política do sistema impede que o PulseAudio adquira escalonamento de " +#~ "alta prioridade." + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "" +#~ "Uma política do sistema impede que o PulseAudio adquira o escalonamento " +#~ "em tempo real." + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() falhou: %s\n" + +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect() falhou: %s\n" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade." + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real." + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "" +#~ "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade." + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade." + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real." + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real." + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "" +#~ "O escalonamento de alta prioridade foi habilitado para esta configuração, " +#~ "mas não é permitida pela política." + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "RLIMIT_RTPRIO aumentado com sucesso" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO falhou: %s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "Abandonando CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "" +#~ "O escalonamento de tempo real foi habilitado pela configuração, mas não é " +#~ "permitido pela política." + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "As capacidades foram limitadas com sucesso para CAP_SYS_NICE." + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() falhou.\n" #~ msgid "Stream successfully created\n" #~ msgstr "Fluxo criado com sucesso\n" diff --git a/po/sr.po b/po/sr.po index b8c861fe7..37a23dc84 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,25 +1,29 @@ # Serbian translations for pulseaudio # Copyright (C) 2006 Lennart Poettering # This file is distributed under the same license as the pulseaudio package. -# # Igor Miletic (Игор Милетић) , 2009. # Miloš Komarčević , 2009. +# msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-07 23:02+0100\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-09 21:33+0100\n" "Last-Translator: Miloš Komarčević \n" -"Language-Team: Serbian \n" +"Language-Team: Serbian (sr) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Lokalize 0.3\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -32,7 +36,7 @@ msgstr "" "Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите " "овај проблем ALSA програмерима." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -45,7 +49,7 @@ msgstr "" "Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите " "овај проблем ALSA програмерима." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -58,9 +62,17 @@ msgstr "" "Ово је највероватније грешка у „%s“ ALSA управљачком програму. Пријавите " "овај проблем ALSA програмерима." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Виртуелни LADSPA сливник" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -70,12 +82,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name=<име сливника> sink_properties=<својства сливника> master=<име " +"сливника за филтрирање> format=<формат узорка> rate=<учестаност " +"дискретизације> channels=<број канала> channel_map=<мапа канала> plugin=<име " +"ladspa додатка> label=<ознака ladspa додатка> control=<списак улазних " +"контролних вредности раздвојених зарезом>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Унутрашњи звук" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Модем" @@ -91,222 +116,92 @@ msgstr "Неуспешно смештање новог dl учитавача." msgid "Failed to add bind-now-loader." msgstr "Неуспешно додавање „повежи одмах“ учитавача." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Није се могуће прикључити на системску магистралу: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Не могу добавити позивника из PID-а: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Не могу поставити UID за позивнички објекат." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Неуспешно добављање CK сесије." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Не могу поставити UID за објекат сесије." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Не могу поставити PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Не могу поставити action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Не могу поставити PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Не могу иницијализовати PolKitContex: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Није могуће одредити овлашћење позивника: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Не могу добити овлашћење: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit је одговорио са „%s“" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Добих сигнал %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Напуштам." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Не могу наћи корисника „%s“." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Не могу наћи групу „%s“." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Нађени су корисник „%s“ (UID %lu) и група „%s“ (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID корисника „%s“ се не поклапа са групом „%s“." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Лични директоријум корисника „%s“ није „%s“, занемарујем." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Неуспешно прављење „%s“: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Неуспешна промена групног списка: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Неуспешна промена GID-а: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Неуспешна промена UID-а: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Успешно одбачена root овлашћења." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Режим за читав систем није подржан на овој платформи." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) није успело: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Неуспешно тумачење командне линије." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Налазимо се у групи „%s“ која дозвољава високоприоритетно распоређивање." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Налазимо се у групи „%s“ која дозвољава стварновременско распоређивање." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit нам је дао овлашћење за добијање високог приоритета." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit одбија овлашћење за добијање високог приоритета." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit нам је дао овлашћење за добијање рада у стварном времену." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit одбија овлашћење за добијање рада у стварном времену." - -# -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID root и стварновременско и/или високоприоритетно распоређивање је " -"захтевано у подешавањима. Међутим, немамо потребна овлашћења:\n" -"нисмо у групи „%s“, PolicyKit одбија да нам да̑ тражена овлашћења и немамо " -"средстава за повећање RLIMIT_NICE/RLIMIT_RTPRIO ограничења.\n" -"Морате добити одговарајућа PolicyKit овлашћења, или постати члан групе „%s“, " -"или повећати ограничења за RLIMIT_NICE/RLIMIT_RTPRIO средства овог корисника " -"како би омогућили стварновременско или високоприоритетно распоређивање." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Високоприоритетно распоређивање је омогућено у подешавањима, али политика то " -"не дозвољава." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Успешно повећано RLIMIT_RTPRIO ограничење" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "Неуспешно постављање RLIMIT_RTPRIO-а:%s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Одустајем од CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Стварновременско распоређивање је омогућено у подешавањима, али политика то " -"не дозвољава." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Демон није покренут" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Демон је покренут са PID-ом %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Неуспешно убијање демона: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -314,153 +209,158 @@ msgstr "" "Није намеравано да се овај програм покреће из root налога (осим у случају " "када је --system наведено)" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Потребна су root овлашћења." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start није подржано за системске примерке." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "Покренуто у системском режиму, али --disallow-exit није постављено!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Покренуто у системском режиму, али --disallow-module-loading није постављено!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Покренуто у системском режиму, присилно онемогућујем SHM режим!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Покренуто у системском режиму, присилно онемогућујем гашење после одређеног " "времена мировања!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Неуспешно проналажење стандардног улаза/излаза." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "Неуспешно пуштање података кроз цев: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "Неуспела функција fork(): %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "Неуспела функција read(): %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Неуспешно покретање демона." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Демон успешно покренут." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Ово је PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Домаћин компајлирања: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS компајлирања: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Покренут на домаћину: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Нашао %u процесор(а)" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Величина странице је %lu бајтова" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Компајлирано са подршком за Valgrind: да" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Компајлирано са подршком за Valgrind: не" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Покренут у Valgrind режиму: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Оптимизована изградња: да" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Оптимизована изградња: не" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG дефинисан, сва обавештења искључена." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH дефинисан, само обавештења брзе путање искључена." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Сва обавештења омогућена." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Неуспешно добављање ИБ машине" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "ИБ машине је %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "ИБ машине је %s." +msgstr "ИБ сесије је %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Користи се %s извршни директоријум." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Користи се %s директоријум стања." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Користи се %s директоријум модула." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Покренуто у системском режиму: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -469,16 +369,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"У реду, значи извршавате PA у системском режиму. Примите к знању да то " +"вероватно не би требало да радите.\n" +"Ако то свеједно чините онда је ваша кривица ако ствари не раде онако како се " +"очекује.\n" +"Прочитајте http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode ради " +"објашњења зашто је системски режим обично лоша идеја." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "Неуспела функција pa_pid_file_create()." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Доступни су нови бројачи високе резолуције! Пријатно!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -486,27 +392,27 @@ msgstr "" "Ваше језгро није добро подешено за pulseaudio! Препоручује Вам се да " "користите Linux језгро са омогућеним бројачима високе резолуције." -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "Неуспела функција pa_core_new()." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Неуспешно покретање демона." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Демон је покренут без иједног учитаног модула, одбија да ради." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Покретање демона успешно." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Покренуто гашење демона." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Рад демона је прекинут." @@ -583,14 +489,14 @@ msgid "" "\n" " -n Don't load default script file\n" msgstr "" -"%s [options]\n" +"%s [опције]\n" "\n" "НАРЕДБЕ:\n" " -h, --help Прикажи ову помоћ\n" " --version Прикажи верзију\n" -" --dump-conf Излистај подразумевана подешавања\n" -" --dump-modules Излистај списак доступних модула\n" -" --dump-resample-methods Излистај доступне вредности " +" --dump-conf Испиши подразумевана подешавања\n" +" --dump-modules Испиши списак доступних модула\n" +" --dump-resample-methods Испиши доступне вредности " "дискретизације\n" " --cleanup-shm Очисти бајате делове дељене " "меморије\n" @@ -636,7 +542,7 @@ msgstr "" " --log-backtrace=FRAMES Укључи трагове у порукама дневника\n" " -p, --dl-search-path=ПУТАЊА Постави путању претраге за динамички " "дељене\n" -" објекте (додатци)\n" +" објекте (додаци)\n" " --resample-method=НАЧИН Користи наведени начин " "дискретизације\n" " (Погледај --dump-resample-methods " @@ -663,39 +569,39 @@ msgstr "" #: ../src/daemon/cmdline.c:247 msgid "--daemonize expects boolean argument" -msgstr "--daemonize очекује логичку вредност" +msgstr "--daemonize очекује логички аргумент" #: ../src/daemon/cmdline.c:254 msgid "--fail expects boolean argument" -msgstr "--fail очекује логичку вредност" +msgstr "--fail очекује логички аргумент" #: ../src/daemon/cmdline.c:264 msgid "" "--log-level expects log level argument (either numeric in range 0..4 or one " "of debug, info, notice, warn, error)." msgstr "" -"--log-level очекује параметар за ниво опширности (нумеричка вредност између " -"0 и 4 или једно од: debug, info, notice, warn, error)." +"--log-level очекује аргумент за ниво записа (или нумеричка вредност у опсегу " +"0..4 или једно од debug, info, notice, warn, error)." #: ../src/daemon/cmdline.c:276 msgid "--high-priority expects boolean argument" -msgstr "--high-priority очекује логичку вредност" +msgstr "--high-priority очекује логички аргумент" #: ../src/daemon/cmdline.c:283 msgid "--realtime expects boolean argument" -msgstr "--realtime очекује логичку вредност" +msgstr "--realtime очекује логички аргумент" #: ../src/daemon/cmdline.c:290 msgid "--disallow-module-loading expects boolean argument" -msgstr "--disallow-module-loading очекује логичку вредност" +msgstr "--disallow-module-loading очекује логички аргумент" #: ../src/daemon/cmdline.c:297 msgid "--disallow-exit expects boolean argument" -msgstr "--disallow-exit очекује логичку вредност" +msgstr "--disallow-exit очекује логички аргумент" #: ../src/daemon/cmdline.c:304 msgid "--use-pid-file expects boolean argument" -msgstr "--use-pid-file очекује логичку вредност" +msgstr "--use-pid-file очекује логички аргумент" #: ../src/daemon/cmdline.c:321 msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'." @@ -704,11 +610,11 @@ msgstr "" #: ../src/daemon/cmdline.c:328 msgid "--log-time expects boolean argument" -msgstr "--log-time очекује логичку вредност" +msgstr "--log-time очекује логички аргумент" #: ../src/daemon/cmdline.c:335 msgid "--log-meta expects boolean argument" -msgstr "--log-meta очекује логичку вредност" +msgstr "--log-meta очекује логички аргумент" #: ../src/daemon/cmdline.c:354 #, c-format @@ -717,15 +623,15 @@ msgstr "Неисправан начин дискретизације „%s“." #: ../src/daemon/cmdline.c:361 msgid "--system expects boolean argument" -msgstr "--system очекује логичку вредност" +msgstr "--system очекује логички аргумент" #: ../src/daemon/cmdline.c:368 msgid "--no-cpu-limit expects boolean argument" -msgstr "--no-cpu-limit очекује логичку вредност" +msgstr "--no-cpu-limit очекује логички аргумент" #: ../src/daemon/cmdline.c:375 msgid "--disable-shm expects boolean argument" -msgstr "--disable-shm очекује логичку вредност" +msgstr "--disable-shm очекује логички аргумент" #: ../src/daemon/dumpmodules.c:60 #, c-format @@ -765,79 +671,79 @@ msgstr "Учитај једном: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "УПОЗОРЕЊЕ О ПРЕВАЗИЛАЖЕЊУ: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Путања: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Неисправан циљни дневник „%s“." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Неисправан ниво опширности у дневнику „%s“." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Неисправан начин дискретизације „%s“." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Неисправан rlimit „%s“." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit није подржан на овој платформи." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Неисправан формат узорка „%s“." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Неисправна учестаност дискретизације „%s“." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Неисправни канали узорка „%s“." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Неисправна мапа канала „%s“." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Неисправан број одломака „%s“." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Неисправна величина одломка „%s“." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Неисправан ниво приоритета „%s“." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Неуспело отварање датотеке подешавања: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -845,18 +751,14 @@ msgstr "" "Наведена мапа канала има нема исти број канала као што је наведено у " "подразумеваном броју канала." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Прочитај из датотеке подешавања: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Одбацујем root повластице." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Успешно ограничио могућности на CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Чистим повластице." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -866,31 +768,7 @@ msgstr "PulseAudio звучни систем" msgid "Start the PulseAudio Sound System" msgstr "Покрени PulseAudio звучни систем" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Високоприоритетно распоређивање (негативни Unix нивои финоће, тј. nice " -"нивои) за PulseAudio демона" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Стварновременско распоређивање за PulseAudio демона" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Системска политика спречава PulseAudio-у да добије високоприоритетно " -"распоређивање." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Системска политика спречава PulseAudio-у да добије стварновременско " -"распоређивање." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Моно" @@ -1094,33 +972,33 @@ msgstr "Горњи позадински леви" msgid "Top Rear Right" msgstr "Горњи позадински десни" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(неисправно)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Стерео" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Окружујући 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Окружујући 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Окружујући 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Окружујући 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Окружујући 7.1" @@ -1138,7 +1016,7 @@ msgstr "Непозната наредба" #: ../src/pulse/error.c:46 msgid "Invalid argument" -msgstr "Неисправан параметар" +msgstr "Неисправан аргумент" #: ../src/pulse/error.c:47 msgid "Entity exists" @@ -1162,7 +1040,7 @@ msgstr "Време истекло" #: ../src/pulse/error.c:52 msgid "No authorization key" -msgstr "Нема кључа за ауторизацију" +msgstr "Нема кључа за овлашћење" #: ../src/pulse/error.c:53 msgid "Internal error" @@ -1210,7 +1088,7 @@ msgstr "Ко̑д грешке је непознат" #: ../src/pulse/error.c:64 msgid "No such extension" -msgstr "Не постоји таква екстензија" +msgstr "Не постоји такво проширење" #: ../src/pulse/error.c:65 msgid "Obsolete functionality" @@ -1220,32 +1098,39 @@ msgstr "Избачена функционалност" msgid "Missing implementation" msgstr "Није одрађено" -# Нисам сигуран да имамо реч за форк. Можда да користимо форкирање? Ружно звучи, али гранање није најбоље. -- Игор #: ../src/pulse/error.c:67 msgid "Client forked" -msgstr "Клијент израчван" +msgstr "Клијент је израчван" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1258,193 +1143,191 @@ msgstr "Неуспела функција XOpenDisplay()" msgid "Failed to parse cookie data" msgstr "Неуспешно тумачење података из колачића" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Неуспешно отварање датотеке подешавања „%s“: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Колачић није учитан. Покушавам се повезати без колачића." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Примио поруку за непознати локал „%s“" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Неуспешно исушивање тока: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Неуспешно исушивање тока: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Репродукциони ток исушен.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Репродукциони ток је исушен." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Веза до сервера се исушује.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Веза до сервера се исушује." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "Неуспела функција pa_stream_write(): %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "Неуспела функција pa_stream_write(): %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "Неуспела функција pa_stream_peek(): %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "Неуспела функција pa_stream_write(): %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Ток успешно направљен.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "Неуспешно pa_stream_get_buffer_attr(): %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "Неуспела функција pa_stream_peek(): %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Ток је успешно направљен." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Метрике бафера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "Неуспела функција pa_stream_get_buffer_attr(): %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Метрике бафера: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Мере бафера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Користим следеће параметре узорка „%s“ и мапу канала „%s“.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Мере бафера: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Прикључен на уређај %s (%u, %s обустављено).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Користим следеће параметре узорка „%s“ и мапу канала „%s“." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Грешка тока: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Прикључен на уређај %s (%u, %s обустављено)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Уређај тока обустављен.%s\n" +msgid "Stream error: %s" +msgstr "Грешка тока: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Уређај тока настављен.%s \n" +msgid "Stream device suspended.%s" +msgstr "Уређај тока обустављен.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Ток није попуњен. %s \n" +msgid "Stream device resumed.%s" +msgstr "Уређај тока настављен.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Ток се прелива.%s \n" +msgid "Stream underrun.%s" +msgstr "Ток није попуњен.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "Ток покренут. %s \n" +msgid "Stream overrun.%s" +msgstr "Ток се прелива.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Ток пребачен на уређај %s (%u, %s обустављено). %s \n" +msgid "Stream started.%s" +msgstr "Ток је покренут.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Ток пребачен на уређај %s (%u, %s обустављено).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "није" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Параметри бафера тока су промењени. %s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Параметри бафера тока су промењени.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Веза успостављена.%s \n" +msgid "Connection established.%s" +msgstr "Веза успостављена.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "Неуспела функција pa_stream_new() : %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "Неуспела функција pa_stream_new(): %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "Неуспела функција pa_stream_connect_playback(): %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "Неуспела функција pa_stream_connect_playback(): %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "Неуспела функција pa_stream_connect_record(): %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "Неуспела функција pa_stream_connect_record(): %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Неуспешно повезивање: %s\n" +msgid "Connection failure: %s" +msgstr "Неуспешно повезивање: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Дошао до краја датотеке.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Добих EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "Неуспела функција read(): %s\n" +msgid "write() failed: %s" +msgstr "Неуспела функција write(): %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Добих сигнал, излазим." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "Неуспела функција write(): %s\n" +msgid "Failed to get latency: %s" +msgstr "Не могу добити вредност кашњења: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Добио сигнал, излазим.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Немогу добити вредност кашњења: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "Време: %0.3f s. Кашњење: %0.0f μs. \r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "Неуспела функција pa_stream_update_timing_info(): %s\n" - -# Шта да радимо са downmix и upmix. Пресликај навише и пресликај наниже? -- Игор -#: ../src/utils/pacat.c:605 +#: ../src/utils/pacat.c:576 #, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Време: %0.3f s; Кашњење: %0.0f μs. \r" + +#: ../src/utils/pacat.c:595 +#, c-format +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "Неуспела функција pa_stream_update_timing_info(): %s" + +#: ../src/utils/pacat.c:605 +#, c-format msgid "" "%s [options]\n" "\n" @@ -1502,7 +1385,7 @@ msgid "" " --file-format=FFORMAT Record/play formatted PCM data.\n" " --list-file-formats List available file formats.\n" msgstr "" -"%s[опције]\n" +"%s [опције]\n" "\n" " -h, --help Прикажи ову помоћ\n" " --version Прикажи верзију\n" @@ -1512,40 +1395,50 @@ msgstr "" "\n" " -v, --verbose Омогући опширан опис радње\n" "\n" -" -s, --server=СЕРВЕР Назив сервера са којим ће се " -"повезати\n" -" -d, --device=УРЕЂАЈ Назив сливника/извора на који ће се " +" -s, --server=СЕРВЕР Име сервера на који се треба " "повезати\n" +" -d, --device=УРЕЂАЈ Назив сливника/извора на који се " +"треба повезати\n" " -n, --client-name=ИМЕ Како назвати овог клијента на " "серверу\n" " --stream-name=ИМЕ Како назвати овај ток на серверу\n" -" --volume=ГЛАСНОСТ Наведи почетну јачину звука између " -"0...65536 (линеарна скала)\n" -" --rate=УЧЕСТАНОСТ Учестаност дискретизације у херцима " +" --volume=ЈАЧИНА Наведи почетну (линеарну) јачину " +"звука у опсегу 0...65536\n" +" --rate=УЧЕСТАНОСТ Учестаност дискретизације у Hz " "(подразумевана 44100)\n" -" --format=ФОРМАТУЗОРКА Формат узорка, једно од s16le, s16be, " +" --format=ФОРМАТУЗОРКА Врста узорка, једна од s16le, s16be, " "u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(подразумевано s16ne)\n" -" --channels=БРОЈКАНАЛА Број канала, 1 за моно, 2 за стерео\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (подразумевано " +"s16ne)\n" +" --channels=КАНАЛИ Број канала, 1 за моно, 2 за стерео\n" " (подразумевано 2)\n" " --channel-map=МАПАКАНАЛА Мапу канала коју треба користити " "уместо подразумеване\n" -" --fix-format Преузми формат узорка из сливника\n" -" на који је ток прикључен.\n" +" --fix-format Преузми формат узорка из сливника на " +"који се ток\n" +" прикључује.\n" " --fix-rate Преузми учестаност дискретизације из " -"одлива \n" -" на који је ток прикључен.\n" +"одлива на који\n" +" се ток прикључује.\n" " --fix-channels Преузми број и мапу канала из " -"сливника на\n" -" који је ток прикључен.\n" -" --no-remix Без сажимања или раширивања броја " -"канала.\n" -" --no-remap Назначи канале по индексу уместо по " +"сливника на који се\n" +" ток прикључује.\n" +" --no-remix Без стапања или раздвајања канала.\n" +" --no-remap Мапирај канале по индексу уместо по " "називу.\n" " --latency=БАЈТОВА Тражи наведено кашњење у бајтовима.\n" " --process-time=БАЈТОВА Тражи наведено време процеса по " "захтеву у бајтовима.\n" +" --property=СВОЈСТВО=ВРЕДНОСТ Постави наведено својство на " +"наведену вредност.\n" +" --raw Снимај/репродукуј сирове PCM " +"податке.\n" +" --file-format=ФОРМАТ Снимај/репродукуј форматиране PCM " +"податке.\n" +" --list-file-formats Испиши све доступне формате " +"података.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1558,136 +1451,129 @@ msgstr "" "Компајлирано са libpulse %s\n" "Повезано са libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Неисправна мапа канала „%s“\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Неисправан начин дискретизације „%s“." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Неисправна мапа канала „%s“\n" +msgid "Invalid client name '%s'" +msgstr "Неисправно име клијента „%s“" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Неисправан параметар кашњења „%s“\n" +msgid "Invalid stream name '%s'" +msgstr "Неисправно име тока „%s“" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Неисправан параметар за време процеса „%s“\n" +msgid "Invalid channel map '%s'" +msgstr "Неисправна мапа канала „%s“" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Неисправан начин дискретизације „%s“." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Неисправан параметар кашњења „%s“" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Неисправан параметар за време процеса „%s“" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Неисправно својство „%s“" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Непознат %s формат датотеке." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Неисправни параметри узорка\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Неисправан параметар узорка" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Превише параметара.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Превише аргумената." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Није успело добављање података о узорку: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Није успело прављење параметара узорка за датотеку." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Није успело отварање звучне датотеке.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Није успело отварање звучне датотеке." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Упозорење: наведени параметри узорка ће бити пребрисани параметрима из " +"датотеке." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Није успело добављање података о узорку: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Неуспешно утврђивање параметара узорка из датотеке." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Упозорење: Неуспешно утврђивање мапе канала из датотеке." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Мапа канала се не поклапа са параметрима узорка\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Мапа канала се не поклапа са параметрима узорка" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Упозорење: Неуспешно записивање мапе канала у датотеку." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "Отварам ток %s са параметрима узорка „%s“ и мапом канала „%s“." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Отварам ток %s са следећим параметрима узорка „%s“.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "снима" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "пушта" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "Неуспела функција pa_mainloop_new()." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "Неуспела функција io_new()." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "Неуспела функција pa_context_new()." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "Неуспела функција pa_mainloop_new().\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "Неуспела функција io_new() \n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "Неуспела функција pa_context_new().\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "Неуспела функција pa_context_connect(): %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "Неуспела функција time_new() \n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "Неуспела функција pa_context_new()." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "Неуспела функција pa_mainloop_run().\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "Неуспела функција pa_mainloop_run()." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1714,7 +1600,12 @@ msgstr "Неуспешно настављање: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "УПОЗОРЕЊЕ: Звучни сервер није локални, не заустављам.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Неуспешно повезивање: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Добих SIGINT, излазим.\n" @@ -1739,7 +1630,8 @@ msgstr "" "\n" " -h, --help Прикажи ову помоћ\n" " --version Прикажи верзију\n" -" -s, --server=СЕРВЕР Име сервера са којим се повезује\n" +" -s, --server=СЕРВЕР Име сервера на који се треба " +"повезати\n" "\n" #: ../src/utils/pasuspender.c:248 @@ -1753,32 +1645,47 @@ msgstr "" "Компајлирано са libpulse %s\n" "Повезано са libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Неуспешно добављање статистике: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "Неуспела функција pa_mainloop_new().\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "Неуспела функција pa_context_new().\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "Неуспела функција pa_mainloop_run().\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Неуспешно добављање статистике: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Тренутно у употреби: %u блокова садржи укупно %s бајтова.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Смештено од покретања: %u блокова садржи укупно %s бајтова.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Величина кеш меморије узорка: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Неуспешно добијање података о серверу: %s\n" +msgid "Failed to get server information: %s" +msgstr "Неуспешно добављање података о серверу: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1801,12 +1708,12 @@ msgstr "" "Подразумевани извор: %s\n" "Колачић: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Неуспешно добијање података о сливнику: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Неуспешно добављање података о сливнику: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1845,22 +1752,22 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tПрофили:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tАктивни профил: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Није успело добављање података о извору: %s\n" +msgid "\tPorts:\n" +msgstr "\tПортови:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tАктивни порт: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Неуспешно добављање података о извору: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1899,20 +1806,20 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "непознато" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Неуспешно добијање података о модулу: %s\n" +msgid "Failed to get module information: %s" +msgstr "Неуспешно добављање података о модулу: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1924,17 +1831,17 @@ msgid "" msgstr "" "Модул #%u\n" "\tИме: %s\n" -"\tПараметар: %s\n" +"\tАргумент: %s\n" "\tБројач коришћења: %s\n" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Неуспешно добијање података о клијенту: %s\n" +msgid "Failed to get client information: %s" +msgstr "Неуспешно добављање података о клијенту: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1949,12 +1856,12 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Неуспешно добијање података о картици: %s\n" +msgid "Failed to get card information: %s" +msgstr "Неуспешно добављање података о картици: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1971,22 +1878,22 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tПрофили:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tАктивни профил: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Није успело добијање података о улазу сливника: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Неуспешно добављање података о улазу сливника: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2023,12 +1930,12 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "Није успело добијање података о излазу извора: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Неуспешно добављање података о излазу извора: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2057,12 +1964,12 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Није успело добављање података о узорку: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Неуспешно добављање података о узорку: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2093,22 +2000,26 @@ msgstr "" "\tСвојства:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Неуспех: %s\n" +msgid "Failure: %s" +msgstr "Неуспех: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Није успело учитавање узорка: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Није успело постављање узорка: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Прерани крај датотеке\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Прерани крај датотеке" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Добих SIGINT, излазим." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2116,15 +2027,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2140,23 +2057,31 @@ msgstr "" "%s [опције] upload-sample ИМЕДАТОТЕКЕ [ИМЕ]\n" "%s [опције] play-sample ИМЕ [СЛИВНИК]\n" "%s [опције] remove-sample ИМЕ\n" -"%s [опције] move-sink-input ИБ СЛИВНИКА\n" -"%s [опције] move-source-output ИБ ИЗВОРА\n" -"%s [опције] load-module ИМЕ [ПАРАМ. ...]\n" -"%s [опције] unload-module ИБ\n" -"%s [опције] suspend-sink [СЛИВНИК] 1|0\n" -"%s [опције] suspend-source [ИЗВОР] 1|0\n" -"%s [опције] set-card-profile [КАРТИЦА] [ПРОФИЛ] \n" +"%s [опције] move-sink-input УЛАЗСЛИВНИКА СЛИВНИК\n" +"%s [опције] move-source-output ИЗЛАЗИЗВОРА ИЗВОР\n" +"%s [опције] load-module ИМЕ [АРГ ...]\n" +"%s [опције] unload-module МОДУЛ\n" +"%s [опције] suspend-sink СЛИВНИК 1|0\n" +"%s [опције] suspend-source ИЗВОР 1|0\n" +"%s [опције] set-card-profile КАРТИЦА ПРОФИЛ\n" +"%s [опције] set-sink-port СЛИВНИК ПОРТ\n" +"%s [опције] set-source-port ИЗВОР ПОРТ\n" +"%s [опције] set-sink-volume СЛИВНИК ЈАЧИНА\n" +"%s [опције] set-source-volume ИЗВОР ЈАЧИНА\n" +"%s [опције] set-sink-input-volume УЛАЗСЛИВНИКА ЈАЧИНА\n" +"%s [опције] set-sink-mute СЛИВНИК 1|0\n" +"%s [опције] set-source-mute ИЗВОР 1|0\n" +"%s [опције] set-sink-input-mute УЛАЗСЛИВНИКА 1|0\n" "\n" " -h, --help Прикажи ову помоћ\n" " --version Прикажи верзију\n" "\n" " -s, --server=СЕРВЕР Име сервера на који се треба " -"прикључити\n" +"повезати\n" " -n, --client-name=ИМЕ Како назвати овог клијента на " "серверу\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2167,77 +2092,108 @@ msgstr "" "Компајлирано са libpulse %s\n" "Повезано са libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Наведите датотеку узорка коју треба учитати\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Није успело отварање звучне датотеке.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Отварам ток %s са следећим параметрима узорка „%s“.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Морате навести име узорка којег желите пустити\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Морате навести име узорка којег желите уклонити\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Морате навести индекс улаза у сливнику и сливник\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Наведите датотеку узорка коју треба учитати" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Морате навести индекс излаза у извору и извор\n" +msgid "Failed to open sound file." +msgstr "Није успело отварање звучне датотеке." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Морате навести име и параметре модула.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "Упозорење: Неуспешно утврђивање параметара узорка из датотеке." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Морате навести индекс модула\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Морате навести име узорка којег желите репродуковати" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Морате навести име узорка којег желите уклонити" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Морате навести индекс улаза сливника и сливник" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Морате навести индекс излаза извора и извор" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Морате навести име и аргументе модула." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Морате навести индекс модула" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "Можете навести само један сливник. Морате навести логичку вредност.\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "" +"Не можете навести више од једног сливника. Морате навести логичку вредност." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "Можете навести само један извор. Морате навести логичку вредност.\n" +"value." +msgstr "" +"Не можете навести више од једног извора. Морате навести логичку вредност." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Морате навести име/индекс картице и име профила\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Морате навести име/индекс картице и име профила" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Морате навести име/индекс картице и име профила\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Морате навести име/индекс сливника и име порта" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Морате навести име/индекс картице и име профила\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Морате навести име/индекс извора и име порта" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "Ни једна исправна наредба није наведена.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Морате навести име/индекс сливника и јачину" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "Неуспела функција pa_context_connect(): %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Неисправан параметар јачине" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Морате навести име/индекс извора и јачину" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Морате навести индекс улаза сливника и јачину" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Неисправан индекс улаза сливника" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Морате навести име/индекс сливника и логичку вредност за искључивање" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Морате навести име/индекс извора и логичку вредност за искључивање" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "Морате навести индекс улаза сливника и логичку вредност за искључивање" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Неисправан параметар индекса улаза сливника" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Није наведена исправна наредба." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2320,49 +2276,49 @@ msgstr "Неуспешно учитавање датотека колачића\ msgid "Not yet implemented.\n" msgstr "Није још имплементирано.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"Нема покренутог PulseAudio демона, или се не извршава као демон сесије." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Није успело убијање PulseAudio демона." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Демон се не одазива." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -# Како превести autospawn (могућност прављења или покретања процеса из истог) -- Игор -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Није могуће приступити датотеци закључавања за самоумножавање." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2379,7 +2335,7 @@ msgstr "" "Пробуђени смо са постављеним POLLOUT-ом -- али следећи snd_pcm_avail() је " "вратио 0 или неку другу вредност мању од min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2397,128 +2353,22 @@ msgstr "" "вратио 0 или неку другу вредност мању од min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Искључено" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Репродукција високе тачности (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Снимање високе тачности (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Двострано телефонирање (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio звучни систем" - -#~ msgid "Analog Mono" -#~ msgstr "Аналогни моно" - -#~ msgid "Analog Stereo" -#~ msgstr "Аналогни стерео" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "Дигитални стерео (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "Дигитални стерео (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "Аналогни окружујући 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "Дигитални окружујући 4.0 (IEC958/AC3)" - -# Surround можемо превести амбијентални или окружни или можда чак и сараунд? -- Игор -#~ msgid "Analog Surround 4.1" -#~ msgstr "Аналогни окружујући 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "Аналогни окружујући 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "Аналогни окружујући 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "Дигитални окружујући 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "Аналогни окружујући 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "Излаз %s + улаз %s" - -#~ msgid "Output %s" -#~ msgstr "Излаз %s" - -#~ msgid "Input %s" -#~ msgstr "Улаз %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "Ток успешно направљен\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "Грешка тока: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "Веза установљена.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [опције] [ДАТОТЕКА]\n" -#~ "\n" -#~ " -h, --help Прикажи ову помоћ\n" -#~ " --version Прикажи верзију\n" -#~ "\n" -#~ " -v, --verbose Омогући опширни опис радњи\n" -#~ "\n" -#~ " -s, --server=СЕРВЕР Име сервера на који се повезује\n" -#~ " -d, --device=УРЕЂАЈ Име сливника на које се повезује\n" -#~ " -n, --client-name=ИМЕ Како назвати овог клијента на " -#~ "серверу\n" -#~ " --stream-name=ИМЕ Како назвати овај ток на серверу\n" -#~ " --volume=ГЛАСНОСТ Наведи почетну (линеарну) јачину " -#~ "звука из опсега 0...65536\n" -#~ " --channel-map=МАПАКАНАЛА Постави мапу канала која ће се " -#~ "користити\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "Компајлирано са libpulse %s\n" -#~ "Повезано са libpulse %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "Неисправна мапа канала\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "Неуспело отварање датотеке „%s“\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "Мапа канала се не поклапа са датотеком.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "Користе се следећи параметри узорка „%s“\n" diff --git a/po/sr@latin.po b/po/sr@latin.po index e5b0f7b14..d64f74938 100644 --- a/po/sr@latin.po +++ b/po/sr@latin.po @@ -1,25 +1,29 @@ # Serbian(Latin) translations for pulseaudio # Copyright (C) 2006 Lennart Poettering # This file is distributed under the same license as the pulseaudio package. -# # Igor Miletic (Igor Miletić) , 2009. # Miloš Komarčević , 2009. +# msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-07 23:02+0100\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-09 21:33+0100\n" "Last-Translator: Miloš Komarčević \n" -"Language-Team: Serbian \n" +"Language-Team: Serbian (sr) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Lokalize 0.3\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -32,7 +36,7 @@ msgstr "" "Ovo je najverovatnije greška u „%s“ ALSA upravljačkom programu. Prijavite " "ovaj problem ALSA programerima." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -45,7 +49,7 @@ msgstr "" "Ovo je najverovatnije greška u „%s“ ALSA upravljačkom programu. Prijavite " "ovaj problem ALSA programerima." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -58,9 +62,17 @@ msgstr "" "Ovo je najverovatnije greška u „%s“ ALSA upravljačkom programu. Prijavite " "ovaj problem ALSA programerima." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Virtuelni LADSPA slivnik" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -70,12 +82,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= master= format= rate= channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Unutrašnji zvuk" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Modem" @@ -91,223 +116,92 @@ msgstr "Neuspešno smeštanje novog dl učitavača." msgid "Failed to add bind-now-loader." msgstr "Neuspešno dodavanje „poveži odmah“ učitavača." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Nije se moguće priključiti na sistemsku magistralu: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Ne mogu dobaviti pozivnika iz PID-a: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Ne mogu postaviti UID za pozivnički objekat." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Neuspešno dobavljanje CK sesije." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Ne mogu postaviti UID za objekat sesije." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Ne mogu postaviti PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Ne mogu postaviti action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Ne mogu postaviti PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Ne mogu inicijalizovati PolKitContex: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Nije moguće odrediti ovlašćenje pozivnika: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Ne mogu dobiti ovlašćenje: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit je odgovorio sa „%s“" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Dobih signal %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Napuštam." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Ne mogu naći korisnika „%s“." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Ne mogu naći grupu „%s“." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Nađeni su korisnik „%s“ (UID %lu) i grupa „%s“ (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID korisnika „%s“ se ne poklapa sa grupom „%s“." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Lični direktorijum korisnika „%s“ nije „%s“, zanemarujem." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Neuspešno pravljenje „%s“: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Neuspešna promena grupnog spiska: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Neuspešna promena GID-a: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Neuspešna promena UID-a: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Uspešno odbačena root ovlašćenja." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Režim za čitav sistem nije podržan na ovoj platformi." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) nije uspelo: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Neuspešno tumačenje komandne linije." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Nalazimo se u grupi „%s“ koja dozvoljava visokoprioritetno raspoređivanje." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Nalazimo se u grupi „%s“ koja dozvoljava stvarnovremensko raspoređivanje." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit nam je dao ovlašćenje za dobijanje visokog prioriteta." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit odbija ovlašćenje za dobijanje visokog prioriteta." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit nam je dao ovlašćenje za dobijanje rada u stvarnom vremenu." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit odbija ovlašćenje za dobijanje rada u stvarnom vremenu." - -# -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID root i stvarnovremensko i/ili visokoprioritetno raspoređivanje je " -"zahtevano u podešavanjima. Međutim, nemamo potrebna ovlašćenja:\n" -"nismo u grupi „%s“, PolicyKit odbija da nam dȃ tražena ovlašćenja i nemamo " -"sredstava za povećanje RLIMIT_NICE/RLIMIT_RTPRIO ograničenja.\n" -"Morate dobiti odgovarajuća PolicyKit ovlašćenja, ili postati član grupe „%" -"s“, ili povećati ograničenja za RLIMIT_NICE/RLIMIT_RTPRIO sredstva ovog " -"korisnika kako bi omogućili stvarnovremensko ili visokoprioritetno " -"raspoređivanje." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Visokoprioritetno raspoređivanje je omogućeno u podešavanjima, ali politika " -"to ne dozvoljava." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Uspešno povećano RLIMIT_RTPRIO ograničenje" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "Neuspešno postavljanje RLIMIT_RTPRIO-a:%s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Odustajem od CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Stvarnovremensko raspoređivanje je omogućeno u podešavanjima, ali politika " -"to ne dozvoljava." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Demon nije pokrenut" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Demon je pokrenut sa PID-om %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Neuspešno ubijanje demona: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -315,154 +209,159 @@ msgstr "" "Nije nameravano da se ovaj program pokreće iz root naloga (osim u slučaju " "kada je --system navedeno)" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Potrebna su root ovlašćenja." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start nije podržano za sistemske primerke." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "Pokrenuto u sistemskom režimu, ali --disallow-exit nije postavljeno!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Pokrenuto u sistemskom režimu, ali --disallow-module-loading nije " "postavljeno!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Pokrenuto u sistemskom režimu, prisilno onemogućujem SHM režim!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Pokrenuto u sistemskom režimu, prisilno onemogućujem gašenje posle određenog " "vremena mirovanja!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Neuspešno pronalaženje standardnog ulaza/izlaza." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "Neuspešno puštanje podataka kroz cev: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "Neuspela funkcija fork(): %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "Neuspela funkcija read(): %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Neuspešno pokretanje demona." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Demon uspešno pokrenut." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Ovo je PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Domaćin kompajliranja: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS kompajliranja: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Pokrenut na domaćinu: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Našao %u procesor(a)" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Veličina stranice je %lu bajtova" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Kompajlirano sa podrškom za Valgrind: da" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Kompajlirano sa podrškom za Valgrind: ne" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Pokrenut u Valgrind režimu: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimizovana izgradnja: da" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Optimizovana izgradnja: ne" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG definisan, sva obaveštenja isključena." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH definisan, samo obaveštenja brze putanje isključena." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "Sva obaveštenja omogućena." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Neuspešno dobavljanje IB mašine" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "IB mašine je %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "IB mašine je %s." +msgstr "IB sesije je %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Koristi se %s izvršni direktorijum." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Koristi se %s direktorijum stanja." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Koristi se %s direktorijum modula." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Pokrenuto u sistemskom režimu: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -471,16 +370,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"U redu, znači izvršavate PA u sistemskom režimu. Primite k znanju da to " +"verovatno ne bi trebalo da radite.\n" +"Ako to svejedno činite onda je vaša krivica ako stvari ne rade onako kako se " +"očekuje.\n" +"Pročitajte http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode radi " +"objašnjenja zašto je sistemski režim obično loša ideja." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "Neuspela funkcija pa_pid_file_create()." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Dostupni su novi brojači visoke rezolucije! Prijatno!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -488,27 +393,27 @@ msgstr "" "Vaše jezgro nije dobro podešeno za pulseaudio! Preporučuje Vam se da " "koristite Linux jezgro sa omogućenim brojačima visoke rezolucije." -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "Neuspela funkcija pa_core_new()." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Neuspešno pokretanje demona." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "Demon je pokrenut bez ijednog učitanog modula, odbija da radi." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Pokretanje demona uspešno." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Pokrenuto gašenje demona." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Rad demona je prekinut." @@ -585,14 +490,14 @@ msgid "" "\n" " -n Don't load default script file\n" msgstr "" -"%s [options]\n" +"%s [opcije]\n" "\n" "NAREDBE:\n" " -h, --help Prikaži ovu pomoć\n" " --version Prikaži verziju\n" -" --dump-conf Izlistaj podrazumevana podešavanja\n" -" --dump-modules Izlistaj spisak dostupnih modula\n" -" --dump-resample-methods Izlistaj dostupne vrednosti " +" --dump-conf Ispiši podrazumevana podešavanja\n" +" --dump-modules Ispiši spisak dostupnih modula\n" +" --dump-resample-methods Ispiši dostupne vrednosti " "diskretizacije\n" " --cleanup-shm Očisti bajate delove deljene " "memorije\n" @@ -638,7 +543,7 @@ msgstr "" " --log-backtrace=FRAMES Uključi tragove u porukama dnevnika\n" " -p, --dl-search-path=PUTANJA Postavi putanju pretrage za " "dinamički deljene\n" -" objekte (dodatci)\n" +" objekte (dodaci)\n" " --resample-method=NAČIN Koristi navedeni način " "diskretizacije\n" " (Pogledaj --dump-resample-methods " @@ -665,39 +570,39 @@ msgstr "" #: ../src/daemon/cmdline.c:247 msgid "--daemonize expects boolean argument" -msgstr "--daemonize očekuje logičku vrednost" +msgstr "--daemonize očekuje logički argument" #: ../src/daemon/cmdline.c:254 msgid "--fail expects boolean argument" -msgstr "--fail očekuje logičku vrednost" +msgstr "--fail očekuje logički argument" #: ../src/daemon/cmdline.c:264 msgid "" "--log-level expects log level argument (either numeric in range 0..4 or one " "of debug, info, notice, warn, error)." msgstr "" -"--log-level očekuje parametar za nivo opširnosti (numerička vrednost između " -"0 i 4 ili jedno od: debug, info, notice, warn, error)." +"--log-level očekuje argument za nivo zapisa (ili numerička vrednost u opsegu " +"0..4 ili jedno od debug, info, notice, warn, error)." #: ../src/daemon/cmdline.c:276 msgid "--high-priority expects boolean argument" -msgstr "--high-priority očekuje logičku vrednost" +msgstr "--high-priority očekuje logički argument" #: ../src/daemon/cmdline.c:283 msgid "--realtime expects boolean argument" -msgstr "--realtime očekuje logičku vrednost" +msgstr "--realtime očekuje logički argument" #: ../src/daemon/cmdline.c:290 msgid "--disallow-module-loading expects boolean argument" -msgstr "--disallow-module-loading očekuje logičku vrednost" +msgstr "--disallow-module-loading očekuje logički argument" #: ../src/daemon/cmdline.c:297 msgid "--disallow-exit expects boolean argument" -msgstr "--disallow-exit očekuje logičku vrednost" +msgstr "--disallow-exit očekuje logički argument" #: ../src/daemon/cmdline.c:304 msgid "--use-pid-file expects boolean argument" -msgstr "--use-pid-file očekuje logičku vrednost" +msgstr "--use-pid-file očekuje logički argument" #: ../src/daemon/cmdline.c:321 msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'." @@ -706,11 +611,11 @@ msgstr "" #: ../src/daemon/cmdline.c:328 msgid "--log-time expects boolean argument" -msgstr "--log-time očekuje logičku vrednost" +msgstr "--log-time očekuje logički argument" #: ../src/daemon/cmdline.c:335 msgid "--log-meta expects boolean argument" -msgstr "--log-meta očekuje logičku vrednost" +msgstr "--log-meta očekuje logički argument" #: ../src/daemon/cmdline.c:354 #, c-format @@ -719,15 +624,15 @@ msgstr "Neispravan način diskretizacije „%s“." #: ../src/daemon/cmdline.c:361 msgid "--system expects boolean argument" -msgstr "--system očekuje logičku vrednost" +msgstr "--system očekuje logički argument" #: ../src/daemon/cmdline.c:368 msgid "--no-cpu-limit expects boolean argument" -msgstr "--no-cpu-limit očekuje logičku vrednost" +msgstr "--no-cpu-limit očekuje logički argument" #: ../src/daemon/cmdline.c:375 msgid "--disable-shm expects boolean argument" -msgstr "--disable-shm očekuje logičku vrednost" +msgstr "--disable-shm očekuje logički argument" #: ../src/daemon/dumpmodules.c:60 #, c-format @@ -767,79 +672,79 @@ msgstr "Učitaj jednom: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "UPOZORENJE O PREVAZILAŽENJU: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Putanja: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Neispravan nivo opširnosti u dnevniku „%s“." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Neispravan način diskretizacije „%s“." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Neispravan rlimit „%s“." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit nije podržan na ovoj platformi." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Neispravan format uzorka „%s“." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Neispravna učestanost diskretizacije „%s“." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Neispravni kanali uzorka „%s“." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Neispravna mapa kanala „%s“." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Neispravan broj odlomaka „%s“." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Neispravna veličina odlomka „%s“." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Neispravan nivo prioriteta „%s“." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Neuspelo otvaranje datoteke podešavanja: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -847,18 +752,14 @@ msgstr "" "Navedena mapa kanala ima nema isti broj kanala kao što je navedeno u " "podrazumevanom broju kanala." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Pročitaj iz datoteke podešavanja: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Odbacujem root povlastice." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Uspešno ograničio mogućnosti na CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Čistim povlastice." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -868,31 +769,7 @@ msgstr "PulseAudio zvučni sistem" msgid "Start the PulseAudio Sound System" msgstr "Pokreni PulseAudio zvučni sistem" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"Visokoprioritetno raspoređivanje (negativni Unix nivoi finoće, tj. nice " -"nivoi) za PulseAudio demona" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "Stvarnovremensko raspoređivanje za PulseAudio demona" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Sistemska politika sprečava PulseAudiu da dobije visokoprioritetno " -"raspoređivanje." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" -"Sistemska politika sprečava PulseAudiu da dobije stvarnovremensko " -"raspoređivanje." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -1096,33 +973,33 @@ msgstr "Gornji pozadinski levi" msgid "Top Rear Right" msgstr "Gornji pozadinski desni" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(neispravno)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Stereo" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Okružujući 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Okružujući 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Okružujući 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Okružujući 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Okružujući 7.1" @@ -1140,7 +1017,7 @@ msgstr "Nepoznata naredba" #: ../src/pulse/error.c:46 msgid "Invalid argument" -msgstr "Neispravan parametar" +msgstr "Neispravan argument" #: ../src/pulse/error.c:47 msgid "Entity exists" @@ -1164,7 +1041,7 @@ msgstr "Vreme isteklo" #: ../src/pulse/error.c:52 msgid "No authorization key" -msgstr "Nema ključa za autorizaciju" +msgstr "Nema ključa za ovlašćenje" #: ../src/pulse/error.c:53 msgid "Internal error" @@ -1212,7 +1089,7 @@ msgstr "Kȏd greške je nepoznat" #: ../src/pulse/error.c:64 msgid "No such extension" -msgstr "Ne postoji takva ekstenzija" +msgstr "Ne postoji takvo proširenje" #: ../src/pulse/error.c:65 msgid "Obsolete functionality" @@ -1222,32 +1099,39 @@ msgstr "Izbačena funkcionalnost" msgid "Missing implementation" msgstr "Nije odrađeno" -# Nisam siguran da imamo reč za fork. Možda da koristimo forkiranje? Ružno zvuči, ali grananje nije najbolje. -- Igor #: ../src/pulse/error.c:67 msgid "Client forked" -msgstr "Klijent izračvan" +msgstr "Klijent je izračvan" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1260,193 +1144,191 @@ msgstr "Neuspela funkcija XOpenDisplay()" msgid "Failed to parse cookie data" msgstr "Neuspešno tumačenje podataka iz kolačića" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Neuspešno otvaranje datoteke podešavanja „%s“: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "Kolačić nije učitan. Pokušavam se povezati bez kolačića." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Primio poruku za nepoznati lokal „%s“" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Neuspešno isušivanje toka: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Neuspešno isušivanje toka: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Reprodukcioni tok isušen.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Reprodukcioni tok je isušen." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Veza do servera se isušuje.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Veza do servera se isušuje." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "Neuspela funkcija pa_stream_write(): %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "Neuspela funkcija pa_stream_write(): %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "Neuspela funkcija pa_stream_peek(): %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "Neuspela funkcija pa_stream_write(): %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Tok uspešno napravljen.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "Neuspešno pa_stream_get_buffer_attr(): %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "Neuspela funkcija pa_stream_peek(): %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Tok je uspešno napravljen." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Metrike bafera: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "Neuspela funkcija pa_stream_get_buffer_attr(): %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Metrike bafera: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Mere bafera: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Koristim sledeće parametre uzorka „%s“ i mapu kanala „%s“.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Mere bafera: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "Priključen na uređaj %s (%u, %s obustavljeno).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Koristim sledeće parametre uzorka „%s“ i mapu kanala „%s“." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Greška toka: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "Priključen na uređaj %s (%u, %s obustavljeno)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Uređaj toka obustavljen.%s\n" +msgid "Stream error: %s" +msgstr "Greška toka: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Uređaj toka nastavljen.%s \n" +msgid "Stream device suspended.%s" +msgstr "Uređaj toka obustavljen.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Tok nije popunjen. %s \n" +msgid "Stream device resumed.%s" +msgstr "Uređaj toka nastavljen.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Tok se preliva.%s \n" +msgid "Stream underrun.%s" +msgstr "Tok nije popunjen.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "Tok pokrenut. %s \n" +msgid "Stream overrun.%s" +msgstr "Tok se preliva.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Tok prebačen na uređaj %s (%u, %s obustavljeno). %s \n" +msgid "Stream started.%s" +msgstr "Tok je pokrenut.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Tok prebačen na uređaj %s (%u, %s obustavljeno).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "nije" -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Parametri bafera toka su promenjeni. %s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "Parametri bafera toka su promenjeni.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "Veza uspostavljena.%s \n" +msgid "Connection established.%s" +msgstr "Veza uspostavljena.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "Neuspela funkcija pa_stream_new() : %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "Neuspela funkcija pa_stream_new(): %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "Neuspela funkcija pa_stream_connect_playback(): %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "Neuspela funkcija pa_stream_connect_playback(): %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "Neuspela funkcija pa_stream_connect_record(): %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "Neuspela funkcija pa_stream_connect_record(): %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "Neuspešno povezivanje: %s\n" +msgid "Connection failure: %s" +msgstr "Neuspešno povezivanje: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Došao do kraja datoteke.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Dobih EOF." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "Neuspela funkcija read(): %s\n" +msgid "write() failed: %s" +msgstr "Neuspela funkcija write(): %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Dobih signal, izlazim." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "Neuspela funkcija write(): %s\n" +msgid "Failed to get latency: %s" +msgstr "Ne mogu dobiti vrednost kašnjenja: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Dobio signal, izlazim.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Nemogu dobiti vrednost kašnjenja: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "Vreme: %0.3f s. Kašnjenje: %0.0f μs. \r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "Neuspela funkcija pa_stream_update_timing_info(): %s\n" - -# Šta da radimo sa downmix i upmix. Preslikaj naviše i preslikaj naniže? -- Igor -#: ../src/utils/pacat.c:605 +#: ../src/utils/pacat.c:576 #, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Vreme: %0.3f s; Kašnjenje: %0.0f μs. \r" + +#: ../src/utils/pacat.c:595 +#, c-format +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "Neuspela funkcija pa_stream_update_timing_info(): %s" + +#: ../src/utils/pacat.c:605 +#, c-format msgid "" "%s [options]\n" "\n" @@ -1504,7 +1386,7 @@ msgid "" " --file-format=FFORMAT Record/play formatted PCM data.\n" " --list-file-formats List available file formats.\n" msgstr "" -"%s[opcije]\n" +"%s [opcije]\n" "\n" " -h, --help Prikaži ovu pomoć\n" " --version Prikaži verziju\n" @@ -1514,41 +1396,52 @@ msgstr "" "\n" " -v, --verbose Omogući opširan opis radnje\n" "\n" -" -s, --server=SERVER Naziv servera sa kojim će se " -"povezati\n" -" -d, --device=UREĐAJ Naziv slivnika/izvora na koji će se " +" -s, --server=SERVER Ime servera na koji se treba " "povezati\n" +" -d, --device=UREĐAJ Naziv slivnika/izvora na koji se " +"treba povezati\n" " -n, --client-name=IME Kako nazvati ovog klijenta na " "serveru\n" " --stream-name=IME Kako nazvati ovaj tok na serveru\n" -" --volume=GLASNOST Navedi početnu jačinu zvuka između " -"0...65536 (linearna skala)\n" -" --rate=UČESTANOST Učestanost diskretizacije u hercima " +" --volume=JAČINA Navedi početnu (linearnu) jačinu " +"zvuka u opsegu 0...65536\n" +" --rate=UČESTANOST Učestanost diskretizacije u Hz " "(podrazumevana 44100)\n" -" --format=FORMATUZORKA Format uzorka, jedno od s16le, s16be, " +" --format=FORMATUZORKA Vrsta uzorka, jedna od s16le, s16be, " "u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(podrazumevano s16ne)\n" -" --channels=BROJKANALA Broj kanala, 1 za mono, 2 za stereo\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (podrazumevano " +"s16ne)\n" +" --channels=KANALI Broj kanala, 1 za mono, 2 za stereo\n" " (podrazumevano 2)\n" " --channel-map=MAPAKANALA Mapu kanala koju treba koristiti " "umesto podrazumevane\n" -" --fix-format Preuzmi format uzorka iz slivnika\n" -" na koji je tok priključen.\n" +" --fix-format Preuzmi format uzorka iz slivnika na " +"koji se tok\n" +" priključuje.\n" " --fix-rate Preuzmi učestanost diskretizacije iz " -"odliva \n" -" na koji je tok priključen.\n" +"odliva na koji\n" +" se tok priključuje.\n" " --fix-channels Preuzmi broj i mapu kanala iz " -"slivnika na\n" -" koji je tok priključen.\n" -" --no-remix Bez sažimanja ili raširivanja broja " +"slivnika na koji se\n" +" tok priključuje.\n" +" --no-remix Bez stapanja ili razdvajanja " "kanala.\n" -" --no-remap Naznači kanale po indeksu umesto po " +" --no-remap Mapiraj kanale po indeksu umesto po " "nazivu.\n" " --latency=BAJTOVA Traži navedeno kašnjenje u " "bajtovima.\n" " --process-time=BAJTOVA Traži navedeno vreme procesa po " "zahtevu u bajtovima.\n" +" --property=SVOJSTVO=VREDNOST Postavi navedeno svojstvo na " +"navedenu vrednost.\n" +" --raw Snimaj/reprodukuj sirove PCM " +"podatke.\n" +" --file-format=FORMAT Snimaj/reprodukuj formatirane PCM " +"podatke.\n" +" --list-file-formats Ispiši sve dostupne formate " +"podataka.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1561,136 +1454,129 @@ msgstr "" "Kompajlirano sa libpulse %s\n" "Povezano sa libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Neispravna mapa kanala „%s“\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Neispravan način diskretizacije „%s“." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Neispravna mapa kanala „%s“\n" +msgid "Invalid client name '%s'" +msgstr "Neispravno ime klijenta „%s“" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Neispravan parametar kašnjenja „%s“\n" +msgid "Invalid stream name '%s'" +msgstr "Neispravno ime toka „%s“" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Neispravan parametar za vreme procesa „%s“\n" +msgid "Invalid channel map '%s'" +msgstr "Neispravna mapa kanala „%s“" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Neispravan način diskretizacije „%s“." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Neispravan parametar kašnjenja „%s“" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Neispravan parametar za vreme procesa „%s“" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Neispravno svojstvo „%s“" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Nepoznat %s format datoteke." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Neispravni parametri uzorka\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Neispravan parametar uzorka" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Previše parametara.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Previše argumenata." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Nije uspelo pravljenje parametara uzorka za datoteku." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Nije uspelo otvaranje zvučne datoteke.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Nije uspelo otvaranje zvučne datoteke." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Upozorenje: navedeni parametri uzorka će biti prebrisani parametrima iz " +"datoteke." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Neuspešno utvrđivanje parametara uzorka iz datoteke." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Upozorenje: Neuspešno utvrđivanje mape kanala iz datoteke." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Mapa kanala se ne poklapa sa parametrima uzorka\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Mapa kanala se ne poklapa sa parametrima uzorka" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Upozorenje: Neuspešno zapisivanje mape kanala u datoteku." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "Otvaram tok %s sa parametrima uzorka „%s“ i mapom kanala „%s“." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Otvaram tok %s sa sledećim parametrima uzorka „%s“.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "snima" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "pušta" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "Neuspela funkcija pa_mainloop_new()." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "Neuspela funkcija io_new()." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "Neuspela funkcija pa_context_new()." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "Neuspela funkcija pa_mainloop_new().\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "Neuspela funkcija io_new() \n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "Neuspela funkcija pa_context_new().\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "Neuspela funkcija pa_context_connect(): %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "Neuspela funkcija time_new() \n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "Neuspela funkcija pa_context_new()." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "Neuspela funkcija pa_mainloop_run().\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "Neuspela funkcija pa_mainloop_run()." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1717,7 +1603,12 @@ msgstr "Neuspešno nastavljanje: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "UPOZORENJE: Zvučni server nije lokalni, ne zaustavljam.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Neuspešno povezivanje: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Dobih SIGINT, izlazim.\n" @@ -1742,7 +1633,8 @@ msgstr "" "\n" " -h, --help Prikaži ovu pomoć\n" " --version Prikaži verziju\n" -" -s, --server=SERVER Ime servera sa kojim se povezuje\n" +" -s, --server=SERVER Ime servera na koji se treba " +"povezati\n" "\n" #: ../src/utils/pasuspender.c:248 @@ -1756,32 +1648,47 @@ msgstr "" "Kompajlirano sa libpulse %s\n" "Povezano sa libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Neuspešno dobavljanje statistike: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "Neuspela funkcija pa_mainloop_new().\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "Neuspela funkcija pa_context_new().\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "Neuspela funkcija pa_mainloop_run().\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Neuspešno dobavljanje statistike: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Trenutno u upotrebi: %u blokova sadrži ukupno %s bajtova.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "Smešteno od pokretanja: %u blokova sadrži ukupno %s bajtova.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Veličina keš memorije uzorka: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Neuspešno dobijanje podataka o serveru: %s\n" +msgid "Failed to get server information: %s" +msgstr "Neuspešno dobavljanje podataka o serveru: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1804,12 +1711,12 @@ msgstr "" "Podrazumevani izvor: %s\n" "Kolačić: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Neuspešno dobijanje podataka o slivniku: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Neuspešno dobavljanje podataka o slivniku: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1848,22 +1755,22 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tProfili:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tAktivni profil: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Nije uspelo dobavljanje podataka o izvoru: %s\n" +msgid "\tPorts:\n" +msgstr "\tPortovi:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tAktivni port: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Neuspešno dobavljanje podataka o izvoru: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1902,20 +1809,20 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "nepoznato" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Neuspešno dobijanje podataka o modulu: %s\n" +msgid "Failed to get module information: %s" +msgstr "Neuspešno dobavljanje podataka o modulu: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1927,17 +1834,17 @@ msgid "" msgstr "" "Modul #%u\n" "\tIme: %s\n" -"\tParametar: %s\n" +"\tArgument: %s\n" "\tBrojač korišćenja: %s\n" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Neuspešno dobijanje podataka o klijentu: %s\n" +msgid "Failed to get client information: %s" +msgstr "Neuspešno dobavljanje podataka o klijentu: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1952,12 +1859,12 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Neuspešno dobijanje podataka o kartici: %s\n" +msgid "Failed to get card information: %s" +msgstr "Neuspešno dobavljanje podataka o kartici: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1974,22 +1881,22 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfili:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tAktivni profil: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Nije uspelo dobijanje podataka o ulazu slivnika: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Neuspešno dobavljanje podataka o ulazu slivnika: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2026,12 +1933,12 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "Nije uspelo dobijanje podataka o izlazu izvora: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Neuspešno dobavljanje podataka o izlazu izvora: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2060,12 +1967,12 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Nije uspelo dobavljanje podataka o uzorku: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Neuspešno dobavljanje podataka o uzorku: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2096,22 +2003,26 @@ msgstr "" "\tSvojstva:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Neuspeh: %s\n" +msgid "Failure: %s" +msgstr "Neuspeh: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Nije uspelo učitavanje uzorka: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Nije uspelo postavljanje uzorka: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Prerani kraj datoteke\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Prerani kraj datoteke" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Dobih SIGINT, izlazim." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2119,15 +2030,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2143,23 +2060,31 @@ msgstr "" "%s [opcije] upload-sample IMEDATOTEKE [IME]\n" "%s [opcije] play-sample IME [SLIVNIK]\n" "%s [opcije] remove-sample IME\n" -"%s [opcije] move-sink-input IB SLIVNIKA\n" -"%s [opcije] move-source-output IB IZVORA\n" -"%s [opcije] load-module IME [PARAM. ...]\n" -"%s [opcije] unload-module IB\n" -"%s [opcije] suspend-sink [SLIVNIK] 1|0\n" -"%s [opcije] suspend-source [IZVOR] 1|0\n" -"%s [opcije] set-card-profile [KARTICA] [PROFIL] \n" +"%s [opcije] move-sink-input ULAZSLIVNIKA SLIVNIK\n" +"%s [opcije] move-source-output IZLAZIZVORA IZVOR\n" +"%s [opcije] load-module IME [ARG ...]\n" +"%s [opcije] unload-module MODUL\n" +"%s [opcije] suspend-sink SLIVNIK 1|0\n" +"%s [opcije] suspend-source IZVOR 1|0\n" +"%s [opcije] set-card-profile KARTICA PROFIL\n" +"%s [opcije] set-sink-port SLIVNIK PORT\n" +"%s [opcije] set-source-port IZVOR PORT\n" +"%s [opcije] set-sink-volume SLIVNIK JAČINA\n" +"%s [opcije] set-source-volume IZVOR JAČINA\n" +"%s [opcije] set-sink-input-volume ULAZSLIVNIKA JAČINA\n" +"%s [opcije] set-sink-mute SLIVNIK 1|0\n" +"%s [opcije] set-source-mute IZVOR 1|0\n" +"%s [opcije] set-sink-input-mute ULAZSLIVNIKA 1|0\n" "\n" " -h, --help Prikaži ovu pomoć\n" " --version Prikaži verziju\n" "\n" " -s, --server=SERVER Ime servera na koji se treba " -"priključiti\n" +"povezati\n" " -n, --client-name=IME Kako nazvati ovog klijenta na " "serveru\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2170,77 +2095,109 @@ msgstr "" "Kompajlirano sa libpulse %s\n" "Povezano sa libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Navedite datoteku uzorka koju treba učitati\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Nije uspelo otvaranje zvučne datoteke.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Otvaram tok %s sa sledećim parametrima uzorka „%s“.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Morate navesti ime uzorka kojeg želite pustiti\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Morate navesti ime uzorka kojeg želite ukloniti\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Morate navesti indeks ulaza u slivniku i slivnik\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Navedite datoteku uzorka koju treba učitati" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Morate navesti indeks izlaza u izvoru i izvor\n" +msgid "Failed to open sound file." +msgstr "Nije uspelo otvaranje zvučne datoteke." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Morate navesti ime i parametre modula.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "Upozorenje: Neuspešno utvrđivanje parametara uzorka iz datoteke." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Morate navesti indeks modula\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Morate navesti ime uzorka kojeg želite reprodukovati" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Morate navesti ime uzorka kojeg želite ukloniti" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Morate navesti indeks ulaza slivnika i slivnik" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Morate navesti indeks izlaza izvora i izvor" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Morate navesti ime i argumente modula." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Morate navesti indeks modula" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" -msgstr "Možete navesti samo jedan slivnik. Morate navesti logičku vrednost.\n" +"You may not specify more than one sink. You have to specify a boolean value." +msgstr "" +"Ne možete navesti više od jednog slivnika. Morate navesti logičku vrednost." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" -msgstr "Možete navesti samo jedan izvor. Morate navesti logičku vrednost.\n" +"value." +msgstr "" +"Ne možete navesti više od jednog izvora. Morate navesti logičku vrednost." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Morate navesti ime/indeks kartice i ime profila\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Morate navesti ime/indeks kartice i ime profila" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Morate navesti ime/indeks kartice i ime profila\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Morate navesti ime/indeks slivnika i ime porta" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Morate navesti ime/indeks kartice i ime profila\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Morate navesti ime/indeks izvora i ime porta" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "Ni jedna ispravna naredba nije navedena.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Morate navesti ime/indeks slivnika i jačinu" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "Neuspela funkcija pa_context_connect(): %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Neispravan parametar jačine" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Morate navesti ime/indeks izvora i jačinu" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Morate navesti indeks ulaza slivnika i jačinu" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Neispravan indeks ulaza slivnika" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "Morate navesti ime/indeks slivnika i logičku vrednost za isključivanje" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "Morate navesti ime/indeks izvora i logičku vrednost za isključivanje" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" +"Morate navesti indeks ulaza slivnika i logičku vrednost za isključivanje" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Neispravan parametar indeksa ulaza slivnika" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Nije navedena ispravna naredba." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2323,49 +2280,49 @@ msgstr "Neuspešno učitavanje datoteka kolačića\n" msgid "Not yet implemented.\n" msgstr "Nije još implementirano.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"Nema pokrenutog PulseAudio demona, ili se ne izvršava kao demon sesije." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "Nije uspelo ubijanje PulseAudio demona." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Demon se ne odaziva." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -# Kako prevesti autospawn (mogućnost pravljenja ili pokretanja procesa iz istog) -- Igor -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Nije moguće pristupiti datoteci zaključavanja za samoumnožavanje." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2382,7 +2339,7 @@ msgstr "" "Probuđeni smo sa postavljenim POLLOUT-om -- ali sledeći snd_pcm_avail() je " "vratio 0 ili neku drugu vrednost manju od min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2400,128 +2357,22 @@ msgstr "" "vratio 0 ili neku drugu vrednost manju od min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "Isključeno" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "Reprodukcija visoke tačnosti (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Snimanje visoke tačnosti (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "Dvostrano telefoniranje (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "PulseAudio zvučni sistem" - -#~ msgid "Analog Mono" -#~ msgstr "Analogni mono" - -#~ msgid "Analog Stereo" -#~ msgstr "Analogni stereo" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "Digitalni stereo (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "Digitalni stereo (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "Analogni okružujući 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "Digitalni okružujući 4.0 (IEC958/AC3)" - -# Surround možemo prevesti ambijentalni ili okružni ili možda čak i saraund? -- Igor -#~ msgid "Analog Surround 4.1" -#~ msgstr "Analogni okružujući 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "Analogni okružujući 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "Analogni okružujući 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "Digitalni okružujući 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "Analogni okružujući 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "Izlaz %s + ulaz %s" - -#~ msgid "Output %s" -#~ msgstr "Izlaz %s" - -#~ msgid "Input %s" -#~ msgstr "Ulaz %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "Tok uspešno napravljen\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "Greška toka: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "Veza ustanovljena.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [opcije] [DATOTEKA]\n" -#~ "\n" -#~ " -h, --help Prikaži ovu pomoć\n" -#~ " --version Prikaži verziju\n" -#~ "\n" -#~ " -v, --verbose Omogući opširni opis radnji\n" -#~ "\n" -#~ " -s, --server=SERVER Ime servera na koji se povezuje\n" -#~ " -d, --device=UREĐAJ Ime slivnika na koje se povezuje\n" -#~ " -n, --client-name=IME Kako nazvati ovog klijenta na " -#~ "serveru\n" -#~ " --stream-name=IME Kako nazvati ovaj tok na serveru\n" -#~ " --volume=GLASNOST Navedi početnu (linearnu) jačinu " -#~ "zvuka iz opsega 0...65536\n" -#~ " --channel-map=MAPAKANALA Postavi mapu kanala koja će se " -#~ "koristiti\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "Kompajlirano sa libpulse %s\n" -#~ "Povezano sa libpulse %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "Neispravna mapa kanala\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "Neuspelo otvaranje datoteke „%s“\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "Mapa kanala se ne poklapa sa datotekom.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "Koriste se sledeći parametri uzorka „%s“\n" diff --git a/po/sv.po b/po/sv.po index 3f91c9ae8..89a4fc3d8 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: 2008-09-05 18:24+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -15,7 +15,12 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -24,7 +29,7 @@ msgid "" "to the ALSA developers." msgstr "" -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -33,7 +38,7 @@ msgid "" "to the ALSA developers." msgstr "" -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -42,6 +47,14 @@ msgid "" "to the ALSA developers." msgstr "" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" msgstr "" @@ -55,12 +68,20 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 #, fuzzy msgid "Internal Audio" msgstr "Internt fel" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "" @@ -77,208 +98,92 @@ msgstr "Misslyckades med att öppna ljudfil.\n" msgid "Failed to add bind-now-loader." msgstr "" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit svarade med \"%s\"" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Fick signal %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Avslutar." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Misslyckades med att hitta användaren \"%s\"." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Misslyckades med att hitta gruppen \"%s\"." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "" -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "" -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Hemkatalogen för användaren \"%s\" är inte \"%s\", ignorerar." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Misslyckades med att skapa \"%s\": %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO misslyckades: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -286,151 +191,156 @@ msgstr "" "Detta program är inte tänkt att köras som root (såvida inte --system har " "angivits)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 #, fuzzy msgid "Root privileges required." msgstr "Root-behörighet krävs." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start stöds inte för systeminstanser." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "pipe misslyckades: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() misslyckades: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() misslyckades: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Detta är PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "" -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, c-format msgid "Session ID is %s." msgstr "" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -440,41 +350,41 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() misslyckades." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() misslyckades." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "" @@ -663,91 +573,87 @@ msgstr "" msgid "Path: %s\n" msgstr "Sökväg: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "" -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Misslyckades med att öppna konfigurationsfil: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "" -#: ../src/daemon/caps.c:63 +#: ../src/daemon/caps.c:62 #, fuzzy -msgid "Dropping root privileges." +msgid "Cleaning up privileges." msgstr "Släpper root-behörighet." -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "" - #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" msgstr "" @@ -756,25 +662,7 @@ msgstr "" msgid "Start the PulseAudio Sound System" msgstr "" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Mono" @@ -978,34 +866,34 @@ msgstr "" msgid "Top Rear Right" msgstr "" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 #, fuzzy msgid "(invalid)" msgstr "Ogiltig" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "" @@ -1109,27 +997,35 @@ msgstr "" msgid "Client forked" msgstr "" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "" @@ -1142,188 +1038,189 @@ msgstr "XOpenDisplay() misslyckades" msgid "Failed to parse cookie data" msgstr "" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Misslyckades med att öppna konfigurationsfilen \"%s\": %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "" -#: ../src/utils/pacat.c:107 -#, c-format -msgid "Failed to drain stream: %s\n" +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" +msgstr "Misslyckades med att hitta användaren \"%s\"." + +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." msgstr "" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." msgstr "" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "" - -#: ../src/utils/pacat.c:135 -#, c-format -msgid "pa_stream_drain(): %s\n" +#: ../src/utils/pacat.c:136 +#, fuzzy, c-format +msgid "pa_stream_drain(): %s" msgstr "pa_stream_drain(): %s\n" -#: ../src/utils/pacat.c:158 -#, c-format -msgid "pa_stream_write() failed: %s\n" +#: ../src/utils/pacat.c:159 +#, fuzzy, c-format +msgid "pa_stream_write() failed: %s" msgstr "pa_stream_write() misslyckades: %s\n" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 -#, c-format -msgid "pa_stream_peek() failed: %s\n" +#: ../src/utils/pacat.c:197 +#, fuzzy, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() misslyckades: %s\n" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, fuzzy, c-format +msgid "pa_stream_peek() failed: %s" msgstr "pa_stream_peek() misslyckades: %s\n" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." msgstr "" -#: ../src/utils/pacat.c:305 -#, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +#: ../src/utils/pacat.c:310 +#, fuzzy, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "pa_stream_get_buffer_attr() misslyckades: %s\n" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +msgid "Using sample spec '%s', channel map '%s'." msgstr "" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +msgid "Connected to device %s (%u, %ssuspended)." msgstr "" -#: ../src/utils/pacat.c:330 -#, c-format -msgid "Stream error: %s\n" +#: ../src/utils/pacat.c:335 +#, fuzzy, c-format +msgid "Stream error: %s" msgstr "Strömfel: %s\n" -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device suspended.%s \n" +msgid "Stream device suspended.%s" msgstr "" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream device resumed.%s \n" +msgid "Stream device resumed.%s" msgstr "" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:355 +#, fuzzy, c-format +msgid "Stream underrun.%s" +msgstr "Strömfel: %s\n" + +#: ../src/utils/pacat.c:362 +#, fuzzy, c-format +msgid "Stream overrun.%s" +msgstr "Strömfel: %s\n" + +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream underrun.%s \n" +msgid "Stream started.%s" msgstr "" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:376 #, c-format -msgid "Stream overrun.%s \n" +msgid "Stream moved to device %s (%u, %ssuspended).%s" msgstr "" -#: ../src/utils/pacat.c:364 -#, c-format -msgid "Stream started.%s \n" -msgstr "" - -#: ../src/utils/pacat.c:371 -#, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "" - -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "inte " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" +msgid "Stream buffer attributes changed.%s" msgstr "" -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" -msgstr "" +#: ../src/utils/pacat.c:415 +#, fuzzy, c-format +msgid "Connection established.%s" +msgstr "Anslutning etablerad.\n" -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" +#: ../src/utils/pacat.c:418 +#, fuzzy, c-format +msgid "pa_stream_new() failed: %s" msgstr "pa_stream_new() misslyckades: %s\n" -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +#: ../src/utils/pacat.c:446 +#, fuzzy, c-format +msgid "pa_stream_connect_playback() failed: %s" msgstr "pa_stream_connect_playback() misslyckades: %s\n" -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" +#: ../src/utils/pacat.c:452 +#, fuzzy, c-format +msgid "pa_stream_connect_record() failed: %s" msgstr "pa_stream_connect_record() misslyckades: %s\n" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, fuzzy, c-format +msgid "Connection failure: %s" msgstr "Anslutningsfel: %s\n" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +#, fuzzy +msgid "Got EOF." msgstr "Fick filslut.\n" -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "read() misslyckades: %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" +#: ../src/utils/pacat.c:536 +#, fuzzy, c-format +msgid "write() failed: %s" msgstr "write() misslyckades: %s\n" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "" +#: ../src/utils/pacat.c:557 +#, fuzzy +msgid "Got signal, exiting." +msgstr "Fick signal %s." -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "" +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" +msgstr "Misslyckades med att få statistik: %s\n" -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Tid: %0.3f sec; Latens: %0.0f ms \r" -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +#: ../src/utils/pacat.c:595 +#, fuzzy, c-format +msgid "pa_stream_update_timing_info() failed: %s" msgstr "pa_stream_update_timing_info() misslyckades: %s\n" #: ../src/utils/pacat.c:605 @@ -1394,134 +1291,137 @@ msgid "" "Linked with libpulse %s\n" msgstr "" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, c-format -msgid "Invalid client name '%s'\n" -msgstr "" - -#: ../src/utils/pacat.c:776 -#, c-format -msgid "Invalid stream name '%s'\n" -msgstr "" - -#: ../src/utils/pacat.c:813 -#, c-format -msgid "Invalid channel map '%s'\n" -msgstr "" - -#: ../src/utils/pacat.c:842 -#, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "" - -#: ../src/utils/pacat.c:849 -#, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "" - -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, fuzzy, c-format -msgid "Invalid property '%s'\n" +msgid "Invalid client name '%s'" msgstr "Ogiltig server" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:775 +#, fuzzy, c-format +msgid "Invalid stream name '%s'" +msgstr "Ogiltig server" + +#: ../src/utils/pacat.c:812 +#, fuzzy, c-format +msgid "Invalid channel map '%s'" +msgstr "Ogiltig server" + +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "" + +#: ../src/utils/pacat.c:848 +#, fuzzy, c-format +msgid "Invalid process time specification '%s'" +msgstr "Ogiltig server" + +#: ../src/utils/pacat.c:860 +#, fuzzy, c-format +msgid "Invalid property '%s'" +msgstr "Ogiltig server" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." msgstr "" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "" - -#: ../src/utils/pacat.c:907 -#, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" - -#: ../src/utils/pacat.c:912 -#, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" - -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "För många argument.\n" - -#: ../src/utils/pacat.c:930 +#: ../src/utils/pacat.c:896 #, fuzzy -msgid "Failed to generate sample specification for file.\n" +msgid "Invalid sample specification" msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pacat.c:950 +#: ../src/utils/pacat.c:906 +#, fuzzy, c-format +msgid "open(): %s" +msgstr "open(): %s\n" + +#: ../src/utils/pacat.c:911 +#, fuzzy, c-format +msgid "dup2(): %s" +msgstr "dup2(): %s\n" + +#: ../src/utils/pacat.c:918 #, fuzzy -msgid "Failed to open audio file.\n" +msgid "Too many arguments." +msgstr "För många argument.\n" + +#: ../src/utils/pacat.c:929 +#, fuzzy +msgid "Failed to generate sample specification for file." +msgstr "Misslyckades med att få modulinformation: %s\n" + +#: ../src/utils/pacat.c:949 +#, fuzzy +msgid "Failed to open audio file." msgstr "Misslyckades med att öppna ljudfil.\n" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -msgid "Failed to determine sample specification from file.\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +#, fuzzy +msgid "Failed to determine sample specification from file." +msgstr "Misslyckades med att få modulinformation: %s\n" + +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." msgstr "" -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" +#: ../src/utils/pacat.c:978 +#, fuzzy +msgid "Channel map doesn't match sample specification" +msgstr "Misslyckades med att få modulinformation: %s\n" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." msgstr "" -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" #: ../src/utils/pacat.c:1005 -#, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 -#, c-format -msgid "pa_mainloop_new() failed.\n" +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +#, fuzzy +msgid "pa_mainloop_new() failed." msgstr "pa_mainloop_new() misslyckades.\n" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1050 +#, fuzzy +msgid "io_new() failed." msgstr "io_new() misslyckades.\n" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +#, fuzzy +msgid "pa_context_new() failed." msgstr "pa_context_new() misslyckades.\n" -#: ../src/utils/pacat.c:1066 +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_new() misslyckades.\n" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() misslyckades.\n" +#: ../src/utils/pacat.c:1071 +#, fuzzy +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new() misslyckades.\n" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +#, fuzzy +msgid "pa_mainloop_run() failed." msgstr "pa_mainloop_run() misslyckades.\n" #: ../src/utils/pasuspender.c:81 @@ -1549,7 +1449,12 @@ msgstr "" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Anslutningsfel: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "" @@ -1582,32 +1487,47 @@ msgstr "" "Kompilerad med libpulse %s\n" "Länkad med libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() misslyckades.\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() misslyckades.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() misslyckades.\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "Misslyckades med att få statistik: %s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" +msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1621,12 +1541,12 @@ msgid "" "Cookie: %08x\n" msgstr "" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" +msgstr "Misslyckades med att få klientinformation: %s\n" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1648,22 +1568,22 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format msgid "\tPorts:\n" msgstr "" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, fuzzy, c-format msgid "\tActive Port: %s\n" msgstr "pipe misslyckades: %s" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" +msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1685,20 +1605,20 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1709,12 +1629,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "Misslyckades med att få klientinformation: %s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1724,12 +1644,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, fuzzy, c-format -msgid "Failed to get card information: %s\n" +msgid "Failed to get card information: %s" msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1740,22 +1660,22 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, fuzzy, c-format msgid "\tActive Profile: %s\n" msgstr "pipe misslyckades: %s" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" +msgstr "Misslyckades med att få klientinformation: %s\n" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1776,12 +1696,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" +msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -1798,12 +1718,12 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" -msgstr "" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" +msgstr "Misslyckades med att få modulinformation: %s\n" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -1821,21 +1741,26 @@ msgid "" "\t\t%s\n" msgstr "" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "Fel: %s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" +msgstr "Misslyckades med att hitta användaren \"%s\"." + +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" msgstr "" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "" +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "Fick signal %s." -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:869 #, c-format msgid "" "%s [options] stat\n" @@ -1844,15 +1769,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -1863,7 +1794,7 @@ msgid "" "server\n" msgstr "" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -1874,74 +1805,110 @@ msgstr "" "Kompilerad med libpulse %s\n" "Länkad med libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Misslyckades med att öppna ljudfil.\n" - -#: ../src/utils/pactl.c:951 -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" msgstr "" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#, fuzzy +msgid "Failed to open sound file." +msgstr "Misslyckades med att öppna ljudfil.\n" + +#: ../src/utils/pactl.c:1004 +#, fuzzy +msgid "Warning: Failed to determine sample specification from file." +msgstr "Misslyckades med att få modulinformation: %s\n" + +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" msgstr "" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" msgstr "" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" msgstr "" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "" + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" msgstr "" -#: ../src/utils/pactl.c:1073 -msgid "You have to specify a sink name/index and a port name\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" msgstr "" -#: ../src/utils/pactl.c:1084 -msgid "You have to specify a source name/index and a port name\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" msgstr "" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" msgstr "" -#: ../src/utils/pactl.c:1122 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_new() misslyckades.\n" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "Misslyckades med att få modulinformation: %s\n" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "Misslyckades med att få modulinformation: %s\n" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "" #: ../src/utils/pax11publish.c:61 #, c-format @@ -2015,48 +1982,48 @@ msgstr "" msgid "Not yet implemented.\n" msgstr "Ännu inte implementerad.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "" -#: ../src/utils/pacmd.c:146 -#, c-format -msgid "select(): %s" -msgstr "select(): %s" +#: ../src/utils/pacmd.c:161 +#, fuzzy, c-format +msgid "poll(): %s" +msgstr "fork(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2067,7 +2034,7 @@ msgid "" "returned 0 or another value < min_avail." msgstr "" -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2079,15 +2046,19 @@ msgid "" msgstr "" #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "" @@ -2095,8 +2066,24 @@ msgstr "" msgid "PulseAudio Sound Server" msgstr "" -#~ msgid "Connection established.\n" -#~ msgstr "Anslutning etablerad.\n" +#~ msgid "select(): %s" +#~ msgstr "select(): %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit svarade med \"%s\"" + +#~ msgid "read() failed: %s\n" +#~ msgstr "read() misslyckades: %s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_new() misslyckades.\n" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO misslyckades: %s" + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new() misslyckades.\n" #~ msgid "" #~ "paplay %s\n" diff --git a/po/ta.po b/po/ta.po index a10b01683..dc1a861ad 100644 --- a/po/ta.po +++ b/po/ta.po @@ -1,14 +1,14 @@ -# translation of pulseaudio.master-tx.pulseaudio.po to Tamil +# translation of pulseaudio.master-tx.ta.po to Tamil # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # I. Felix , 2009. msgid "" msgstr "" -"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" +"Project-Id-Version: pulseaudio.master-tx.ta\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-12 05:02+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 15:57+0530\n" "Last-Translator: I. Felix \n" "Language-Team: Tamil \n" "MIME-Version: 1.0\n" @@ -33,8 +33,16 @@ msgstr "" "\n" "\n" "\n" +"\n" +"\n" +"\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -47,7 +55,7 @@ msgstr "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -60,7 +68,7 @@ msgstr "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -73,9 +81,17 @@ msgstr "" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "ஒரு பூஜ்ஜியம் இருந்தாலும் குறைந்தது ஒன்றை மட்டும் வைத்திருக்கவும்" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "டம்மி வெளிப்பாடு" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "மெய்நிகர் LADSPA சின்க்" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -85,12 +101,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name= sink_properties= " +"master= format= rate= " +"channels= channel_map= plugin= label= control=" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "கடிகார பூஜ்ஜிய சிங்" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "பூஜ்ஜிய வெளிப்பாடு" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "உட்புற ஆடியோ" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "மாதிரி" @@ -106,373 +135,247 @@ msgstr "புதிய dl ஏற்றுபவரை ஒதுக்கிர msgid "Failed to add bind-now-loader." msgstr "இப்போது பிணைக்கும் ஏற்பியை சேர்ப்பதில் தோல்வி." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "கணினி பஸ்ஸை இணைக்க முடியவில்லை: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID லிருந்து அழைப்பாளரை பெற முடியவில்லை: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "UID க்கு அழைப்பாளர் பொருளை அமைக்க முடியவில்லை." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK அமர்வை பெறுவதில் தோல்வி." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "அமர்வு பொருளில் UIDஐ அமைக்க முடியவில்லை." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitActionஐ ஒதுக்க இயலவில்லை." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "செயலை அமைக்க முடியவில்லை (_i)" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContextஐ ஒஉக்கிட முடியசவில்லை." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContextஐ துவக்க முடியவில்லை: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "அழைப்பாளர் அங்கீகரிக்கப்பட்டவரா என்பயை நிச்சயிக்க முடியவில்லை: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "authஐ பெற முடியவில்லை: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "'%s'உடன் பாலிஸிகிட் ஒத்துபோகிறது" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "%sக்கு சிக்னல் கிடைத்துவிட்டது." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "வெளியேறுதல்." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "'%s' பயனரை கண்டுபிடிப்பதில் தோல்வி." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "'%s' குழுவை கண்டுபிடிப்பதில் தோல்வி." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "'%s'பயனர் கண்டுபிடிக்கப்பட்டார் (UID %lu) மற்றும் குழு '%s' (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID ன் பயனர் '%s' மற்றும் '%s' குழுவுடன் ஒத்து போகவில்லை." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "முகப்பு அடைவு பயனரான'%s' '%s'ஆல், புறக்கணிக்கப்படவில்லை." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s'ஐ உருவாக்க முடியவில்லை: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "குழுப் பட்டியலை மாற்ற முடியவில்லை: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GIDக்கு மாற்றுவதில் தோல்வி: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UIDக்கு மாற்றுவதில் தோல்வி: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "ரூட் முன்னுரிமைகள் வெற்றிகரமாக விடப்பட்டது." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "இந்த தளத்தில் கணினியின் திறந்த முறைமை துணைபுரியவில்லை." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) தோல்வியுற்றது: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "கட்டளை வரியை மாற்றுவதில் தோல்வி." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"நாம் குழு '%s'ல் இருந்த போது , உயர்ந்த முதன்மை அட்டவணைப்படுத்த அனுமதி " -"அளிக்கப்பட்டிருந்தது." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "குழு '%s'இல் இருக்கிறோம், நிகழ்நேர திட்டமிடுதலை அனுமதிக்கிறது." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "நமக்காக PolicyKit உயர்ந்த முக்கிய முன்னுரிமையை வழங்குகிறது." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit உயர்ந்த முக்கிய முன்னுரிமையை மறுக்கிறது." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit acquire-real-time முன்னுரிமைகளை கொடுக்கிறது." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit acquire-real-time முன்னுரிமைகளை நிராகரிக்கிறது." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"உயர்ந்த சலுகைகளின் அட்டவணையை கட்டமைப்பில் செயல்படுத்தப்பட்டது ஆனால் பாலிசியால் " -"அனுமதிக்கப்படவில்லை." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "வெற்றிகரமாக அதிகரிக்கப்பட்டது RLIMIT_RTPRIO" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO தோல்வியுற்றது: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "" -"CAP_NICEஐ மேலே கொடுக்கிறது (_N\n" -")" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"நிகழ்நேர திட்டமிடுதல் கட்டமைப்பில் செயல்படுத்தப்பட்டது ஆனால் கொள்கையால் அனுமதிக்கப்படுவதில்லை" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "டோமோன் இயங்கவில்லை" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "PID %uவாக டோமோன் இயங்குகிறது" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "டோமோனுக்கு முடிவு கட்டுவதில் தோல்வி: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "இந்த நிரல் ரூட்டாக இயங்க முடியவில்லை (--system குறிப்பிடாத வரை)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "ரூட் முன்னுரிமைகள் தேவைப்படுகிறது." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start கணினி நிகழ்வில் துணைபுரியவில்லை." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "கணினி முறைமையில் இயங்குகிறது, ஆனால் --disallow-exit அமைக்கப்படவில்லை!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "கணினி முறைமையில் இயங்குகிறது, ஆனால் --disallow-module-loading அமைக்கப்படவில்லை!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "கணினி முறைமையில் இயங்குகிறது, SHM முறைமை செயல்நீக்குதல் கட்டாயப்படுத்துகிறது!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "கணினி முறைமையில் இயங்குகிறது, வெறுமை நேரத்தை செயல்நீக்க கட்டாயப்படுத்துகிறது!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdioஐ பெற முடியவில்லை." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "பைப் தோல்வியுற்றது: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() தோல்வியுற்றது: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "வாசிப்பதில்() தோல்வியுற்றது: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "டோமோனை துவக்குவதில் தோல்வியுற்றது." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "டோமோனை வெற்றிகரமாக துவக்ககப்பட்டது." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "இது தான் பள்ஸ் ஆடியோ %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "தொகுக்கப்பட்ட புரவலன்: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "தொகுப்பு CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "புரவலனாக இயங்குகிறத: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "CPUs %uவில் காணப்படுகிறது ." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "பக்க அளவுகள் %lu பைட்ஸ்" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Compiled with Valgrind support: yes" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Compiled with Valgrind support: no" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind முறைமையில் இயங்குகிறது: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Optimized build: yes" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "சுருக்கமான உருவாக்கம்: இல்லை" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." -msgstr "" +msgstr "NDEBUG வரையறுக்கப்பட்டது, அனைத்தும் உறுதியாக செயல்நீக்கப்பட்டது." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." -msgstr "" +msgstr "FASTPATH வரையறுக்கப்பட்டது, விரைவு பாதை மட்டும் உறுதியாக செயல்நீக்கப்பட்டது." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." -msgstr "" +msgstr "அனைத்து உறுதியாக செயல்படுகிறது." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "கணினி குறியீடை பெறுவதில் தோல்வி" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "கணினி குறியீடு %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "கணினி குறியீடு %s." +msgstr "அமர்வு குறியீடு %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "ஓடும்நேரம் %s அடைவை பயன்படுத்துகிறது." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "%s நிலை அடைவினை பயன்படுத்துகிறது." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "தொகுதி %s அடைவை பயன்படுத்துகிறது." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "கணினியின் முறைமையில் இயங்குகிறது: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -481,16 +384,22 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"OK, so you are running PA in system mode. Please note that you most likely " +"shouldn't be doing that.\n" +"If you do it nonetheless then it's your own fault if things don't work as " +"expected.\n" +"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " +"explanation why system mode is usually a bad idea." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() தோல்வியுற்றது." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "உயர்ந்த திரைத்திறன் நேரம்காட்டி கிடைக்கிளது! Bon appetit!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -498,27 +407,27 @@ msgstr "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() தோல்வியுற்றது." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "டோமோனை ஆரம்பிப்பதில் தோல்வி." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "டீமான் துவக்கம் எந்த தொகுதிகளும் ஏற்றப்படாமல், வேலையை நிராகரிக்கிறது." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "டோமோன் துவக்குவது முடிவடைந்தது." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "டோமோன் பணிநிறுத்தம் முனைகிறது." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "டோமோன் நீக்கப்பட்டுது." @@ -768,79 +677,79 @@ msgstr "ஒருமுறை ஏற்றப்பட்டது: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "DEPRECATION WARNING: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "பாதை: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] தவறான மறுமாதிரி முறை '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] தவறான rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit இந்த தளத்தில் துணைபுரியவில்லை." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] தவறான மாதிரி முறை '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] தவறான மாதிரி விலை '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] தவறான மாதிரி சேனல்கள் '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] தவறான சேனல் படம் '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] பகுப்பு '%s'க்கு தவறான எண்" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] தவறான பகுப்பு அளவு '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] தவறான நல்ல நிலை '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "கட்டமைக்கப்பட்ட கோப்பினை திறப்பதில் தோல்வி: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -848,18 +757,14 @@ msgstr "" "குறிப்பிட்ட முன்னிருப்பு சேனல் மேப் வேறுபட்ட சேனல்களின் எண்ணிக்கையை குறிப்பிட்ட " "முன்னிருப்பு சேனல்களின் எண்ணிக்கையை விட கொண்டுள்ளது" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### கட்டமைப்பு கோப்பிலிருந்து வாசிக்கவும்: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "ரூட் முன்னுரிமைகள் விடுபடுகிறது." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "குறிப்பிட்ட திறன்கள் CAP_SYS_NICEக்கு அமைக்கப்பட்டது." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "முன்னுரிமைகளை துடைக்கிறது." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -869,27 +774,7 @@ msgstr "பள்ஸ் ஆடியோ ஒலி கணினி" msgid "Start the PulseAudio Sound System" msgstr "பள்ஸ் ஆடியோ ஒலி கணினியை துவக்கவும" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" -"அதிக முன்னுரிமையுள்ள திட்டமிடுதல் (negative Unix nice level) PulseAudio daemonக்கு" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio daemonக்கான நிகழ்நேர திட்டமிடுதல்" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"கணினி கொள்கை PulseAudioஐ அதிக முன்னுரிமை திட்டமிடுதலை பெறுவதிலிருந்து தடுக்கிறது." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "கணினி கொள்கை PulseAudio ஐ நிகழ்நேர திட்டமிடுதலை எடுக்கிறது." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "மோனோ" @@ -1093,33 +978,33 @@ msgstr "மேலே பின் இடது" msgid "Top Rear Right" msgstr "மேலே பின் வலது" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(தவறான)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "ஸ்டிரியோ" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Surround 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Surround 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Surround 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Surround 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Surround 7.1" @@ -1223,27 +1108,35 @@ msgstr "விடுபட்ட செயல்பாடு" msgid "Client forked" msgstr "கிளையன் நீக்கப்பட்டது" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1256,192 +1149,191 @@ msgstr "XOpenகாட்சி() தோல்வியுற்றது" msgid "Failed to parse cookie data" msgstr "குக்கீ தரவை மாற்றுவதில் தோல்வியுற்றது" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "'%s'கட்டமைக்கப்பட்ட கோப்பினை திறக்க முடியவில்லை: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "குக்கி ஏற்றப்படவில்லை. இணைப்பில்லாமல் முயற்சிக்கிறது." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "தெரியாத தொடரிச்சியிலிருந்து '%s'க்கு செய்திகள் பெறப்பட்டன" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "ஸ்டீரிமை ட்ரைன் செய்ய முடியவில்லை: %s\n" +msgid "Failed to drain stream: %s" +msgstr "ஸ்டீரிமை இழக்க முடியவில்லை: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "ட்ரைன் செய்யப்பட்ட ஸ்டீரிம்.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "பின்னணி ஸ்டீரிம் இழக்கப்படுகிறது." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "ட்ரைன் செய்யும் இணைப்பு சேவையகத்திற்கு.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "சேவையகத்திற்கு இணைப்பு இழக்கப்படுகிறது." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() தோல்வியுற்றது: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() தோல்வியுற்றது: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "ஸ்டிரீம் வெற்றிகரமாக உருவாக்கப்பட்டது.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() தோல்வியுற்றது: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "ஸ்டிரீம் வெற்றிகரமாக உருவாக்கப்பட்டது." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "குறிப்பிட்ட குறிப்பு '%s', சேனல் மேப் '%s'ஐ பயன்படுத்தி.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Buffer metrics: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "%s சாதனத்துடன் இணைக்கப்பட்டது (%u, %ssuspended).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "குறிப்பிட்ட குறிப்பு '%s', சேனல் வரைபடத்தை '%s'ஐ பயன்படுத்துகிறது." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "ஸ்டிரீம் பிழை: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "%s சாதனத்துடன் இணைக்கப்பட்டது (%u, %ssuspended)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "ஸ்டீரிம் சாதனம் இடைநீக்கப்பட்டது.%s \n" +msgid "Stream error: %s" +msgstr "ஸ்டிரீம் பிழை: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "ஸ்டீரிம் சாதனம் தொடர்கிறது.%s \n" +msgid "Stream device suspended.%s" +msgstr "ஸ்டீரிம் சாதனம் இடைநீக்கப்பட்டது.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "ஸ்டீரிம் இயங்குகிறது.%s \n" +msgid "Stream device resumed.%s" +msgstr "ஸ்டீரிம் சாதனம் தொடர்கிறது.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "ஸ்டீரிம் அதிகளவு இயங்கியது.%s \n" +msgid "Stream underrun.%s" +msgstr "ஸ்டீரிம் இயங்குகிறது.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "ஸ்டிரீம் %s துவக்கப்பட்டது \n" +msgid "Stream overrun.%s" +msgstr "ஸ்டீரிம் அதிகளவு இயங்கியது.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "ஸ்டிரீம் %s இயக்கிக்கு நகர்ந்தது (%u, %ssuspended).%s \n" +msgid "Stream started.%s" +msgstr "ஸ்டிரீம் %s துவக்கப்பட்டது" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "ஸ்டிரீம் %s சாதனத்திற்கு நகர்ந்தது (%u, %ssuspended).%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "இல்லை" -#: ../src/utils/pacat.c:378 -#, fuzzy, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "ஸ்டீரிம் இயங்குகிறது.%s \n" - -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Connection established.%s \n" -msgstr "இணைப்பு துவக்கப்பட்டது.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "ஸ்டீரிம் ஃபப்பர் பண்புகளை மாற்றப்பட்டது.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:415 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() தோல்வியுற்றது: %s\n" +msgid "Connection established.%s" +msgstr "இணைப்பு துவக்கப்பட்டது.%s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() தோல்வியுற்றது: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() தோல்வியுற்றது: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:452 #, c-format -msgid "Connection failure: %s\n" -msgstr "இணைப்பதில் தோல்வி: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF கிடைக்கப் பெற்றது\n" - -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "read() failed: %s\n" -msgstr "வாசிப்பதில் () தோல்வியுற்றது: %s\n" +msgid "Connection failure: %s" +msgstr "இணைப்பதில் தோல்வி: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF கிடைக்கப் பெற்றது" + +#: ../src/utils/pacat.c:536 #, c-format -msgid "write() failed: %s\n" -msgstr "எழுதுவதில் () தோல்வியுற்றது: %s\n" +msgid "write() failed: %s" +msgstr "எழுதுவதில் () தோல்வியுற்றது: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "சிக்னல் கிடைத்தது, வெளியேறுகிறது.\n" +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "சிக்னல் கிடைத்தது, வெளியேறுகிறது." -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:571 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "லடன்சியை பெற முடியவில்லை: %s\n" +msgid "Failed to get latency: %s" +msgstr "லடன்சியை பெற முடியவில்லை: %s" -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "Time: %0.3f sec; Latency: %0.0f usec. \r" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "Time: %0.3f sec; Latency: %0.0f usec." -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() தோல்வி: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() தோல்வி: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1523,8 +1415,10 @@ msgstr "" "44100)\n" " --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" " --channels=CHANNELS The number of channels, 1 for mono, " "2 for stereo\n" " (defaults to 2)\n" @@ -1547,6 +1441,11 @@ msgstr "" "bytes.\n" " --process-time=BYTES Request the specified process time " "per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1559,136 +1458,129 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "தவறான சேனல் வரைபடம் '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "தவறான மறுமாதிரி முறை '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "தவறான சேனல் வரைபடம் '%s'\n" +msgid "Invalid client name '%s'" +msgstr "தவறான கிளையன் பெயர் '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "தவறான லேடன்சி குறிப்பீடு '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "தவறான ஸ்டீரீம் பெயர் '%s'." -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "தவறான செயல் நேர குறிப்பீடு '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "தவறான சேனல் வரைபடம் '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "தவறான மறுமாதிரி முறை '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "தவறான லேடன்சி குறிப்பீடு '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "தவறான செயல் நேர குறிப்பீடு '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "தவறான தன்மை '%s'." + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "தெரியாத கோப்பு வடிவம் %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "தவறான மாதிரி குறிப்பீடு\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "தவறான மாதிரி குறிப்பீடு" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "நிறைய விவாதங்கள்.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "நிறைய விவாதங்கள்." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "மாதிரி தகவலை பெற முடியவில்லை.: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "மாதிரி தகவலை பெற முடியவில்லை.: %s" -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "ஒலி கோப்பினை திறக்க முடியவில்லை.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ஒலி கோப்பினை திறக்க முடியவில்லை." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"எச்சரிக்கை: கோப்பிலிருந்து குறிப்பீட்டுடன் குறிக்கிட்ட மாதிரி குறிப்பீடு மேலெழுதப்படலாம்." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "மாதிரி தகவலை பெற முடியவில்லை.: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "கோப்பிலிருந்து மாதிரி குறிப்பீட்டை வரையறுக்க முடியவில்லை." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "சேனல் மேப் மாதிரி குறிப்பீட்டுடன் பொருந்தவில்லை\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "எச்சரிக்கை: கோப்பிலிருந்து சேனல் வரைபடத்தை வரையறுக்க முடியவில்லை." + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "சேனல் வரைபடம் மாதிரி குறிப்பீட்டுடன் பொருந்தவில்லை" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "எச்சரிக்கை: கோப்புக்கு சேனல் வரைபடத்தை எழுத முடியவில்லை." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"ஒரு %s ஸ்டீரம் மாதிரி குறிப்பீட்டை '%s' மற்றும் சேனல் வரைபட்டம் '%s' உடன் திறக்கிறது." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "ஒரு %s ஸ்டீரமை மாதிரி குறிப்பீடு '%s'உடன் திறக்கிறது.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "ஒலிப்பதிவு" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "பிண்ணனி" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() தோல்வி." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() தோல்வியுற்றது." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() தோல்வி." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() தோல்வி.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_புதிய() தோல்வியுற்றது.(_n) \n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() தோல்வி.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() தோல்வி: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() தோல்வி.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() தோல்வியுற்றது." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() தோல்வி.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() தோல்வி." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1715,7 +1607,12 @@ msgstr "தொடர முடியவில்லை: %s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "எச்சரிக்கை: ஒலி சேவையம் உள்ளமைவாக இல்லை, இடைநிறுத்தப்படவில்லை.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "இணைப்பதில் தோல்வி: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT பெறப்பட்டது, வெளியேறுகிறது.\n" @@ -1754,33 +1651,48 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "புள்ளிவிவரத்தை பெற இயலாது: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() தோல்வி.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() தோல்வி.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() தோல்வி.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "புள்ளிவிவரத்தை பெற முடியவில்லை: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "தற்போது பயனிலுள்ளது: %u தொகுதிகள் %s பைட்களை மொத்தமாக கொண்டுள்ளது.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "வாழ்க்கை முழுவதும் ஒதுக்கப்பட்டது: %u தொகுதிகள் %s பைட்களை மொத்தமாக கொண்டுள்ளது.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "மாதிரி இடையக அளவு: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "சேவையகத்தின் தகவலை பெற இயலவில்லை: %s\n" +msgid "Failed to get server information: %s" +msgstr "சேவையகத்தின் தகவலை பெற முடியவில்லை: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1803,12 +1715,12 @@ msgstr "" "முன்னிருப்பு மூலங்கள்: %s\n" "கூக்கி: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "சுருக்கமான தகவலை பெறு முடியவில்லை: %s\n" +msgid "Failed to get sink information: %s" +msgstr "சுருக்கமான தகவலை பெறு முடியவில்லை: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1847,22 +1759,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 +#, c-format msgid "\tPorts:\n" -msgstr "\tவிவரக்குறிப்புகள்:\n" +msgstr "\tPorts:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format msgid "\tActive Port: %s\n" msgstr "\tசெயல்பாட்டிலுள்ள விவரக்குறிப்புகள்: %s\n" -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:297 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "மூலத்தின் தகவலை பெற இயலவில்லை: %s\n" +msgid "Failed to get source information: %s" +msgstr "மூலத்தின் தகவலை பெற இயலவில்லை: %s" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1901,20 +1813,20 @@ msgstr "" "\tபண்புகள்:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "தொகுதி தகவலை பெற முடியவில்லை: %s\n" +msgid "Failed to get module information: %s" +msgstr "தொகுதி தகவலை பெற முடியவில்லை: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1931,12 +1843,12 @@ msgstr "" "\tபண்புகள்:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "கிளையன்ட் தகவலை பெற முடியவில்லை: %s\n" +msgid "Failed to get client information: %s" +msgstr "கிளையன்ட் தகவலை பெற முடியவில்லை: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1951,12 +1863,12 @@ msgstr "" "\tபண்புகள்:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "அட்டை தகவலை பெற முடியவில்லை: %s\n" +msgid "Failed to get card information: %s" +msgstr "அட்டை தகவலை பெற முடியவில்லை: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1973,22 +1885,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tவிவரக்குறிப்புகள்:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tசெயல்பாட்டிலுள்ள விவரக்குறிப்புகள்: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "சிங்க் தகவலை பெற முடியவில்லை: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "சிங்க் தகவலை பெற முடியவில்லை: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2025,12 +1937,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "மூல வெளிப்பாடு தகவலை பெற முடியவில்லை: %s\n" +msgid "Failed to get source output information: %s" +msgstr "மூல வெளிப்பாடு தகவலை பெற முடியவில்லை: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2059,12 +1971,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "மாதிரி தகவலை பெற முடியவில்லை.: %s\n" +msgid "Failed to get sample information: %s" +msgstr "மாதிரி தகவலை பெற முடியவில்லை.: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2095,22 +2007,26 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "தோல்வி: %s\n" +msgid "Failure: %s" +msgstr "தோல்வி: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "மாதிரியை மேம்படுத்த முடியவில்லை: %s\n" +msgid "Failed to upload sample: %s" +msgstr "மாதிரியை மேம்படுத்த முடியவில்லை: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "முன்னாக கோப்பு முடித்தல்\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "முன்னாக கோப்பு முடித்தல்" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT பெறப்பட்டது, வெளியேறுகிறது." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2118,15 +2034,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2142,13 +2064,21 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2158,7 +2088,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2169,83 +2099,108 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "ஏற்றுவதற்கு ஒரு மாதிரி கோப்பினை குறிப்பிடவும்\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "ஒலி கோப்பினை திறக்க முடியவில்லை.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "ஒரு %s ஸ்டீரமை மாதிரி குறிப்பீடு '%s'உடன் திறக்கிறது.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "இயக்கிவதற்கு நீங்கள் ஒரு மாதிரி பெயர் குறிப்பிட வேண்டும்\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "நீக்குவதற்கு நீங்கள் ஒரு மாதிரி பெயர் குறிப்பிட வேண்டும்\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "நீங்கள் ஒரு சிங்க் உள்ளீடு சுட்டி மற்றும் ஒரு சிங்கை குறிப்பிட வேண்டும்\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "ஏற்றுவதற்கு ஒரு மாதிரி கோப்பினை குறிப்பிடவும்" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "நீங்கள் ஒரு மூல வெளிப்பாடு சுட்டி மற்றும் ஒரு மூலத்தை குறிப்பிட வேண்டும்\n" +msgid "Failed to open sound file." +msgstr "ஒலி கோப்பினை திறக்க முடியவில்லை." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "தொகுதி பெயர் மற்றும் விவாதங்களை நீங்கள் குறிப்பிட வேண்டும். \n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "எச்சரிக்கை: கோப்பிலிருந்து மாதிரி குறிப்பீட்டை வரையறுக்க முடியவில்லை." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "தொகுதி அட்டவணையை நீங்கள் குறிப்பிட வேண்டும்\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "இயக்கிவதற்கு நீங்கள் ஒரு மாதிரி பெயர் குறிப்பிட வேண்டும்" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "நீக்குவதற்கு நீங்கள் ஒரு மாதிரி பெயர் குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "நீங்கள் ஒரு சிங்க் உள்ளீடு சுட்டி மற்றும் ஒரு சிங்கை குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "நீங்கள் ஒரு மூல வெளிப்பாடு சுட்டி மற்றும் ஒரு மூலத்தை குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "தொகுதி பெயர் மற்றும் விவாதங்களை நீங்கள் குறிப்பிட வேண்டும்." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "தொகுதி அட்டவணையை நீங்கள் குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"ஒரு சிங்கிற்கு மேல் நீங்கள் குறிப்பிடக் கூடாது. பூலியன் மதிப்பை நீங்கள் குறிப்பிட வேண்டும்.\n" +"ஒரு சிங்கிற்கு மேல் நீங்கள் குறிப்பிடக் கூடாது. பூலியன் மதிப்பை நீங்கள் குறிப்பிட வேண்டும்." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"ஒரு மூலத்திற்கு மேல் நீங்கள் குறிப்பிடக் கூடாது. பூலியன் மதிப்பை நீங்கள் குறிப்பிட " -"வேண்டும்.\n" +"ஒரு மூலத்திற்கு மேல் நீங்கள் குறிப்பிடக் கூடாது. பூலியன் மதிப்பை நீங்கள் குறிப்பிட வேண்டும்." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "" -"ஒரு அட்டை பெயர்/ முன்பக்கம் மற்றும் ஒரு விவரச்சீட்டு பெயர் நீங்கள் குறிப்பிட வேண்டும் \n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "ஒரு அட்டை பெயர்/ முன்பக்கம் மற்றும் ஒரு விவரச்சீட்டு பெயர் நீங்கள் குறிப்பிட வேண்டும்" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "" -"ஒரு அட்டை பெயர்/ முன்பக்கம் மற்றும் ஒரு விவரச்சீட்டு பெயர் நீங்கள் குறிப்பிட வேண்டும் \n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "நீங்கள் ஒரு சிங்க் பெயர்/ முன்பக்கம் மற்றும் ஒரு துறைப் பெயரை குறிப்பிட வேண்டும்" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "" -"ஒரு அட்டை பெயர்/ முன்பக்கம் மற்றும் ஒரு விவரச்சீட்டு பெயர் நீங்கள் குறிப்பிட வேண்டும் \n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "ஒரு மூலப் பெயர்/ முன்பக்கம் மற்றும் ஒரு துறைப் பெயர் நீங்கள் குறிப்பிட வேண்டும்" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "சரியான கட்டளை குறிப்பிடபடவில்லை \n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "நீங்கள் ஒரு சிங்க் பெயர்/ முன்பக்கம் மற்றும் ஒரு துறைப் பெயரை குறிப்பிட வேண்டும்" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() தோல்வி: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "தவறான தொகுதி குறிப்பீடு" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "ஒரு மூலப் பெயர்/ முன்பக்கம் மற்றும் ஒரு துறைப் பெயர் நீங்கள் குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "நீங்கள் ஒரு சிங்க் உள்ளீடு சுட்டி மற்றும் ஒரு சிங்கை குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "தவறான சுருக்க உள்ளீடு அட்டவணை" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "நீங்கள் ஒரு சிங்க் பெயர்/ முன்பக்கம் மற்றும் ஒரு துறைப் பெயரை குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "ஒரு மூலப் பெயர்/ முன்பக்கம் மற்றும் ஒரு துறைப் பெயர் நீங்கள் குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "நீங்கள் ஒரு சிங்க் உள்ளீடு சுட்டி மற்றும் ஒரு சிங்கை குறிப்பிட வேண்டும்" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "தவறான சுருக்க உள்ளீடு அட்டவணை குறிப்பீடு" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "சரியான கட்டளை குறிப்பிடபடவில்லை" #: ../src/utils/pax11publish.c:61 #, c-format @@ -2326,48 +2281,48 @@ msgstr "குக்கீ தரவை ஏற்ற முடியவில் msgid "Not yet implemented.\n" msgstr "இன்னும் செயல்படுத்தபடவில்லை.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "PulseAudio டீமான் இயங்கவில்லை, அல்லது அமர்வு டீமானாக இயங்கவில்லை." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio daemonஐ நிறுத்த முடியவில்லை." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "டோமோன் பதிலளிக்க மறுக்கிறது." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "autospawn பூட்டை அணுக முடியவில்லை." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2377,8 +2332,14 @@ msgid "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"ALSA சாதனத்திற்கு புதிய தரவை எழுதுவதற்கு எங்களை எழுப்பி இருக்கவாம், ஆனால் இங்கே " +"சரியாக எழுதுவதற்கு எதுவும் இல்லை!\n" +"இந்த ஒரு பிழையானது ALSA இயக்கி '%s'. இந்த வெளிப்பாட்டை ALSA வல்லுநர்களுக்கு " +"அறிக்கையிடவும்.\n" +"POLLOUT அமைவுடன் நாங்கள் எழுந்திருந்தோம்-- எப்படியிருந்தும் அடுத்தடுத்து snd_pcm_avail" +"() r0 அல்லது வேறொரு மதிப்பு < min_avail திரும்பியது." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2388,123 +2349,30 @@ msgid "" "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"ALSA சாதனத்திற்கு புதிய தரவை எழுதுவதற்கு எங்களை எழுப்பி இருக்கவாம், ஆனால் இங்கே " +"சரியாக எழுதுவதற்கு எதுவும் இல்லை!\n" +"இந்த ஒரு பிழையானது ALSA இயக்கி '%s'. இந்த வெளிப்பாட்டை ALSA வல்லுநர்களுக்கு " +"அறிக்கையிடவும்.\n" +"POLLOUT அமைவுடன் நாங்கள் எழுந்திருந்தோம்-- எப்படியிருந்தும் அடுத்தடுத்து snd_pcm_avail" +"() 0 அல்லது வேறொரு மதிப்பு < min_avail திரும்பியது." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" -msgstr "" +msgstr "ஆஃப்" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" -msgstr "" +msgstr "High Fidelity Playback (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "High Fidelity Capture (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" -msgstr "" +msgstr "Telephony Duplex (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 -#, fuzzy msgid "PulseAudio Sound Server" -msgstr "பள்ஸ் ஆடியோ ஒலி கணினி" - -#~ msgid "Analog Mono" -#~ msgstr "Analog Mono" - -#~ msgid "Analog Stereo" -#~ msgstr "Analog Stereo" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "Digital Stereo (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "Digital Stereo (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "Analog Surround 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "Digital Surround 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "Analog Surround 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "Analog Surround 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "Analog Surround 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "Digital Surround 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "Analog Surround 7.1" - -#~ msgid "Stream successfully created\n" -#~ msgstr "ஸ்டிரீம் வெற்றிகரமாக உருவாக்கப்பட்டது\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "ஸ்டிரீம் பிழை: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "இணைப்பினை ஏற்படுத்துகிறது.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "தவறான சேனல் வரைபடம் \n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "கோப்பு '%s'ஐ திறக்க முடியவில்லை\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "சேனல் வரைபடம் கோப்புடன் ஒத்துப் பொகவில்லை.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "மாதிரி குறிப்பீடு '%s'ஐ பயன்படுத்தி\n" +msgstr "PulseAudio ஒலி சேவையகம்" diff --git a/po/te.po b/po/te.po index d4f79e068..778c283ae 100644 --- a/po/te.po +++ b/po/te.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio.master-tx.te\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-08 18:21+0530\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-10 16:54+0530\n" "Last-Translator: Krishna Babu K \n" "Language-Team: Telugu \n" "MIME-Version: 1.0\n" @@ -20,8 +20,15 @@ msgstr "" "\n" "\n" "\n" +"\n" +"\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -33,7 +40,7 @@ msgstr "" "సాదారణంగా యిది ALSA డ్రైవర్ '%s' నందలి బగ్ కావచ్చును. దయచేసి దీనిని ALSA అభివృద్ది కారులకు " "నివేదించుము." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -45,7 +52,7 @@ msgstr "" "సాదారణంగా యిది ALSA డ్రైవర్ '%s' నందు బగ్ కావచ్చును . దయచేసి దీనిని ALSA అభివృద్దికారులక " "నివేదించుము." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -56,9 +63,17 @@ msgstr "" "snd_pcm_mmap_begin() అనునది పెద్ద విలువను యిచ్చినది: %lu bytes (%lu ms).\n" "సాదారణంగా యిది ALSA డ్రైవర్ '%s'నందలి బగ్ కావచ్చును. దయచేసి దీనిని ALSA అభివృద్దికారులను నివేదించండి." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "ఒకవేళ అది null అయినా కూడా యెల్లప్పుడూ కనీసం వొక సింకు లోడైనట్లు వుంచుతుంది" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "డమ్మీ అవుట్పుట్" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "వర్చ్యువల్ LADSPA సింకు" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -68,12 +83,24 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name=<సింక్ నామము> sink_properties=<సింకు లక్షణములు> master=<ఫిల్టర్‌కు సింకు " +"నామము> format=<మాదిరి ఫార్మాట్> rate=<మాదిరి రేటు> channels=<చానల్సు సంఖ్య> " +"channel_map=<చానల్ మాప్> plugin= label= " +"control=<ఇన్పుట్ నియంత్రణ విలువలయొక్క జాబితా>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "NULL సింక్ క్లాక్‌చేయబడింది" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "Null అవుట్పుట్" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "అంతర్గత ఆడియో" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "మోడెమ్" @@ -89,364 +116,246 @@ msgstr "కొత్త dl లోడర్ కేటాయించుటలో msgid "Failed to add bind-now-loader." msgstr "bind-now-loader జతచేయుటకు విఫలమైంది." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "సిస్టమ్ బస్‌నకు అనుసంధానము కాలేకపోయింది: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "PID నుండి కాలర్‌ను పొందలేక పోయింది: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "కాలర్ ఆబ్జక్టునందు UIDను అమర్చలేక పోయింది." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "CK సెషన్ పొందుటకు విఫలమైంది." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "సెషన్ ఆబ్జక్టునందు UIDను అమర్చ లేకపోయింది." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "PolKitAction చిరునామాను కేటాయించలేక పోయింది." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "action_id అమర్చలేక పోయింది" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "PolKitContext కేటాయించలేక పోయింది." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "PolKitContext సిద్దము చేయలేక పోయింది: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "కాలర్ అధికారము కలదో లేదో నిర్ణయించలేక పోయింది: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "దృవీకరణ పొందలేక పోయింది: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit స్పందిచినది దీనితో '%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "సంకేతము %s పొందినది." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "నిష్క్రమించుచున్నది." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "వినియోగదారి '%s'ను కనుగొనుటకు విఫలమైంది." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "సమూహం '%s' కనుగొనుటకు విఫలమైంది." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "వినియోగదారి '%s' (UID %lu) మరియు సమూహము '%s' (GID %lu) కనబడినవి." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "వినియోగదారి '%s' మరియు సమూహము '%s' యొక్క GID సరితూగలేదు." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "వినియోగదారి '%s' యొక్క నివాస డైరెక్టరీ '%s' కాదు, వదిలివేయుచున్నది." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "'%s' సృష్టించుటకు విఫలమైంది: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "సమూహ జాబితా మార్చుటకు విఫలమైంది: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "GID మార్చుటకు విఫలమైంది: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "UID మార్చటకు విఫలమైంది: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "root అనుమతులు విజయవంతంగా తిసివేయబడినాయి." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "ఈ ప్లాట్‌ఫాం నందు సిస్టమ్ తరహా రీతి మద్దతీయబడదు." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) విఫలమైంది: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "ఆదేశ వరుసను పార్శ్ చేయుటకు విఫలమైంది." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "మనము సమూహము '%s' నందు వున్నాము, అదిక-ప్రాముఖ్యతా పణాళికను అనుమతించుచున్నది." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "మనము సమూహము '%s' నందు వున్నాము, వాస్తవ-సమయ ప్రణాళికను అనుమతించుచున్నది." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit మనకు acquire-high-priority అనుమతిని యిచ్చుచున్నది." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit అనునది acquire-high-priority అనుమతిని తిరస్కరించుచున్నది." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit మనకు acquire-real-time అనుమతిని యిచ్చుచున్నది." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit acquire-real-time అనుమతిని తిరస్కరించుచున్నది." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"SUID root కాల్ చేసింది మరియు వాస్తవ-సమయ మరియు/లేదా అదిక-ప్రాముఖ్యత ప్రణాళిక అభ్యర్ధింబడింది " -"ఆకృతీకరణనందు. ఏమైనప్పుటికి, మనకు అవసరమైన అనుమతలు లోపించినవి:\n" -"మనము సమూహం '%s' నందు లేము, PolicyKit అనునది మనకు అభ్యర్దించిన అనుమతులను యిచ్చుటకు " -"నిరాకరించినది మరియు మనము వృద్ది RLIMIT_NICE/RLIMIT_RTPRIO వనరు పరిమితులను కలిగిలేము.\n" -"వాస్తవ-సమయ/అధిక-ప్రాముఖ్య ప్రణాళికను చేతనపరచుటకు దయచేసి సరైన PolicyKit అనుమతులను పొందుము, " -"లేదా '%s' యొక్క సభ్యునివి కమ్ము, లేదా ఈ వినియోగదారికి RLIMIT_NICE/RLIMIT_RTPRIO వనరు " -"పరిమితులను పెంచుము." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "అధిక-ప్రాముఖ్యతా ప్రణాళిక ఆకృతీకరణనందు చేతనముచేయబడింది కాని విధానము ద్వారా అనుమతించబడింది." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "సమర్ధవంతంగా RLIMIT_RTPRIOను పెంచినది" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO విఫలమైంది: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "CAP_NICE యిస్తోంది" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "వాస్తవ-సమయ ప్రణాళిక ఆకృతీకరణనందు చేతనంచేయబడింది కాని విధానము ద్వారా అనుమతించబడలేదు." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "డెమోన్ నడుచుట లేదు" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "డెమోన్ PID %u వలె నడుచుచున్నది" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "డెమోన్ చంపుటకు విఫలమైంది: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "ఈ ప్రోగ్రామ్ root లా నడుపవలసింది కాదు (--system తెలిపితే తప్ప)" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Root అనుమతులు అవసరము." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "--start సిస్టమ్ సంభవాల ద్వారా మద్దతీయబడదు." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "సిస్టమ్ మోడ్ నందు నడుపుతోంది, అయితే --disallow-exit అమర్చలేదు!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "సిస్టమ్ రీతినందు నడుచుచున్నది, అయితే --disallow-module-loading అమర్చలేదు!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "సిస్టమ్ రీతినందు నడుపుచున్నది, బలవంతంగా SHM రీతిని అచేతనము చేస్తోంది!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "సిస్టమ్ రీతినందు నడుచుచున్నది, బలవంతంగా నిష్క్రమణ వృధా సమయాన్ని అచేతనము చేయుచున్నది!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "stdio పొందుటకు విఫలమైంది." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "పైర్ విఫలమైంది: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork() విఫలమైంది: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read() విఫలమైంది: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "డెమోన్ ప్రారంభం విఫలమైంది." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "డెమోన్ ప్రారంభము సఫలమైంది." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "ఇది PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "నిర్వర్తన హోస్టు: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "నిర్వర్తన CFLAGS: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "హోస్టును నడుపుచున్నది: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "%u CPUలను కనుగొన్నది." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "పేజీ పరిమాణము %lu బైట్లు" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Valgrind మద్దతుతో నిర్వర్తించబడింది: అవును" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Valgrind మద్దతుతో నిర్వర్తించబడింది: లేదు" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "valgrind రీతినందు నడుపుచున్నది: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "ఆప్టిమైజ్డు బుల్డు: అవును" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "ఆప్టిమైజ్డు బుల్డు: కాదు" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "NDEBUG నిర్వచించబడింది, అన్ని స్థిరరాశులు అచేతనమైనవి." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "FASTPATH నిర్వచించబడింది, ఫాస్ట్ పాత్ స్థిరరాశులు మాత్రమే అచేతనమైనవి." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "అన్ని స్థిరరాశులు చేతనమైనవి." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "మిషన్ ID పొందుటకు విఫలమైంది" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "మిషన్ ID %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "మిషన్ ID %s." +msgstr "సెషన్ ID %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "రన్‌టైమ్ డైరెక్టరీను వుపయోగించుచున్నది %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "స్థితి డైరెక్టరీను వుపయోగించుచున్నది %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "మాడ్యూళ్ళ డైరెక్టరీ %s వుపయోగిస్తోంది." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "సిస్టమ్ రీతినందు వుపయోగించుచున్నది: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -455,42 +364,46 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"సరే, అయితే మీరు PAను సిస్టమ్ రీతినందు నడుపుతున్నారు. మీరు అలా చేయకూడదని దయచేసి గమనించండి.\n" +"ఒకవేళ మీరు అలా చేస్తే తరువాత మీరు అనుకొన్నట్లు పనిచేయకపోతే అది యిక మీ తప్పే.\n" +"సిస్టమ్ రీతి అనునది సరైనటువంటిది యెందుకు కాదో వివరణ కొరకు దయచేసి యిక్కడ చదవండి http://" +"pulseaudio.org/wiki/WhatIsWrongWithSystemMode" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create() విఫలమైంది." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "తాజా అధిక-తీవ్రత కాలసూచికలు అందుబాటులో వున్నాయి! బాన్ ఎపటైట్!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "మిత్రమా, నీ కెర్నల్ చెడిపోయింది! అధిక-తీవ్రత కాలసూచకిలను చేతనము చేయమని సూచించడమైనది!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new() విఫలమైంది." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "డెమోన్ సిద్దముచేయుటకు విఫలమైంది." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "ఏవిధమైన మాడ్యూళ్ళు లోడవకుండా డెమోన్ ప్రారంభము, పనిచేయుటకు తిరస్కరించబడింది." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "డెమోన్ ప్రారంభము పూర్తైనది." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "డెమోన్ మూసివేత సిద్దముచేయబడింది." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "డెమోన్ అంతముచేయబడింది." @@ -740,79 +653,79 @@ msgstr "ఒకసారి లోడుచేయుము: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "తీసివేత హెచ్చరిక: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "పాత్: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] చెల్లని లాగ్ లక్ష్యము '%s'." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] చెల్లని లాగ్ స్థాయి '%s'." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] చెల్లని పునఃవుదాహరణ పద్దతి '%s'." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] చెల్లని rlimit '%s'." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit అనునది ఈ ప్లాట్‌ఫాం నందు మద్దతివ్వబడదు." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] చెల్లని మాదిరి ఫార్మాట్ '%s'." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] చెల్లని మాదిరి రేటు '%s'." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] చెల్లని మాదిరి చానళ్ళు '%s'." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] చెల్లని ఛానల్ మాప్ '%s'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] చెల్లని ముక్కలు సంఖ్య '%s'." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] చెల్లని ముక్క పరిమాణము '%s'." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] చెల్లని సాదా స్థాయి '%s'." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "ఆకృతీకరణ దస్త్రమును తెరుచుటకు విఫలమైంది: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -820,18 +733,14 @@ msgstr "" "తెలుపబడిన అప్రమేయ ప్రాసారమార్గం మాప్ తెలుపబడిన అప్రమేయ ప్రసారమార్గముల కన్నా విభిన్న ప్రసారమార్గముల " "సంఖ్యను కలిగివుంది." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### ఆకృతీకరణ దస్త్రమునుండి చదువుము: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "root అనుమతులను తీసివేయుచున్నది." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "సామర్ధ్యాలను CAP_SYS_NICE కు సమర్దవంతంగా పరిమితం చేయబడినవి." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "అనుమతులను శుభ్రపరచుచున్నది." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -841,25 +750,7 @@ msgstr "PulseAudio శబ్దపు సిస్టమ్" msgid "Start the PulseAudio Sound System" msgstr "PulseAudio శబ్దపు సిస్టమ్‌ను ప్రారంభించుము" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "అధిక-ప్రాముఖ్యతా ప్రణాళిక (ఋణ యునిక్స్ సాదా స్థాయి) PulseAudio డెమోన్‌కు" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio డెమోన్‌ కొరకు వాస్తవ-సమయ ప్రణాళిక" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "సిస్టమ్ విధానము PulseAudio అధిక-ప్రాముఖ్యతా ప్రణాళికను పొందకుండా నిరోధిస్తున్నది." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "సిస్టమ్ విధానము PulseAudio వాస్తవ-సమయ ప్రణాళికను పొందకుండా నిరోధిస్తోంది." - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "మోనో" @@ -1063,33 +954,33 @@ msgstr "పైన వెనుక ఎడమవైపు" msgid "Top Rear Right" msgstr "పైన వెనుక కుడివైపున" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(చెల్లని)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "స్టీరియో" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "సరౌండ్ 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "సరౌండ్ 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "సరౌండ్ 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "సరౌండ్ 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "సరౌండ్ 7.1" @@ -1193,27 +1084,35 @@ msgstr "తప్పిపోయిన యింప్లిమెంటేష msgid "Client forked" msgstr "కక్షిదారి పోర్క్ చేసిన" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1226,192 +1125,191 @@ msgstr "XOpenDisplay() విఫలమైంది" msgid "Failed to parse cookie data" msgstr "కుకీ డాటా పార్శ్ చేయుటకు విఫలమైంది" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "ఆకృతీకరణ దస్త్రము '%s' తెరువుటకు విఫలమైంది: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "ఏ కుకీ లోడవలేదు. లేకుండా అనుసంధానమగుటకు ప్రయత్నిస్తోంది." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "తెలియని పొడిగింపు కొరకు సందేశము స్వీకరించింది '%s'" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "స్ట్రీమ్ ఎండగట్టుటకు విఫలమైంది: %s\n" +msgid "Failed to drain stream: %s" +msgstr "స్ట్రీమ్‌ను డ్రైయిన్ చేయుటకు విఫలమైంది: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "ప్లేబ్యాక్ స్ట్రీమ్ ఎండగట్టినది.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "ప్లేబ్యాక్ స్ట్రీమ్ డ్రెయిన్ అయినది." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "సేవికకు అనుసంధానమును నశింపచేస్తోంది.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "సేవికకు అనుసంధానమును ఎండగట్టుచున్నది." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "pa_stream_write() విఫలమైంది: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "pa_stream_write() విఫలమైంది: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "pa_stream_peek() విఫలమైంది: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_begin_write() విఫలమైంది: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "స్ట్రీమ్ సమర్ధవంతంగా సృష్టించబడింది.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "pa_stream_get_buffer_attr() విఫలమైంది: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "pa_stream_peek() విఫలమైంది: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "స్ట్రీమ్ సమర్ధవంతంగా సృష్టించబడింది." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "pa_stream_get_buffer_attr() విఫలమైంది: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Buffer metrics: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "బఫర్ ప్రమాణాలు: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "సాదారణ విశదీకరణ(స్పెక్) '%s' వుపయోగిస్తోంది, ప్రసారమార్గం మాప్ '%s'.\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "బఫర్ ప్రమాణాలు: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "పరికరము %s (%u, %ssuspended) కు అనుసంధానించబడింది.\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "సాదారణ విశదీకరణ(స్పెక్) '%s' వుపయోగిస్తోంది, ప్రసారమార్గం మాప్ '%s'." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "స్ట్రీమ్ దోషము: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "పరికరము %s (%u, %ssuspended) కు అనుసంధానించబడింది." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "స్ట్రీమ్ పరికరము అర్దాంతరముగా నిలిపివేయి.%s \n" +msgid "Stream error: %s" +msgstr "స్ట్రీమ్ దోషము: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "స్ట్రీమ్ పరికరము తిరిగికొనసాగించబడింది.%s \n" +msgid "Stream device suspended.%s" +msgstr "స్ట్రీమ్ పరికరము అర్దాంతరముగా నిలిపివేయబడింది.%s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "స్ట్రీమ్ తక్కువగానడుచుచున్నది.%s \n" +msgid "Stream device resumed.%s" +msgstr "స్ట్రీమ్ పరికరము తిరిగికొనసాగించబడింది.%s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "స్ట్రీమ్ మించినడుచుచున్నది.%s \n" +msgid "Stream underrun.%s" +msgstr "స్ట్రీమ్ తక్కువగానడుచుచున్నది.%s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "స్ట్రీమ్ ప్రారంభమైంది.%s \n" +msgid "Stream overrun.%s" +msgstr "స్ట్రీమ్ మించినడుచుచున్నది.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "స్ట్రీమ్ పరికరము %s (%u, %ssuspended) కు కదుపబడింది.%s \n" +msgid "Stream started.%s" +msgstr "స్ట్రీమ్ ప్రారంభమైంది.%s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "స్ట్రీమ్ పరికరము %s (%u, %ssuspended) కు కదుపబడింది.%s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "కాదు " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 #, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "స్ట్రీమ్ బఫర్ యాట్రిబ్యూట్లు మార్చబడినవి.%s \n" +msgid "Stream buffer attributes changed.%s" +msgstr "స్ట్రీమ్ బఫర్ యాట్రిబ్యూట్లు మార్చబడినవి.%s" -#: ../src/utils/pacat.c:411 +#: ../src/utils/pacat.c:415 #, c-format -msgid "Connection established.%s \n" -msgstr "అనుసంధానము ఏర్పడినది.%s \n" +msgid "Connection established.%s" +msgstr "అనుసంధానము ఏర్పడినది.%s" -#: ../src/utils/pacat.c:414 +#: ../src/utils/pacat.c:418 #, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "pa_stream_new() విఫలమైంది: %s\n" +msgid "pa_stream_new() failed: %s" +msgstr "pa_stream_new() విఫలమైంది: %s" -#: ../src/utils/pacat.c:442 +#: ../src/utils/pacat.c:446 #, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "pa_stream_connect_playback() విఫలమైంది: %s\n" +msgid "pa_stream_connect_playback() failed: %s" +msgstr "pa_stream_connect_playback() విఫలమైంది: %s" -#: ../src/utils/pacat.c:448 +#: ../src/utils/pacat.c:452 #, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "pa_stream_connect_record() విఫలమైంది: %s\n" +msgid "pa_stream_connect_record() failed: %s" +msgstr "pa_stream_connect_record() విఫలమైంది: %s" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 #, c-format -msgid "Connection failure: %s\n" -msgstr "అనుసంధానము వైఫల్యము: %s\n" +msgid "Connection failure: %s" +msgstr "అనుసంధానము వైఫల్యము: %s" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "EOF పొందింది.\n" +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "EOF పొందింది." -#: ../src/utils/pacat.c:500 +#: ../src/utils/pacat.c:536 #, c-format -msgid "read() failed: %s\n" -msgstr "read() విఫలమైంది: %s\n" +msgid "write() failed: %s" +msgstr "write() విఫలమైంది: %s" -#: ../src/utils/pacat.c:532 +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "సంకేతము పొందినది, నిష్క్రమించుచున్నది." + +#: ../src/utils/pacat.c:571 #, c-format -msgid "write() failed: %s\n" -msgstr "write() విఫలమైంది: %s\n" +msgid "Failed to get latency: %s" +msgstr "లేటెన్సీని పొందుటలో విఫలమైంది: %s" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "సంకేతము పొందినది, నిష్క్రమించుచున్నది.\n" - -#: ../src/utils/pacat.c:567 +#: ../src/utils/pacat.c:576 #, c-format -msgid "Failed to get latency: %s\n" -msgstr "క్రియాహీనతను పొందుటలో విఫలమైంది: %s\n" +msgid "Time: %0.3f sec; Latency: %0.0f usec." +msgstr "సమయం: %0.3f సెకను; లెటెన్సీ: %0.0f usec." -#: ../src/utils/pacat.c:572 +#: ../src/utils/pacat.c:595 #, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" -msgstr "సమయం: %0.3f sec; క్రియాహీనత: %0.0f usec. \r" - -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" -msgstr "pa_stream_update_timing_info() విఫలమైంది: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" +msgstr "pa_stream_update_timing_info() విఫలమైంది: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1493,8 +1391,10 @@ msgstr "" "44100)\n" " --format=SAMPLEFORMAT The sample type, one of s16le, " "s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be " -"(defaults to s16ne)\n" +" float32be, ulaw, alaw, s32le, s32be, " +"s24le, s24be,\n" +" s24-32le, s24-32be (defaults to " +"s16ne)\n" " --channels=CHANNELS The number of channels, 1 for mono, " "2 for stereo\n" " (defaults to 2)\n" @@ -1517,6 +1417,11 @@ msgstr "" "bytes.\n" " --process-time=BYTES Request the specified process time " "per request in bytes.\n" +" --property=PROPERTY=VALUE Set the specified property to the " +"specified value.\n" +" --raw Record/play raw PCM data.\n" +" --file-format=FFORMAT Record/play formatted PCM data.\n" +" --list-file-formats List available file formats.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1529,136 +1434,127 @@ msgstr "" "libpulse తో నిర్వర్తించబడింది %s\n" "libpulse లింకైనది %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "చెల్లని ప్రసారమార్గ మాప్ '%s'\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "చెల్లని పునఃవుదాహరణ పద్దతి '%s'." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "చెల్లని ప్రసారమార్గ మాప్ '%s'\n" +msgid "Invalid client name '%s'" +msgstr "చెల్లని కక్షిదారి నామము '%s'" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "చెల్లని క్రియాహీన విశదీకరణము '%s'\n" +msgid "Invalid stream name '%s'" +msgstr "చెల్లని స్ట్రీమ్ నామము '%s'" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "చెల్లని కార్యక్రమము సమయ విశదీకరణ '%s'\n" +msgid "Invalid channel map '%s'" +msgstr "చెల్లని ప్రసారమార్గ మాప్ '%s'" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "చెల్లని పునఃవుదాహరణ పద్దతి '%s'." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "చెల్లని లేటెన్సీ విశదీకరణము '%s'" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "చెల్లని కార్యక్రమము సమయ విశదీకరణ '%s'" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "చెల్లని లక్షణము '%s'" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "తెలియని ఫైలు ఫార్మాట్ %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "చెల్లనటువంటి మాదిరి విశదీకరణ\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "చెల్లనటువంటి మాదిరి విశదీకరణ" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "చాలా యెక్కువ ఆర్గుమెంట్లు.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "చాలా యెక్కువ ఆర్గుమెంట్లు." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "మాదిరి సమాచారము పొందుటకు విఫలమైంది: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "దస్త్రము కొరకు మాదిరి సమాచారము జనియింపచేయుటలో విఫలమైంది." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "శబ్దపు దస్త్రమును తెరువుటకు విఫలమైంది.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "ఆడియో ఫైలును తెరువుటకు విఫలమైంది." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" +"specification from file." +msgstr "హెచ్చరిక: తెలుపబడిన మాదిరి విశదీకరణ దస్త్రమునుండి వచ్చు విశదీకరణతో తిరిగివ్రాయబడుతుంది." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "మాదిరి సమాచారము పొందుటకు విఫలమైంది: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "దస్త్రమునుండి మాదిరి విశదీకరణను నిర్ధారించుటలో విఫలమైంది." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "హెచ్చరిక: దస్త్రమునుండి ప్రసారమార్గ మాప్ నిర్ధారించుటలో విఫలమైంది." -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "ప్రసారమార్గ మాప్ మాదిరి విశదీకరణితో సరిపోలుటలేదు\n" +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "ప్రసారమార్గ మాప్ మాదిరి విశదీకరణితో సరిపోలుటలేదు" -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "హెచ్చరిక: ప్రసారమార్గ మాప్‌ను దస్త్రముకు వ్రాయుటలో విఫలమైంది." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "%s స్ట్రీమ్‌ను మాదిరి విశదీకరణ '%s' మరియు ప్రసారమార్గ మాప్ '%s'తో తెరుచుచున్నది." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "%s స్ట్రీమ్‌ను మాదిరి విశదీకరణి '%s'తో తెరుచుచున్నది.\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "రికార్డింగు" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "ప్లేబాక్" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "pa_mainloop_new() విఫలమైంది." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "io_new() విఫలమైంది." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "pa_context_new() విఫలమైంది." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "pa_mainloop_new() విఫలమైంది.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "io_new() విఫలమైంది.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "pa_context_new() విఫలమైంది.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect() విఫలమైంది: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new() విఫలమైంది.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_rttime_new() విఫలమైంది." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "pa_mainloop_run() విఫలమైంది.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "pa_mainloop_run() విఫలమైంది." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1685,7 +1581,12 @@ msgstr "తిరిగికొనసాగింపు వైఫల్యమ msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "హెచ్చరిక: శబ్ధపు సేవిక స్థానికం కాదు, అర్ధాంతరనిలుపుదల కావడంలేదు.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "అనుసంధానము వైఫల్యము: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "SIGINT పొందింది, నిష్క్రమించుచున్నది.\n" @@ -1725,32 +1626,47 @@ msgstr "" "libpulse తో నిర్వర్తించబడింది %s\n" "libpulse తో నిర్వర్తించబడింది %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "గణాంకాలను పొందుటకు విఫలమైంది: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new() విఫలమైంది.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new() విఫలమైంది.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run() విఫలమైంది.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "గణాంకాలను పొందుటకు విఫలమైంది: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "ప్రస్తుతం వుపయోగంలోవుంది: %u బ్లాక్‌లు %s బైట్లను మొత్తంగా కలిగి వున్నాయి.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "మొత్తం లైఫ్‌టైములో కేటాయించబడింది: %u బ్లాకులు %s బైట్లను మొత్తంగా కలిగివున్నాయి.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "మాదిరి క్యాచి పరిమాణము: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "సేవిక సమాచారమును పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get server information: %s" +msgstr "సేవిక సమాచారమును పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1773,12 +1689,12 @@ msgstr "" "అప్రమేయ మూలము: %s\n" "కుకీ: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "సింక్ సమాచారమును పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get sink information: %s" +msgstr "సింక్ సమాచారమును పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1817,22 +1733,22 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tప్రోఫైల్సు:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tక్రియాశీల ప్రొఫైల్: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "మూలము సమాచారము పొందుటకు విఫలమైంది: %s\n" +msgid "\tPorts:\n" +msgstr "\tపోర్టులు:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tక్రియాశీల పోర్టు: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "మూలము సమాచారము పొందుటకు విఫలమైంది: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1871,20 +1787,20 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "వర్తించదు" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "మాడ్యూల్ సమాచారము పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get module information: %s" +msgstr "మాడ్యూల్ సమాచారము పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1901,12 +1817,12 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "కక్షిదారి సమాచారము పొందుటలో విఫలమైంది: %s\n" +msgid "Failed to get client information: %s" +msgstr "కక్షిదారి సమాచారము పొందుటలో విఫలమైంది: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1921,12 +1837,12 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "కార్డు సమాచారము పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get card information: %s" +msgstr "కార్డు సమాచారము పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1943,22 +1859,22 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tప్రోఫైల్సు:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tక్రియాశీల ప్రొఫైల్: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "సింక్ ఇన్పుట్ సమాచారము పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "సింక్ ఇన్పుట్ సమాచారము పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1995,12 +1911,12 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "మూలపు అవుట్పుట్ సమాచారము పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get source output information: %s" +msgstr "మూలపు అవుట్పుట్ సమాచారము పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2029,12 +1945,12 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "మాదిరి సమాచారము పొందుటకు విఫలమైంది: %s\n" +msgid "Failed to get sample information: %s" +msgstr "మాదిరి సమాచారము పొందుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2065,22 +1981,26 @@ msgstr "" "\tలక్షణాలు:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "విఫైల్యము: %s\n" +msgid "Failure: %s" +msgstr "వైఫైల్యము: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "మాదిరి అప్‌లోడు చేయుటకు విఫలమైంది: %s\n" +msgid "Failed to upload sample: %s" +msgstr "మాదిరి అప్‌లోడు చేయుటకు విఫలమైంది: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "దస్త్రము యొక్క అపరిపక్వ ముగింపు\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "దస్త్రము యొక్క అపరిపక్వ ముగింపు" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "SIGINT పొందింది, నిష్క్రమించుచున్నది." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2088,15 +2008,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2112,13 +2038,21 @@ msgstr "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2128,7 +2062,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2139,79 +2073,108 @@ msgstr "" "libpulse తో నిర్వర్తించబడింది%s\n" "libpulse తో లింకుచేయబడింది %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "లోడువ్వుటకు దయచేసి మాదిరి దస్త్రమును తెలుపుము\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "శబ్దపు దస్త్రమును తెరువుటకు విఫలమైంది.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "%s స్ట్రీమ్‌ను మాదిరి విశదీకరణి '%s'తో తెరుచుచున్నది.\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "ప్లే చేయుటకు మీరు మాదిరి నామమును తెలుపవలసి వుంది\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "తొలగించుటకు మీరు మాదిరి నామమును తెలుపవలసి వుంది\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "మీరు సింక్ ఇన్పుట్ విషయసూచిక మరియు సింక్ తెలుపవలసి వుంది\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "లోడువ్వుటకు దయచేసి మాదిరి దస్త్రమును తెలుపుము" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "మీరు మూలము అవుట్పుట్ విషయసూచిక మరియు మూలము తెలుపవలసి వుంది\n" +msgid "Failed to open sound file." +msgstr "శబ్దపు దస్త్రమును తెరువుటకు విఫలమైంది." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "మీరు మాడ్యూల్ నామము మరియు ఆర్గుమెంట్లు తెలుపవలసి వుంది.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "హెచ్చరిక: దస్త్రమునుండి మాదిరి విశదీకరణను నిర్ణయించుటకు విఫలమైంది." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "మీరు మాడ్యూల్ విషయసూచిక తెలుపవలసి వుంది\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "ప్లే చేయుటకు మీరు మాదిరి నామమును తెలుపవలసి వుంది" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "తొలగించుటకు మీరు మాదిరి నామమును తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "మీరు సింక్ ఇన్పుట్ విషయసూచిక మరియు సింక్ తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "మీరు మూలము అవుట్పుట్ విషయసూచిక మరియు మూలము తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "మీరు మాడ్యూల్ నామము మరియు ఆర్గుమెంట్లు తెలుపవలసి వుంది." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "మీరు మాడ్యూల్ విషయసూచిక తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" -"మీరు వొక సింకు కన్నా యెక్కువ తెలుపవలసి వుండకపోవచ్చు. మీరు బూలియన్ విలువను తెలుపవలసి వుంది.\n" +"మీరు వొక సింకు కన్నా యెక్కువ తెలుపవలసి వుండకపోవచ్చు. మీరు బూలియన్ విలువను తెలుపవలసి వుంది." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" -"మీరు వొక మూలము కన్నా యెక్కువ తెలుపవలసి వుండకపోవచ్చు. మీరు బూలియన్ విలువను తెలుపవలసి వుంది.\n" +"మీరు వొక మూలము కన్నా యెక్కువ తెలుపవలసి వుండకపోవచ్చు. మీరు బూలియన్ విలువను తెలుపవలసి వుంది." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "మీరు కార్డ్ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "మీరు కార్డ్ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "మీరు కార్డ్ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "మీరు సింక్‌ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "మీరు కార్డ్ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "మీరు మూలము నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "ఎటువంటి విలువైన ఆదేశము తెలుపలేదు.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "మీరు సింక్ నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect() విఫలమైంది: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "చెల్లనటువంటి వాల్యూమ్ విశదీకరణ" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "మీరు మూలము నామము/విషయసూచిక మరియు ప్రొఫైల్ నామము తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "మీరు సింక్ ఇన్పుట్ విషయసూచిక మరియు వాల్యూమ్ తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "చెల్లని సింకు యిన్పుట్ విషయసూచిక" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "మీరు సింక్‌ నామము/విషయసూచిక మరియు మ్యూట్ బూలియన్ తెలుపవలసి వుంది" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "మీరు మూలపు నామము/విషయసూచిక మరియు మ్యూట్ బూలియన్ తెలుపవలసివుంది" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "మీరు సింక్ ఇన్పుట్ విషయసూచిక మరియు మ్యూట్ బూలియన్ తెలుపవలసివుంది" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "చెల్లనటువంటి సింకు యిన్పుట్ విషయసూచిక విశదీకరణ" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "ఎటువంటి విలువైన ఆదేశము తెలుపబడలేదు." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2292,48 +2255,48 @@ msgstr "కుకీ డాటా లోడు చేయుటకు విఫ msgid "Not yet implemented.\n" msgstr "ఇంకా యింప్లిమెంట్ చేయలేదు\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." -msgstr "" +msgstr "PulseAudio డెమోన్ నడుచుటలేదు, లేదా సెషన్ డెమోన్ వలె నడుచుటలేదు." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "PulseAudio డెమోన్ నాశనం చేయుటలో విఫలమైంది." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "డెమోన్ స్పందించుటలేదు." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "ఆటోస్పాన్ తాళంను యాక్సిస్ చేయలేదు." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2349,7 +2312,7 @@ msgstr "" "మనము POLLOUT అమర్పు ద్వారా జాగరూక పరచబడినాము -- ఏమైనప్పటికి snd_pcm_avail() అనునది 0 ను " "యిస్తుంది లేదా వేరొక విలువ < min_avail యిస్తుంది." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2366,129 +2329,22 @@ msgstr "" "యిస్తుంది లేదా వేరొక విలువ < min_avail యిస్తుంది." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "ఆఫ్" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "హై ఫెడిలిటి ప్లేబ్యాక్ (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "హై ఫెడిలిటి కాప్చర్ (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "టెలిఫోనీ డూప్లెక్స్ (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 msgid "PulseAudio Sound Server" msgstr "పల్స్ ఆడియో సౌండ్ సేవిక" - -#~ msgid "Analog Mono" -#~ msgstr "ఎనలాగ్ మోనో" - -#~ msgid "Analog Stereo" -#~ msgstr "ఎనలాగ్ స్టీరియో" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "డిజటల్ స్టీరియో (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "డిజిటల్ స్టీరియో (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "ఎనలాగ్ సరౌండ్ 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "డిజిటల్ సరౌండ్ 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "ఎనలాగ్ సరౌండ్ 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "ఎనలాగ్ సరౌండ్ 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "ఎనలాగ్ సరౌండ్ 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "డిజిటల్ సరౌండ్ 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "ఎనలాగ్ సరౌండ్ 7.1" - -#~ msgid "Output %s + Input %s" -#~ msgstr "అవుట్పుట్ %s + ఇన్పుట్ %s" - -#~ msgid "Output %s" -#~ msgstr "అవుట్పుట్ %s" - -#~ msgid "Input %s" -#~ msgstr "ఇన్పుట్ %s" - -#~ msgid "Stream successfully created\n" -#~ msgstr "స్ట్రీమ్ సమర్దవంతంగా సృష్టించబడింది\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "స్ట్రీమ్ దోషము: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "అనుసంధానము ఏర్పడలేదు.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "libpulse తో నిర్వర్తించబడింది%s\n" -#~ "libpulse తో లింకైనది %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "చెల్లని ప్రసార మార్గము\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "దస్త్రము '%s' తెరుచుటకు విఫలమైంది\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "ప్రసారమార్గం మాప్ అనునది దస్త్రముతో సరిపోల్చడంలేదు.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "మాదిరి విశదీకరణను వుపయోగిస్తోంది '%s'\n" diff --git a/po/uk.po b/po/uk.po index c8b21c371..b2315bd9f 100644 --- a/po/uk.po +++ b/po/uk.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" -"PO-Revision-Date: 2009-04-18 11:13+0300\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" +"PO-Revision-Date: 2009-09-05 16:47+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" @@ -17,7 +17,12 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "%s %s" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -30,7 +35,7 @@ msgstr "" "Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь ласка, повідомте " "про цю ваду розробникам ALSA." -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -43,7 +48,7 @@ msgstr "" "Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь ласка, повідомте " "про цю ваду розробникам ALSA." -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -56,9 +61,17 @@ msgstr "" "Ймовірно, ви натрапили на ваду у драйвері ALSA «%s». Будь ласка, повідомте " "про цю ваду розробникам ALSA." +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" -msgstr "" +msgstr "Віртуальний приймач LADSPA" #: ../src/modules/module-ladspa-sink.c:53 msgid "" @@ -68,12 +81,25 @@ msgid "" "plugin name> label= control=" msgstr "" +"sink_name=<назва приймача> sink_properties=<властивості приймача> " +"master=<назва приймача для фільтрування> format=<формат семплу> " +"rate=<частота вибірки> channels=<кількість каналів> channel_map=<карта " +"каналів> plugin=<назва додатка ladspa> label=<мітка додатка ladspa> " +"control=<розділений комами список значень вхідних параметрів>" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +msgid "Null Output" +msgstr "" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "Вбудоване аудіо" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "Модем" @@ -92,225 +118,92 @@ msgstr "" msgid "Failed to add bind-now-loader." msgstr "Не вдалося додати bind-now-loader." -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "Не вдалося з’єднатися з шиною системи: %s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "Не вдалося отримати джерело виклику від PID: %s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "Не вдалося встановити UID для об’єкта джерела виклику." - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "Не вдалося отримати CK сеансу." - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "Не вдалося встановити UID для об’єкта сеансу." - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "Не вдалося розмістити PolKitAction." - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "Не вдалося встановити action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "Не вдалося розмістити PolKitContext." - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "Не вдалося ініціалізувати PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "Не вдалося визначити чи уповноважено джерело виклику: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "Не вдалося отримати уповноваження: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit надіслала відповідь: «%s»" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "Отримано сигнал %s." -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "Завершення роботи." -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "Не вдалося знайти користувача «%s»." -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "Не вдалося знайти групу «%s»." -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "Знайдено користувача «%s» (UID %lu) і групу «%s» (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "GID користувача «%s» і групи «%s» не збігаються." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "Домашнім каталогом користувача «%s» не є «%s», дані проігноровано." -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "Не вдалося створити «%s»: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "Не вдалося змінити список груп: %s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "Не вдалося змінити GID: %s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "Не вдалося змінити UID: %s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "Програма успішно позбулася прав доступу користувача root." -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "Загальносистемний режим не підтримується на цій платформі." -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "Спроба виконати setrlimit(%s, (%u, %u)) була невдалою: %s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "Не вдалося обробити рядок команди." -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "" -"Ми перебуваємо у групі «%s», що надає змогу планування з високим пріоритетом." - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "" -"Ми перебуваємо у групі «%s», що надає змогу планування у режимі реального " -"часу." - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit надала нам права доступу acquire-high-priority." - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit відмовила у наданні прав доступу acquire-high-priority." - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit надала нам права доступу acquire-real-time." - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit відмовила у наданні прав доступу acquire-real-time." - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"У налаштуваннях було вказано виклик SUID root і планування режиму реального " -"часу і/або режиму високого пріоритету. Але у нас немає потрібних прав " -"доступу:\n" -"Ваш користувач не є учасником групи «%s», PolicyKit відмовила у наданні нам " -"потрібних прав доступу, тому зняття обмежень ресурсу RLIMIT_NICE/" -"RLIMIT_RTPRIO не можливе.\n" -"Щоб увімкнути планування режиму реального часу і/або режиму високого " -"пріоритету, будь ласка, отримайте відповідні права доступу у PolicyKit або " -"станьте учасником групи «%s» або збільшіть діапазон ресурсу RLIMIT_NICE/" -"RLIMIT_RTPRIO для цього користувача." - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Планування з високим пріоритетом увімкнено у налаштуваннях, але не дозволене " -"правилами безпеки." - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "Успішно підвищено RLIMIT_RTPRIO" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "Помилка під час спроби підвищити RLIMIT_RTPRIO: %s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "Позбуваємося CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "" -"Планування у режимі реального часу увімкнено у налаштуваннях, але не " -"дозволене правилами безпеки." - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "Фонову службу не запущено" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "Фонову службу запущено як PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "Не вдалося завершити роботу фонової служби: %s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." @@ -318,156 +211,161 @@ msgstr "" "Цю програму не призначено для запуску від імені користувача root (якщо не " "вказано параметра --system)." -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "Потрібні права доступу користувача root." -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "" "Параметр --start не підтримується для загальносистемних екземплярів програми." -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "" "Запуск у загальносистемному режимі, але не встановлено --disallow-exit!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "" "Запуск у загальносистемному режимі, але не встановлено --disallow-module-" "loading!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "Запуск у загальносистемному режимі, примусове вимикання режиму SHM!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "" "Запуск у загальносистемному режимі, примусове вимикання режиму параметрів " "часу виходу за відсутності активності!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "Не вдалося отримати stdio." -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "Спроба створення каналу завершилася невдало: %s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "Спроба виконання fork() завершилася невдало: %s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "Спроба виконання read() завершилася невдало: %s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "Спроба запуску фонової служби завершилася невдало." -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "Фонову службу успішно запущено." -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "Це PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "Вузол збирання: %s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "CFLAGS збирання: %s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "Запущено на вузлі: %s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "Знайдено %u процесорів." -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "Розмір сторінки дорівнює %lu байтам" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "Зібрано з підтримкою Valgrind: так" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "Зібрано з підтримкою Valgrind: ні" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "Запуск у режимі valgrind: %s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "Зібрано з оптимізацією: так" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "Зібрано з оптимізацією: ні" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." -msgstr "" +msgstr "Визначено NDEBUG, всі додавання вимкнено." -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." -msgstr "" +msgstr "Визначено FASTPATH, вимкнено лише додавання швидких шляхів." -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." -msgstr "" +msgstr "Увімкнено всі додавання." -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "Спроба отримати ідентифікатор системи завершилася невдало" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "Ідентифікатор системи %s." -#: ../src/daemon/main.c:917 -#, fuzzy, c-format +#: ../src/daemon/main.c:768 +#, c-format msgid "Session ID is %s." -msgstr "Ідентифікатор системи %s." +msgstr "Ідентифікатор сеансу — %s." -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "Каталог запуску: %s." -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "Каталог стану: %s." -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, c-format +msgid "Using modules directory %s." +msgstr "Каталог модулів: %s." + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "Запуску у загальносистемному режимі: %s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -476,16 +374,23 @@ msgid "" "Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an " "explanation why system mode is usually a bad idea." msgstr "" +"Гаразд, ви запустили PA у системному режимі. Будь ласка, зауважте, що " +"здебільшого у цьому немає потреби.\n" +"Якщо ви все ж це зробили, відповідальність за всі негаразди лягає саме на " +"вас.\n" +"Будь ласка, ознайомтеся зі статтею http://pulseaudio.org/wiki/" +"WhatIsWrongWithSystemMode, щоб дізнатися про те, чому не варто " +"використовувати системний режим." -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "Спроба виконання pa_pid_file_create() зазнала невдачі." -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "Доступні свіжі високоточні таймери! Смачного!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" @@ -493,29 +398,29 @@ msgstr "" "Чувак, твоє ядро — лайно! Круті пацани рекомендують Linux з увімкненими " "високоточними таймерами!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "Спроба виконання pa_core_new() зазнала невдачі." -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "Не вдалося ініціалізувати фонову службу." -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "" "Запуск фонової служби без жодного завантаженого модуля, служба не буде " "працездатною." -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "Запуск фонової служби завершено." -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "Ініційовано завершення роботи фонової служби." -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "Виконання фонової служби перервано." @@ -782,79 +687,79 @@ msgstr "Завантаження при: %s\n" #: ../src/daemon/dumpmodules.c:75 #, c-format msgid "DEPRECATION WARNING: %s\n" -msgstr "" +msgstr "ПОПЕРЕДЖЕННЯ ПРО ЗАСТАРІЛІСТЬ: %s\n" #: ../src/daemon/dumpmodules.c:79 #, c-format msgid "Path: %s\n" msgstr "Шлях: %s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] Некоректний журнал «%s»." -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] Некоректний рівень журналювання «%s»." -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] Некоректний метод зміни частотних характеристик «%s»." -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] Некоректне значення rlimit «%s»." -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] rlimit не підтримується на цій платформі." -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] Некоректний формат фрагмента «%s»." -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] Некоректна частота вибірки «%s»." -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] Некоректні канали фрагмента «%s»." -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] Некоректна карта каналів «%s»'." -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] Некоректна кількість фрагментів «%s»." -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] Некоректний розмір фрагмента «%s»." -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Некоректний рівень nice «%s»." -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "Не вдалося відкрити файл налаштувань: %s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." @@ -862,18 +767,14 @@ msgstr "" "У вказаній типовій карті каналів визначається інша кількість каналів, ніж " "типова кількість каналів." -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### Прочитано з файла налаштувань: %s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." -msgstr "Позбуваємося прав доступу root." - -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "Успішно обмежено можливості до CAP_SYS_NICE." +#: ../src/daemon/caps.c:62 +msgid "Cleaning up privileges." +msgstr "Позбуваємося прав доступу." #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" @@ -883,29 +784,7 @@ msgstr "Звукова система PulseAudio" msgid "Start the PulseAudio Sound System" msgstr "Запустити звукову систему PulseAudio" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -#, fuzzy -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "" -"Спроба завершення роботи фонової служби PulseAudio завершилася невдало." - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -#, fuzzy -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "" -"Ми перебуваємо у групі «%s», що надає змогу планування з високим пріоритетом." - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "Моно" @@ -1109,33 +988,33 @@ msgstr "Верхній задній лівий" msgid "Top Rear Right" msgstr "Верхній задній правий" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(некоректний)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "Стерео" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "Об'ємний 4.0" -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "Об'ємний 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "Об'ємний 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "Об'ємний 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "Об'ємний 7.1" @@ -1239,27 +1118,35 @@ msgstr "Відсутня реалізація" msgid "Client forked" msgstr "Клієнт розгалужено" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uкан. %uГц" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f ГБ" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f МБ" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f кБ" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u Б" @@ -1272,194 +1159,193 @@ msgstr "Спроба виконання XOpenDisplay() завершилася н msgid "Failed to parse cookie data" msgstr "Не вдалося обробити дані куки" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "Не вдалося відкрити файл налаштування «%s»: %s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "" "Куків не завантажено. Буде виконано спробу з’єднання за їх відсутності." -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork(): %s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid(): %s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "Отримано повідомлення про невідомий додаток «%s»" -#: ../src/utils/pacat.c:107 +#: ../src/utils/pacat.c:108 #, c-format -msgid "Failed to drain stream: %s\n" -msgstr "Не вдалося створити тунель для потоку: %s\n" +msgid "Failed to drain stream: %s" +msgstr "Не вдалося створити тунель для потоку: %s" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" -msgstr "Потік відтворення тунельовано.\n" +#: ../src/utils/pacat.c:113 +msgid "Playback stream drained." +msgstr "Потік відтворення тунельовано." -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" -msgstr "Тунельне з’єднання з сервером.\n" +#: ../src/utils/pacat.c:123 +msgid "Draining connection to server." +msgstr "Тунельне з’єднання з сервером." -#: ../src/utils/pacat.c:135 +#: ../src/utils/pacat.c:136 #, c-format -msgid "pa_stream_drain(): %s\n" -msgstr "pa_stream_drain(): %s\n" +msgid "pa_stream_drain(): %s" +msgstr "pa_stream_drain(): %s" -#: ../src/utils/pacat.c:158 +#: ../src/utils/pacat.c:159 #, c-format -msgid "pa_stream_write() failed: %s\n" -msgstr "Спроба виконання pa_stream_write() завершилася невдало: %s\n" +msgid "pa_stream_write() failed: %s" +msgstr "Спроба виконання pa_stream_write() завершилася невдало: %s" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 +#: ../src/utils/pacat.c:197 #, c-format -msgid "pa_stream_peek() failed: %s\n" -msgstr "Спроба виконання pa_stream_peek() завершилася невдало: %s\n" +msgid "pa_stream_begin_write() failed: %s" +msgstr "Спроба виконання pa_stream_write() завершилася невдало: %s" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" -msgstr "Потік було успішно створено.\n" - -#: ../src/utils/pacat.c:305 +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 #, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" -msgstr "Спроба виконання pa_stream_get_buffer_attr() завершилася невдало: %s\n" +msgid "pa_stream_peek() failed: %s" +msgstr "Спроба виконання pa_stream_peek() завершилася невдало: %s" -#: ../src/utils/pacat.c:309 +#: ../src/utils/pacat.c:307 +msgid "Stream successfully created." +msgstr "Потік було успішно створено." + +#: ../src/utils/pacat.c:310 #, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" -msgstr "Метрика буфера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +msgid "pa_stream_get_buffer_attr() failed: %s" +msgstr "Спроба виконання pa_stream_get_buffer_attr() завершилася невдало: %s" -#: ../src/utils/pacat.c:312 +#: ../src/utils/pacat.c:314 #, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" -msgstr "Метрика буфера: maxlength=%u, fragsize=%u\n" +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" +msgstr "Метрика буфера: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" -#: ../src/utils/pacat.c:316 +#: ../src/utils/pacat.c:317 #, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" -msgstr "Використання частотної специфікації «%s», карта каналів «%s».\n" +msgid "Buffer metrics: maxlength=%u, fragsize=%u" +msgstr "Метрика буфера: maxlength=%u, fragsize=%u" -#: ../src/utils/pacat.c:320 +#: ../src/utils/pacat.c:321 #, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" -msgstr "З’єднано з пристроєм %s (%u, %s призупинено).\n" +msgid "Using sample spec '%s', channel map '%s'." +msgstr "Використання частотної специфікації «%s», карта каналів «%s»." -#: ../src/utils/pacat.c:330 +#: ../src/utils/pacat.c:325 #, c-format -msgid "Stream error: %s\n" -msgstr "Помилка потоку: %s\n" +msgid "Connected to device %s (%u, %ssuspended)." +msgstr "З’єднано з пристроєм %s (%u, %s призупинено)." -#: ../src/utils/pacat.c:340 +#: ../src/utils/pacat.c:335 #, c-format -msgid "Stream device suspended.%s \n" -msgstr "Призупинено пристрій потоку. %s \n" +msgid "Stream error: %s" +msgstr "Помилка потоку: %s" -#: ../src/utils/pacat.c:342 +#: ../src/utils/pacat.c:345 #, c-format -msgid "Stream device resumed.%s \n" -msgstr "Відновлено пристрій потоку. %s \n" +msgid "Stream device suspended.%s" +msgstr "Призупинено пристрій потоку. %s" -#: ../src/utils/pacat.c:350 +#: ../src/utils/pacat.c:347 #, c-format -msgid "Stream underrun.%s \n" -msgstr "Недовантаження потоку. %s \n" +msgid "Stream device resumed.%s" +msgstr "Відновлено пристрій потоку. %s" -#: ../src/utils/pacat.c:357 +#: ../src/utils/pacat.c:355 #, c-format -msgid "Stream overrun.%s \n" -msgstr "Перевантаження потоку. %s \n" +msgid "Stream underrun.%s" +msgstr "Недовантаження потоку. %s" -#: ../src/utils/pacat.c:364 +#: ../src/utils/pacat.c:362 #, c-format -msgid "Stream started.%s \n" -msgstr "Потік запущено. %s \n" +msgid "Stream overrun.%s" +msgstr "Перевантаження потоку. %s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:369 #, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" -msgstr "Потік пересунуто на пристрій %s (%u, %s призупинено). %s \n" +msgid "Stream started.%s" +msgstr "Потік запущено. %s" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 +#, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" +msgstr "Потік пересунуто на пристрій %s (%u, %s призупинено). %s" + +#: ../src/utils/pacat.c:376 msgid "not " msgstr "не " -#: ../src/utils/pacat.c:378 +#: ../src/utils/pacat.c:383 +#, c-format +msgid "Stream buffer attributes changed.%s" +msgstr "Недовантаження потоку. %s" + +#: ../src/utils/pacat.c:415 +#, c-format +msgid "Connection established.%s" +msgstr "Встановлено з’єднання. %s" + +#: ../src/utils/pacat.c:418 +#, c-format +msgid "pa_stream_new() failed: %s" +msgstr "Спроба виконання pa_stream_new() зазнала невдачі: %s" + +#: ../src/utils/pacat.c:446 +#, c-format +msgid "pa_stream_connect_playback() failed: %s" +msgstr "Спроба виконання pa_stream_connect_playback() зазнала невдачі: %s" + +#: ../src/utils/pacat.c:452 +#, c-format +msgid "pa_stream_connect_record() failed: %s" +msgstr "Спроба виконання pa_stream_connect_record() зазнала невдачі: %s" + +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, c-format +msgid "Connection failure: %s" +msgstr "Спроба встановлення з’єднання зазнала невдачі: %s" + +#: ../src/utils/pacat.c:499 +msgid "Got EOF." +msgstr "Отримано EOF." + +#: ../src/utils/pacat.c:536 +#, c-format +msgid "write() failed: %s" +msgstr "Спроба виконання write() завершилася невдало: %s" + +#: ../src/utils/pacat.c:557 +msgid "Got signal, exiting." +msgstr "Отримано сигнал, завершення роботи." + +#: ../src/utils/pacat.c:571 +#, c-format +msgid "Failed to get latency: %s" +msgstr "Не вдалося отримати латентність: %s" + +#: ../src/utils/pacat.c:576 #, fuzzy, c-format -msgid "Stream buffer attributes changed.%s \n" -msgstr "Недовантаження потоку. %s \n" - -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" -msgstr "Встановлено з’єднання. %s \n" - -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" -msgstr "Спроба виконання pa_stream_new() зазнала невдачі: %s\n" - -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" -msgstr "Спроба виконання pa_stream_connect_playback() зазнала невдачі: %s\n" - -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" -msgstr "Спроба виконання pa_stream_connect_record() зазнала невдачі: %s\n" - -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" -msgstr "Спроба встановлення з’єднання зазнала невдачі: %s\n" - -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" -msgstr "Отримано EOF.\n" - -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "Спроба виконання read() завершилася невдало: %s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" -msgstr "Спроба виконання write() завершилася невдало: %s\n" - -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" -msgstr "Отримано сигнал, завершення роботи.\n" - -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" -msgstr "Не вдалося отримати латентність: %s\n" - -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "Час: %0.3f сек.; Латентність: %0.0f мкс. \r" -#: ../src/utils/pacat.c:592 +#: ../src/utils/pacat.c:595 #, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +msgid "pa_stream_update_timing_info() failed: %s" msgstr "" -"Спроба виконання pa_stream_update_timing_info() завершилася невдало: %s\n" +"Спроба виконання pa_stream_update_timing_info() завершилася невдало: %s" #: ../src/utils/pacat.c:605 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -1563,6 +1449,14 @@ msgstr "" "латентність у байтах.\n" " --process-time=БАЙТИ Надіслати запит щодо вказаного часу " "обробки на запит у байтах.\n" +" --property=ВЛАСТИВІСТЬ=ЗНАЧЕННЯ Встановити для вказаної властивості " +"вказане значення.\n" +" --raw Записати/Відтворити не оброблені " +"дані PCM.\n" +" --file-format=ФОРМАТ Записати/Відтворити форматовані дані " +"PCM.\n" +" --list-file-formats Показати список можливих форматів " +"файлів.\n" #: ../src/utils/pacat.c:727 #, c-format @@ -1575,136 +1469,130 @@ msgstr "" "Зібрано з libpulse %s\n" "З’єднано з libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 -#, fuzzy, c-format -msgid "Invalid client name '%s'\n" -msgstr "Некоректна карта каналів «%s»\n" - -#: ../src/utils/pacat.c:776 -#, fuzzy, c-format -msgid "Invalid stream name '%s'\n" -msgstr "Некоректний метод зміни частотних характеристик «%s»." - -#: ../src/utils/pacat.c:813 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, c-format -msgid "Invalid channel map '%s'\n" -msgstr "Некоректна карта каналів «%s»\n" +msgid "Invalid client name '%s'" +msgstr "Некоректна назва клієнта «%s»" -#: ../src/utils/pacat.c:842 +#: ../src/utils/pacat.c:775 #, c-format -msgid "Invalid latency specification '%s'\n" -msgstr "Некоректна специфікація латентності «%s»\n" +msgid "Invalid stream name '%s'" +msgstr "Некоректна назва потоку «%s»" -#: ../src/utils/pacat.c:849 +#: ../src/utils/pacat.c:812 #, c-format -msgid "Invalid process time specification '%s'\n" -msgstr "Некоректна часова специфікація «%s»\n" +msgid "Invalid channel map '%s'" +msgstr "Некоректна карта каналів «%s»" -#: ../src/utils/pacat.c:861 -#, fuzzy, c-format -msgid "Invalid property '%s'\n" -msgstr "Некоректний метод зміни частотних характеристик «%s»." +#: ../src/utils/pacat.c:841 +#, c-format +msgid "Invalid latency specification '%s'" +msgstr "Некоректна специфікація латентності «%s»" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:848 +#, c-format +msgid "Invalid process time specification '%s'" +msgstr "Некоректна часова специфікація «%s»" + +#: ../src/utils/pacat.c:860 +#, c-format +msgid "Invalid property '%s'" +msgstr "Некоректна властивість «%s»" + +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." -msgstr "" +msgstr "Невідомий формат файлів %s." -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" -msgstr "Некоректна частотна специфікація\n" +#: ../src/utils/pacat.c:896 +msgid "Invalid sample specification" +msgstr "Некоректна частотна специфікація" -#: ../src/utils/pacat.c:907 +#: ../src/utils/pacat.c:906 #, c-format -msgid "open(): %s\n" -msgstr "open(): %s\n" +msgid "open(): %s" +msgstr "open(): %s" -#: ../src/utils/pacat.c:912 +#: ../src/utils/pacat.c:911 #, c-format -msgid "dup2(): %s\n" -msgstr "dup2(): %s\n" +msgid "dup2(): %s" +msgstr "dup2(): %s" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" -msgstr "Забагато аргументів.\n" +#: ../src/utils/pacat.c:918 +msgid "Too many arguments." +msgstr "Забагато аргументів." -#: ../src/utils/pacat.c:930 -#, fuzzy -msgid "Failed to generate sample specification for file.\n" -msgstr "Не вдалося отримати дані щодо фрагмента: %s\n" +#: ../src/utils/pacat.c:929 +msgid "Failed to generate sample specification for file." +msgstr "Не вдалося створити частотну специфікацію для файла." -#: ../src/utils/pacat.c:950 -#, fuzzy -msgid "Failed to open audio file.\n" -msgstr "Не вдалося відкрити звуковий файл.\n" +#: ../src/utils/pacat.c:949 +msgid "Failed to open audio file." +msgstr "Не вдалося відкрити звуковий файл." -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" +"specification from file." msgstr "" +"Попередження: вказану частотну специфікацію буде перезаписано специфікацією " +"з файла." -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "Не вдалося отримати дані щодо фрагмента: %s\n" +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +msgid "Failed to determine sample specification from file." +msgstr "Не вдалося отримати дані щодо частотної специфікації з файла." -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "Карта каналі не відповідає частотній специфікації\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" +#: ../src/utils/pacat.c:967 +msgid "Warning: Failed to determine channel map from file." +msgstr "Попередження: не вдалося отримати дані щодо карти каналів з файла." + +#: ../src/utils/pacat.c:978 +msgid "Channel map doesn't match sample specification" +msgstr "Карта каналів не відповідає частотній специфікації" + +#: ../src/utils/pacat.c:989 +msgid "Warning: failed to write channel map to file." +msgstr "Попередження: не вдалося записати карту каналів до файла." + +#: ../src/utils/pacat.c:1004 +#, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." msgstr "" +"Відкриття потоку %s з частотною специфікацією «%s» і картою каналів «%s»." #: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" -msgstr "Відкриття потоку %s з частотною специфікацією «%s».\n" - -#: ../src/utils/pacat.c:1006 msgid "recording" msgstr "запис" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "відтворення" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +msgid "pa_mainloop_new() failed." +msgstr "Спроба виконання pa_mainloop_new() завершилася невдало." + +#: ../src/utils/pacat.c:1050 +msgid "io_new() failed." +msgstr "Спроба виконання io_new() завершилася невдало." + +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +msgid "pa_context_new() failed." +msgstr "Спроба виконання pa_context_new() завершилася невдало." + +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 #, c-format -msgid "pa_mainloop_new() failed.\n" -msgstr "Спроба виконання pa_mainloop_new() завершилася невдало.\n" - -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" -msgstr "Спроба виконання io_new() завершилася невдало.\n" - -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" -msgstr "Спроба виконання pa_context_new() завершилася невдало.\n" - -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +msgid "pa_context_connect() failed: %s" msgstr "Спроба виконання pa_context_connect() завершилася невдало: %s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "Спроба виконання time_new() завершилася невдало.\n" +#: ../src/utils/pacat.c:1071 +msgid "pa_context_rttime_new() failed." +msgstr "Спроба виконання pa_context_new() завершилася невдало." -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" -msgstr "Спроба виконання pa_mainloop_run() завершилася невдало.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +msgid "pa_mainloop_run() failed." +msgstr "Спроба виконання pa_mainloop_run() завершилася невдало." #: ../src/utils/pasuspender.c:81 #, c-format @@ -1732,7 +1620,12 @@ msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "" "ПОПЕРЕДЖЕННЯ: звуковий сервер не є локальним, його не можна призупинити.\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "Спроба встановлення з’єднання зазнала невдачі: %s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "Отримано сигнал SIGINT, завершення роботи.\n" @@ -1773,33 +1666,48 @@ msgstr "" "Зібрано з libpulse %s\n" "З’єднано з libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" -msgstr "Не вдалося отримати статистичні дані: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "Спроба виконання pa_mainloop_new() завершилася невдало.\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "Спроба виконання pa_context_new() завершилася невдало.\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "Спроба виконання pa_mainloop_run() завершилася невдало.\n" + +#: ../src/utils/pactl.c:135 +#, c-format +msgid "Failed to get statistics: %s" +msgstr "Не вдалося отримати статистичні дані: %s" + +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "Зараз використано: %u блоків, що містять загалом %s байтів.\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "" "Виділено протягом виконання загалом: %u блоків, що містять %s байтів.\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "Розмір кешу фрагментів: %s\n" -#: ../src/utils/pactl.c:149 +#: ../src/utils/pactl.c:156 #, c-format -msgid "Failed to get server information: %s\n" -msgstr "Не вдалося отримати дані щодо сервера: %s\n" +msgid "Failed to get server information: %s" +msgstr "Не вдалося отримати дані щодо сервера: %s" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1822,12 +1730,12 @@ msgstr "" "Типове джерело: %s\n" "Кука: %08x\n" -#: ../src/utils/pactl.c:198 +#: ../src/utils/pactl.c:205 #, c-format -msgid "Failed to get sink information: %s\n" -msgstr "Не вдалося отримати дані щодо приймача: %s\n" +msgid "Failed to get sink information: %s" +msgstr "Не вдалося отримати дані щодо приймача: %s" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1866,22 +1774,22 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 -#, fuzzy, c-format -msgid "\tPorts:\n" -msgstr "\tПрофілі:\n" - -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 -#, fuzzy, c-format -msgid "\tActive Port: %s\n" -msgstr "\tАктивний профіль: %s\n" - -#: ../src/utils/pactl.c:290 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, c-format -msgid "Failed to get source information: %s\n" -msgstr "Не вдалося отримати дані щодо джерела: %s\n" +msgid "\tPorts:\n" +msgstr "\tПорти:\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 +#, c-format +msgid "\tActive Port: %s\n" +msgstr "\tАктивний порт: %s\n" + +#: ../src/utils/pactl.c:297 +#, c-format +msgid "Failed to get source information: %s" +msgstr "Не вдалося отримати дані щодо джерела: %s" + +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1920,20 +1828,20 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "н/д" -#: ../src/utils/pactl.c:368 +#: ../src/utils/pactl.c:375 #, c-format -msgid "Failed to get module information: %s\n" -msgstr "Не вдалося отримати дані щодо модуля: %s\n" +msgid "Failed to get module information: %s" +msgstr "Не вдалося отримати дані щодо модуля: %s" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1950,12 +1858,12 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 +#: ../src/utils/pactl.c:412 #, c-format -msgid "Failed to get client information: %s\n" -msgstr "Не вдалося отримати дані щодо клієнта: %s\n" +msgid "Failed to get client information: %s" +msgstr "Не вдалося отримати дані щодо клієнта: %s" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1970,12 +1878,12 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 +#: ../src/utils/pactl.c:447 #, c-format -msgid "Failed to get card information: %s\n" -msgstr "Не вдалося отримати дані щодо карти: %s\n" +msgid "Failed to get card information: %s" +msgstr "Не вдалося отримати дані щодо карти: %s" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1992,22 +1900,22 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tПрофілі:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tАктивний профіль: %s\n" -#: ../src/utils/pactl.c:489 +#: ../src/utils/pactl.c:496 #, c-format -msgid "Failed to get sink input information: %s\n" -msgstr "Не вдалося отримати відомостей щодо приймача: %s\n" +msgid "Failed to get sink input information: %s" +msgstr "Не вдалося отримати відомостей щодо приймача: %s" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -2044,12 +1952,12 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 +#: ../src/utils/pactl.c:554 #, c-format -msgid "Failed to get source output information: %s\n" -msgstr "Не вдалося отримати дані щодо відтворення джерела: %s\n" +msgid "Failed to get source output information: %s" +msgstr "Не вдалося отримати дані щодо відтворення джерела: %s" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -2078,12 +1986,12 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 +#: ../src/utils/pactl.c:605 #, c-format -msgid "Failed to get sample information: %s\n" -msgstr "Не вдалося отримати дані щодо фрагмента: %s\n" +msgid "Failed to get sample information: %s" +msgstr "Не вдалося отримати дані щодо фрагмента: %s" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2114,22 +2022,26 @@ msgstr "" "\tВластивості:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 #, c-format -msgid "Failure: %s\n" -msgstr "Помилка: %s\n" +msgid "Failure: %s" +msgstr "Помилка: %s" -#: ../src/utils/pactl.c:680 +#: ../src/utils/pactl.c:687 #, c-format -msgid "Failed to upload sample: %s\n" -msgstr "Не вдалося вивантажити зразок: %s\n" +msgid "Failed to upload sample: %s" +msgstr "Не вдалося вивантажити зразок: %s" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" -msgstr "Передчасне завершення файла\n" +#: ../src/utils/pactl.c:704 +msgid "Premature end of file" +msgstr "Передчасне завершення файла" -#: ../src/utils/pactl.c:826 -#, fuzzy, c-format +#: ../src/utils/pactl.c:863 +msgid "Got SIGINT, exiting." +msgstr "Отримано сигнал SIGINT, завершення роботи." + +#: ../src/utils/pactl.c:869 +#, c-format msgid "" "%s [options] stat\n" "%s [options] list\n" @@ -2137,15 +2049,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2165,9 +2083,17 @@ msgstr "" "%s [параметри] move-source-output ІДЕНТИФІКАТОР ДЖЕРЕЛО\n" "%s [параметри] load-module НАЗВА [АРГУМЕНТИ ...]\n" "%s [параметри] unload-module ІДЕНТИФІКАТОР\n" -"%s [параметри] suspend-sink [ПРИЙМАЧ] 1|0\n" -"%s [параметри] suspend-source [ДЖЕРЕЛО] 1|0\n" -"%s [параметри] set-card-profile [КАРТА] [ПРОФІЛЬ] \n" +"%s [параметри] suspend-sink ПРИЙМАЧ 1|0\n" +"%s [параметри] suspend-source ДЖЕРЕЛО 1|0\n" +"%s [параметри] set-card-profile КАРТА ПРОФІЛЬ \n" +"%s [параметри] set-sink-port ПРИЙМАЧ ПОРТ \n" +"%s [параметри] set-source-port ДЖЕРЕЛО ПОРТ\n" +"%s [параметри] set-sink-volume ПРИЙМАЧ ГУЧНІСТЬ\n" +"%s [параметри] set-source-volume ДЖЕРЕЛО ГУЧНІСТЬ\n" +"%s [параметри] set-sink-input-volume ВХІДПРИЙМАЧА ГУЧНІСТЬ\n" +"%s [параметри] set-sink-mute ПРИЙМАЧ 1|0\n" +"%s [параметри] set-source-mute ДЖЕРЕЛО 1|0\n" +"%s [параметри] set-sink-input-mute ВХІДПРИЙМАЧА 1|0\n" "\n" " -h, --help Показати цю довідку\n" " --version Показати дані щодо версії\n" @@ -2176,7 +2102,7 @@ msgstr "" "з’єднатися\n" " -n, --client-name=НАЗВА Спосіб виклику клієнта на сервері\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2187,81 +2113,114 @@ msgstr "" "Зібрано з libpulse %s\n" "З’єднано з libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" -msgstr "Будь ласка, вкажіть зразковий файл для завантаження\n" - -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" -msgstr "Не вдалося відкрити звуковий файл.\n" - -#: ../src/utils/pactl.c:951 -#, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" -msgstr "Відкриття потоку %s з частотною специфікацією «%s».\n" - -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" -msgstr "Вам слід вказати назву зразкового файла, який слід відтворити\n" - -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" -msgstr "Вам слід вказати назву зразкового файла, який слід вилучити\n" - -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" -msgstr "Вам слід вказати індекс приймача даних і приймач\n" +#: ../src/utils/pactl.c:979 +msgid "Please specify a sample file to load" +msgstr "Будь ласка, вкажіть зразковий файл для завантаження" #: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" -msgstr "Вам слід вказати індекс джерела відтворення і джерело\n" +msgid "Failed to open sound file." +msgstr "Не вдалося відкрити звуковий файл." -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" -msgstr "Вам слід вказати назву модуля і аргументи.\n" +#: ../src/utils/pactl.c:1004 +msgid "Warning: Failed to determine sample specification from file." +msgstr "" +"Попередження: не вдалося отримати дані щодо частотної специфікації з файла." -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" -msgstr "Вам слід вказати індекс модуля\n" +#: ../src/utils/pactl.c:1014 +msgid "You have to specify a sample name to play" +msgstr "Вам слід вказати назву зразкового файла, який слід відтворити" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1026 +msgid "You have to specify a sample name to remove" +msgstr "Вам слід вказати назву зразкового файла, який слід вилучити" + +#: ../src/utils/pactl.c:1035 +msgid "You have to specify a sink input index and a sink" +msgstr "Вам слід вказати індекс приймача даних і приймач" + +#: ../src/utils/pactl.c:1045 +msgid "You have to specify a source output index and a source" +msgstr "Вам слід вказати індекс джерела відтворення і джерело" + +#: ../src/utils/pactl.c:1060 +msgid "You have to specify a module name and arguments." +msgstr "Вам слід вказати назву модуля і аргументи." + +#: ../src/utils/pactl.c:1080 +msgid "You have to specify a module index" +msgstr "Вам слід вказати індекс модуля" + +#: ../src/utils/pactl.c:1090 msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "" "Не можна вказувати більше одного приймача. Вам слід вказати булівське " -"значення.\n" +"значення." -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "" "Не можна вказувати більше одного джерела. Вам слід вказати булівське " -"значення.\n" +"значення." -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "Вам слід вказати назву/індекс карти і назву профілю\n" +#: ../src/utils/pactl.c:1115 +msgid "You have to specify a card name/index and a profile name" +msgstr "Вам слід вказати назву/індекс карти і назву профілю" -#: ../src/utils/pactl.c:1073 -#, fuzzy -msgid "You have to specify a sink name/index and a port name\n" -msgstr "Вам слід вказати назву/індекс карти і назву профілю\n" +#: ../src/utils/pactl.c:1126 +msgid "You have to specify a sink name/index and a port name" +msgstr "Вам слід вказати назву/індекс приймача і назву порту" -#: ../src/utils/pactl.c:1084 -#, fuzzy -msgid "You have to specify a source name/index and a port name\n" -msgstr "Вам слід вказати назву/індекс карти і назву профілю\n" +#: ../src/utils/pactl.c:1137 +msgid "You have to specify a source name/index and a port name" +msgstr "Вам слід вказати назву/індекс джерела і назву порту" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" -msgstr "Не вказано коректної команди.\n" +#: ../src/utils/pactl.c:1149 +msgid "You have to specify a sink name/index and a volume" +msgstr "Вам слід вказати назву/індекс приймача і гучність" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "Спроба виконання pa_context_connect() завершилася невдало: %s" +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +msgid "Invalid volume specification" +msgstr "Некоректна специфікація гучності" + +#: ../src/utils/pactl.c:1166 +msgid "You have to specify a source name/index and a volume" +msgstr "Вам слід вказати назву/індекс джерела і гучність" + +#: ../src/utils/pactl.c:1183 +msgid "You have to specify a sink input index and a volume" +msgstr "Вам слід вказати індекс приймача даних і гучність" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "Некоректний індекс вхідних даних приймача" + +#: ../src/utils/pactl.c:1204 +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "" +"Вам слід вказати назву/індекс приймача і булеве значення вимикання звуку" + +#: ../src/utils/pactl.c:1221 +msgid "You have to specify a source name/index and a mute boolean" +msgstr "" +"Вам слід вказати назву/індекс джерела і булеве значення вимикання звуку" + +#: ../src/utils/pactl.c:1238 +msgid "You have to specify a sink input index and a mute boolean" +msgstr "" +"Вам слід вказати індекс приймача даних і булеве значення вимикання звуку" + +#: ../src/utils/pactl.c:1243 +msgid "Invalid sink input index specification" +msgstr "Некоректна специфікація індексу приймача даних" + +#: ../src/utils/pactl.c:1262 +msgid "No valid command specified." +msgstr "Не вказано коректної команди." #: ../src/utils/pax11publish.c:61 #, c-format @@ -2344,49 +2303,51 @@ msgstr "Не вдалося завантажити дані куки\n" msgid "Not yet implemented.\n" msgstr "Ще не реалізовано.\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" +"Фонову службу PulseAudio не запущено, або цю службу не запущено як фонову " +"службу сеансу." -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect(): %s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "" "Спроба завершення роботи фонової служби PulseAudio завершилася невдало." -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "Фонова служба не відповідає." -#: ../src/utils/pacmd.c:146 +#: ../src/utils/pacmd.c:161 #, c-format -msgid "select(): %s" -msgstr "select(): %s" +msgid "poll(): %s" +msgstr "poll(): %s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read(): %s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write(): %s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "Не вдалося зняти блокування автоматичного розгалуження." -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2396,8 +2357,14 @@ msgid "" "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"ALSA викликала службу запису нових даних на пристрій, але насправді ніяких " +"даних для запису не виявлено!\n" +"Ймовірно, це пов’язано з вадою у драйвері ALSA «%s». Будь ласка, повідомте " +"про цю ваду розробникам ALSA.\n" +"Службу було викликано зі встановленим POLLOUT, але наступний виклик " +"snd_pcm_avail() повернув 0 або інше значення < min_avail." -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2407,123 +2374,30 @@ msgid "" "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() " "returned 0 or another value < min_avail." msgstr "" +"ALSA викликала службу читання нових даних з пристрою, але насправді ніяких " +"даних для читання не виявлено!\n" +"Ймовірно, це пов’язано з вадою у драйвері ALSA «%s». Будь ласка, повідомте " +"про цю ваду розробникам ALSA.\n" +"Службу було викликано зі встановленим POLLIN, але наступний виклик " +"snd_pcm_avail() повернув 0 або інше значення < min_avail." #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" -msgstr "" +msgstr "Вимкнено" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" -msgstr "" +msgstr "Високоточне відтворення (A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +msgid "High Fidelity Capture (A2DP)" +msgstr "Високоточне захоплення (A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" -msgstr "" +msgstr "Телефонний дуплекс (HSP/HFP)" #: ../src/modules/reserve-wrap.c:151 -#, fuzzy msgid "PulseAudio Sound Server" -msgstr "Звукова система PulseAudio" - -#~ msgid "Analog Mono" -#~ msgstr "Аналоговий моно" - -#~ msgid "Analog Stereo" -#~ msgstr "Аналоговий стерео" - -#~ msgid "Digital Stereo (IEC958)" -#~ msgstr "Цифровий стерео (IEC958)" - -#~ msgid "Digital Stereo (HDMI)" -#~ msgstr "Цифровий стерео (HDMI)" - -#~ msgid "Analog Surround 4.0" -#~ msgstr "Аналоговий об’ємний 4.0" - -#~ msgid "Digital Surround 4.0 (IEC958/AC3)" -#~ msgstr "Цифровий об’ємний 4.0 (IEC958/AC3)" - -#~ msgid "Analog Surround 4.1" -#~ msgstr "Аналоговий об’ємний 4.1" - -#~ msgid "Analog Surround 5.0" -#~ msgstr "Аналоговий об’ємний 5.0" - -#~ msgid "Analog Surround 5.1" -#~ msgstr "Аналоговий об’ємний 5.1" - -#~ msgid "Digital Surround 5.1 (IEC958/AC3)" -#~ msgstr "Цифровий об’ємний 5.1 (IEC958/AC3)" - -#~ msgid "Analog Surround 7.1" -#~ msgstr "Аналоговий об’ємний 7.1" - -#~ msgid "Stream successfully created\n" -#~ msgstr "Потік було успішно створено\n" - -#~ msgid "Stream errror: %s\n" -#~ msgstr "Помилка потоку: %s\n" - -#~ msgid "Connection established.\n" -#~ msgstr "З’єднання встановлено.\n" - -#~ msgid "" -#~ "%s [options] [FILE]\n" -#~ "\n" -#~ " -h, --help Show this help\n" -#~ " --version Show version\n" -#~ "\n" -#~ " -v, --verbose Enable verbose operation\n" -#~ "\n" -#~ " -s, --server=SERVER The name of the server to connect " -#~ "to\n" -#~ " -d, --device=DEVICE The name of the sink to connect " -#~ "to\n" -#~ " -n, --client-name=NAME How to call this client on the " -#~ "server\n" -#~ " --stream-name=NAME How to call this stream on the " -#~ "server\n" -#~ " --volume=VOLUME Specify the initial (linear) " -#~ "volume in range 0...65536\n" -#~ " --channel-map=CHANNELMAP Set the channel map to the use\n" -#~ msgstr "" -#~ "%s [параметри] [ФАЙЛ]\n" -#~ "\n" -#~ " -h, --help Показати цю довідку\n" -#~ " --version Показати дані щодо версії\n" -#~ "\n" -#~ " -v, --verbose Увімкнути докладний режим дій\n" -#~ "\n" -#~ " -s, --server=СЕРВЕР Назва сервера, з яким слід " -#~ "встановити з’єднання to\n" -#~ " -d, --device=ПРИСТРІЙ Назва приймача, з яким слід " -#~ "з’єднатися\n" -#~ " -n, --client-name=НАЗВА Спосіб виклику клієнта на " -#~ "сервері\n" -#~ " --stream-name=НАЗВА Спосіб виклику потоку на сервері\n" -#~ " --volume=ГУЧНІСТЬ Значення початкової (лінійної) " -#~ "гучності у діапазоні 0..65536\n" -#~ " --channel-map=КАРТА_КАНАЛІВ Визначення карти каналів, якою " -#~ "слід скористатися\n" - -#~ msgid "" -#~ "paplay %s\n" -#~ "Compiled with libpulse %s\n" -#~ "Linked with libpulse %s\n" -#~ msgstr "" -#~ "paplay %s\n" -#~ "Зібрано з libpulse %s\n" -#~ "З’єднано з libpulse %s\n" - -#~ msgid "Invalid channel map\n" -#~ msgstr "Некоректна карта каналів\n" - -#~ msgid "Failed to open file '%s'\n" -#~ msgstr "Не вдалося відкрити файл «%s»\n" - -#~ msgid "Channel map doesn't match file.\n" -#~ msgstr "Карта каналів не відповідає файлові.\n" - -#~ msgid "Using sample spec '%s'\n" -#~ msgstr "Використання частотної специфікації «%s»\n" +msgstr "Звуковий сервер PulseAudio" diff --git a/po/zh_CN.po b/po/zh_CN.po index 2da73fe86..0d0c98ed5 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-17 23:42+0200\n" +"POT-Creation-Date: 2009-09-11 01:26+0200\n" "PO-Revision-Date: 2009-04-06 10:26+1000\n" "Last-Translator: Leah Liu \n" "Language-Team: Simplified Chinese \n" @@ -20,7 +20,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -#: ../src/modules/alsa/alsa-util.c:1015 +#: ../src/modules/alsa/alsa-util.c:858 ../src/pulsecore/sink.c:2629 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../src/modules/alsa/alsa-util.c:1106 #, c-format msgid "" "snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu " @@ -31,7 +36,7 @@ msgstr "" "snd_pcm_avail() 返回的值非常大:%lu 字节(%lu ms)。\n" "很可能是 ALSA 驱动程序 '%s' 中的 bug。请向 ALSA 开发者举报这个问题。" -#: ../src/modules/alsa/alsa-util.c:1056 +#: ../src/modules/alsa/alsa-util.c:1147 #, c-format msgid "" "snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%" @@ -42,7 +47,7 @@ msgstr "" "snd_pcm_delay() 返回的值非常大:%li 字节(%s%lu ms)。\n" "很可能是 ALSA 驱动程序 '%s' 中的 bug。请向 ALSA 开发者举报这个问题。" -#: ../src/modules/alsa/alsa-util.c:1103 +#: ../src/modules/alsa/alsa-util.c:1194 #, c-format msgid "" "snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes " @@ -53,6 +58,14 @@ msgstr "" "snd_pcm_mmap_begin() 返回的值非常大:%lu 字节(%lu ms)。\n" "很可能是 ALSA 驱动程序 '%s' 中的 bug。请向 ALSA 开发者举报这个问题。" +#: ../src/modules/module-always-sink.c:39 +msgid "Always keeps at least one sink loaded even if it's a null one" +msgstr "" + +#: ../src/modules/module-always-sink.c:83 +msgid "Dummy Output" +msgstr "" + #: ../src/modules/module-ladspa-sink.c:49 msgid "Virtual LADSPA sink" msgstr "" @@ -66,11 +79,20 @@ msgid "" "input control values>" msgstr "" -#: ../src/pulsecore/sink.c:2394 +#: ../src/modules/module-null-sink.c:55 +msgid "Clocked NULL sink" +msgstr "" + +#: ../src/modules/module-null-sink.c:291 +#, fuzzy +msgid "Null Output" +msgstr "输出 %s" + +#: ../src/pulsecore/sink.c:2613 msgid "Internal Audio" msgstr "内部音频" -#: ../src/pulsecore/sink.c:2400 +#: ../src/pulsecore/sink.c:2618 msgid "Modem" msgstr "调制解调器" @@ -86,362 +108,246 @@ msgstr "分配新的 dl 加载器失败。" msgid "Failed to add bind-now-loader." msgstr "添加 bind-now-loader 失败。" -#: ../src/daemon/polkit.c:55 -#, c-format -msgid "Cannot connect to system bus: %s" -msgstr "无法连接到系统总线:%s" - -#: ../src/daemon/polkit.c:65 -#, c-format -msgid "Cannot get caller from PID: %s" -msgstr "无法从PID获取调用者:%s" - -#: ../src/daemon/polkit.c:77 -msgid "Cannot set UID on caller object." -msgstr "无法为调用者设定UID。" - -#: ../src/daemon/polkit.c:82 -msgid "Failed to get CK session." -msgstr "获取CK会话失败。" - -#: ../src/daemon/polkit.c:90 -msgid "Cannot set UID on session object." -msgstr "无法为会话对象设定UID。" - -#: ../src/daemon/polkit.c:95 -msgid "Cannot allocate PolKitAction." -msgstr "不能分配PolKitAction。" - -#: ../src/daemon/polkit.c:100 -msgid "Cannot set action_id" -msgstr "无法设定action_id" - -#: ../src/daemon/polkit.c:105 -msgid "Cannot allocate PolKitContext." -msgstr "无法分配PolKitContext。" - -#: ../src/daemon/polkit.c:110 -#, c-format -msgid "Cannot initialize PolKitContext: %s" -msgstr "无法初使化PolKitContext: %s" - -#: ../src/daemon/polkit.c:119 -#, c-format -msgid "Could not determine whether caller is authorized: %s" -msgstr "无法判断调用者是否已获得授权: %s" - -#: ../src/daemon/polkit.c:139 -#, c-format -msgid "Cannot obtain auth: %s" -msgstr "无法获取授权: %s" - -#: ../src/daemon/polkit.c:148 -#, c-format -msgid "PolicyKit responded with '%s'" -msgstr "PolicyKit回复'%s'" - -#: ../src/daemon/main.c:142 +#: ../src/daemon/main.c:141 #, c-format msgid "Got signal %s." msgstr "获得信号%s" -#: ../src/daemon/main.c:169 +#: ../src/daemon/main.c:168 msgid "Exiting." msgstr "退出" -#: ../src/daemon/main.c:187 +#: ../src/daemon/main.c:186 #, c-format msgid "Failed to find user '%s'." msgstr "找不到用户 `%s' " -#: ../src/daemon/main.c:192 +#: ../src/daemon/main.c:191 #, c-format msgid "Failed to find group '%s'." msgstr "找不到用户组 `%s'" -#: ../src/daemon/main.c:196 +#: ../src/daemon/main.c:195 #, c-format msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." msgstr "发现用户'%s' (UID %lu)和组'%s' (GID %lu)." -#: ../src/daemon/main.c:201 +#: ../src/daemon/main.c:200 #, c-format msgid "GID of user '%s' and of group '%s' don't match." msgstr "用户'%s'与组'%s'的GID不匹配." -#: ../src/daemon/main.c:206 +#: ../src/daemon/main.c:205 #, c-format msgid "Home directory of user '%s' is not '%s', ignoring." msgstr "用户'%s'的主文件夹不是'%s',忽略。" -#: ../src/daemon/main.c:209 ../src/daemon/main.c:214 +#: ../src/daemon/main.c:208 ../src/daemon/main.c:213 #, c-format msgid "Failed to create '%s': %s" msgstr "创建'%s'失败: %s" -#: ../src/daemon/main.c:221 +#: ../src/daemon/main.c:220 #, c-format msgid "Failed to change group list: %s" msgstr "更改组列表失败:%s" -#: ../src/daemon/main.c:237 +#: ../src/daemon/main.c:236 #, c-format msgid "Failed to change GID: %s" msgstr "更改GID失败:%s" -#: ../src/daemon/main.c:253 +#: ../src/daemon/main.c:252 #, c-format msgid "Failed to change UID: %s" msgstr "更改UID失败:%s" -#: ../src/daemon/main.c:267 +#: ../src/daemon/main.c:271 msgid "Successfully dropped root privileges." msgstr "成功放弃root权限。" -#: ../src/daemon/main.c:275 +#: ../src/daemon/main.c:279 msgid "System wide mode unsupported on this platform." msgstr "此平台不支持system-wide模式。" -#: ../src/daemon/main.c:293 +#: ../src/daemon/main.c:297 #, c-format msgid "setrlimit(%s, (%u, %u)) failed: %s" msgstr "setrlimit(%s, (%u, %u)) 失败:%s" -#: ../src/daemon/main.c:481 +#: ../src/daemon/main.c:469 msgid "Failed to parse command line." msgstr "分析命令行失败。" -#: ../src/daemon/main.c:505 -#, c-format -msgid "We're in the group '%s', allowing high-priority scheduling." -msgstr "我们在'%s'组中,允许高优先级调度。" - -#: ../src/daemon/main.c:512 -#, c-format -msgid "We're in the group '%s', allowing real-time scheduling." -msgstr "我们在'%s'组中,允许实时调度。" - -#: ../src/daemon/main.c:520 -msgid "PolicyKit grants us acquire-high-priority privilege." -msgstr "PolicyKit授予我们“获取高优先级”权限。" - -#: ../src/daemon/main.c:523 -msgid "PolicyKit refuses acquire-high-priority privilege." -msgstr "PolicyKit拒绝“获取高优先级”权限。" - -#: ../src/daemon/main.c:528 -msgid "PolicyKit grants us acquire-real-time privilege." -msgstr "PolicyKit授予我们“获取实时”权限。" - -#: ../src/daemon/main.c:531 -msgid "PolicyKit refuses acquire-real-time privilege." -msgstr "PolicyKit拒绝我们“获取实时”权限。" - -#: ../src/daemon/main.c:560 -#, c-format -msgid "" -"Called SUID root and real-time and/or high-priority scheduling was requested " -"in the configuration. However, we lack the necessary privileges:\n" -"We are not in group '%s', PolicyKit refuse to grant us the requested " -"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " -"limits.\n" -"For enabling real-time/high-priority scheduling please acquire the " -"appropriate PolicyKit privileges, or become a member of '%s', or increase " -"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." -msgstr "" -"配置中需要调用 SUID root、实时和/或者高优先调度。但是我们缺少必要的特权:\n" -"我们不属于组群 '%s',PolicyKit 拒绝赋予我们要求的特权,而我们无法增加 " -"RLIMIT_NICE/RLIMIT_RTPRIO 资源限制。\n" -"要启用实时/高优先调度,请获得适当的 PolicyKit 特权,或者成为 '%s' 成员,也可" -"以为这个用户增加 RLIMIT_NICE/RLIMIT_RTPRIO 资源限制。" - -#: ../src/daemon/main.c:585 -msgid "" -"High-priority scheduling enabled in configuration but not allowed by policy." -msgstr "配置中已启用高优先级调度,但策略未允许。" - -#: ../src/daemon/main.c:614 -msgid "Successfully increased RLIMIT_RTPRIO" -msgstr "提高RLIMIT_RTPRIO成功。" - -#: ../src/daemon/main.c:617 -#, c-format -msgid "RLIMIT_RTPRIO failed: %s" -msgstr "RLIMIT_RTPRIO失败:%s" - -#: ../src/daemon/main.c:624 -msgid "Giving up CAP_NICE" -msgstr "正在放弃CAP_NICE" - -#: ../src/daemon/main.c:631 -msgid "" -"Real-time scheduling enabled in configuration but not allowed by policy." -msgstr "配置中已启用实时调度,但策略未允许。" - -#: ../src/daemon/main.c:692 +#: ../src/daemon/main.c:536 msgid "Daemon not running" msgstr "后台程序没有运行" -#: ../src/daemon/main.c:694 +#: ../src/daemon/main.c:538 #, c-format msgid "Daemon running as PID %u" msgstr "后台程序正在运行,PID %u" -#: ../src/daemon/main.c:704 +#: ../src/daemon/main.c:548 #, c-format msgid "Failed to kill daemon: %s" msgstr "杀死后台程序失败:%s" -#: ../src/daemon/main.c:722 +#: ../src/daemon/main.c:566 msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "不应以root身份运行本程序(除非指定 --system)。" -#: ../src/daemon/main.c:724 +#: ../src/daemon/main.c:568 msgid "Root privileges required." msgstr "需要 root 权限。" -#: ../src/daemon/main.c:729 +#: ../src/daemon/main.c:573 msgid "--start not supported for system instances." msgstr "系统实例不支持 --start。" -#: ../src/daemon/main.c:734 +#: ../src/daemon/main.c:578 msgid "Running in system mode, but --disallow-exit not set!" msgstr "正在以系统模式运行,但是 --disallow-exit 未设定!" -#: ../src/daemon/main.c:737 +#: ../src/daemon/main.c:581 msgid "Running in system mode, but --disallow-module-loading not set!" msgstr "正在以系统模式运行,但是 --disallow-module-loading 未设定!" -#: ../src/daemon/main.c:740 +#: ../src/daemon/main.c:584 msgid "Running in system mode, forcibly disabling SHM mode!" msgstr "正在以系统模式运行,强制禁用SHM模式!" -#: ../src/daemon/main.c:745 +#: ../src/daemon/main.c:589 msgid "Running in system mode, forcibly disabling exit idle time!" msgstr "正在以系统模式运行,强制禁用退出空闲时间!" -#: ../src/daemon/main.c:772 +#: ../src/daemon/main.c:616 msgid "Failed to acquire stdio." msgstr "获取stdio失败。" -#: ../src/daemon/main.c:778 +#: ../src/daemon/main.c:622 #, c-format msgid "pipe failed: %s" msgstr "管道失败:%s" -#: ../src/daemon/main.c:783 +#: ../src/daemon/main.c:627 #, c-format msgid "fork() failed: %s" msgstr "fork()失败:%s" -#: ../src/daemon/main.c:797 +#: ../src/daemon/main.c:641 ../src/utils/pacat.c:504 #, c-format msgid "read() failed: %s" msgstr "read()失败:%s" -#: ../src/daemon/main.c:803 +#: ../src/daemon/main.c:647 msgid "Daemon startup failed." msgstr "后台程序启动失败。" -#: ../src/daemon/main.c:805 +#: ../src/daemon/main.c:649 msgid "Daemon startup successful." msgstr "后台程序启动成功。" -#: ../src/daemon/main.c:875 +#: ../src/daemon/main.c:726 #, c-format msgid "This is PulseAudio %s" msgstr "这是 PulseAudio %s" -#: ../src/daemon/main.c:876 +#: ../src/daemon/main.c:727 #, c-format msgid "Compilation host: %s" msgstr "编译主机:%s" -#: ../src/daemon/main.c:877 +#: ../src/daemon/main.c:728 #, c-format msgid "Compilation CFLAGS: %s" msgstr "编译CFLAGS:%s" -#: ../src/daemon/main.c:880 +#: ../src/daemon/main.c:731 #, c-format msgid "Running on host: %s" msgstr "正在主机上运行:%s" -#: ../src/daemon/main.c:883 +#: ../src/daemon/main.c:734 #, c-format msgid "Found %u CPUs." msgstr "找到 %u CPU。" -#: ../src/daemon/main.c:885 +#: ../src/daemon/main.c:736 #, c-format msgid "Page size is %lu bytes" msgstr "页面大小为%lu字节" -#: ../src/daemon/main.c:888 +#: ../src/daemon/main.c:739 msgid "Compiled with Valgrind support: yes" msgstr "编译启用Valgrind支持:是" -#: ../src/daemon/main.c:890 +#: ../src/daemon/main.c:741 msgid "Compiled with Valgrind support: no" msgstr "编译启用Valgrind支持:否" -#: ../src/daemon/main.c:893 +#: ../src/daemon/main.c:744 #, c-format msgid "Running in valgrind mode: %s" msgstr "正在以valgrind模式运行:%s" -#: ../src/daemon/main.c:896 +#: ../src/daemon/main.c:747 msgid "Optimized build: yes" msgstr "优化生成:是" -#: ../src/daemon/main.c:898 +#: ../src/daemon/main.c:749 msgid "Optimized build: no" msgstr "优化生成:否" -#: ../src/daemon/main.c:902 +#: ../src/daemon/main.c:753 msgid "NDEBUG defined, all asserts disabled." msgstr "拒绝 NDEBUG,禁用所有 assert" -#: ../src/daemon/main.c:904 +#: ../src/daemon/main.c:755 msgid "FASTPATH defined, only fast path asserts disabled." msgstr "拒绝 FASTPATH,只禁用快速路径 assert。" -#: ../src/daemon/main.c:906 +#: ../src/daemon/main.c:757 msgid "All asserts enabled." msgstr "启用所有 assert。" -#: ../src/daemon/main.c:910 +#: ../src/daemon/main.c:761 msgid "Failed to get machine ID" msgstr "获取machine ID失败" -#: ../src/daemon/main.c:913 +#: ../src/daemon/main.c:764 #, c-format msgid "Machine ID is %s." msgstr "machine ID是%s。" -#: ../src/daemon/main.c:917 +#: ../src/daemon/main.c:768 #, fuzzy, c-format msgid "Session ID is %s." msgstr "machine ID是%s。" -#: ../src/daemon/main.c:923 +#: ../src/daemon/main.c:774 #, c-format msgid "Using runtime directory %s." msgstr "正在使用运行时文件夹%s。" -#: ../src/daemon/main.c:928 +#: ../src/daemon/main.c:779 #, c-format msgid "Using state directory %s." msgstr "正在使用状态文件夹%s。" -#: ../src/daemon/main.c:931 +#: ../src/daemon/main.c:782 +#, fuzzy, c-format +msgid "Using modules directory %s." +msgstr "正在使用运行时文件夹%s。" + +#: ../src/daemon/main.c:784 #, c-format msgid "Running in system mode: %s" msgstr "正在以系统模式运行:%s" -#: ../src/daemon/main.c:934 +#: ../src/daemon/main.c:787 msgid "" "OK, so you are running PA in system mode. Please note that you most likely " "shouldn't be doing that.\n" @@ -451,41 +357,41 @@ msgid "" "explanation why system mode is usually a bad idea." msgstr "" -#: ../src/daemon/main.c:951 +#: ../src/daemon/main.c:804 msgid "pa_pid_file_create() failed." msgstr "pa_pid_file_create()失败。" -#: ../src/daemon/main.c:961 +#: ../src/daemon/main.c:814 msgid "Fresh high-resolution timers available! Bon appetit!" msgstr "新鲜的高分辨率计时器开锅了!吃个饱!" -#: ../src/daemon/main.c:963 +#: ../src/daemon/main.c:816 msgid "" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "resolution timers enabled!" msgstr "老兄,你的内核真臭!现在流行的是启用了高分辩率计分器的Linux!" -#: ../src/daemon/main.c:988 +#: ../src/daemon/main.c:839 msgid "pa_core_new() failed." msgstr "pa_core_new()失败。" -#: ../src/daemon/main.c:1050 +#: ../src/daemon/main.c:899 msgid "Failed to initialize daemon." msgstr "后台程序初始化失败。" -#: ../src/daemon/main.c:1055 +#: ../src/daemon/main.c:904 msgid "Daemon startup without any loaded modules, refusing to work." msgstr "后台程序启动未加载任何模块,拒绝工作。" -#: ../src/daemon/main.c:1072 +#: ../src/daemon/main.c:921 msgid "Daemon startup complete." msgstr "后台程序启动完成。" -#: ../src/daemon/main.c:1078 +#: ../src/daemon/main.c:927 msgid "Daemon shutdown initiated." msgstr "开始关闭后台程序。" -#: ../src/daemon/main.c:1100 +#: ../src/daemon/main.c:949 msgid "Daemon terminated." msgstr "后台程序已终止。" @@ -726,90 +632,87 @@ msgstr "" msgid "Path: %s\n" msgstr "路径:%s\n" -#: ../src/daemon/daemon-conf.c:216 +#: ../src/daemon/daemon-conf.c:232 #, c-format msgid "[%s:%u] Invalid log target '%s'." msgstr "[%s:%u] 无效的日志目标'%s'。" -#: ../src/daemon/daemon-conf.c:232 +#: ../src/daemon/daemon-conf.c:248 #, c-format msgid "[%s:%u] Invalid log level '%s'." msgstr "[%s:%u] 无效的日志级别'%s'。" -#: ../src/daemon/daemon-conf.c:248 +#: ../src/daemon/daemon-conf.c:264 #, c-format msgid "[%s:%u] Invalid resample method '%s'." msgstr "[%s:%u] 无效的重采样方法'%s'。" -#: ../src/daemon/daemon-conf.c:271 +#: ../src/daemon/daemon-conf.c:287 #, c-format msgid "[%s:%u] Invalid rlimit '%s'." msgstr "[%s:%u] 无效的rlimit '%s'。" -#: ../src/daemon/daemon-conf.c:278 +#: ../src/daemon/daemon-conf.c:294 #, c-format msgid "[%s:%u] rlimit not supported on this platform." msgstr "[%s:%u] 此平台不支持rlimit。" -#: ../src/daemon/daemon-conf.c:294 +#: ../src/daemon/daemon-conf.c:310 #, c-format msgid "[%s:%u] Invalid sample format '%s'." msgstr "[%s:%u] 无效的样品格式'%s'。" -#: ../src/daemon/daemon-conf.c:312 +#: ../src/daemon/daemon-conf.c:328 #, c-format msgid "[%s:%u] Invalid sample rate '%s'." msgstr "[%s:%u] 无效的样品率'%s'。" -#: ../src/daemon/daemon-conf.c:336 +#: ../src/daemon/daemon-conf.c:352 #, c-format msgid "[%s:%u] Invalid sample channels '%s'." msgstr "[%s:%u] 无效的样品通道'%s'。" -#: ../src/daemon/daemon-conf.c:354 +#: ../src/daemon/daemon-conf.c:370 #, c-format msgid "[%s:%u] Invalid channel map '%s'." msgstr "[%s:%u] 无效频道地图 '%s'。" -#: ../src/daemon/daemon-conf.c:372 +#: ../src/daemon/daemon-conf.c:388 #, c-format msgid "[%s:%u] Invalid number of fragments '%s'." msgstr "[%s:%u] 无效的分段数'%s'。" -#: ../src/daemon/daemon-conf.c:390 +#: ../src/daemon/daemon-conf.c:406 #, c-format msgid "[%s:%u] Invalid fragment size '%s'." msgstr "[%s:%u] 无效的分段大小'%s'。" -#: ../src/daemon/daemon-conf.c:408 +#: ../src/daemon/daemon-conf.c:424 #, c-format msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] 无效的nice level '%s'。" -#: ../src/daemon/daemon-conf.c:524 +#: ../src/daemon/daemon-conf.c:546 #, c-format msgid "Failed to open configuration file: %s" msgstr "打开配置文件失败:%s" -#: ../src/daemon/daemon-conf.c:540 +#: ../src/daemon/daemon-conf.c:562 msgid "" "The specified default channel map has a different number of channels than " "the specified default number of channels." msgstr "指定的默认频道地图的频道数与指定的默认频道数不同。" -#: ../src/daemon/daemon-conf.c:616 +#: ../src/daemon/daemon-conf.c:638 #, c-format msgid "### Read from configuration file: %s ###\n" msgstr "### 从配置文件读取:%s ###\n" -#: ../src/daemon/caps.c:63 -msgid "Dropping root privileges." +#: ../src/daemon/caps.c:62 +#, fuzzy +msgid "Cleaning up privileges." msgstr "正在取消 root 特权。" -#: ../src/daemon/caps.c:103 -msgid "Limited capabilities successfully to CAP_SYS_NICE." -msgstr "性能成功限制到CAP_SYS_NICE。" - #: ../src/daemon/pulseaudio.desktop.in.h:1 msgid "PulseAudio Sound System" msgstr "PulseAudio 声音系统" @@ -818,25 +721,7 @@ msgstr "PulseAudio 声音系统" msgid "Start the PulseAudio Sound System" msgstr "启动 PulseAudio 声音系统" -#: ../src/daemon/org.pulseaudio.policy.in.h:1 -msgid "" -"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon" -msgstr "PulseAudio 守护进程的高优先调度(负的 Unix nic 等级)" - -#: ../src/daemon/org.pulseaudio.policy.in.h:2 -msgid "Real-time scheduling for the PulseAudio daemon" -msgstr "PulseAudio 守护进程的实时调度。" - -#: ../src/daemon/org.pulseaudio.policy.in.h:3 -msgid "" -"System policy prevents PulseAudio from acquiring high-priority scheduling." -msgstr "系统策略防止 PulseAudio 获得高优先调度。" - -#: ../src/daemon/org.pulseaudio.policy.in.h:4 -msgid "System policy prevents PulseAudio from acquiring real-time scheduling." -msgstr "系统策略防止 PulseAudio 获得实时调度。" - -#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747 +#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" msgstr "单声道" @@ -1040,33 +925,33 @@ msgstr "上左后" msgid "Top Rear Right" msgstr "上右后" -#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167 -#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265 -#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315 +#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170 +#: ../src/pulse/volume.c:295 ../src/pulse/volume.c:321 +#: ../src/pulse/volume.c:341 ../src/pulse/volume.c:371 msgid "(invalid)" msgstr "(无效)" -#: ../src/pulse/channelmap.c:751 +#: ../src/pulse/channelmap.c:761 msgid "Stereo" msgstr "立体声" -#: ../src/pulse/channelmap.c:756 +#: ../src/pulse/channelmap.c:766 msgid "Surround 4.0" msgstr "环绕 4.0 " -#: ../src/pulse/channelmap.c:762 +#: ../src/pulse/channelmap.c:772 msgid "Surround 4.1" msgstr "环绕 4.1" -#: ../src/pulse/channelmap.c:768 +#: ../src/pulse/channelmap.c:778 msgid "Surround 5.0" msgstr "环绕 5.0" -#: ../src/pulse/channelmap.c:774 +#: ../src/pulse/channelmap.c:784 msgid "Surround 5.1" msgstr "环绕 5.1" -#: ../src/pulse/channelmap.c:781 +#: ../src/pulse/channelmap.c:791 msgid "Surround 7.1" msgstr "环绕 7.1" @@ -1170,27 +1055,35 @@ msgstr "缺少部署" msgid "Client forked" msgstr "客户端分支" -#: ../src/pulse/sample.c:169 +#: ../src/pulse/error.c:68 +msgid "Input/Output error" +msgstr "" + +#: ../src/pulse/error.c:69 +msgid "Device or resource busy" +msgstr "" + +#: ../src/pulse/sample.c:172 #, c-format msgid "%s %uch %uHz" msgstr "%s %uch %uHz" -#: ../src/pulse/sample.c:181 +#: ../src/pulse/sample.c:184 #, c-format msgid "%0.1f GiB" msgstr "%0.1f GiB" -#: ../src/pulse/sample.c:183 +#: ../src/pulse/sample.c:186 #, c-format msgid "%0.1f MiB" msgstr "%0.1f MiB" -#: ../src/pulse/sample.c:185 +#: ../src/pulse/sample.c:188 #, c-format msgid "%0.1f KiB" msgstr "%0.1f KiB" -#: ../src/pulse/sample.c:187 +#: ../src/pulse/sample.c:190 #, c-format msgid "%u B" msgstr "%u B" @@ -1203,188 +1096,192 @@ msgstr "XOpenDisplay()失败" msgid "Failed to parse cookie data" msgstr "cookie数据分析失败" -#: ../src/pulse/client-conf.c:110 +#: ../src/pulse/client-conf.c:111 #, c-format msgid "Failed to open configuration file '%s': %s" msgstr "打开配置文件'%s'失败:%s" -#: ../src/pulse/context.c:546 +#: ../src/pulse/context.c:550 msgid "No cookie loaded. Attempting to connect without." msgstr "没有加载cookie。尝试不加载cookie进行连接。" -#: ../src/pulse/context.c:676 +#: ../src/pulse/context.c:693 #, c-format msgid "fork(): %s" msgstr "fork():%s" -#: ../src/pulse/context.c:729 +#: ../src/pulse/context.c:748 #, c-format msgid "waitpid(): %s" msgstr "waitpid():%s" -#: ../src/pulse/context.c:1403 +#: ../src/pulse/context.c:1435 #, c-format msgid "Received message for unknown extension '%s'" msgstr "收到未知扩展'%s'的信息" -#: ../src/utils/pacat.c:107 -#, c-format -msgid "Failed to drain stream: %s\n" +#: ../src/utils/pacat.c:108 +#, fuzzy, c-format +msgid "Failed to drain stream: %s" msgstr "排出流失败:%s\n" -#: ../src/utils/pacat.c:112 -msgid "Playback stream drained.\n" +#: ../src/utils/pacat.c:113 +#, fuzzy +msgid "Playback stream drained." msgstr "流播放完毕。\n" -#: ../src/utils/pacat.c:122 -msgid "Draining connection to server.\n" +#: ../src/utils/pacat.c:123 +#, fuzzy +msgid "Draining connection to server." msgstr "Draining 连接到服务器。\n" -#: ../src/utils/pacat.c:135 -#, c-format -msgid "pa_stream_drain(): %s\n" +#: ../src/utils/pacat.c:136 +#, fuzzy, c-format +msgid "pa_stream_drain(): %s" msgstr "pa_stream_drain():%s\n" -#: ../src/utils/pacat.c:158 -#, c-format -msgid "pa_stream_write() failed: %s\n" +#: ../src/utils/pacat.c:159 +#, fuzzy, c-format +msgid "pa_stream_write() failed: %s" msgstr "pa_stream_write()失败:%s\n" -#: ../src/utils/pacat.c:233 ../src/utils/pacat.c:262 -#, c-format -msgid "pa_stream_peek() failed: %s\n" +#: ../src/utils/pacat.c:197 +#, fuzzy, c-format +msgid "pa_stream_begin_write() failed: %s" +msgstr "pa_stream_write()失败:%s\n" + +#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267 +#, fuzzy, c-format +msgid "pa_stream_peek() failed: %s" msgstr "pa_stream_peek()失败:%s\n" -#: ../src/utils/pacat.c:302 -msgid "Stream successfully created.\n" +#: ../src/utils/pacat.c:307 +#, fuzzy +msgid "Stream successfully created." msgstr "流创建成功。\n" -#: ../src/utils/pacat.c:305 -#, c-format -msgid "pa_stream_get_buffer_attr() failed: %s\n" +#: ../src/utils/pacat.c:310 +#, fuzzy, c-format +msgid "pa_stream_get_buffer_attr() failed: %s" msgstr "pa_stream_get_buffer_attr()失败:%s\n" -#: ../src/utils/pacat.c:309 -#, c-format -msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n" +#: ../src/utils/pacat.c:314 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u" msgstr "缓冲计量:maxlength=%u,tlength=%u,prebuf=%u,minreq=%u\n" -#: ../src/utils/pacat.c:312 -#, c-format -msgid "Buffer metrics: maxlength=%u, fragsize=%u\n" +#: ../src/utils/pacat.c:317 +#, fuzzy, c-format +msgid "Buffer metrics: maxlength=%u, fragsize=%u" msgstr "缓冲计量:maxlength=%u,fragsize=%u\n" -#: ../src/utils/pacat.c:316 -#, c-format -msgid "Using sample spec '%s', channel map '%s'.\n" +#: ../src/utils/pacat.c:321 +#, fuzzy, c-format +msgid "Using sample spec '%s', channel map '%s'." msgstr "正在使用样品规格'%s',通道映射'%s'。\n" -#: ../src/utils/pacat.c:320 -#, c-format -msgid "Connected to device %s (%u, %ssuspended).\n" +#: ../src/utils/pacat.c:325 +#, fuzzy, c-format +msgid "Connected to device %s (%u, %ssuspended)." msgstr "已连接至设备%s (%u,%s挂起)。\n" -#: ../src/utils/pacat.c:330 -#, c-format -msgid "Stream error: %s\n" +#: ../src/utils/pacat.c:335 +#, fuzzy, c-format +msgid "Stream error: %s" msgstr "流错误:%s\n" -#: ../src/utils/pacat.c:340 -#, c-format -msgid "Stream device suspended.%s \n" +#: ../src/utils/pacat.c:345 +#, fuzzy, c-format +msgid "Stream device suspended.%s" msgstr "流设备挂起。%s\n" -#: ../src/utils/pacat.c:342 -#, c-format -msgid "Stream device resumed.%s \n" +#: ../src/utils/pacat.c:347 +#, fuzzy, c-format +msgid "Stream device resumed.%s" msgstr "流设备恢复。%s\n" -#: ../src/utils/pacat.c:350 -#, c-format -msgid "Stream underrun.%s \n" +#: ../src/utils/pacat.c:355 +#, fuzzy, c-format +msgid "Stream underrun.%s" msgstr "流欠载运行。%s\n" -#: ../src/utils/pacat.c:357 -#, c-format -msgid "Stream overrun.%s \n" +#: ../src/utils/pacat.c:362 +#, fuzzy, c-format +msgid "Stream overrun.%s" msgstr "流超限运行。%s\n" -#: ../src/utils/pacat.c:364 -#, c-format -msgid "Stream started.%s \n" +#: ../src/utils/pacat.c:369 +#, fuzzy, c-format +msgid "Stream started.%s" msgstr "流已启动。%s\n" -#: ../src/utils/pacat.c:371 -#, c-format -msgid "Stream moved to device %s (%u, %ssuspended).%s \n" +#: ../src/utils/pacat.c:376 +#, fuzzy, c-format +msgid "Stream moved to device %s (%u, %ssuspended).%s" msgstr "流移至设备%s (%u,%s挂起)。%s\n" -#: ../src/utils/pacat.c:371 +#: ../src/utils/pacat.c:376 msgid "not " msgstr "not " -#: ../src/utils/pacat.c:378 -#, c-format -msgid "Stream buffer attributes changed.%s \n" +#: ../src/utils/pacat.c:383 +#, fuzzy, c-format +msgid "Stream buffer attributes changed.%s" msgstr "更改流换出属性。%s\n" -#: ../src/utils/pacat.c:411 -#, c-format -msgid "Connection established.%s \n" +#: ../src/utils/pacat.c:415 +#, fuzzy, c-format +msgid "Connection established.%s" msgstr "连接已建立。%s \n" -#: ../src/utils/pacat.c:414 -#, c-format -msgid "pa_stream_new() failed: %s\n" +#: ../src/utils/pacat.c:418 +#, fuzzy, c-format +msgid "pa_stream_new() failed: %s" msgstr "pa_stream_new()失败:%s\n" -#: ../src/utils/pacat.c:442 -#, c-format -msgid "pa_stream_connect_playback() failed: %s\n" +#: ../src/utils/pacat.c:446 +#, fuzzy, c-format +msgid "pa_stream_connect_playback() failed: %s" msgstr "pa_stream_connect_playback()失败:%s\n" -#: ../src/utils/pacat.c:448 -#, c-format -msgid "pa_stream_connect_record() failed: %s\n" +#: ../src/utils/pacat.c:452 +#, fuzzy, c-format +msgid "pa_stream_connect_record() failed: %s" msgstr "pa_stream_connect_playback()失败:%s\n" -#: ../src/utils/pacat.c:462 ../src/utils/pasuspender.c:159 -#: ../src/utils/pactl.c:814 -#, c-format -msgid "Connection failure: %s\n" +#: ../src/utils/pacat.c:466 ../src/utils/pactl.c:857 +#, fuzzy, c-format +msgid "Connection failure: %s" msgstr "连接失败:%s\n" -#: ../src/utils/pacat.c:495 -msgid "Got EOF.\n" +#: ../src/utils/pacat.c:499 +#, fuzzy +msgid "Got EOF." msgstr "收到EOF。\n" -#: ../src/utils/pacat.c:500 -#, c-format -msgid "read() failed: %s\n" -msgstr "read()失败:%s\n" - -#: ../src/utils/pacat.c:532 -#, c-format -msgid "write() failed: %s\n" +#: ../src/utils/pacat.c:536 +#, fuzzy, c-format +msgid "write() failed: %s" msgstr "write()失败:%s\n" -#: ../src/utils/pacat.c:553 -msgid "Got signal, exiting.\n" +#: ../src/utils/pacat.c:557 +#, fuzzy +msgid "Got signal, exiting." msgstr "收到信号,正在退出。\n" -#: ../src/utils/pacat.c:567 -#, c-format -msgid "Failed to get latency: %s\n" +#: ../src/utils/pacat.c:571 +#, fuzzy, c-format +msgid "Failed to get latency: %s" msgstr "获取传输延迟失败:%s\n" -#: ../src/utils/pacat.c:572 -#, c-format -msgid "Time: %0.3f sec; Latency: %0.0f usec. \r" +#: ../src/utils/pacat.c:576 +#, fuzzy, c-format +msgid "Time: %0.3f sec; Latency: %0.0f usec." msgstr "时间:%0.3f秒;延迟:%0.0f 微秒。 \r" -#: ../src/utils/pacat.c:592 -#, c-format -msgid "pa_stream_update_timing_info() failed: %s\n" +#: ../src/utils/pacat.c:595 +#, fuzzy, c-format +msgid "pa_stream_update_timing_info() failed: %s" msgstr "pa_stream_update_timing_info()失败:%s\n" #: ../src/utils/pacat.c:605 @@ -1490,135 +1387,140 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:900 +#: ../src/utils/pacat.c:760 ../src/utils/pactl.c:953 #, fuzzy, c-format -msgid "Invalid client name '%s'\n" +msgid "Invalid client name '%s'" msgstr "无效的通道映射描述'%s'\n" -#: ../src/utils/pacat.c:776 +#: ../src/utils/pacat.c:775 #, fuzzy, c-format -msgid "Invalid stream name '%s'\n" +msgid "Invalid stream name '%s'" msgstr "无效的重采样方法'%s'。" -#: ../src/utils/pacat.c:813 -#, c-format -msgid "Invalid channel map '%s'\n" +#: ../src/utils/pacat.c:812 +#, fuzzy, c-format +msgid "Invalid channel map '%s'" msgstr "无效的通道映射描述'%s'\n" -#: ../src/utils/pacat.c:842 -#, c-format -msgid "Invalid latency specification '%s'\n" +#: ../src/utils/pacat.c:841 +#, fuzzy, c-format +msgid "Invalid latency specification '%s'" msgstr "无效的延迟规格描述 %s'\n" -#: ../src/utils/pacat.c:849 -#, c-format -msgid "Invalid process time specification '%s'\n" +#: ../src/utils/pacat.c:848 +#, fuzzy, c-format +msgid "Invalid process time specification '%s'" msgstr "无效的处理时间描述 '%s'\n" -#: ../src/utils/pacat.c:861 +#: ../src/utils/pacat.c:860 #, fuzzy, c-format -msgid "Invalid property '%s'\n" +msgid "Invalid property '%s'" msgstr "无效的重采样方法'%s'。" -#: ../src/utils/pacat.c:878 +#: ../src/utils/pacat.c:877 #, c-format msgid "Unknown file format %s." msgstr "" -#: ../src/utils/pacat.c:897 -msgid "Invalid sample specification\n" +#: ../src/utils/pacat.c:896 +#, fuzzy +msgid "Invalid sample specification" msgstr "无效的采样描述\n" -#: ../src/utils/pacat.c:907 -#, c-format -msgid "open(): %s\n" +#: ../src/utils/pacat.c:906 +#, fuzzy, c-format +msgid "open(): %s" msgstr "open():%s\n" -#: ../src/utils/pacat.c:912 -#, c-format -msgid "dup2(): %s\n" +#: ../src/utils/pacat.c:911 +#, fuzzy, c-format +msgid "dup2(): %s" msgstr "dup2():%s\n" -#: ../src/utils/pacat.c:919 -msgid "Too many arguments.\n" +#: ../src/utils/pacat.c:918 +#, fuzzy +msgid "Too many arguments." msgstr "参数过多。\n" -#: ../src/utils/pacat.c:930 +#: ../src/utils/pacat.c:929 #, fuzzy -msgid "Failed to generate sample specification for file.\n" +msgid "Failed to generate sample specification for file." msgstr "获取采样信息失败:%s\n" -#: ../src/utils/pacat.c:950 +#: ../src/utils/pacat.c:949 #, fuzzy -msgid "Failed to open audio file.\n" +msgid "Failed to open audio file." msgstr "打开声音文件失败。\n" -#: ../src/utils/pacat.c:956 +#: ../src/utils/pacat.c:955 +#, fuzzy msgid "" "Warning: specified sample specification will be overwritten with " -"specification from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:959 ../src/utils/pactl.c:944 -#, fuzzy -msgid "Failed to determine sample specification from file.\n" -msgstr "获取采样信息失败:%s\n" - -#: ../src/utils/pacat.c:968 -msgid "Warning: Failed to determine channel map from file.\n" -msgstr "" - -#: ../src/utils/pacat.c:979 -msgid "Channel map doesn't match sample specification\n" -msgstr "通道映射与采样描述不匹配\n" - -#: ../src/utils/pacat.c:990 -msgid "Warning: failed to write channel map to file.\n" -msgstr "" - -#: ../src/utils/pacat.c:1005 -#, fuzzy, c-format -msgid "" -"Opening a %s stream with sample specification '%s' and channel map '%s'.\n" +"specification from file." msgstr "以采样规格'%s'打开%s流。\n" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:958 ../src/utils/pactl.c:997 +#, fuzzy +msgid "Failed to determine sample specification from file." +msgstr "获取采样信息失败:%s\n" + +#: ../src/utils/pacat.c:967 +#, fuzzy +msgid "Warning: Failed to determine channel map from file." +msgstr "以采样规格'%s'打开%s流。\n" + +#: ../src/utils/pacat.c:978 +#, fuzzy +msgid "Channel map doesn't match sample specification" +msgstr "通道映射与采样描述不匹配\n" + +#: ../src/utils/pacat.c:989 +#, fuzzy +msgid "Warning: failed to write channel map to file." +msgstr "以采样规格'%s'打开%s流。\n" + +#: ../src/utils/pacat.c:1004 +#, fuzzy, c-format +msgid "" +"Opening a %s stream with sample specification '%s' and channel map '%s'." +msgstr "以采样规格'%s'打开%s流。\n" + +#: ../src/utils/pacat.c:1005 msgid "recording" msgstr "正在录制" -#: ../src/utils/pacat.c:1006 +#: ../src/utils/pacat.c:1005 msgid "playback" msgstr "回放" -#: ../src/utils/pacat.c:1032 ../src/utils/pasuspender.c:277 -#: ../src/utils/pactl.c:1104 -#, c-format -msgid "pa_mainloop_new() failed.\n" +#: ../src/utils/pacat.c:1031 ../src/utils/pactl.c:1267 +#, fuzzy +msgid "pa_mainloop_new() failed." msgstr "pa_mainloop_new()失败。\n" -#: ../src/utils/pacat.c:1051 -msgid "io_new() failed.\n" +#: ../src/utils/pacat.c:1050 +#, fuzzy +msgid "io_new() failed." msgstr "io_new()失败。\n" -#: ../src/utils/pacat.c:1058 ../src/utils/pasuspender.c:290 -#: ../src/utils/pactl.c:1116 -#, c-format -msgid "pa_context_new() failed.\n" +#: ../src/utils/pacat.c:1057 ../src/utils/pactl.c:1279 +#, fuzzy +msgid "pa_context_new() failed." msgstr "pa_context_new()失败。\n" -#: ../src/utils/pacat.c:1066 -#, fuzzy, c-format -msgid "pa_context_connect() failed: %s\n" +#: ../src/utils/pacat.c:1065 ../src/utils/pactl.c:1285 +#, c-format +msgid "pa_context_connect() failed: %s" msgstr "pa_context_connect()失败:%s" -#: ../src/utils/pacat.c:1077 -msgid "time_new() failed.\n" -msgstr "time_new()失败。\n" +#: ../src/utils/pacat.c:1071 +#, fuzzy +msgid "pa_context_rttime_new() failed." +msgstr "pa_context_new()失败。\n" -#: ../src/utils/pacat.c:1084 ../src/utils/pasuspender.c:298 -#: ../src/utils/pactl.c:1127 -#, c-format -msgid "pa_mainloop_run() failed.\n" +#: ../src/utils/pacat.c:1078 ../src/utils/pactl.c:1290 +#, fuzzy +msgid "pa_mainloop_run() failed." msgstr "pa_mainloop_run()失败。\n" #: ../src/utils/pasuspender.c:81 @@ -1646,7 +1548,12 @@ msgstr "恢复失败:%s\n" msgid "WARNING: Sound server is not local, not suspending.\n" msgstr "警告:非本地声音服务器,不会挂起。\n" -#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820 +#: ../src/utils/pasuspender.c:159 +#, c-format +msgid "Connection failure: %s\n" +msgstr "连接失败:%s\n" + +#: ../src/utils/pasuspender.c:176 #, c-format msgid "Got SIGINT, exiting.\n" msgstr "收到SIGINT,正在退出。\n" @@ -1685,32 +1592,47 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pactl.c:128 +#: ../src/utils/pasuspender.c:277 #, c-format -msgid "Failed to get statistics: %s\n" +msgid "pa_mainloop_new() failed.\n" +msgstr "pa_mainloop_new()失败。\n" + +#: ../src/utils/pasuspender.c:290 +#, c-format +msgid "pa_context_new() failed.\n" +msgstr "pa_context_new()失败。\n" + +#: ../src/utils/pasuspender.c:298 +#, c-format +msgid "pa_mainloop_run() failed.\n" +msgstr "pa_mainloop_run()失败。\n" + +#: ../src/utils/pactl.c:135 +#, fuzzy, c-format +msgid "Failed to get statistics: %s" msgstr "获取统计数据失败:%s\n" -#: ../src/utils/pactl.c:134 +#: ../src/utils/pactl.c:141 #, c-format msgid "Currently in use: %u blocks containing %s bytes total.\n" msgstr "当前使用:%u块,总共%s字节。\n" -#: ../src/utils/pactl.c:137 +#: ../src/utils/pactl.c:144 #, c-format msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n" msgstr "整个生命周期所得分配:%u块,总共%s字节。\n" -#: ../src/utils/pactl.c:140 +#: ../src/utils/pactl.c:147 #, c-format msgid "Sample cache size: %s\n" msgstr "采样缓存大小:%s\n" -#: ../src/utils/pactl.c:149 -#, c-format -msgid "Failed to get server information: %s\n" +#: ../src/utils/pactl.c:156 +#, fuzzy, c-format +msgid "Failed to get server information: %s" msgstr "获取服务器信息失败:%s\n" -#: ../src/utils/pactl.c:157 +#: ../src/utils/pactl.c:164 #, c-format msgid "" "User name: %s\n" @@ -1733,12 +1655,12 @@ msgstr "" "默认源: %s\n" "Cookie:%08x\n" -#: ../src/utils/pactl.c:198 -#, c-format -msgid "Failed to get sink information: %s\n" +#: ../src/utils/pactl.c:205 +#, fuzzy, c-format +msgid "Failed to get sink information: %s" msgstr "获取音频出口信息失败:%s\n" -#: ../src/utils/pactl.c:214 +#: ../src/utils/pactl.c:221 #, c-format msgid "" "Sink #%u\n" @@ -1777,22 +1699,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353 +#: ../src/utils/pactl.c:268 ../src/utils/pactl.c:360 #, fuzzy, c-format msgid "\tPorts:\n" msgstr "\tProfiles:\n" -#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359 +#: ../src/utils/pactl.c:274 ../src/utils/pactl.c:366 #, fuzzy, c-format msgid "\tActive Port: %s\n" msgstr "\tActive Profile: %s\n" -#: ../src/utils/pactl.c:290 -#, c-format -msgid "Failed to get source information: %s\n" +#: ../src/utils/pactl.c:297 +#, fuzzy, c-format +msgid "Failed to get source information: %s" msgstr "获取音频入口信息失败:%s\n" -#: ../src/utils/pactl.c:306 +#: ../src/utils/pactl.c:313 #, c-format msgid "" "Source #%u\n" @@ -1831,20 +1753,20 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429 -#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526 -#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581 -#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631 -#: ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:345 ../src/utils/pactl.c:401 ../src/utils/pactl.c:436 +#: ../src/utils/pactl.c:473 ../src/utils/pactl.c:532 ../src/utils/pactl.c:533 +#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:587 ../src/utils/pactl.c:588 +#: ../src/utils/pactl.c:594 ../src/utils/pactl.c:637 ../src/utils/pactl.c:638 +#: ../src/utils/pactl.c:645 msgid "n/a" msgstr "n/a" -#: ../src/utils/pactl.c:368 -#, c-format -msgid "Failed to get module information: %s\n" +#: ../src/utils/pactl.c:375 +#, fuzzy, c-format +msgid "Failed to get module information: %s" msgstr "获取模块信息失败:%s\n" -#: ../src/utils/pactl.c:386 +#: ../src/utils/pactl.c:393 #, c-format msgid "" "Module #%u\n" @@ -1861,12 +1783,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:405 -#, c-format -msgid "Failed to get client information: %s\n" +#: ../src/utils/pactl.c:412 +#, fuzzy, c-format +msgid "Failed to get client information: %s" msgstr "获取客户端信息失败:%s\n" -#: ../src/utils/pactl.c:423 +#: ../src/utils/pactl.c:430 #, c-format msgid "" "Client #%u\n" @@ -1881,12 +1803,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:440 -#, c-format -msgid "Failed to get card information: %s\n" +#: ../src/utils/pactl.c:447 +#, fuzzy, c-format +msgid "Failed to get card information: %s" msgstr "获取声卡信息失败:%s\n" -#: ../src/utils/pactl.c:458 +#: ../src/utils/pactl.c:465 #, c-format msgid "" "Card #%u\n" @@ -1903,22 +1825,22 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:472 +#: ../src/utils/pactl.c:479 #, c-format msgid "\tProfiles:\n" msgstr "\tProfiles:\n" -#: ../src/utils/pactl.c:478 +#: ../src/utils/pactl.c:485 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tActive Profile: %s\n" -#: ../src/utils/pactl.c:489 -#, c-format -msgid "Failed to get sink input information: %s\n" +#: ../src/utils/pactl.c:496 +#, fuzzy, c-format +msgid "Failed to get sink input information: %s" msgstr "获取音频出口输入信息失败:%s\n" -#: ../src/utils/pactl.c:508 +#: ../src/utils/pactl.c:515 #, c-format msgid "" "Sink Input #%u\n" @@ -1955,12 +1877,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:547 -#, c-format -msgid "Failed to get source output information: %s\n" +#: ../src/utils/pactl.c:554 +#, fuzzy, c-format +msgid "Failed to get source output information: %s" msgstr "获取音频入口输出信息失败:%s\n" -#: ../src/utils/pactl.c:567 +#: ../src/utils/pactl.c:574 #, c-format msgid "" "Source Output #%u\n" @@ -1989,12 +1911,12 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:598 -#, c-format -msgid "Failed to get sample information: %s\n" +#: ../src/utils/pactl.c:605 +#, fuzzy, c-format +msgid "Failed to get sample information: %s" msgstr "获取采样信息失败:%s\n" -#: ../src/utils/pactl.c:616 +#: ../src/utils/pactl.c:623 #, c-format msgid "" "Sample #%u\n" @@ -2025,21 +1947,27 @@ msgstr "" "\tProperties:\n" "\t\t%s\n" -#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656 -#, c-format -msgid "Failure: %s\n" +#: ../src/utils/pactl.c:653 ../src/utils/pactl.c:663 +#, fuzzy, c-format +msgid "Failure: %s" msgstr "失败:%s\n" -#: ../src/utils/pactl.c:680 -#, c-format -msgid "Failed to upload sample: %s\n" +#: ../src/utils/pactl.c:687 +#, fuzzy, c-format +msgid "Failed to upload sample: %s" msgstr "上传采样失败:%s\n" -#: ../src/utils/pactl.c:697 -msgid "Premature end of file\n" +#: ../src/utils/pactl.c:704 +#, fuzzy +msgid "Premature end of file" msgstr "文件过早结束\n" -#: ../src/utils/pactl.c:826 +#: ../src/utils/pactl.c:863 +#, fuzzy +msgid "Got SIGINT, exiting." +msgstr "收到SIGINT,正在退出。\n" + +#: ../src/utils/pactl.c:869 #, fuzzy, c-format msgid "" "%s [options] stat\n" @@ -2048,15 +1976,21 @@ msgid "" "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" -"%s [options] move-sink-input ID SINK\n" -"%s [options] move-source-output ID SOURCE\n" +"%s [options] move-sink-input SINKINPUT SINK\n" +"%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" -"%s [options] unload-module ID\n" -"%s [options] suspend-sink [SINK] 1|0\n" -"%s [options] suspend-source [SOURCE] 1|0\n" -"%s [options] set-card-profile [CARD] [PROFILE] \n" -"%s [options] set-sink-port [SINK] [PORT] \n" -"%s [options] set-source-port [SOURCE] [PORT] \n" +"%s [options] unload-module MODULE\n" +"%s [options] suspend-sink SINK 1|0\n" +"%s [options] suspend-source SOURCE 1|0\n" +"%s [options] set-card-profile CARD PROFILE\n" +"%s [options] set-sink-port SINK PORT\n" +"%s [options] set-source-port SOURCE PORT\n" +"%s [options] set-sink-volume SINK VOLUME\n" +"%s [options] set-source-volume SOURCE VOLUME\n" +"%s [options] set-sink-input-volume SINKINPUT VOLUME\n" +"%s [options] set-sink-mute SINK 1|0\n" +"%s [options] set-source-mute SOURCE 1|0\n" +"%s [options] set-sink-input-mute SINKINPUT 1|0\n" "\n" " -h, --help Show this help\n" " --version Show version\n" @@ -2088,7 +2022,7 @@ msgstr "" " -n, --client-name=NAME How to call this client on the " "server\n" -#: ../src/utils/pactl.c:880 +#: ../src/utils/pactl.c:933 #, c-format msgid "" "pactl %s\n" @@ -2099,78 +2033,130 @@ msgstr "" "Compiled with libpulse %s\n" "Linked with libpulse %s\n" -#: ../src/utils/pactl.c:926 -msgid "Please specify a sample file to load\n" +#: ../src/utils/pactl.c:979 +#, fuzzy +msgid "Please specify a sample file to load" msgstr "请指定要加载的采样文件\n" -#: ../src/utils/pactl.c:939 -msgid "Failed to open sound file.\n" +#: ../src/utils/pactl.c:992 +#, fuzzy +msgid "Failed to open sound file." msgstr "打开声音文件失败。\n" -#: ../src/utils/pactl.c:951 +#: ../src/utils/pactl.c:1004 #, fuzzy -msgid "Warning: Failed to determine sample specification from file.\n" +msgid "Warning: Failed to determine sample specification from file." msgstr "以采样规格'%s'打开%s流。\n" -#: ../src/utils/pactl.c:961 -msgid "You have to specify a sample name to play\n" +#: ../src/utils/pactl.c:1014 +#, fuzzy +msgid "You have to specify a sample name to play" msgstr "你必须指定要播放的采样名\n" -#: ../src/utils/pactl.c:973 -msgid "You have to specify a sample name to remove\n" +#: ../src/utils/pactl.c:1026 +#, fuzzy +msgid "You have to specify a sample name to remove" msgstr "你必须指定要删除的采样名\n" -#: ../src/utils/pactl.c:982 -msgid "You have to specify a sink input index and a sink\n" +#: ../src/utils/pactl.c:1035 +#, fuzzy +msgid "You have to specify a sink input index and a sink" msgstr "你必须指定音频出口索引和音频出口\n" -#: ../src/utils/pactl.c:992 -msgid "You have to specify a source output index and a source\n" +#: ../src/utils/pactl.c:1045 +#, fuzzy +msgid "You have to specify a source output index and a source" msgstr "你必须指定音频入口输出索引和音频入口\n" -#: ../src/utils/pactl.c:1007 -msgid "You have to specify a module name and arguments.\n" +#: ../src/utils/pactl.c:1060 +#, fuzzy +msgid "You have to specify a module name and arguments." msgstr "必须指定模块名和参数。\n" -#: ../src/utils/pactl.c:1027 -msgid "You have to specify a module index\n" +#: ../src/utils/pactl.c:1080 +#, fuzzy +msgid "You have to specify a module index" msgstr "必须指定模块索引\n" -#: ../src/utils/pactl.c:1037 +#: ../src/utils/pactl.c:1090 +#, fuzzy msgid "" -"You may not specify more than one sink. You have to specify a boolean " -"value.\n" +"You may not specify more than one sink. You have to specify a boolean value." msgstr "不可指定多个音频出口。必须指定一个布尔值。\n" -#: ../src/utils/pactl.c:1050 +#: ../src/utils/pactl.c:1103 +#, fuzzy msgid "" "You may not specify more than one source. You have to specify a boolean " -"value.\n" +"value." msgstr "不可指定多个源。必须指定一个布尔值。\n" -#: ../src/utils/pactl.c:1062 -msgid "You have to specify a card name/index and a profile name\n" -msgstr "你必须指定声卡名称/索引和侧写名称\n" - -#: ../src/utils/pactl.c:1073 +#: ../src/utils/pactl.c:1115 #, fuzzy -msgid "You have to specify a sink name/index and a port name\n" +msgid "You have to specify a card name/index and a profile name" msgstr "你必须指定声卡名称/索引和侧写名称\n" -#: ../src/utils/pactl.c:1084 +#: ../src/utils/pactl.c:1126 #, fuzzy -msgid "You have to specify a source name/index and a port name\n" +msgid "You have to specify a sink name/index and a port name" msgstr "你必须指定声卡名称/索引和侧写名称\n" -#: ../src/utils/pactl.c:1099 -msgid "No valid command specified.\n" +#: ../src/utils/pactl.c:1137 +#, fuzzy +msgid "You have to specify a source name/index and a port name" +msgstr "你必须指定声卡名称/索引和侧写名称\n" + +#: ../src/utils/pactl.c:1149 +#, fuzzy +msgid "You have to specify a sink name/index and a volume" +msgstr "你必须指定声卡名称/索引和侧写名称\n" + +#: ../src/utils/pactl.c:1154 ../src/utils/pactl.c:1171 +#: ../src/utils/pactl.c:1193 ../src/utils/pactl.c:1209 +#: ../src/utils/pactl.c:1226 ../src/utils/pactl.c:1248 +#, fuzzy +msgid "Invalid volume specification" +msgstr "无效的采样描述\n" + +#: ../src/utils/pactl.c:1166 +#, fuzzy +msgid "You have to specify a source name/index and a volume" +msgstr "你必须指定声卡名称/索引和侧写名称\n" + +#: ../src/utils/pactl.c:1183 +#, fuzzy +msgid "You have to specify a sink input index and a volume" +msgstr "你必须指定音频出口索引和音频出口\n" + +#: ../src/utils/pactl.c:1188 +msgid "Invalid sink input index" +msgstr "" + +#: ../src/utils/pactl.c:1204 +#, fuzzy +msgid "You have to specify a sink name/index and a mute boolean" +msgstr "你必须指定声卡名称/索引和侧写名称\n" + +#: ../src/utils/pactl.c:1221 +#, fuzzy +msgid "You have to specify a source name/index and a mute boolean" +msgstr "你必须指定声卡名称/索引和侧写名称\n" + +#: ../src/utils/pactl.c:1238 +#, fuzzy +msgid "You have to specify a sink input index and a mute boolean" +msgstr "你必须指定音频出口索引和音频出口\n" + +#: ../src/utils/pactl.c:1243 +#, fuzzy +msgid "Invalid sink input index specification" +msgstr "无效的采样描述\n" + +#: ../src/utils/pactl.c:1262 +#, fuzzy +msgid "No valid command specified." msgstr "未指定有效的命令。\n" -#: ../src/utils/pactl.c:1122 -#, c-format -msgid "pa_context_connect() failed: %s" -msgstr "pa_context_connect()失败:%s" - #: ../src/utils/pax11publish.c:61 #, c-format msgid "" @@ -2249,48 +2235,48 @@ msgstr "加载cookie数据失败\n" msgid "Not yet implemented.\n" msgstr "尚未实现。\n" -#: ../src/utils/pacmd.c:61 +#: ../src/utils/pacmd.c:69 msgid "No PulseAudio daemon running, or not running as session daemon." msgstr "" -#: ../src/utils/pacmd.c:66 +#: ../src/utils/pacmd.c:74 #, c-format msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s" msgstr "socket(PF_UNIX, SOCK_STREAM, 0):%s" -#: ../src/utils/pacmd.c:83 +#: ../src/utils/pacmd.c:91 #, c-format msgid "connect(): %s" msgstr "connect():%s" -#: ../src/utils/pacmd.c:91 +#: ../src/utils/pacmd.c:99 msgid "Failed to kill PulseAudio daemon." msgstr "杀死PulseAudio后台程序失败。" -#: ../src/utils/pacmd.c:99 +#: ../src/utils/pacmd.c:107 msgid "Daemon not responding." msgstr "后台程序未响应。" -#: ../src/utils/pacmd.c:146 -#, c-format -msgid "select(): %s" -msgstr "select():%s" +#: ../src/utils/pacmd.c:161 +#, fuzzy, c-format +msgid "poll(): %s" +msgstr "fork():%s" -#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173 +#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #, c-format msgid "read(): %s" msgstr "read():%s" -#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203 +#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223 #, c-format msgid "write(): %s" msgstr "write():%s" -#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207 +#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219 msgid "Cannot access autospawn lock." msgstr "不能访问autospawn锁。" -#: ../src/modules/alsa/alsa-sink.c:445 ../src/modules/alsa/alsa-sink.c:593 +#: ../src/modules/alsa/alsa-sink.c:530 ../src/modules/alsa/alsa-sink.c:689 #, c-format msgid "" "ALSA woke us up to write new data to the device, but there was actually " @@ -2306,7 +2292,7 @@ msgstr "" "提醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者另一个小于最小可" "用值的数值。" -#: ../src/modules/alsa/alsa-source.c:424 ../src/modules/alsa/alsa-source.c:563 +#: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656 #, c-format msgid "" "ALSA woke us up to read new data from the device, but there was actually " @@ -2323,15 +2309,20 @@ msgstr "" "用值的数值。" #: ../src/modules/alsa/module-alsa-card.c:152 -#: ../src/modules/bluetooth/module-bluetooth-device.c:2062 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2228 msgid "Off" msgstr "关闭" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2032 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2184 msgid "High Fidelity Playback (A2DP)" msgstr "高保真回放(A2DP)" -#: ../src/modules/bluetooth/module-bluetooth-device.c:2047 +#: ../src/modules/bluetooth/module-bluetooth-device.c:2198 +#, fuzzy +msgid "High Fidelity Capture (A2DP)" +msgstr "高保真回放(A2DP)" + +#: ../src/modules/bluetooth/module-bluetooth-device.c:2213 msgid "Telephony Duplex (HSP/HFP)" msgstr "双工电话(HSP/HFP)" @@ -2339,6 +2330,136 @@ msgstr "双工电话(HSP/HFP)" msgid "PulseAudio Sound Server" msgstr "PulseAudio 声音服务器" +#, fuzzy +#~ msgid "Invalid client name '%s'\n" +#~ msgstr "无效的通道映射描述'%s'\n" + +#, fuzzy +#~ msgid "Failed to determine sample specification from file.\n" +#~ msgstr "获取采样信息失败:%s\n" + +#~ msgid "select(): %s" +#~ msgstr "select():%s" + +#~ msgid "Cannot connect to system bus: %s" +#~ msgstr "无法连接到系统总线:%s" + +#~ msgid "Cannot get caller from PID: %s" +#~ msgstr "无法从PID获取调用者:%s" + +#~ msgid "Cannot set UID on caller object." +#~ msgstr "无法为调用者设定UID。" + +#~ msgid "Failed to get CK session." +#~ msgstr "获取CK会话失败。" + +#~ msgid "Cannot set UID on session object." +#~ msgstr "无法为会话对象设定UID。" + +#~ msgid "Cannot allocate PolKitAction." +#~ msgstr "不能分配PolKitAction。" + +#~ msgid "Cannot set action_id" +#~ msgstr "无法设定action_id" + +#~ msgid "Cannot allocate PolKitContext." +#~ msgstr "无法分配PolKitContext。" + +#~ msgid "Cannot initialize PolKitContext: %s" +#~ msgstr "无法初使化PolKitContext: %s" + +#~ msgid "Could not determine whether caller is authorized: %s" +#~ msgstr "无法判断调用者是否已获得授权: %s" + +#~ msgid "Cannot obtain auth: %s" +#~ msgstr "无法获取授权: %s" + +#~ msgid "PolicyKit responded with '%s'" +#~ msgstr "PolicyKit回复'%s'" + +#~ msgid "" +#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio " +#~ "daemon" +#~ msgstr "PulseAudio 守护进程的高优先调度(负的 Unix nic 等级)" + +#~ msgid "Real-time scheduling for the PulseAudio daemon" +#~ msgstr "PulseAudio 守护进程的实时调度。" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring high-priority scheduling." +#~ msgstr "系统策略防止 PulseAudio 获得高优先调度。" + +#~ msgid "" +#~ "System policy prevents PulseAudio from acquiring real-time scheduling." +#~ msgstr "系统策略防止 PulseAudio 获得实时调度。" + +#~ msgid "read() failed: %s\n" +#~ msgstr "read()失败:%s\n" + +#, fuzzy +#~ msgid "pa_context_connect() failed: %s\n" +#~ msgstr "pa_context_connect()失败:%s" + +#~ msgid "We're in the group '%s', allowing high-priority scheduling." +#~ msgstr "我们在'%s'组中,允许高优先级调度。" + +#~ msgid "We're in the group '%s', allowing real-time scheduling." +#~ msgstr "我们在'%s'组中,允许实时调度。" + +#~ msgid "PolicyKit grants us acquire-high-priority privilege." +#~ msgstr "PolicyKit授予我们“获取高优先级”权限。" + +#~ msgid "PolicyKit refuses acquire-high-priority privilege." +#~ msgstr "PolicyKit拒绝“获取高优先级”权限。" + +#~ msgid "PolicyKit grants us acquire-real-time privilege." +#~ msgstr "PolicyKit授予我们“获取实时”权限。" + +#~ msgid "PolicyKit refuses acquire-real-time privilege." +#~ msgstr "PolicyKit拒绝我们“获取实时”权限。" + +#~ msgid "" +#~ "Called SUID root and real-time and/or high-priority scheduling was " +#~ "requested in the configuration. However, we lack the necessary " +#~ "privileges:\n" +#~ "We are not in group '%s', PolicyKit refuse to grant us the requested " +#~ "privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource " +#~ "limits.\n" +#~ "For enabling real-time/high-priority scheduling please acquire the " +#~ "appropriate PolicyKit privileges, or become a member of '%s', or increase " +#~ "the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user." +#~ msgstr "" +#~ "配置中需要调用 SUID root、实时和/或者高优先调度。但是我们缺少必要的特" +#~ "权:\n" +#~ "我们不属于组群 '%s',PolicyKit 拒绝赋予我们要求的特权,而我们无法增加 " +#~ "RLIMIT_NICE/RLIMIT_RTPRIO 资源限制。\n" +#~ "要启用实时/高优先调度,请获得适当的 PolicyKit 特权,或者成为 '%s' 成员,也" +#~ "可以为这个用户增加 RLIMIT_NICE/RLIMIT_RTPRIO 资源限制。" + +#~ msgid "" +#~ "High-priority scheduling enabled in configuration but not allowed by " +#~ "policy." +#~ msgstr "配置中已启用高优先级调度,但策略未允许。" + +#~ msgid "Successfully increased RLIMIT_RTPRIO" +#~ msgstr "提高RLIMIT_RTPRIO成功。" + +#~ msgid "RLIMIT_RTPRIO failed: %s" +#~ msgstr "RLIMIT_RTPRIO失败:%s" + +#~ msgid "Giving up CAP_NICE" +#~ msgstr "正在放弃CAP_NICE" + +#~ msgid "" +#~ "Real-time scheduling enabled in configuration but not allowed by policy." +#~ msgstr "配置中已启用实时调度,但策略未允许。" + +#~ msgid "Limited capabilities successfully to CAP_SYS_NICE." +#~ msgstr "性能成功限制到CAP_SYS_NICE。" + +#~ msgid "time_new() failed.\n" +#~ msgstr "time_new()失败。\n" + #~ msgid "Analog Mono" #~ msgstr "模拟单声道" @@ -2375,9 +2496,6 @@ msgstr "PulseAudio 声音服务器" #~ msgid "Output %s + Input %s" #~ msgstr "输出 %s + 输入 %s" -#~ msgid "Output %s" -#~ msgstr "输出 %s" - #~ msgid "Input %s" #~ msgstr "输入 %s" diff --git a/pulseaudio.vapi b/pulseaudio.vapi new file mode 100644 index 000000000..cf0e82e00 --- /dev/null +++ b/pulseaudio.vapi @@ -0,0 +1,1463 @@ +/*** + This file is part of PulseAudio. + + Copyright 2009 Lennart Poettering + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +using GLib; +using Posix; + +[CCode (cheader_filename="pulse/pulseaudio.h")] +namespace Pulse { + + [CCode (cname="pa_get_library_version")] + public unowned string get_library_version(); + + [CCode (cname="PA_API_VERSION")] + public const int API_VERSION; + + [CCode (cname="PA_PROTOCOL_VERSION")] + public const int PROTOCOL_VERSION; + + [CCode (cname="PA_MAJOR")] + public const int MAJOR; + + [CCode (cname="PA_MINOR")] + public const int MINOR; + + [CCode (cname="PA_MICRO")] + public const int MICRO; + + [CCode (cname="PA_CHECK_VERSION")] + public bool CHECK_VERSION(int major, int minor, int micro); + + [CCode (cname="INVALID_INDEX")] + public const uint32 INVALID_INDEX; + + [CCode (cname="pa_free_cb_t")] + public delegate void FreeCb(void *p); + + [CCode (cname="pa_sample_format_t", cprefix="PA_SAMPLE_")] + public enum SampleFormat { + U8, + ALAW, + ULAW, + S16LE, + S16BE, + FLOAT32LE, + FLOAT32BE, + S32LE, + S32BE, + S24LE, + S24BE, + S24_32LE, + S24_32BE, + MAX, + S16NE, + S16RE, + FLOAT32NE, + FLOAT32RE, + S32NE, + S32RE, + S24NE, + S24RE, + S24_32NE, + S24_32RE; + + [CCode (cname="pa_sample_size_of_format")] + public size_t size(); + + [CCode (cname="pa_sample_format_to_string")] + public unowned string? to_string(); + + [CCode (cname="pa_sample_format_is_le")] + public int is_le(); + + [CCode (cname="pa_sample_format_is_be")] + public int is_be(); + + [CCode (cname="pa_sample_format_is_ne")] + public int is_ne(); + + [CCode (cname="pa_sample_format_is_re")] + public int is_re(); + + [CCode (cname="pa_parse_sample_format")] + public static SampleFormat parse(string b); + } + + [CCode (cname="pa_usec_t")] + public struct usec : uint64 { + } + + [CCode (cname="pa_sample_spec")] + public struct SampleSpec { + public SampleFormat format; + public uint32 rate; + public uint8 channels; + + [CCode (cname="PA_SAMPLE_SPEC_SNPRINT_MAX")] + public static const size_t SNPRINT_MAX; + + [CCode (cname="pa_bytes_per_second")] + public size_t bytes_per_second(); + + [CCode (cname="pa_frame_size")] + public size_t frame_size(); + + [CCode (cname="pa_sample_size")] + public size_t sample_size(); + + [CCode (cname="pa_bytes_to_usec", instance_pos=1.1)] + public usec bytes_to_usec(size_t size); + + [CCode (cname="pa_usec_to_bytes", instance_pos=1.1)] + public size_t usec_to_bytes(usec u); + + [CCode (cname="pa_sample_spec_init")] + public unowned SampleSpec? init(); + + [CCode (cname="pa_sample_spec_valid")] + public bool valid(); + + [CCode (cname="pa_sample_spec_equal")] + public bool equal(SampleSpec other); + + [CCode (cname="pa_sample_spec_snprint", instance_pos=3.1)] + public unowned string snprint(char[] buf); + + public string sprint() { + var buffer = new char[SNPRINT_MAX]; + this.snprint(buffer); + return (string) buffer; + } + + public string to_string() { + return sprint(); + } + + [CCode (cname="pa_sample_spec_init")] + SampleSpec(); + } + + // [CCode (cname="PA_BYTES_SNPRINT_MAX")] + [CCode (cname="PA_SAMPLE_SPEC_SNPRINT_MAX")] + public const size_t BYTES_SNPRINT_MAX; + + [CCode (cname="pa_bytes_snprint")] + public unowned string bytes_snprint(char[] buf, uint bytes); + + public string bytes_sprint(uint bytes) { + var buffer = new char[BYTES_SNPRINT_MAX]; + bytes_snprint(buffer, bytes); + return (string) buffer; + } + + [CCode (cname="pa_volume_t")] + public struct Volume : uint32 { + + [CCode (cname="PA_SW_VOLUME_SNPRINT_DB_MAX")] + public static const size_t SW_SNPRINT_DB_MAX; + + [CCode (cname="PA_VOLUME_SNPRINT_MAX")] + public static const size_t SNPRINT_MAX; + + [CCode (cname="PA_VOLUME_MAX")] + public static const Volume MAX; + + [CCode (cname="PA_VOLUME_NORM")] + public static const Volume NORM; + + [CCode (cname="PA_VOLUME_MUTED")] + public static const Volume MUTED; + + // [CCode (cname="PA_VOLUME_INVALID")] + [CCode (cname="PA_VOLUME_MAX")] + public static const Volume INVALID; + + [CCode (cname="pa_volume_snprint", instance_pos = 3.1)] + public unowned string snprint(char[] s); + + public string sprint() { + var buffer = new char[SNPRINT_MAX]; + this.snprint(buffer); + return (string) buffer; + } + + public string to_string() { + return sprint(); + } + + [CCode (cname="pa_sw_volume_snprint_dB", instance_pos = 3.1)] + public unowned string sw_snprint_dB(char[] s); + + public string sw_sprint_dB() { + var buffer = new char[SW_SNPRINT_DB_MAX]; + this.sw_snprint_dB(buffer); + return (string) buffer; + } + + [CCode (cname="pa_sw_volume_multiply")] + public Volume sw_multiply(Volume other); + + [CCode (cname="pa_sw_volume_divide")] + public Volume sw_divide(Volume other); + + [CCode (cname="pa_sw_volume_from_dB")] + public static Volume sw_from_dB(double f); + + [CCode (cname="pa_sw_volume_to_dB")] + public double sw_to_dB(); + + [CCode (cname="pa_sw_volume_from_linear")] + public static Volume sw_from_linear(double f); + + [CCode (cname="pa_sw_volume_to_linear")] + public double sw_to_linear(); + } + + [CCode (cname="PA_DECIBEL_MININFTY")] + public const double DECIBEL_MININFTY; + + [CCode (cname="PA_CHANNELS_MAX")] + public const int CHANNELS_MAX; + + [CCode (cname="PA_CHANNELS_MAX")] + public const int RATE_MAX; + + [CCode (cname="pa_cvolume")] + public struct CVolume { + public uint8 channels; + public Volume values[]; + + [CCode (cname="PA_SW_CVOLUME_SNPRINT_DB_MAX")] + public static const size_t SW_SNPRINT_DB_MAX; + + [CCode (cname="PA_CVOLUME_SNPRINT_MAX")] + public static const size_t SNPRINT_MAX; + + [CCode (cname="pa_cvolume_equal")] + public bool equal(CVolume other); + + [CCode (cname="pa_cvolume_init")] + public unowned CVolume? init(); + + [CCode (cname="pa_cvolume_reset")] + public unowned CVolume? reset(uint8 channels); + + [CCode (cname="pa_cvolume_mute")] + public unowned CVolume? mute(uint8 channels); + + [CCode (cname="pa_cvolume_snprint", instance_pos = 3.1)] + public unowned string snprint(char[] s); + + public string sprint() { + var buffer = new char[SNPRINT_MAX]; + this.snprint(buffer); + return (string) buffer; + } + + public string to_string() { + return sprint(); + } + + [CCode (cname="pa_sw_cvolume_snprint_dB", instance_pos = 3.1)] + public unowned string sw_snprint_dB(char [] s); + + public string sw_sprint_dB() { + var buffer = new char[SW_SNPRINT_DB_MAX]; + this.sw_snprint_dB(buffer); + return (string) buffer; + } + + [CCode (cname="pa_cvolume_init")] + public CVolume(); + + [CCode (cname="pa_cvolume_avg")] + public Volume avg(); + + [CCode (cname="pa_cvolume_max")] + public Volume max(); + + [CCode (cname="pa_cvolume_min")] + public Volume min(); + + [CCode (cname="pa_cvolume_avg_mask")] + public Volume avg_mask(ChannelMap map, ChannelPositionMask mask); + + [CCode (cname="pa_cvolume_max_mask")] + public Volume max_mask(ChannelMap map, ChannelPositionMask mask); + + [CCode (cname="pa_cvolume_min_mask")] + public Volume min_mask(ChannelMap map, ChannelPositionMask mask); + + [CCode (cname="pa_cvolume_valid")] + public bool valid(); + + [CCode (cname="pa_cvolume_channels_equal_to")] + public bool channels_equal_to(Volume other); + + [CCode (cname="pa_cvolume_is_muted")] + public bool is_muted(); + + [CCode (cname="pa_cvolume_is_norm")] + public bool is_norm(); + + [CCode (cname="pa_sw_cvolume_multiply")] + public unowned CVolume? multiply(CVolume other); + + [CCode (cname="pa_sw_cvolume_divide")] + public unowned CVolume? divide(CVolume other); + + [CCode (cname="pa_sw_cvolume_multiply_scalar")] + public unowned CVolume? multiply_scalar(Volume other); + + [CCode (cname="pa_sw_cvolume_divide_scalar")] + public unowned CVolume? divide_scalar(Volume other); + + [CCode (cname="pa_cvolume_remap")] + public unowned CVolume? remap(ChannelMap from, ChannelMap to); + + [CCode (cname="pa_cvolume_compatible")] + public bool compatible(SampleSpec ss); + + [CCode (cname="pa_cvolume_compatible_with_channel_map")] + public bool compatible_with_channel_map(ChannelMap cm); + + [CCode (cname="pa_cvolume_get_balance")] + public float get_balance(ChannelMap map); + + [CCode (cname="pa_cvolume_set_balance")] + public unowned CVolume? set_balance(ChannelMap map, float b); + + [CCode (cname="pa_cvolume_get_fade")] + public float get_fade(ChannelMap map); + + [CCode (cname="pa_cvolume_set_fade")] + public unowned CVolume? set_fade(ChannelMap map, float f); + + [CCode (cname="pa_cvolume_scale")] + public unowned CVolume? scale(Volume max); + + [CCode (cname="pa_cvolume_scale_mask")] + public unowned CVolume? scale_mask(Volume max, ChannelMap map, ChannelPositionMask mask); + + [CCode (cname="pa_cvolume_set_position")] + public unowned CVolume? set_position(ChannelMap map, ChannelPosition p, Volume v); + + [CCode (cname="pa_cvolume_get_position")] + public Volume get_position(ChannelMap map, ChannelPosition p); + + [CCode (cname="pa_cvolume_merge")] + public unowned CVolume? merge(CVolume other); + + [CCode (cname="pa_cvolume_inc")] + public unowned CVolume? inc(Volume plus = 1); + + [CCode (cname="pa_cvolume_dec")] + public unowned CVolume? dec(Volume minus = 1); + } + + [CCode (cname="pa_channel_map")] + public struct ChannelMap { + public uint8 channels; + public ChannelPosition map[]; + + [CCode (cname="PA_CHANNEL_MAP_SNPRINT_MAX")] + public static const size_t SNPRINT_MAX; + + [CCode (cname="pa_channel_map_init")] + public ChannelMap(); + + [CCode (cname="pa_channel_map_init")] + public unowned ChannelMap? init(); + + [CCode (cname="pa_channel_map_init_mono")] + public unowned ChannelMap? init_mono(); + + [CCode (cname="pa_channel_map_init_stereo")] + public unowned ChannelMap? init_stereo(); + + [CCode (cname="pa_channel_map_init_auto")] + public unowned ChannelMap? init_auto(uint8 channels, ChannelMapDef def = ChannelMapDef.DEFAULT); + + [CCode (cname="pa_channel_map_init_extend")] + public unowned ChannelMap? init_extend(uint8 channels, ChannelMapDef def = ChannelMapDef.DEFAULT); + + [CCode (cname="pa_channel_map_snprint", instance_pos = 3.1)] + public unowned string snprint(char[] s); + + public string sprint() { + var buffer = new char[SNPRINT_MAX]; + this.snprint(buffer); + return (string) buffer; + } + + public string to_string() { + return sprint(); + } + + [CCode (cname="pa_channel_map_parse")] + public unowned ChannelMap? parse(string s); + + [CCode (cname="pa_channel_map_equal")] + public bool equal(ChannelMap other); + + [CCode (cname="pa_channel_map_superset")] + public bool superset(ChannelMap other); + + [CCode (cname="pa_channel_map_valid")] + public bool valid(); + + [CCode (cname="pa_channel_map_compatible")] + public bool compatible(SampleSpec ss); + + [CCode (cname="pa_channel_map_can_balance")] + public bool can_balance(); + + [CCode (cname="pa_channel_map_can_fade")] + public bool can_fade(); + + [CCode (cname="pa_channel_map_to_name")] + public unowned string? to_name(); + + [CCode (cname="pa_channel_map_to_pretty_name")] + public unowned string? to_pretty_name(); + + [CCode (cname="pa_channel_map_has_position")] + public bool has_position(ChannelPosition p); + + [CCode (cname="pa_channel_map_mask")] + public ChannelPositionMask mask(); + } + + [CCode (cname="pa_channel_position_mask_t")] + public struct ChannelPositionMask : uint64 { + } + + [CCode (cname="pa_channel_position_t", cprefix="PA_CHANNEL_POSITION_")] + public enum ChannelPosition { + INVALID, + MONO, + FRONT_LEFT, + FRONT_RIGHT, + FRONT_CENTER, + REAR_CENTER, + REAR_LEFT, + REAR_RIGHT, + LFE, + FRONT_LEFT_OF_CENTER, + FRONT_RIGHT_OF_CENTER, + SIDE_LEFT, + SIDE_RIGHT, + TOP_CENTER, + AUX0, + AUX1, + AUX2, + AUX3, + AUX4, + AUX5, + AUX6, + AUX7, + AUX8, + AUX9, + AUX10, + AUX11, + AUX12, + AUX13, + AUX14, + AUX15, + AUX16, + AUX17, + AUX18, + AUX19, + AUX20, + AUX21, + AUX22, + AUX23, + AUX24, + AUX25, + AUX26, + AUX27, + AUX28, + AUX29, + AUX30, + AUX31, + MAX; + + [CCode (cname="PA_CHANNEL_POSITION_MASK")] + public ChannelPositionMask mask(); + + [CCode (cname="pa_channel_position_to_string")] + public unowned string? to_string(); + + [CCode (cname="pa_channel_position_to_pretty_string")] + public unowned string? to_pretty_string(); + + [CCode (cname="pa_channel_position_from_string")] + public static ChannelPosition from_string(string s); + } + + [CCode (cname="pa_channel_map_def_t", cprefix="PA_CHANNEL_MAP_")] + public enum ChannelMapDef { + AIFF, + WAVEEX, + AUX, + DEFAULT, + + [CCode (cname="PA_CHANNEL_MAP_DEF_MAX")] + MAX + } + + [Compact] + [CCode (cname="pa_proplist", cprefix="pa_proplist_", free_function="pa_proplist_free")] + public class Proplist { + + [CCode (cname="PA_PROP_MEDIA_NAME")] + public static const string PROP_MEDIA_NAME; + [CCode (cname="PA_PROP_MEDIA_TITLE")] + public static const string PROP_MEDIA_TITLE; + [CCode (cname="PA_PROP_MEDIA_ARTIST")] + public static const string PROP_MEDIA_ARTIST; + [CCode (cname="PA_PROP_MEDIA_COPYRIGHT")] + public static const string PROP_MEDIA_COPYRIGHT; + [CCode (cname="PA_PROP_MEDIA_SOFTWARE")] + public static const string PROP_MEDIA_SOFTWARE; + [CCode (cname="PA_PROP_MEDIA_LANGUAGE")] + public static const string PROP_MEDIA_LANGUAGE; + [CCode (cname="PA_PROP_MEDIA_FILENAME")] + public static const string PROP_MEDIA_FILENAME; + [CCode (cname="PA_PROP_MEDIA_ICON_NAME")] + public static const string PROP_MEDIA_ICON_NAME; + [CCode (cname="PA_PROP_MEDIA_ROLE")] + public static const string PROP_MEDIA_ROLE; + [CCode (cname="PA_PROP_EVENT_ID")] + public static const string PROP_EVENT_ID; + [CCode (cname="PA_PROP_EVENT_DESCRIPTION")] + public static const string PROP_EVENT_DESCRIPTION; + [CCode (cname="PA_PROP_EVENT_MOUSE_X")] + public static const string PROP_EVENT_MOUSE_X; + [CCode (cname="PA_PROP_EVENT_MOUSE_Y")] + public static const string PROP_EVENT_MOUSE_Y; + [CCode (cname="PA_PROP_EVENT_MOUSE_HPOS")] + public static const string PROP_EVENT_MOUSE_HPOS; + [CCode (cname="PA_PROP_EVENT_MOUSE_VPOS")] + public static const string PROP_EVENT_MOUSE_VPOS; + [CCode (cname="PA_PROP_EVENT_MOUSE_BUTTON")] + public static const string PROP_EVENT_MOUSE_BUTTON; + [CCode (cname="PA_PROP_WINDOW_NAME")] + public static const string PROP_WINDOW_NAME; + [CCode (cname="PA_PROP_WINDOW_ID")] + public static const string PROP_WINDOW_ID; + [CCode (cname="PA_PROP_WINDOW_ICON_NAME")] + public static const string PROP_WINDOW_ICON_NAME; + [CCode (cname="PA_PROP_WINDOW_X11_DISPLAY")] + public static const string PROP_WINDOW_X11_DISPLAY; + [CCode (cname="PA_PROP_WINDOW_X11_SCREEN")] + public static const string PROP_WINDOW_X11_SCREEN; + [CCode (cname="PA_PROP_WINDOW_X11_MONITOR")] + public static const string PROP_WINDOW_X11_MONITOR; + [CCode (cname="PA_PROP_WINDOW_X11_XID")] + public static const string PROP_WINDOW_X11_XID; + [CCode (cname="PA_PROP_APPLICATION_NAME")] + public static const string PROP_APPLICATION_NAME; + [CCode (cname="PA_PROP_APPLICATION_ID")] + public static const string PROP_APPLICATION_ID; + [CCode (cname="PA_PROP_APPLICATION_VERSION")] + public static const string PROP_APPLICATION_VERSION; + [CCode (cname="PA_PROP_APPLICATION_ICON_NAME")] + public static const string PROP_APPLICATION_ICON_NAME; + [CCode (cname="PA_PROP_APPLICATION_LANGUAGE")] + public static const string PROP_APPLICATION_LANGUAGE; + [CCode (cname="PA_PROP_APPLICATION_PROCESS_ID")] + public static const string PROP_APPLICATION_PROCESS_ID; + [CCode (cname="PA_PROP_APPLICATION_PROCESS_BINARY")] + public static const string PROP_APPLICATION_PROCESS_BINARY; + [CCode (cname="PA_PROP_APPLICATION_PROCESS_USER")] + public static const string PROP_APPLICATION_PROCESS_USER; + [CCode (cname="PA_PROP_APPLICATION_PROCESS_HOST")] + public static const string PROP_APPLICATION_PROCESS_HOST; + [CCode (cname="PA_PROP_APPLICATION_PROCESS_MACHINE_ID")] + public static const string PROP_APPLICATION_PROCESS_MACHINE_ID; + [CCode (cname="PA_PROP_APPLICATION_PROCESS_SESSION_ID")] + public static const string PROP_APPLICATION_PROCESS_SESSION_ID; + [CCode (cname="PA_PROP_DEVICE_STRING")] + public static const string PROP_DEVICE_STRING; + [CCode (cname="PA_PROP_DEVICE_API")] + public static const string PROP_DEVICE_API; + [CCode (cname="PA_PROP_DEVICE_DESCRIPTION")] + public static const string PROP_DEVICE_DESCRIPTION; + [CCode (cname="PA_PROP_DEVICE_BUS_PATH")] + public static const string PROP_DEVICE_BUS_PATH; + [CCode (cname="PA_PROP_DEVICE_SERIAL")] + public static const string PROP_DEVICE_SERIAL; + [CCode (cname="PA_PROP_DEVICE_VENDOR_ID")] + public static const string PROP_DEVICE_VENDOR_ID; + [CCode (cname="PA_PROP_DEVICE_VENDOR_NAME")] + public static const string PROP_DEVICE_VENDOR_NAME; + [CCode (cname="PA_PROP_DEVICE_PRODUCT_ID")] + public static const string PROP_DEVICE_PRODUCT_ID; + [CCode (cname="PA_PROP_DEVICE_PRODUCT_NAME")] + public static const string PROP_DEVICE_PRODUCT_NAME; + [CCode (cname="PA_PROP_DEVICE_CLASS")] + public static const string PROP_DEVICE_CLASS; + [CCode (cname="PA_PROP_DEVICE_FORM_FACTOR")] + public static const string PROP_DEVICE_FORM_FACTOR; + [CCode (cname="PA_PROP_DEVICE_BUS")] + public static const string PROP_DEVICE_BUS; + [CCode (cname="PA_PROP_DEVICE_ICON_NAME")] + public static const string PROP_DEVICE_ICON_NAME; + [CCode (cname="PA_PROP_DEVICE_ACCESS_MODE")] + public static const string PROP_DEVICE_ACCESS_MODE; + [CCode (cname="PA_PROP_DEVICE_MASTER_DEVICE")] + public static const string PROP_DEVICE_MASTER_DEVICE; + [CCode (cname="PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE")] + public static const string PROP_DEVICE_BUFFERING_BUFFER_SIZE; + [CCode (cname="PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE")] + public static const string PROP_DEVICE_BUFFERING_FRAGMENT_SIZE; + [CCode (cname="PA_PROP_DEVICE_PROFILE_NAME")] + public static const string PROP_DEVICE_PROFILE_NAME; + [CCode (cname="PA_PROP_DEVICE_INTENDED_ROLES")] + public static const string PROP_DEVICE_INTENDED_ROLES; + [CCode (cname="PA_PROP_DEVICE_PROFILE_DESCRIPTION")] + public static const string PROP_DEVICE_PROFILE_DESCRIPTION; + [CCode (cname="PA_PROP_MODULE_AUTHOR")] + public static const string PROP_MODULE_AUTHOR; + [CCode (cname="PA_PROP_MODULE_DESCRIPTION")] + public static const string PROP_MODULE_DESCRIPTION; + [CCode (cname="PA_PROP_MODULE_USAGE")] + public static const string PROP_MODULE_USAGE; + [CCode (cname="PA_PROP_MODULE_VERSION")] + public static const string PROP_MODULE_VERSION; + + [CCode (cname="pa_proplist_new")] + public Proplist(); + + public int sets(string key, string value); + public int setp(string pair); + + [PrintfFormat] + public int setf(string key, string format, ...); + + public int set(string key, void* data, size_t size); + + public unowned string? gets(string key); + + public int get(string key, out void* data, out size_t size); + + public void update(UpdateMode mode, Proplist other); + + public void unset(string key); + + [CCode (array_length = false)] + public void unset_many(string[] key); + + public unowned string? iterate(ref void* state); + + public string to_string(); + + public string to_string_sep(string sep); + + public static Proplist? from_string(string s); + + public int contains(string key); + + public void clear(); + + public Proplist copy(); + + public uint size(); + + public bool is_empty(); + } + + [CCode (cname="pa_update_mode_t", cprefix="PA_UPDATE_")] + public enum UpdateMode { + SET, + MERGE, + REPLACE + } + + [CCode (cname="PA_OK")] + public const int OK; + + [CCode (cname="int", cprefix="PA_ERR_")] + public enum Error { + ACCESS, + COMMAND, + INVALID, + EXIST, + NOENTITY, + CONNECTIONREFUSED, + PROTOCOL, + TIMEOUT, + AUTHKEY, + INTERNAL, + CONNECTIONTERMINATED, + KILLED, + INVALIDSERVER, + MODINITFAILED, + BADSTATE, + NODATA, + VERSION, + TOOLARGE, + NOTSUPPORTED, + UNKNOWN, + NOEXTENSION, + OBSOLETE, + NOTIMPLEMENTED, + FORKED, + IO, + MAX + } + + [CCode (cname="pa_strerror")] + public unowned string? strerror(Error e); + + public delegate void VoidFunc(); + + [CCode (cname="pa_spawn_api")] + public struct SpawnApi { + VoidFunc? prefork; + VoidFunc? postfork; + VoidFunc? atfork; + } + + [CCode (cname="pa_io_event_flags_t", cprefix="PA_IO_EVENT_")] + public enum IoEventFlags { + NULL, + INPUT, + OUTPUT, + HANGUP, + ERROR + } + + [CCode (cname="pa_io_event")] + public struct IoEvent { + } + + [CCode (cname="pa_time_event")] + public struct TimeEvent { + } + + [CCode (cname="pa_defer_event")] + public struct DeferEvent { + } + + [CCode (cname="pa_signal_event", cprefix="pa_signal_", free_function="pa_signal_free")] + public struct SignalEvent { + + [CCode (cname="pa_signal_new")] + public SignalEvent(int sig, MainLoopApi.SignalEventCb cb); + + public void set_destroy(MainLoopApi.SignalEventDestroyCb cb); + } + + [Compact] + [CCode (cname="pa_mainloop_api")] + public class MainLoopApi { + public void* userdata; + + /* Callbacks for the consumer to implement*/ + public delegate void IoEventCb(IoEvent e, int fd, IoEventFlags flags); + public delegate void IoEventDestroyCb(IoEvent e); + + public delegate void TimeEventCb(TimeEvent e, ref timeval t); + public delegate void TimeEventDestroyCb(TimeEvent e); + + public delegate void DeferEventCb(DeferEvent e); + public delegate void DeferEventDestroyCb(DeferEvent e); + + public delegate void SignalEventCb(SignalEvent e); + public delegate void SignalEventDestroyCb(SignalEvent e); + + /* Callbacks for the provider to implement */ + public delegate IoEvent IoNewCb(int fd, IoEventFlags flags, IoEventCb cb); + public delegate void IoEnableCb(IoEvent e, IoEventFlags flags); + public delegate void IoFreeCb(IoEvent e); + public delegate void IoSetDestroyCb(IoEvent e, IoEventDestroyCb? cb); + + public delegate TimeEvent TimeNewCb(ref timeval? t, TimeEventCb cb); + public delegate void TimeRestartCb(TimeEvent e, ref timeval? t); + public delegate void TimeFreeCb(TimeEvent e); + public delegate void TimeSetDestroyCb(TimeEvent e, TimeEventDestroyCb? cb); + + public delegate DeferEvent DeferNewCb(DeferEventCb cb); + public delegate void DeferEnableCb(DeferEvent e, bool b); + public delegate void DeferFreeCb(DeferEvent e); + public delegate void DeferSetDestroyCb(DeferEvent e, DeferEventDestroyCb? cb); + + public delegate void QuitCb(int retval); + + public delegate void OnceCb(); + + public IoNewCb io_new; + public IoEnableCb io_enable; + public IoFreeCb io_free; + public IoSetDestroyCb io_set_destroy; + + public TimeNewCb time_new; + public TimeRestartCb time_restart; + public TimeFreeCb time_free; + public TimeSetDestroyCb time_set_destroy; + + public DeferNewCb defer_new; + public DeferEnableCb defer_enable; + public DeferFreeCb defer_free; + public DeferSetDestroyCb defer_set_destroy; + + public QuitCb quit; + + [CCode (cname="pa_mainloop_api_once")] + public void once(OnceCb cb); + } + + [CCode (cname="pa_signal_init")] + public void signal_init(MainLoopApi api); + + [CCode (cname="pa_signal_done")] + public void signal_done(); + + [CCode (cname="pa_poll_func")] + public delegate int PollFunc(pollfd[] ufds); + + [Compact] + [CCode (cname="pa_mainloop", cprefix="pa_mainloop_", free_function="pa_mainloop_free")] + public class MainLoop { + + [CCode (cname="pa_mainloop_new")] + public MainLoop(); + + public int prepare(int timeout = -1); + public int poll(); + public int dispatch(); + public int get_retval(); + public int iterate(bool block = true, out int retval = null); + public int run(out int retval = null); + public unowned MainLoopApi get_api(); + public void quit(int r); + public void wakeup(); + public void set_poll_func(PollFunc poll_func); + } + + [Compact] + [CCode (cname="pa_threaded_mainloop", cprefix="pa_threaded_mainloop_", free_function="pa_threaded_mainloop_free")] + public class ThreadedMainLoop { + + [CCode (cname="pa_threaded_mainloop_new")] + public ThreadedMainLoop(); + + public int start(); + public void stop(); + public void lock(); + public void unlock(); + public void wait(); + public void signal(bool WaitForAccept = false); + public void accept(); + public int get_retval(); + public unowned MainLoopApi get_api(); + public bool in_thread(); + } + + [Compact] + [CCode (cname="pa_glib_mainloop", cprefix="pa_glib_mainloop_", free_function="pa_glib_mainloop_free")] + public class GLibMainLoop { + + [CCode (cname="pa_glib_mainloop_new")] + public GLibMainLoop(); + + public unowned MainLoopApi get_api(); + } + + [Compact] + [CCode (cname="pa_operation", cprefix="pa_operation_", unref_function="pa_operation_unref", ref_function="pa_operation_ref")] + public class Operation { + + [CCode (cname="pa_operation_state_t", cprefix="PA_OPERATION_")] + public enum State { + RUNNING, + DONE, + CANCELED + } + + public void cancel(); + public State get_state(); + } + + [Compact] + [CCode (cname="pa_context", cprefix="pa_context_", unref_function="pa_context_unref", ref_function="pa_context_ref")] + public class Context { + + [CCode (cname="pa_context_flags_t", cprefix="PA_CONTEXT_")] + public enum Flags { + NOAUTOSPAWN, + NOFAIL + } + + [CCode (cname="pa_context_state_t", cprefix="PA_CONTEXT_")] + public enum State { + UNCONNECTED, + CONNECTING, + AUTHORIZING, + SETTING_NAME, + READ, + FAILED, + TERMINATED; + + bool IS_GOOD(); + } + + [CCode (cname="pa_subscription_mask_t", cprefix="PA_SUBSCRIPTION_MASK_")] + public enum SubscriptionMask { + NULL, + SINK, + SOURCE, + SINK_INPUT, + SOURCE_OUTPUT, + MODULE, + CLIENT, + SAMPLE_CACHE, + SERVER, + CARD, + ALL; + + [CCode (cname="pa_subscription_match_flags")] + bool match_flags(SubscriptionEventType t); + } + + [CCode (cname="pa_subscription_event_type_t", cprefix="PA_SUBSCRIPTION_EVENT_")] + public enum SubscriptionEventType { + SINK, + SOURCE, + SINK_INPUT, + SOURCE_OUTPUT, + MODULE, + CLIENT, + SAMPLE_CACHE, + SERVER, + CARD, + FACILITY_MASK, + NEW, + CHANGE, + REMOVE, + TYPE_MASK + } + + public delegate void NotifyCb(); + public delegate void SuccessCb(int success); + public delegate void EventCb(string name, Proplist? proplist); + public delegate void SubscribeCb(SubscriptionEventType t, uint32 idx); + public delegate void SinkInfoCb(SinkInfo? i, int eol); + public delegate void SourceInfoCb(SourceInfo? i, int eol); + public delegate void CardInfoCb(CardInfo? i, int eol); + public delegate void SinkInputInfoCb(SinkInputInfo? i, int eol); + public delegate void SourceOutputInfoCb(SourceOutputInfo? i, int eol); + public delegate void ServerInfoCb(ServerInfo? i); + public delegate void StatInfoCb(ServerInfo? i); + public delegate void ModuleInfoCb(ModuleInfo? i, int eol); + public delegate void ClientInfoCb(ClientInfo? i, int eol); + public delegate void SampleInfoCb(SampleInfo? i, int eol); + public delegate void IndexCb(uint32 idx); + + [CCode (cname="pa_context_new_with_proplist")] + public Context(MainLoopApi api, string? name, Proplist? proplist = null); + + public void set_state_callback(NotifyCb? cb = null); + public void set_event_callback(EventCb? cb = null); + public void set_subscribe_callback(SubscribeCb? cb = null); + + public Error errno(); + + public int is_pending(); + public State get_state(); + public int is_local(); + public unowned string? get_server(); + public uint32 get_protocol_version(); + public uint32 get_server_protocol_version(); + public uint32 get_index(); + + public int connect(string? server = null, Flags flags = 0, SpawnApi? api = null); + public void disconnect(); + + public Operation? drain(NotifyCb? cb = null); + public Operation? exit_daemon(SuccessCb? cb = null); + public Operation? set_default_sink(string name, SuccessCb? cb = null); + public Operation? set_default_source(string name, SuccessCb? cb = null); + public Operation? set_name(string name, SuccessCb? cb = null); + + [CCode (array_length = false)] + public Operation? proplist_remove(string[] keys, SuccessCb? cb = null); + public Operation? proplist_update(UpdateMode mode, Proplist pl, SuccessCb? cb = null); + + public Operation? subscribe(SubscriptionMask mask, SuccessCb? cb = null); + + public Operation? get_sink_info_by_name(string name, SinkInfoCb cb); + public Operation? get_sink_info_by_index(uint32 idx, SinkInfoCb cb); + public Operation? get_sink_info_list(SinkInfoCb cb); + + public Operation? set_sink_volume_by_name(string name, CVolume volume, SuccessCb? cb = null); + public Operation? set_sink_volume_by_index(uint32 idx, CVolume volume, SuccessCb? cb = null); + public Operation? set_sink_mute_by_name(string name, bool mute, SuccessCb? cb = null); + public Operation? set_sink_mute_by_index(uint32 idx, bool mute, SuccessCb? cb = null); + + public Operation? suspend_sink_by_name(string name, bool suspend, SuccessCb? cb = null); + public Operation? suspend_sink_by_index(uint32 idx, bool suspend, SuccessCb? cb = null); + + public Operation? set_sink_port_by_name(string name, string port, SuccessCb? cb = null); + public Operation? set_sink_port_by_index(string idx, string port, SuccessCb? cb = null); + + public Operation? get_source_info_by_name(string name, SourceInfoCb cb); + public Operation? get_source_info_by_index(uint32 idx, SourceInfoCb cb); + public Operation? get_source_info_list(SourceInfoCb cb); + + public Operation? set_source_volume_by_name(string name, CVolume volume, SuccessCb? cb = null); + public Operation? set_source_volume_by_index(uint32 idx, CVolume volume, SuccessCb? cb = null); + public Operation? set_source_mute_by_name(string name, bool mute, SuccessCb? cb = null); + public Operation? set_source_mute_by_index(uint32 idx, bool mute, SuccessCb? cb = null); + + public Operation? suspend_source_by_name(string name, bool suspend, SuccessCb? cb = null); + public Operation? suspend_source_by_index(uint32 idx, bool suspend, SuccessCb? cb = null); + + public Operation? set_source_port_by_name(string name, string port, SuccessCb? cb = null); + public Operation? set_source_port_by_index(string idx, string port, SuccessCb? cb = null); + + public Operation? get_server_info(ServerInfoCb cb); + + public Operation? get_module_info(uint32 idx, ModuleInfoCb cb); + public Operation? get_module_info_list(ModuleInfoCb cb); + + public Operation? load_module(string name, string? argument, IndexCb? cb = null); + public Operation? unload_module(uint32 idx, SuccessCb? cb = null); + + public Operation? get_client_info(uint32 idx, ClientInfoCb cb); + public Operation? get_client_info_list(ClientInfoCb cb); + + public Operation? kill_client(uint32 idx, SuccessCb? cb = null); + + public Operation? get_card_info_by_name(string name, CardInfoCb cb); + public Operation? get_card_info_by_index(uint32 idx, CardInfoCb cb); + public Operation? get_card_info_list(CardInfoCb cb); + + public Operation? set_card_profile_by_index(uint32 idx, string profile, SuccessCb? cb = null); + public Operation? set_card_profile_by_name(string name, string profile, SuccessCb? cb = null); + + public Operation? get_sink_input_info(uint32 idx, SinkInputInfoCb cb); + public Operation? get_sink_input_info_list(SinkInputInfoCb cb); + + public Operation? move_sink_input_by_index(uint32 idx, uint32 sink_idx, SuccessCb? cb = null); + public Operation? move_sink_input_by_name(uint32 idx, string sink_name, SuccessCb? cb = null); + + public Operation? set_sink_input_volume(uint32 idx, CVolume volume, SuccessCb? cb = null); + public Operation? set_sink_input_mute(uint32 idx, bool mute, SuccessCb? cb = null); + + public Operation? kill_sink_input(uint32 idx, SuccessCb? cb = null); + + public Operation? get_source_output_info(uint32 idx, SourceOutputInfoCb cb); + public Operation? get_source_output_info_list(SourceOutputInfoCb cb); + + public Operation? move_source_output_by_index(uint32 idx, uint32 source_idx, SuccessCb? cb = null); + public Operation? move_source_output_by_name(uint32 idx, string source_name, SuccessCb? cb = null); + + public Operation? kill_source_output(uint32 idx, SuccessCb? cb = null); + + public Operation? stat(StatInfoCb cb); + + public Operation? get_sample_info_by_name(string name, SampleInfoCb cb); + public Operation? get_sample_info_by_index(uint32 idx, SampleInfoCb cb); + public Operation? get_sample_info_list(SampleInfoCb cb); + + public Operation? remove_sample(string name, SuccessCb? cb = null); + + public Operation? play_sample(string name, string? device = null, Volume volume = Volume.INVALID, SuccessCb? cb = null); + public Operation? play_sample_with_proplist(string name, string? device = null, Volume volume = Volume.INVALID, Proplist? p = null, IndexCb? cb = null); + } + + [Compact] + [CCode (cname="pa_stream", cprefix="pa_stream_", unref_function="pa_stream_unref", ref_function="pa_stream_ref")] + public class Stream { + + [CCode (cname="pa_stream_flags_t", cprefix="PA_STREAM_")] + public enum Flags { + START_CORKED, + INTERPOLATE_TIMING, + NOT_MONOTONIC, + AUTO_TIMING_UPDATE, + NO_REMAP_CHANNELS, + NO_REMIX_CHANNELS, + FIX_FORMAT, + FIX_RATE, + FIX_CHANNELS, + DONT_MOVE, + VARIABLE_RATE, + PEAK_DETECT, + START_MUTED, + ADJUST_LATENCY, + EARLY_REQUESTS, + DONT_INHIBIT_AUTO_SUSPEND, + START_UNMUTED, + FAIL_ON_SUSPEND + } + + [CCode (cname="pa_stream_state_t", cprefix="PA_STREAM_")] + public enum State { + UNCONNECTED, + CREATING, + READY, + FAILED, + TERMINATED; + + bool IS_GOOD(); + } + + [CCode (cname="pa_stream_direction_t", cprefix="PA_STREAM_")] + public enum Direction { + NODIRECTION, + PLAYBACK, + RECORD, + UPLOAD + } + + [CCode (cname="pa_seek_mode_t", cprefix="PA_SEEK_")] + public enum SeekMode { + RELATIVE, + ABSOLUTE, + RELATIVE_ON_READ, + RELATIVE_END + } + + [CCode (cname="pa_buffer_attr")] + public struct BufferAttr { + uint32 maxlength; + uint32 tlength; + uint32 prebuf; + uint32 minreq; + uint32 fragsize; + } + + [CCode (cname="pa_timing_info")] + public struct TimingInfo { + timeval timestamp; + int synchronized_clocks; + usec sink_usec; + usec source_usec; + usec transport_usec; + int playing; + int write_index_corrupt; + int64 write_index; + int read_index_corrupt; + int64 read_index; + usec configured_sink_usec; + usec configured_source_usec; + int64 since_underrun; + } + + [CCode (cname="PA_STREAM_EVENT_REQUEST_CORK")] + public const string EVENT_REQUEST_CORK; + + [CCode (cname="PA_STREAM_EVENT_REQUEST_UNCORK")] + public const string EVENT_REQUEST_UNCORK; + + public delegate void SuccessCb(int success); + public delegate void RequestCb(size_t nbytes); + public delegate void NotifyCb(); + public delegate void EventCb(string name, Proplist proplist); + + [CCode (cname="pa_stream_new_with_proplist")] + public Stream(Context c, string name, SampleSpec ss, ChannelMap map = null, Proplist proplist = null); + + public State get_state(); + public Context get_context(); + public uint32 get_index(); + public uint32 get_device_index(); + public unowned string? get_device_name(); + public int is_suspended(); + public int is_corked(); + + public int connect_playback(string dev, BufferAttr a = null, Flags flags = 0, Volume volume = null, Stream sync_stream = null); + public int connect_record(string dev, BufferAttr a = null, Flags flags = 0); + public int connect_upload(size_t length); + public int disconnect(); + public int finish_upload(); + + public int begin_write(out void* data, out size_t nbytes); + public int cancel_write(); + public int write(void *data, size_t bytes, FreeCb free_cb = null, int64 offset = 0, SeekMode mode = SeekMode.RELATIVE); + public int peek(out void *data, out size_t nbytes); + public int drop(); + public size_t writable_size(); + public size_t readable_size(); + + public void set_state_callback(NotifyCb cb = null); + public void set_write_callback(RequestCb cb = null); + public void set_read_callback(RequestCb cb = null); + public void set_overflow_callback(NotifyCb cb = null); + public void set_underflow_callback(NotifyCb cb = null); + public void set_started_callback(NotifyCb cb = null); + public void set_latency_update_callback(NotifyCb cb = null); + public void set_moved_callback(NotifyCb cb = null); + public void set_suspended_callback(NotifyCb cb = null); + public void set_event_callback(EventCb cb = null); + public void set_buffer_attr_callback(NotifyCb cb = null); + + public Operation? drain(SuccessCb cb = null); + public Operation? update_timing_info(SuccessCb cb = null); + + public Operation? cork(bool b, SuccessCb cb = null); + public Operation? flush(SuccessCb cb = null); + public Operation? prebuf(SuccessCb cb = null); + public Operation? trigger(SuccessCb cb = null); + + public Operation? set_name(string name, SuccessCb cb = null); + public Operation? set_buffer_attr(BufferAttr attr, SuccessCb cb = null); + public Operation? update_sample_rate(uint32 rate, SuccessCb cb = null); + + [CCode (array_length = false)] + public Operation? proplist_remove(string[] keys, SuccessCb cb = null); + public Operation? proplist_update(UpdateMode mode, Proplist pl, SuccessCb cb = null); + + public unowned TimingInfo? get_timing_info(); + public int get_time(out usec u); + public int get_latency(out usec u, out bool negative = null); + + public unowned SampleSpec? get_sample_spec(); + public unowned ChannelMap? get_channel_map(); + public unowned BufferAttr? get_buffer_attr(); + + public int set_monitor_stream(uint32 sink_input); + public uint32 get_monitor_stream(); + } + + [CCode (cname="pa_sink_port_info")] + public struct SinkPortInfo { + string name; + string description; + uint32 priority; + } + + [CCode (cname="pa_sink_info")] + public struct SinkInfo { + string name; + uint32 index; + string description; + SampleSpec sample_spec; + ChannelMap channel_map; + uint32 owner_module; + CVolume volume; + int mute; + uint32 monitor_source; + string monitor_source_name; + usec latency; + string driver; + SinkFlags flags; + Proplist proplist; + usec configured_latency; + Volume base_volume; + SinkState state; + uint32 n_volume_steps; + uint32 card; + uint32 n_ports; + SinkPortInfo*[] ports; + SinkPortInfo* active_port; + } + + [CCode (cname="pa_source_port_info")] + public struct SourcePortInfo { + string name; + string description; + uint32 priority; + } + + [CCode (cname="pa_source_info")] + public struct SourceInfo { + string name; + uint32 index; + string description; + SampleSpec sample_spec; + ChannelMap channel_map; + uint32 owner_module; + CVolume volume; + int mute; + uint32 monitor_of_sink; + string monitor_of_sink_name; + usec latency; + string driver; + SourceFlags flags; + Proplist proplist; + usec configured_latency; + Volume base_volume; + SourceState state; + uint32 n_volume_steps; + uint32 card; + uint32 n_ports; + SourcePortInfo*[] ports; + SourcePortInfo* active_port; + } + + [CCode (cname="pa_server_info")] + public struct ServerInfo { + string user_name; + string host_name; + string server_version; + string server_name; + SampleSpec sample_spec; + string default_sink_name; + string default_source_name; + ChannelMap channel_map; + } + + [CCode (cname="pa_module_info")] + public struct ModuleInfo { + uint32 index; + string name; + string argument; + uint32 n_used; + Proplist proplist; + } + + [CCode (cname="pa_client_info")] + public struct ClientInfo { + uint32 index; + string name; + uint32 owner_module; + string driver; + Proplist proplist; + } + + [CCode (cname="pa_card_profile_info")] + public struct CardProfileInfo { + string name; + string description; + uint32 n_sinks; + uint32 n_sources; + uint32 priority; + } + + [CCode (cname="pa_card_info")] + public struct CardInfo { + uint32 index; + string name; + uint32 owner_module; + string driver; + uint32 n_profiles; + CardProfileInfo profiles[]; + CardProfileInfo *active_profile; + Proplist proplist; + } + + [CCode (cname="pa_sink_input_info")] + public struct SinkInputInfo { + uint32 index; + string name; + uint32 owner_module; + uint32 client; + uint32 sink; + SampleSpec sample_spec; + ChannelMap channel_map; + CVolume volume; + uint32 buffer_usec; + uint32 sink_usec; + string resample_method; + string driver; + int mute; + Proplist proplist; + } + + [CCode (cname="pa_source_output_info")] + public struct SourceOutputInfo { + uint32 index; + string name; + uint32 owner_module; + uint32 client; + uint32 source; + SampleSpec sample_spec; + ChannelMap channel_map; + uint32 buffer_usec; + uint32 sink_usec; + string resample_method; + string driver; + Proplist proplist; + } + + [CCode (cname="pa_stat_info")] + public struct StatInfo { + uint32 memblock_total; + uint32 memblock_total_size; + uint32 memblock_allocated; + uint32 memblock_allocated_size; + uint32 scache_size; + } + + [CCode (cname="pa_sample_info")] + public struct SampleInfo { + uint32 index; + string name; + CVolume volume; + SampleSpec sample_spec; + ChannelMap channel_map; + usec duration; + uint32 bytes; + bool lazy; + string filename; + Proplist proplist; + } + + [CCode (cname="pa_sink_flags_t", cprefix="PA_SINK_")] + public enum SinkFlags { + HW_VOLUME_CTRL, + LATENCY, + HARDWARE, + NETWORK, + HW_MUTE_CTRL, + DECIBEL_VOLUME, + FLAT_VOLUME, + DYNAMIC_LATENCY + } + + [CCode (cname="pa_source_flags_t", cprefix="PA_SOURCE_")] + public enum SourceFlags { + HW_VOLUME_CTRL, + LATENCY, + HARDWARE, + NETWORK, + HW_MUTE_CTRL, + DECIBEL_VOLUME, + DYNAMIC_LATENCY + } + + [CCode (cname="pa_sink_state_t", cprefix="PA_SINK_")] + public enum SinkState { + INVALID_STATE, + RUNNING, + IDLE, + SUSPENDED; + + [CCode (cname="PA_SINK_IS_OPENED")] + public bool IS_OPENED(); + } + + [CCode (cname="pa_source_state_t", cprefix="PA_SOURCE_")] + public enum SourceState { + INVALID_STATE, + RUNNING, + IDLE, + SUSPENDED; + + [CCode (cname="PA_SOURCE_IS_OPENED")] + public bool IS_OPENED(); + } +} diff --git a/src/.gitignore b/src/.gitignore index 82331524b..6cd173c06 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,3 +1,4 @@ +usergroup-test sigbus-test TAGS alsa-time-test diff --git a/src/Makefile.am b/src/Makefile.am index c022fa7ca..6544e2aa2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -32,6 +32,7 @@ xdgautostartdir=$(sysconfdir)/xdg/autostart alsaprofilesetsdir=$(datadir)/pulseaudio/alsa-mixer/profile-sets alsapathsdir=$(datadir)/pulseaudio/alsa-mixer/paths udevrulesdir=/lib/udev/rules.d +dbuspolicydir=$(sysconfdir)/dbus-1/system.d ################################### # Defines # @@ -73,6 +74,7 @@ AM_CFLAGS = \ $(LIBSAMPLERATE_CFLAGS) \ $(LIBSNDFILE_CFLAGS) \ $(LIBSPEEX_CFLAGS) \ + -DPA_BUILDDIR=\"$(abs_builddir)\" \ -DPA_DLSEARCHPATH=\"$(modlibexecdir)\" \ -DPA_DEFAULT_CONFIG_DIR=\"$(PA_DEFAULT_CONFIG_DIR)\" \ -DPA_BINARY=\"$(PA_BINARY)\" \ @@ -82,8 +84,8 @@ AM_CFLAGS = \ -DAO_REQUIRE_CAS \ -DPULSE_LOCALEDIR=\"$(pulselocaledir)\" \ -DPA_MACHINE_ID=\"$(localstatedir)/lib/dbus/machine-id\" \ - -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \ - -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\" + -DPA_ALSA_PATHS_DIR=\"$(alsapathsdir)\" \ + -DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\" AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS) AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS) @@ -119,6 +121,7 @@ EXTRA_DIST = \ modules/module-defs.h.m4 \ daemon/pulseaudio.desktop.in \ map-file \ + daemon/pulseaudio-system.conf \ modules/alsa/mixer/profile-sets/default.conf \ modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf \ modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf \ @@ -145,6 +148,9 @@ pulseconf_DATA = \ daemon.conf \ client.conf +dbuspolicy_DATA = \ + daemon/pulseaudio-system.conf + if HAVE_X11 xdgautostart_in_files = \ daemon/pulseaudio.desktop.in @@ -171,8 +177,8 @@ pulseaudio_SOURCES = \ daemon/ltdl-bind-now.c daemon/ltdl-bind-now.h \ daemon/main.c -pulseaudio_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(LIBSNDFILE_CFLAGS) $(CAP_CFLAGS) $(LIBOIL_CFLAGS) $(DBUS_CFLAGS) -pulseaudio_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(LIBSNDFILE_LIBS) $(CAP_LIBS) $(LIBOIL_LIBS) $(DBUS_LIBS) +pulseaudio_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(LIBSNDFILE_CFLAGS) $(CAP_CFLAGS) $(DBUS_CFLAGS) +pulseaudio_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(LIBSNDFILE_LIBS) $(CAP_LIBS) $(DBUS_LIBS) # This is needed because automake doesn't properly expand the foreach below pulseaudio_DEPENDENCIES = libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(PREOPEN_LIBS) @@ -274,7 +280,8 @@ TESTS = \ proplist-test \ lock-autospawn-test \ prioq-test \ - sigbus-test + sigbus-test \ + usergroup-test TESTS_BINARIES = \ mainloop-test \ @@ -312,7 +319,8 @@ TESTS_BINARIES = \ stripnul \ lock-autospawn-test \ prioq-test \ - sigbus-test + sigbus-test \ + usergroup-test if HAVE_SIGXCPU #TESTS += \ @@ -488,18 +496,18 @@ sig2str_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) resampler_test_SOURCES = tests/resampler-test.c resampler_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -resampler_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -resampler_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +resampler_test_CFLAGS = $(AM_CFLAGS) +resampler_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) mix_test_SOURCES = tests/mix-test.c mix_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -mix_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -mix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +mix_test_CFLAGS = $(AM_CFLAGS) +mix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) remix_test_SOURCES = tests/remix-test.c remix_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -remix_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -remix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +remix_test_CFLAGS = $(AM_CFLAGS) +remix_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) smoother_test_SOURCES = tests/smoother-test.c smoother_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la @@ -508,38 +516,38 @@ smoother_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) envelope_test_SOURCES = tests/envelope-test.c envelope_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -envelope_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -envelope_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +envelope_test_CFLAGS = $(AM_CFLAGS) +envelope_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) proplist_test_SOURCES = tests/proplist-test.c proplist_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -proplist_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -proplist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +proplist_test_CFLAGS = $(AM_CFLAGS) +proplist_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) rtstutter_SOURCES = tests/rtstutter.c rtstutter_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -rtstutter_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -rtstutter_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +rtstutter_CFLAGS = $(AM_CFLAGS) +rtstutter_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) stripnul_SOURCES = tests/stripnul.c stripnul_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -stripnul_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -stripnul_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +stripnul_CFLAGS = $(AM_CFLAGS) +stripnul_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) lock_autospawn_test_SOURCES = tests/lock-autospawn-test.c lock_autospawn_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -lock_autospawn_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -lock_autospawn_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +lock_autospawn_test_CFLAGS = $(AM_CFLAGS) +lock_autospawn_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) prioq_test_SOURCES = tests/prioq-test.c prioq_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -prioq_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -prioq_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +prioq_test_CFLAGS = $(AM_CFLAGS) +prioq_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) sigbus_test_SOURCES = tests/sigbus-test.c sigbus_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la -sigbus_test_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS) -sigbus_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBOIL_LIBS) +sigbus_test_CFLAGS = $(AM_CFLAGS) +sigbus_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) gtk_test_SOURCES = tests/gtk-test.c gtk_test_LDADD = $(AM_LDADD) libpulse.la libpulse-mainloop-glib.la @@ -551,6 +559,11 @@ alsa_time_test_LDADD = $(AM_LDADD) alsa_time_test_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS) alsa_time_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(ASOUNDLIB_LIBS) +usergroup_test_SOURCES = tests/usergroup-test.c +usergroup_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINORMICRO@.la +usergroup_test_CFLAGS = $(AM_CFLAGS) +usergroup_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) + ################################### # Common library # ################################### @@ -615,6 +628,7 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = \ pulsecore/tagstruct.c pulsecore/tagstruct.h \ pulsecore/time-smoother.c pulsecore/time-smoother.h \ pulsecore/tokenizer.c pulsecore/tokenizer.h \ + pulsecore/usergroup.c pulsecore/usergroup.h \ pulsecore/sndfile-util.c pulsecore/sndfile-util.h \ pulsecore/winsock.h @@ -776,7 +790,7 @@ libpulse_mainloop_glib_la_LDFLAGS = $(AM_LDFLAGS) $(VERSIONING_LDFLAGS) -version # OSS emulation # ################################### -if HAVE_OSS +if HAVE_OSS_WRAPPER lib_LTLIBRARIES += libpulsedsp.la bin_SCRIPTS += utils/padsp endif @@ -817,11 +831,18 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = \ pulsecore/object.c pulsecore/object.h \ pulsecore/play-memblockq.c pulsecore/play-memblockq.h \ pulsecore/play-memchunk.c pulsecore/play-memchunk.h \ + pulsecore/remap.c pulsecore/remap.h \ + pulsecore/remap_mmx.c pulsecore/remap_sse.c \ pulsecore/resampler.c pulsecore/resampler.h \ pulsecore/rtpoll.c pulsecore/rtpoll.h \ pulsecore/sample-util.c pulsecore/sample-util.h \ + pulsecore/cpu-arm.c pulsecore/cpu-arm.h \ + pulsecore/cpu-x86.c pulsecore/cpu-x86.h \ + pulsecore/svolume_c.c pulsecore/svolume_arm.c \ + pulsecore/svolume_mmx.c pulsecore/svolume_sse.c \ pulsecore/sconv-s16be.c pulsecore/sconv-s16be.h \ pulsecore/sconv-s16le.c pulsecore/sconv-s16le.h \ + pulsecore/sconv_sse.c \ pulsecore/sconv.c pulsecore/sconv.h \ pulsecore/shared.c pulsecore/shared.h \ pulsecore/shm.c pulsecore/shm.h \ @@ -837,9 +858,9 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = \ pulsecore/time-smoother.c pulsecore/time-smoother.h \ pulsecore/database.h -libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(WINSOCK_CFLAGS) $(LIBOIL_CFLAGS) +libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBSAMPLERATE_CFLAGS) $(LIBSPEEX_CFLAGS) $(WINSOCK_CFLAGS) libpulsecore_@PA_MAJORMINORMICRO@_la_LDFLAGS = -avoid-version -libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la +libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LTLIBICONV) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la if HAVE_X11 libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/x11wrap.c pulsecore/x11wrap.h @@ -865,6 +886,9 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_CFLAGS += $(TDB_CFLAGS) libpulsecore_@PA_MAJORMINORMICRO@_la_LIBADD += $(TDB_LIBS) endif +if HAVE_SIMPLEDB +libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/database-simple.c +endif # We split the foreign code off to not be annoyed by warnings we don't care about noinst_LTLIBRARIES = libpulsecore-foreign.la @@ -987,8 +1011,8 @@ modlibexec_LTLIBRARIES += \ module-tunnel-source.la \ module-position-event-sounds.la \ module-augment-properties.la \ - module-cork-music-on-phone.la - + module-cork-music-on-phone.la \ + module-loopback.la # See comment at librtp.la above if !OS_IS_WIN32 @@ -1031,7 +1055,7 @@ modlibexec_LTLIBRARIES += \ module-x11-cork-request.la endif -if HAVE_OSS +if HAVE_OSS_OUTPUT modlibexec_LTLIBRARIES += \ liboss-util.la \ module-oss.la @@ -1120,6 +1144,11 @@ modlibexec_LTLIBRARIES += \ module-hal-detect.la endif +if HAVE_HAL_COMPAT +modlibexec_LTLIBRARIES += \ + module-hal-detect.la +endif + if HAVE_UDEV modlibexec_LTLIBRARIES += \ module-udev-detect.la @@ -1221,7 +1250,8 @@ SYMDEF_FILES = \ modules/module-position-event-sounds-symdef.h \ modules/module-augment-properties-symdef.h \ modules/module-cork-music-on-phone-symdef.h \ - modules/module-console-kit-symdef.h + modules/module-console-kit-symdef.h \ + modules/module-loopback-symdef.h EXTRA_DIST += $(SYMDEF_FILES) BUILT_SOURCES += $(SYMDEF_FILES) @@ -1363,6 +1393,10 @@ module_tunnel_source_la_SOURCES = modules/module-tunnel.c module_tunnel_source_la_LDFLAGS = $(MODULE_LDFLAGS) module_tunnel_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la +module_loopback_la_SOURCES = modules/module-loopback.c +module_loopback_la_LDFLAGS = $(MODULE_LDFLAGS) +module_loopback_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la + # X11 module_x11_bell_la_SOURCES = modules/x11/module-x11-bell.c @@ -1576,10 +1610,16 @@ module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS) module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS) +if HAVE_HAL_COMPAT +module_hal_detect_la_SOURCES = modules/module-hal-detect-compat.c +module_hal_detect_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la +module_hal_detect_la_CFLAGS = $(AM_CFLAGS) +else module_hal_detect_la_SOURCES = modules/module-hal-detect.c -module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS) module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS) +endif +module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS) module_udev_detect_la_SOURCES = modules/module-udev-detect.c module_udev_detect_la_LDFLAGS = $(MODULE_LDFLAGS) @@ -1698,7 +1738,7 @@ daemon.conf: daemon/daemon.conf.in Makefile -e 's,@PA_DEFAULT_CONFIG_FILE\@,$(DEFAULT_CONFIG_DIR),g' < $< > $@ install-exec-hook: - chown root $(DESTDIR)$(bindir)/pulseaudio ; true + -chown root $(DESTDIR)$(pulselibexecdir)/proximity-helper -chmod u+s $(DESTDIR)$(pulselibexecdir)/proximity-helper ln -sf pacat $(DESTDIR)$(bindir)/parec ln -sf pacat $(DESTDIR)$(bindir)/pamon diff --git a/src/daemon/caps.c b/src/daemon/caps.c index 294be494e..76b62e03e 100644 --- a/src/daemon/caps.c +++ b/src/daemon/caps.c @@ -57,24 +57,29 @@ void pa_drop_root(void) { #ifdef HAVE_GETUID uid_t uid; + gid_t gid; + pa_log_debug(_("Cleaning up privileges.")); uid = getuid(); - if (uid == 0 || geteuid() != 0) - return; - - pa_log_info(_("Dropping root privileges.")); + gid = getgid(); #if defined(HAVE_SETRESUID) pa_assert_se(setresuid(uid, uid, uid) >= 0); + pa_assert_se(setresgid(gid, gid, gid) >= 0); #elif defined(HAVE_SETREUID) pa_assert_se(setreuid(uid, uid) >= 0); + pa_assert_se(setregid(gid, gid) >= 0); #else pa_assert_se(setuid(uid) >= 0); pa_assert_se(seteuid(uid) >= 0); + pa_assert_se(setgid(gid) >= 0); + pa_assert_se(setegid(gid) >= 0); #endif pa_assert_se(getuid() == uid); pa_assert_se(geteuid() == uid); + pa_assert_se(getgid() == gid); + pa_assert_se(getegid() == gid); #endif #ifdef HAVE_SYS_PRCTL_H @@ -82,7 +87,7 @@ void pa_drop_root(void) { #endif #ifdef HAVE_SYS_CAPABILITY_H - { + if (uid != 0) { cap_t caps; pa_assert_se(caps = cap_init()); pa_assert_se(cap_clear(caps) == 0); diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c index ecb384866..f6cdcdc83 100644 --- a/src/daemon/cmdline.c +++ b/src/daemon/cmdline.c @@ -385,11 +385,6 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d pa_xfree(conf->script_commands); conf->script_commands = pa_strbuf_tostring_free(buf); - if (!conf->script_commands) { - pa_xfree(conf->script_commands); - conf->script_commands = NULL; - } - *d = optind; return 0; diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c index 9010f2f65..6e7926f83 100644 --- a/src/daemon/daemon-conf.c +++ b/src/daemon/daemon-conf.c @@ -83,7 +83,7 @@ static const pa_daemon_conf default_conf = { .config_file = NULL, .use_pid_file = TRUE, .system_instance = FALSE, - .no_cpu_limit = FALSE, + .no_cpu_limit = TRUE, .disable_shm = FALSE, .lock_memory = FALSE, .default_n_fragments = 4, @@ -133,9 +133,25 @@ static const pa_daemon_conf default_conf = { }; pa_daemon_conf* pa_daemon_conf_new(void) { - pa_daemon_conf *c = pa_xnewdup(pa_daemon_conf, &default_conf, 1); + pa_daemon_conf *c; + + c = pa_xnewdup(pa_daemon_conf, &default_conf, 1); + +#if defined(__linux__) && !defined(__OPTIMIZE__) + + /* We abuse __OPTIMIZE__ as a check whether we are a debug build + * or not. If we are and are run from the build tree then we + * override the search path to point to our build tree */ + + if (pa_run_from_build_tree()) { + pa_log_notice("Detected that we are run from the build tree, fixing search path."); + c->dl_search_path = pa_xstrdup(PA_BUILDDIR "/.libs/"); + + } else + +#endif + c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH); - c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH); return c; } @@ -441,11 +457,15 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) { { "high-priority", pa_config_parse_bool, &c->high_priority, NULL }, { "realtime-scheduling", pa_config_parse_bool, &c->realtime_scheduling, NULL }, { "disallow-module-loading", pa_config_parse_bool, &c->disallow_module_loading, NULL }, + { "allow-module-loading", pa_config_parse_not_bool, &c->disallow_module_loading, NULL }, { "disallow-exit", pa_config_parse_bool, &c->disallow_exit, NULL }, + { "allow-exit", pa_config_parse_not_bool, &c->disallow_exit, NULL }, { "use-pid-file", pa_config_parse_bool, &c->use_pid_file, NULL }, { "system-instance", pa_config_parse_bool, &c->system_instance, NULL }, { "no-cpu-limit", pa_config_parse_bool, &c->no_cpu_limit, NULL }, + { "cpu-limit", pa_config_parse_not_bool, &c->no_cpu_limit, NULL }, { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL }, + { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL }, { "flat-volumes", pa_config_parse_bool, &c->flat_volumes, NULL }, { "lock-memory", pa_config_parse_bool, &c->lock_memory, NULL }, { "exit-idle-time", pa_config_parse_int, &c->exit_idle_time, NULL }, @@ -465,7 +485,9 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) { { "default-fragment-size-msec", parse_fragment_size_msec, c, NULL }, { "nice-level", parse_nice_level, c, NULL }, { "disable-remixing", pa_config_parse_bool, &c->disable_remixing, NULL }, + { "enable-remixing", pa_config_parse_not_bool, &c->disable_remixing, NULL }, { "disable-lfe-remixing", pa_config_parse_bool, &c->disable_lfe_remixing, NULL }, + { "enable-lfe-remixing", pa_config_parse_not_bool, &c->disable_lfe_remixing, NULL }, { "load-default-script-file", pa_config_parse_bool, &c->load_default_script_file, NULL }, { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL }, { "log-meta", pa_config_parse_bool, &c->log_meta, NULL }, @@ -623,12 +645,12 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) { pa_strbuf_printf(s, "nice-level = %i\n", c->nice_level); pa_strbuf_printf(s, "realtime-scheduling = %s\n", pa_yes_no(c->realtime_scheduling)); pa_strbuf_printf(s, "realtime-priority = %i\n", c->realtime_priority); - pa_strbuf_printf(s, "disallow-module-loading = %s\n", pa_yes_no(c->disallow_module_loading)); - pa_strbuf_printf(s, "disallow-exit = %s\n", pa_yes_no(c->disallow_exit)); + pa_strbuf_printf(s, "allow-module-loading = %s\n", pa_yes_no(!c->disallow_module_loading)); + pa_strbuf_printf(s, "allow-exit = %s\n", pa_yes_no(!c->disallow_exit)); pa_strbuf_printf(s, "use-pid-file = %s\n", pa_yes_no(c->use_pid_file)); pa_strbuf_printf(s, "system-instance = %s\n", pa_yes_no(c->system_instance)); - pa_strbuf_printf(s, "no-cpu-limit = %s\n", pa_yes_no(c->no_cpu_limit)); - pa_strbuf_printf(s, "disable-shm = %s\n", pa_yes_no(c->disable_shm)); + pa_strbuf_printf(s, "cpu-limit = %s\n", pa_yes_no(!c->no_cpu_limit)); + pa_strbuf_printf(s, "enable-shm = %s\n", pa_yes_no(!c->disable_shm)); pa_strbuf_printf(s, "flat-volumes = %s\n", pa_yes_no(c->flat_volumes)); pa_strbuf_printf(s, "lock-memory = %s\n", pa_yes_no(c->lock_memory)); pa_strbuf_printf(s, "exit-idle-time = %i\n", c->exit_idle_time); @@ -639,8 +661,8 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) { pa_strbuf_printf(s, "log-target = %s\n", c->auto_log_target ? "auto" : (c->log_target == PA_LOG_SYSLOG ? "syslog" : "stderr")); pa_strbuf_printf(s, "log-level = %s\n", log_level_to_string[c->log_level]); pa_strbuf_printf(s, "resample-method = %s\n", pa_resample_method_to_string(c->resample_method)); - pa_strbuf_printf(s, "disable-remixing = %s\n", pa_yes_no(c->disable_remixing)); - pa_strbuf_printf(s, "disable-lfe-remixing = %s\n", pa_yes_no(c->disable_lfe_remixing)); + pa_strbuf_printf(s, "enable-remixing = %s\n", pa_yes_no(!c->disable_remixing)); + pa_strbuf_printf(s, "enable-lfe-remixing = %s\n", pa_yes_no(!c->disable_lfe_remixing)); pa_strbuf_printf(s, "default-sample-format = %s\n", pa_sample_format_to_string(c->default_sample_spec.format)); pa_strbuf_printf(s, "default-sample-rate = %u\n", c->default_sample_spec.rate); pa_strbuf_printf(s, "default-sample-channels = %u\n", c->default_sample_spec.channels); diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in index 6931359c1..db2059e1a 100644 --- a/src/daemon/daemon.conf.in +++ b/src/daemon/daemon.conf.in @@ -21,14 +21,14 @@ ; daemonize = no ; fail = yes -; disallow-module-loading = no -; disallow-exit = no +; allow-module-loading = yes +; allow-exit = yes ; use-pid-file = yes ; system-instance = no -; disable-shm = no +; enable-shm = yes ; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB ; lock-memory = no -; no-cpu-limit = no +; cpu-limit = no ; high-priority = yes ; nice-level = -11 @@ -51,8 +51,8 @@ ; log-backtrace = 0 ; resample-method = speex-float-3 -; disable-remixing = no -; disable-lfe-remixing = yes +; enable-remixing = yes +; enable-lfe-remixing = no ; flat-volumes = yes diff --git a/src/daemon/main.c b/src/daemon/main.c index 0f6fc907e..af59adef4 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -39,8 +39,6 @@ #include #include -#include - #ifdef HAVE_SYS_MMAN_H #include #endif @@ -95,6 +93,8 @@ #ifdef HAVE_DBUS #include #endif +#include +#include #include "cmdline.h" #include "cpulimit.h" @@ -109,7 +109,7 @@ int allow_severity = LOG_INFO; int deny_severity = LOG_WARNING; #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_WRAPPER /* padsp looks for this symbol in the running process and disables * itself if it finds it and it is set to 7 (which is actually a bit * mask). For details see padsp. */ @@ -259,9 +259,14 @@ static int change_user(void) { pa_set_env("HOME", PA_SYSTEM_RUNTIME_PATH); /* Relevant for pa_runtime_path() */ - pa_set_env("PULSE_RUNTIME_PATH", PA_SYSTEM_RUNTIME_PATH); - pa_set_env("PULSE_CONFIG_PATH", PA_SYSTEM_CONFIG_PATH); - pa_set_env("PULSE_STATE_PATH", PA_SYSTEM_STATE_PATH); + if (!getenv("PULSE_RUNTIME_PATH")) + pa_set_env("PULSE_RUNTIME_PATH", PA_SYSTEM_RUNTIME_PATH); + + if (!getenv("PULSE_CONFIG_PATH")) + pa_set_env("PULSE_CONFIG_PATH", PA_SYSTEM_CONFIG_PATH); + + if (!getenv("PULSE_STATE_PATH")) + pa_set_env("PULSE_STATE_PATH", PA_SYSTEM_STATE_PATH); pa_log_info(_("Successfully dropped root privileges.")); @@ -401,6 +406,36 @@ int main(int argc, char *argv[]) { pa_log_set_level(PA_LOG_NOTICE); pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET); +#if defined(__linux__) && defined(__OPTIMIZE__) + /* + Disable lazy relocations to make usage of external libraries + more deterministic for our RT threads. We abuse __OPTIMIZE__ as + a check whether we are a debug build or not. This all is + admittedly a bit snake-oilish. + */ + + if (!getenv("LD_BIND_NOW")) { + char *rp; + + /* We have to execute ourselves, because the libc caches the + * value of $LD_BIND_NOW on initialization. */ + + pa_set_env("LD_BIND_NOW", "1"); + + if ((rp = pa_readlink("/proc/self/exe"))) { + + if (pa_streq(rp, PA_BINARY)) + pa_assert_se(execv(rp, argv) == 0); + else + pa_log_warn("/proc/self/exe does not point to " PA_BINARY ", cannot self execute. Are you playing games?"); + + pa_xfree(rp); + + } else + pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?"); + } +#endif + if ((e = getenv("PULSE_PASSED_FD"))) { passed_fd = atoi(e); @@ -411,10 +446,13 @@ int main(int argc, char *argv[]) { /* We might be autospawned, in which case have no idea in which * context we have been started. Let's cleanup our execution * context as good as possible */ + + pa_reset_personality(); pa_drop_root(); pa_close_all(passed_fd, -1); pa_reset_sigs(-1); pa_unblock_sigs(-1); + pa_reset_priority(); setlocale(LC_ALL, ""); pa_init_i18n(); @@ -668,7 +706,7 @@ int main(int argc, char *argv[]) { #endif } - pa_set_env("PULSE_INTERNAL", "1"); + pa_set_env_and_record("PULSE_INTERNAL", "1"); pa_assert_se(chdir("/") == 0); umask(0022); @@ -683,7 +721,7 @@ int main(int argc, char *argv[]) { if (change_user() < 0) goto finish; - pa_set_env("PULSE_SYSTEM", conf->system_instance ? "1" : "0"); + pa_set_env_and_record("PULSE_SYSTEM", conf->system_instance ? "1" : "0"); pa_log_info(_("This is PulseAudio %s"), PACKAGE_VERSION); pa_log_debug(_("Compilation host: %s"), CANONICAL_HOST); @@ -741,6 +779,8 @@ int main(int argc, char *argv[]) { pa_log_info(_("Using state directory %s."), s); pa_xfree(s); + pa_log_info(_("Using modules directory %s."), conf->dl_search_path); + pa_log_info(_("Running in system mode: %s"), pa_yes_no(pa_in_system_mode())); if (pa_in_system_mode()) @@ -788,6 +828,11 @@ int main(int argc, char *argv[]) { pa_memtrap_install(); + if (!getenv("PULSE_NO_SIMD")) { + pa_cpu_init_x86(); + pa_cpu_init_arm(); + } + pa_assert_se(mainloop = pa_mainloop_new()); if (!(c = pa_core_new(pa_mainloop_get_api(mainloop), !conf->disable_shm, conf->shm_size))) { @@ -827,8 +872,6 @@ int main(int argc, char *argv[]) { win32_timer = pa_mainloop_get_api(mainloop)->rtclock_time_new(pa_mainloop_get_api(mainloop), pa_gettimeofday(&win32_tv), message_cb, NULL); #endif - oil_init(); - if (!conf->no_cpu_limit) pa_assert_se(pa_cpu_limit_init(pa_mainloop_get_api(mainloop)) == 0); @@ -927,6 +970,9 @@ finish: if (valid_pid_file) pa_pid_file_remove(); + /* This has no real purpose except making things valgrind-clean */ + pa_unset_env_recorded(); + #ifdef OS_IS_WIN32 WSACleanup(); #endif diff --git a/src/daemon/polkit.c b/src/daemon/polkit.c deleted file mode 100644 index 9799e0948..000000000 --- a/src/daemon/polkit.c +++ /dev/null @@ -1,172 +0,0 @@ -/*** - This file is part of PulseAudio. - - Copyright 2004-2006 Lennart Poettering - Copyright 2006 Pierre Ossman for Cendio AB - - PulseAudio is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, - or (at your option) any later version. - - PulseAudio is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with PulseAudio; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA. -***/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include - -#include -#include - -#include - -#include -#include - -#include "polkit.h" - -int pa_polkit_check(const char *action_id) { - int ret = -1; - DBusError dbus_error; - DBusConnection *bus = NULL; - PolKitCaller *caller = NULL; - PolKitAction *action = NULL; - PolKitContext *context = NULL; - PolKitError *polkit_error = NULL; - PolKitSession *session = NULL; - PolKitResult polkit_result; - - dbus_error_init(&dbus_error); - - if (!(bus = dbus_bus_get(DBUS_BUS_SYSTEM, &dbus_error))) { - pa_log_error(_("Cannot connect to system bus: %s"), dbus_error.message); - goto finish; - } - - /* There seems to be a bug in some versions of D-Bus that causes - * dbus_shutdown() to call exit() when a connection without this - * flag disabled was created during runtime.*/ - dbus_connection_set_exit_on_disconnect(bus, FALSE); - - if (!(caller = polkit_caller_new_from_pid(bus, getpid(), &dbus_error))) { - pa_log_error(_("Cannot get caller from PID: %s"), dbus_error.message); - goto finish; - } - - /* This function is called when PulseAudio is called SUID root. We - * want to authenticate the real user that called us and not the - * effective user we gained through being SUID root. Hence we - * overwrite the UID caller data here explicitly, just for - * paranoia. In fact PolicyKit should fill in the UID here anyway - * -- an not the EUID or any other user id. */ - - if (!(polkit_caller_set_uid(caller, getuid()))) { - pa_log_error(_("Cannot set UID on caller object.")); - goto finish; - } - - if (!(polkit_caller_get_ck_session(caller, &session))) { - pa_log_error(_("Failed to get CK session.")); - goto finish; - } - - /* We need to overwrite the UID in both the caller and the session - * object */ - - if (!(polkit_session_set_uid(session, getuid()))) { - pa_log_error(_("Cannot set UID on session object.")); - goto finish; - } - - if (!(action = polkit_action_new())) { - pa_log_error(_("Cannot allocate PolKitAction.")); - goto finish; - } - - if (!polkit_action_set_action_id(action, action_id)) { - pa_log_error(_("Cannot set action_id")); - goto finish; - } - - if (!(context = polkit_context_new())) { - pa_log_error(_("Cannot allocate PolKitContext.")); - goto finish; - } - - if (!polkit_context_init(context, &polkit_error)) { - pa_log_error(_("Cannot initialize PolKitContext: %s"), polkit_error_get_error_message(polkit_error)); - goto finish; - } - - for (;;) { - - polkit_result = polkit_context_is_caller_authorized(context, action, caller, TRUE, &polkit_error); - - if (polkit_error_is_set(polkit_error)) { - pa_log_error(_("Could not determine whether caller is authorized: %s"), polkit_error_get_error_message(polkit_error)); - goto finish; - } - - if (polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH || - polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_SESSION || - polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_ALWAYS || - polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_ONE_SHOT || - polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH || - polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_SESSION || - polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_ALWAYS || - polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT - ) { - - if (polkit_auth_obtain(action_id, 0, getpid(), &dbus_error)) { - polkit_result = POLKIT_RESULT_YES; - break; - } - - if (dbus_error_is_set(&dbus_error)) { - pa_log_error(_("Cannot obtain auth: %s"), dbus_error.message); - goto finish; - } - } - - break; - } - - if (polkit_result != POLKIT_RESULT_YES && polkit_result != POLKIT_RESULT_NO) - pa_log_warn(_("PolicyKit responded with '%s'"), polkit_result_to_string_representation(polkit_result)); - - ret = polkit_result == POLKIT_RESULT_YES; - -finish: - - if (caller) - polkit_caller_unref(caller); - - if (action) - polkit_action_unref(action); - - if (context) - polkit_context_unref(context); - - if (bus) - dbus_connection_unref(bus); - - dbus_error_free(&dbus_error); - - if (polkit_error) - polkit_error_free(polkit_error); - - return ret; -} diff --git a/src/daemon/pulseaudio-system.conf b/src/daemon/pulseaudio-system.conf new file mode 100644 index 000000000..edddaf93b --- /dev/null +++ b/src/daemon/pulseaudio-system.conf @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/map-file b/src/map-file index a1d0a0614..95b2803ab 100644 --- a/src/map-file +++ b/src/map-file @@ -123,13 +123,18 @@ pa_cvolume_avg_mask; pa_cvolume_channels_equal_to; pa_cvolume_compatible; pa_cvolume_compatible_with_channel_map; +pa_cvolume_dec; pa_cvolume_equal; pa_cvolume_get_balance; pa_cvolume_get_fade; pa_cvolume_get_position; +pa_cvolume_inc; pa_cvolume_init; pa_cvolume_max; pa_cvolume_max_mask; +pa_cvolume_merge; +pa_cvolume_min; +pa_cvolume_min_mask; pa_cvolume_remap; pa_cvolume_scale; pa_cvolume_scale_mask; @@ -219,6 +224,8 @@ pa_simple_get_latency; pa_simple_new; pa_simple_read; pa_simple_write; +pa_stream_begin_write; +pa_stream_cancel_write; pa_stream_connect_playback; pa_stream_connect_record; pa_stream_connect_upload; diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index a5515e1b1..685169b99 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -929,7 +929,7 @@ static int element_zero_volume(pa_alsa_element *e, snd_mixer_t *m) { int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) { pa_alsa_element *e; - int r; + int r = 0; pa_assert(m); pa_assert(p); @@ -940,7 +940,6 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) { PA_LLIST_FOREACH(e, p->elements) { switch (e->switch_use) { - case PA_ALSA_SWITCH_MUTE: case PA_ALSA_SWITCH_OFF: r = element_set_switch(e, m, FALSE); break; @@ -949,6 +948,7 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) { r = element_set_switch(e, m, TRUE); break; + case PA_ALSA_SWITCH_MUTE: case PA_ALSA_SWITCH_IGNORE: case PA_ALSA_SWITCH_SELECT: r = 0; @@ -960,7 +960,6 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) { switch (e->volume_use) { case PA_ALSA_VOLUME_OFF: - case PA_ALSA_VOLUME_MERGE: r = element_mute_volume(e, m); break; @@ -968,6 +967,7 @@ int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) { r = element_zero_volume(e, m); break; + case PA_ALSA_VOLUME_MERGE: case PA_ALSA_VOLUME_IGNORE: r = 0; break; @@ -1849,7 +1849,12 @@ pa_alsa_path* pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction) items[1].data = &p->description; items[2].data = &p->name; - fn = pa_maybe_prefix_path(fname, PA_ALSA_PATHS_DIR); + fn = pa_maybe_prefix_path(fname, +#if defined(__linux__) && !defined(__OPTIMIZE__) + pa_run_from_build_tree() ? PA_BUILDDIR "/modules/alsa/mixer/paths/" : +#endif + PA_ALSA_PATHS_DIR); + r = pa_config_parse(fn, NULL, items, p); pa_xfree(fn); @@ -2838,9 +2843,9 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { if (bonus) { if (pa_channel_map_equal(&m->channel_map, bonus)) - m->priority += 5000; + m->priority += 50; else if (m->channel_map.channels == bonus->channels) - m->priority += 4000; + m->priority += 30; } return 0; @@ -2884,7 +2889,7 @@ static void profile_set_add_auto_pair( else name = pa_sprintf_malloc("input:%s", n->name); - if ((p = pa_hashmap_get(ps->profiles, name))) { + if (pa_hashmap_get(ps->profiles, name)) { pa_xfree(name); return; } @@ -3110,7 +3115,12 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel if (!fname) fname = "default.conf"; - fn = pa_maybe_prefix_path(fname, PA_ALSA_PROFILE_SETS_DIR); + fn = pa_maybe_prefix_path(fname, +#if defined(__linux__) && !defined(__OPTIMIZE__) + pa_run_from_build_tree() ? PA_BUILDDIR "/modules/alsa/mixer/profile-sets/" : +#endif + PA_ALSA_PROFILE_SETS_DIR); + r = pa_config_parse(fn, NULL, items, ps); pa_xfree(fn); @@ -3135,7 +3145,13 @@ fail: return NULL; } -void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, const pa_sample_spec *ss) { +void pa_alsa_profile_set_probe( + pa_alsa_profile_set *ps, + const char *dev_id, + const pa_sample_spec *ss, + unsigned default_n_fragments, + unsigned default_fragment_size_msec) { + void *state; pa_alsa_profile *p, *last = NULL; pa_alsa_mapping *m; @@ -3150,6 +3166,7 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons PA_HASHMAP_FOREACH(p, ps->profiles, state) { pa_sample_spec try_ss; pa_channel_map try_map; + snd_pcm_uframes_t try_period_size, try_buffer_size; uint32_t idx; /* Is this already marked that it is supported? (i.e. from the config file) */ @@ -3203,13 +3220,18 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons try_ss = *ss; try_ss.channels = try_map.channels; + try_period_size = + pa_usec_to_bytes(default_fragment_size_msec * PA_USEC_PER_MSEC, &try_ss) / + pa_frame_size(&try_ss); + try_buffer_size = default_n_fragments * try_period_size; + if (!(m ->output_pcm = pa_alsa_open_by_template( m->device_strings, dev_id, NULL, &try_ss, &try_map, SND_PCM_STREAM_PLAYBACK, - NULL, NULL, 0, NULL, NULL, + &try_period_size, &try_buffer_size, 0, NULL, NULL, TRUE))) { p->supported = FALSE; break; @@ -3227,13 +3249,18 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons try_ss = *ss; try_ss.channels = try_map.channels; + try_period_size = + pa_usec_to_bytes(default_fragment_size_msec*PA_USEC_PER_MSEC, &try_ss) / + pa_frame_size(&try_ss); + try_buffer_size = default_n_fragments * try_period_size; + if (!(m ->input_pcm = pa_alsa_open_by_template( m->device_strings, dev_id, NULL, &try_ss, &try_map, SND_PCM_STREAM_CAPTURE, - NULL, NULL, 0, NULL, NULL, + &try_period_size, &try_buffer_size, 0, NULL, NULL, TRUE))) { p->supported = FALSE; break; diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h index 76788183e..a0d4fcbee 100644 --- a/src/modules/alsa/alsa-mixer.h +++ b/src/modules/alsa/alsa-mixer.h @@ -269,7 +269,7 @@ void pa_alsa_mapping_dump(pa_alsa_mapping *m); void pa_alsa_profile_dump(pa_alsa_profile *p); pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel_map *bonus); -void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, const pa_sample_spec *ss); +void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, const pa_sample_spec *ss, unsigned default_n_fragments, unsigned default_fragment_size_msec); void pa_alsa_profile_set_free(pa_alsa_profile_set *s); void pa_alsa_profile_set_dump(pa_alsa_profile_set *s); diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c index 0cde694c8..22e88b4ac 100644 --- a/src/modules/alsa/alsa-sink.c +++ b/src/modules/alsa/alsa-sink.c @@ -62,11 +62,26 @@ /* #define DEBUG_TIMING */ #define DEFAULT_DEVICE "default" -#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */ -#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms -- Fill up when only this much is left in the buffer */ -#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- On underrun, increase watermark by this */ -#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */ -#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/ + +#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */ +#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms -- Fill up when only this much is left in the buffer */ + +#define TSCHED_WATERMARK_INC_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- On underrun, increase watermark by this */ +#define TSCHED_WATERMARK_DEC_STEP_USEC (5*PA_USEC_PER_MSEC) /* 5ms -- When everything's great, decrease watermark by this */ +#define TSCHED_WATERMARK_VERIFY_AFTER_USEC (20*PA_USEC_PER_SEC) /* 20s -- How long after a drop out recheck if things are good now */ +#define TSCHED_WATERMARK_INC_THRESHOLD_USEC (0*PA_USEC_PER_MSEC) /* 0ms -- If the buffer level ever below this theshold, increase the watermark */ +#define TSCHED_WATERMARK_DEC_THRESHOLD_USEC (100*PA_USEC_PER_MSEC) /* 100ms -- If the buffer level didn't drop below this theshold in the verification time, decrease the watermark */ + +/* Note that TSCHED_WATERMARK_INC_THRESHOLD_USEC == 0 means tht we + * will increase the watermark only if we hit a real underrun. */ + +#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */ +#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/ + +#define SMOOTHER_MIN_INTERVAL (2*PA_USEC_PER_MSEC) /* 2ms -- min smoother update interval */ +#define SMOOTHER_MAX_INTERVAL (200*PA_USEC_PER_MSEC) /* 200ms -- max smoother update inteval */ + +#define VOLUME_ACCURACY (PA_VOLUME_NORM/100) /* don't require volume adjustments to be perfectly correct. don't necessarily extend granularity in software unless the differences get greater than this level */ struct userdata { pa_core *core; @@ -94,9 +109,13 @@ struct userdata { hwbuf_unused, min_sleep, min_wakeup, - watermark_step; + watermark_inc_step, + watermark_dec_step, + watermark_inc_threshold, + watermark_dec_threshold; + + pa_usec_t watermark_dec_not_before; - unsigned nfragments; pa_memchunk memchunk; char *device_name; /* name of the PCM device */ @@ -113,6 +132,8 @@ struct userdata { pa_smoother *smoother; uint64_t write_count; uint64_t since_start; + pa_usec_t smoother_interval; + pa_usec_t last_smoother_update; pa_reserve_wrapper *reserve; pa_hook_slot *reserve_slot; @@ -241,6 +262,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) { size_t max_use, max_use_2; pa_assert(u); + pa_assert(u->use_tsched); max_use = u->hwbuf_size - u->hwbuf_unused; max_use_2 = pa_frame_align(max_use/2, &u->sink->sample_spec); @@ -255,6 +277,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) { static void fix_tsched_watermark(struct userdata *u) { size_t max_use; pa_assert(u); + pa_assert(u->use_tsched); max_use = u->hwbuf_size - u->hwbuf_unused; @@ -265,7 +288,7 @@ static void fix_tsched_watermark(struct userdata *u) { u->tsched_watermark = u->min_wakeup; } -static void adjust_after_underrun(struct userdata *u) { +static void increase_watermark(struct userdata *u) { size_t old_watermark; pa_usec_t old_min_latency, new_min_latency; @@ -274,31 +297,64 @@ static void adjust_after_underrun(struct userdata *u) { /* First, just try to increase the watermark */ old_watermark = u->tsched_watermark; - u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step); + u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_inc_step); fix_tsched_watermark(u); if (old_watermark != u->tsched_watermark) { - pa_log_notice("Increasing wakeup watermark to %0.2f ms", - (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC); + pa_log_info("Increasing wakeup watermark to %0.2f ms", + (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC); return; } /* Hmm, we cannot increase the watermark any further, hence let's raise the latency */ old_min_latency = u->sink->thread_info.min_latency; - new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC); + new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_INC_STEP_USEC); new_min_latency = PA_MIN(new_min_latency, u->sink->thread_info.max_latency); if (old_min_latency != new_min_latency) { - pa_log_notice("Increasing minimal latency to %0.2f ms", - (double) new_min_latency / PA_USEC_PER_MSEC); + pa_log_info("Increasing minimal latency to %0.2f ms", + (double) new_min_latency / PA_USEC_PER_MSEC); pa_sink_set_latency_range_within_thread(u->sink, new_min_latency, u->sink->thread_info.max_latency); - return; } /* When we reach this we're officialy fucked! */ } +static void decrease_watermark(struct userdata *u) { + size_t old_watermark; + pa_usec_t now; + + pa_assert(u); + pa_assert(u->use_tsched); + + now = pa_rtclock_now(); + + if (u->watermark_dec_not_before <= 0) + goto restart; + + if (u->watermark_dec_not_before > now) + return; + + old_watermark = u->tsched_watermark; + + if (u->tsched_watermark < u->watermark_dec_step) + u->tsched_watermark = u->tsched_watermark / 2; + else + u->tsched_watermark = PA_MAX(u->tsched_watermark / 2, u->tsched_watermark - u->watermark_dec_step); + + fix_tsched_watermark(u); + + if (old_watermark != u->tsched_watermark) + pa_log_info("Decreasing wakeup watermark to %0.2f ms", + (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC); + + /* We don't change the latency range*/ + +restart: + u->watermark_dec_not_before = now + TSCHED_WATERMARK_VERIFY_AFTER_USEC; +} + static void hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*process_usec) { pa_usec_t usec, wm; @@ -306,6 +362,7 @@ static void hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*p pa_assert(process_usec); pa_assert(u); + pa_assert(u->use_tsched); usec = pa_sink_get_requested_latency_within_thread(u->sink); @@ -340,6 +397,9 @@ static int try_recover(struct userdata *u, const char *call, int err) { if (err == -EPIPE) pa_log_debug("%s: Buffer underrun!", call); + if (err == -ESTRPIPE) + pa_log_debug("%s: System suspended!", call); + if ((err = snd_pcm_recover(u->pcm_handle, err, 1)) < 0) { pa_log("%s: %s", call, pa_alsa_strerror(err)); return -1; @@ -350,42 +410,65 @@ static int try_recover(struct userdata *u, const char *call, int err) { return 0; } -static size_t check_left_to_play(struct userdata *u, size_t n_bytes) { +static size_t check_left_to_play(struct userdata *u, size_t n_bytes, pa_bool_t on_timeout) { size_t left_to_play; + pa_bool_t underrun = FALSE; /* We use <= instead of < for this check here because an underrun * only happens after the last sample was processed, not already when * it is removed from the buffer. This is particularly important * when block transfer is used. */ - if (n_bytes <= u->hwbuf_size) { + if (n_bytes <= u->hwbuf_size) left_to_play = u->hwbuf_size - n_bytes; + else { -#ifdef DEBUG_TIMING - pa_log_debug("%0.2f ms left to play", (double) pa_bytes_to_usec(left_to_play, &u->sink->sample_spec) / PA_USEC_PER_MSEC); -#endif - - } else { + /* We got a dropout. What a mess! */ left_to_play = 0; + underrun = TRUE; #ifdef DEBUG_TIMING PA_DEBUG_TRAP; #endif - if (!u->first && !u->after_rewind) { - + if (!u->first && !u->after_rewind) if (pa_log_ratelimit()) pa_log_info("Underrun!"); + } - if (u->use_tsched) - adjust_after_underrun(u); +#ifdef DEBUG_TIMING + pa_log_debug("%0.2f ms left to play; inc threshold = %0.2f ms; dec threshold = %0.2f ms", + (double) pa_bytes_to_usec(left_to_play, &u->sink->sample_spec) / PA_USEC_PER_MSEC, + (double) pa_bytes_to_usec(u->watermark_inc_threshold, &u->sink->sample_spec) / PA_USEC_PER_MSEC, + (double) pa_bytes_to_usec(u->watermark_dec_threshold, &u->sink->sample_spec) / PA_USEC_PER_MSEC); +#endif + + if (u->use_tsched) { + pa_bool_t reset_not_before = TRUE; + + if (!u->first && !u->after_rewind) { + if (underrun || left_to_play < u->watermark_inc_threshold) + increase_watermark(u); + else if (left_to_play > u->watermark_dec_threshold) { + reset_not_before = FALSE; + + /* We decrease the watermark only if have actually + * been woken up by a timeout. If something else woke + * us up it's too easy to fulfill the deadlines... */ + + if (on_timeout) + decrease_watermark(u); + } } + + if (reset_not_before) + u->watermark_dec_not_before = 0; } return left_to_play; } -static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) { +static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) { pa_bool_t work_done = TRUE; pa_usec_t max_sleep_usec = 0, process_usec = 0; size_t left_to_play; @@ -401,6 +484,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle snd_pcm_sframes_t n; size_t n_bytes; int r; + pa_bool_t after_avail = TRUE; /* First we determine how many samples are missing to fill the * buffer up to 100% */ @@ -419,7 +503,8 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle pa_log_debug("avail: %lu", (unsigned long) n_bytes); #endif - left_to_play = check_left_to_play(u, n_bytes); + left_to_play = check_left_to_play(u, n_bytes, on_timeout); + on_timeout = FALSE; if (u->use_tsched) @@ -484,6 +569,9 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle if (PA_UNLIKELY((err = pa_alsa_safe_mmap_begin(u->pcm_handle, &areas, &offset, &frames, u->hwbuf_size, &u->sink->sample_spec)) < 0)) { + if (!after_avail && err == -EAGAIN) + break; + if ((r = try_recover(u, "snd_pcm_mmap_begin", err)) == 0) continue; @@ -494,6 +582,12 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle if (frames > pa_mempool_block_size_max(u->sink->core->mempool)/u->frame_size) frames = pa_mempool_block_size_max(u->sink->core->mempool)/u->frame_size; + if (!after_avail && frames == 0) + break; + + pa_assert(frames > 0); + after_avail = FALSE; + /* Check these are multiples of 8 bit */ pa_assert((areas[0].first & 7) == 0); pa_assert((areas[0].step & 7)== 0); @@ -545,7 +639,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle return work_done ? 1 : 0; } -static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) { +static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) { pa_bool_t work_done = FALSE; pa_usec_t max_sleep_usec = 0, process_usec = 0; size_t left_to_play; @@ -561,6 +655,7 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle snd_pcm_sframes_t n; size_t n_bytes; int r; + pa_bool_t after_avail = TRUE; if (PA_UNLIKELY((n = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->sink->sample_spec)) < 0)) { @@ -571,7 +666,8 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle } n_bytes = (size_t) n * u->frame_size; - left_to_play = check_left_to_play(u, n_bytes); + left_to_play = check_left_to_play(u, n_bytes, on_timeout); + on_timeout = FALSE; if (u->use_tsched) @@ -631,16 +727,23 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle frames = snd_pcm_writei(u->pcm_handle, (const uint8_t*) p + u->memchunk.index, (snd_pcm_uframes_t) frames); pa_memblock_release(u->memchunk.memblock); - pa_assert(frames != 0); - if (PA_UNLIKELY(frames < 0)) { + if (!after_avail && (int) frames == -EAGAIN) + break; + if ((r = try_recover(u, "snd_pcm_writei", (int) frames)) == 0) continue; return r; } + if (!after_avail && frames == 0) + break; + + pa_assert(frames > 0); + after_avail = FALSE; + u->memchunk.index += (size_t) frames * u->frame_size; u->memchunk.length -= (size_t) frames * u->frame_size; @@ -700,18 +803,27 @@ static void update_smoother(struct userdata *u) { now1 = pa_timespec_load(&htstamp); } + /* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */ + if (now1 <= 0) + now1 = pa_rtclock_now(); + + /* check if the time since the last update is bigger than the interval */ + if (u->last_smoother_update > 0) + if (u->last_smoother_update + u->smoother_interval > now1) + return; + position = (int64_t) u->write_count - ((int64_t) delay * (int64_t) u->frame_size); if (PA_UNLIKELY(position < 0)) position = 0; - /* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */ - if (now1 <= 0) - now1 = pa_rtclock_now(); - now2 = pa_bytes_to_usec((uint64_t) position, &u->sink->sample_spec); pa_smoother_put(u->smoother, now1, now2); + + u->last_smoother_update = now1; + /* exponentially increase the update interval up to the MAX limit */ + u->smoother_interval = PA_MIN (u->smoother_interval * 2, SMOOTHER_MAX_INTERVAL); } static pa_usec_t sink_get_latency(struct userdata *u) { @@ -830,8 +942,7 @@ static int unsuspend(struct userdata *u) { pa_sample_spec ss; int err; pa_bool_t b, d; - unsigned nfrags; - snd_pcm_uframes_t period_size; + snd_pcm_uframes_t period_size, buffer_size; pa_assert(u); pa_assert(!u->pcm_handle); @@ -839,7 +950,7 @@ static int unsuspend(struct userdata *u) { pa_log_info("Trying resume..."); if ((err = snd_pcm_open(&u->pcm_handle, u->device_name, SND_PCM_STREAM_PLAYBACK, - /*SND_PCM_NONBLOCK|*/ + SND_PCM_NONBLOCK| SND_PCM_NO_AUTO_RESAMPLE| SND_PCM_NO_AUTO_CHANNELS| SND_PCM_NO_AUTO_FORMAT)) < 0) { @@ -848,12 +959,12 @@ static int unsuspend(struct userdata *u) { } ss = u->sink->sample_spec; - nfrags = u->nfragments; period_size = u->fragment_size / u->frame_size; + buffer_size = u->hwbuf_size / u->frame_size; b = u->use_mmap; d = u->use_tsched; - if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &nfrags, &period_size, u->hwbuf_size / u->frame_size, &b, &d, TRUE)) < 0) { + if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &period_size, &buffer_size, 0, &b, &d, TRUE)) < 0) { pa_log("Failed to set hardware parameters: %s", pa_alsa_strerror(err)); goto fail; } @@ -868,10 +979,11 @@ static int unsuspend(struct userdata *u) { goto fail; } - if (nfrags != u->nfragments || period_size*u->frame_size != u->fragment_size) { - pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu*%lu, New %lu*%lu)", - (unsigned long) u->nfragments, (unsigned long) u->fragment_size, - (unsigned long) nfrags, period_size * u->frame_size); + if (period_size*u->frame_size != u->fragment_size || + buffer_size*u->frame_size != u->hwbuf_size) { + pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu/%lu, New %lu/%lu)", + (unsigned long) u->hwbuf_size, (unsigned long) u->fragment_size, + (unsigned long) (buffer_size*u->fragment_size), (unsigned long) (period_size*u->frame_size)); goto fail; } @@ -881,6 +993,11 @@ static int unsuspend(struct userdata *u) { if (build_pollfd(u) < 0) goto fail; + u->write_count = 0; + pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE); + u->smoother_interval = SMOOTHER_MIN_INTERVAL; + u->last_smoother_update = 0; + u->first = TRUE; u->since_start = 0; @@ -894,7 +1011,7 @@ fail: u->pcm_handle = NULL; } - return -1; + return -PA_ERR_IO; } /* Called from IO context */ @@ -918,28 +1035,33 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse switch ((pa_sink_state_t) PA_PTR_TO_UINT(data)) { - case PA_SINK_SUSPENDED: + case PA_SINK_SUSPENDED: { + int r; + pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state)); - if (suspend(u) < 0) - return -1; + if ((r = suspend(u)) < 0) + return r; break; + } case PA_SINK_IDLE: - case PA_SINK_RUNNING: + case PA_SINK_RUNNING: { + int r; if (u->sink->thread_info.state == PA_SINK_INIT) { if (build_pollfd(u) < 0) - return -1; + return -PA_ERR_IO; } if (u->sink->thread_info.state == PA_SINK_SUSPENDED) { - if (unsuspend(u) < 0) - return -1; + if ((r = unsuspend(u)) < 0) + return r; } break; + } case PA_SINK_UNLINKED: case PA_SINK_INIT: @@ -967,7 +1089,7 @@ static int sink_set_state_cb(pa_sink *s, pa_sink_state_t new_state) { reserve_done(u); else if (old_state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(new_state)) if (reserve_init(u, u->device_name) < 0) - return -1; + return -PA_ERR_BUSY; return 0; } @@ -982,7 +1104,7 @@ static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) { return 0; if (mask & SND_CTL_EVENT_MASK_VALUE) { - pa_sink_get_volume(u->sink, TRUE, FALSE); + pa_sink_get_volume(u->sink, TRUE); pa_sink_get_mute(u->sink, TRUE); } @@ -1009,15 +1131,11 @@ static void sink_get_volume_cb(pa_sink *s) { if (pa_cvolume_equal(&u->hardware_volume, &r)) return; - s->virtual_volume = u->hardware_volume = r; + s->real_volume = u->hardware_volume = r; - if (u->mixer_path->has_dB) { - pa_cvolume reset; - - /* Hmm, so the hardware volume changed, let's reset our software volume */ - pa_cvolume_reset(&reset, s->sample_spec.channels); - pa_sink_set_soft_volume(s, &reset); - } + /* Hmm, so the hardware volume changed, let's reset our software volume */ + if (u->mixer_path->has_dB) + pa_sink_set_soft_volume(s, NULL); } static void sink_set_volume_cb(pa_sink *s) { @@ -1030,7 +1148,7 @@ static void sink_set_volume_cb(pa_sink *s) { pa_assert(u->mixer_handle); /* Shift up by the base volume */ - pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume); + pa_sw_cvolume_divide_scalar(&r, &s->real_volume, s->base_volume); if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0) return; @@ -1041,13 +1159,26 @@ static void sink_set_volume_cb(pa_sink *s) { u->hardware_volume = r; if (u->mixer_path->has_dB) { + pa_cvolume new_soft_volume; + pa_bool_t accurate_enough; /* Match exactly what the user requested by software */ - pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume); + pa_sw_cvolume_divide(&new_soft_volume, &s->real_volume, &u->hardware_volume); - pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume)); + /* If the adjustment to do in software is only minimal we + * can skip it. That saves us CPU at the expense of a bit of + * accuracy */ + accurate_enough = + (pa_cvolume_min(&new_soft_volume) >= (PA_VOLUME_NORM - VOLUME_ACCURACY)) && + (pa_cvolume_max(&new_soft_volume) <= (PA_VOLUME_NORM + VOLUME_ACCURACY)); + + pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->real_volume)); pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &u->hardware_volume)); - pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume)); + pa_log_debug("Calculated software volume: %s (accurate-enough=%s)", pa_cvolume_snprint(t, sizeof(t), &new_soft_volume), + pa_yes_no(accurate_enough)); + + if (!accurate_enough) + s->soft_volume = new_soft_volume; } else { pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r)); @@ -1055,7 +1186,7 @@ static void sink_set_volume_cb(pa_sink *s) { /* We can't match exactly what the user requested, hence let's * at least tell the user about it */ - s->virtual_volume = r; + s->real_volume = r; } } @@ -1177,8 +1308,11 @@ static int process_rewind(struct userdata *u) { pa_log_debug("before: %lu", (unsigned long) in_frames); if ((out_frames = snd_pcm_rewind(u->pcm_handle, (snd_pcm_uframes_t) in_frames)) < 0) { pa_log("snd_pcm_rewind() failed: %s", pa_alsa_strerror((int) out_frames)); - return -1; + if (try_recover(u, "process_rewind", out_frames) < 0) + return -1; + out_frames = 0; } + pa_log_debug("after: %lu", (unsigned long) out_frames); rewind_nbytes = (size_t) out_frames * u->frame_size; @@ -1186,7 +1320,7 @@ static int process_rewind(struct userdata *u) { if (rewind_nbytes <= 0) pa_log_info("Tried rewind, but was apparently not possible."); else { - u->write_count -= out_frames * u->frame_size; + u->write_count -= rewind_nbytes; pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes); pa_sink_process_rewind(u->sink, rewind_nbytes); @@ -1224,15 +1358,16 @@ static void thread_func(void *userdata) { if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) { int work_done; pa_usec_t sleep_usec = 0; + pa_bool_t on_timeout = pa_rtpoll_timer_elapsed(u->rtpoll); if (PA_UNLIKELY(u->sink->thread_info.rewind_requested)) if (process_rewind(u) < 0) goto fail; if (u->use_mmap) - work_done = mmap_write(u, &sleep_usec, revents & POLLOUT); + work_done = mmap_write(u, &sleep_usec, revents & POLLOUT, on_timeout); else - work_done = unix_write(u, &sleep_usec, revents & POLLOUT); + work_done = unix_write(u, &sleep_usec, revents & POLLOUT, on_timeout); if (work_done < 0) goto fail; @@ -1264,7 +1399,8 @@ static void thread_func(void *userdata) { * we have filled the buffer at least once * completely.*/ - pa_log_debug("Cutting sleep time for the initial iterations by half."); + if (pa_log_ratelimit()) + pa_log_debug("Cutting sleep time for the initial iterations by half."); sleep_usec /= 2; } @@ -1506,8 +1642,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca const char *dev_id = NULL; pa_sample_spec ss, requested_ss; pa_channel_map map; - uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark; - snd_pcm_uframes_t period_frames, tsched_frames; + uint32_t nfrags, frag_size, buffer_size, tsched_size, tsched_watermark; + snd_pcm_uframes_t period_frames, buffer_frames, tsched_frames; size_t frame_size; pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE; pa_sink_new_data data; @@ -1541,8 +1677,10 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca goto fail; } - hwbuf_size = frag_size * nfrags; + buffer_size = nfrags * frag_size; + period_frames = frag_size/frame_size; + buffer_frames = buffer_size/frame_size; tsched_frames = tsched_size/frame_size; if (pa_modargs_get_value_boolean(ma, "mmap", &use_mmap) < 0) { @@ -1582,6 +1720,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca 5, pa_rtclock_now(), TRUE); + u->smoother_interval = SMOOTHER_MIN_INTERVAL; dev_id = pa_modargs_get_value( ma, "device_id", @@ -1608,7 +1747,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca &u->device_name, &ss, &map, SND_PCM_STREAM_PLAYBACK, - &nfrags, &period_frames, tsched_frames, + &period_frames, &buffer_frames, tsched_frames, &b, &d, mapping))) goto fail; @@ -1623,7 +1762,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca &u->device_name, &ss, &map, SND_PCM_STREAM_PLAYBACK, - &nfrags, &period_frames, tsched_frames, + &period_frames, &buffer_frames, tsched_frames, &b, &d, profile_set, &mapping))) goto fail; @@ -1635,7 +1774,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca &u->device_name, &ss, &map, SND_PCM_STREAM_PLAYBACK, - &nfrags, &period_frames, tsched_frames, + &period_frames, &buffer_frames, tsched_frames, &b, &d, FALSE))) goto fail; } @@ -1661,11 +1800,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca u->use_tsched = use_tsched = FALSE; } - if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) { - pa_log_info("Device is not a hardware device, disabling timer-based scheduling."); - u->use_tsched = use_tsched = FALSE; - } - if (u->use_mmap) pa_log_info("Successfully enabled mmap() mode."); @@ -1687,7 +1821,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle); pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name); - pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags)); + pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (buffer_frames * frame_size)); pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size)); pa_proplist_sets(data.proplist, PA_PROP_DEVICE_ACCESS_MODE, u->use_tsched ? "mmap+timer" : (u->use_mmap ? "mmap" : "serial")); @@ -1728,21 +1862,28 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca pa_sink_set_rtpoll(u->sink, u->rtpoll); u->frame_size = frame_size; - u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size); - u->nfragments = nfrags; - u->hwbuf_size = u->fragment_size * nfrags; - u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec); + u->fragment_size = frag_size = (size_t) (period_frames * frame_size); + u->hwbuf_size = buffer_size = (size_t) (buffer_frames * frame_size); pa_cvolume_mute(&u->hardware_volume, u->sink->sample_spec.channels); - pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms", - nfrags, (long unsigned) u->fragment_size, + pa_log_info("Using %0.1f fragments of size %lu bytes (%0.2fms), buffer size is %lu bytes (%0.2fms)", + (double) u->hwbuf_size / (double) u->fragment_size, + (long unsigned) u->fragment_size, + (double) pa_bytes_to_usec(u->fragment_size, &ss) / PA_USEC_PER_MSEC, + (long unsigned) u->hwbuf_size, (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC); pa_sink_set_max_request(u->sink, u->hwbuf_size); pa_sink_set_max_rewind(u->sink, u->hwbuf_size); if (u->use_tsched) { - u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->sink->sample_spec); + u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec); + + u->watermark_inc_step = pa_usec_to_bytes(TSCHED_WATERMARK_INC_STEP_USEC, &u->sink->sample_spec); + u->watermark_dec_step = pa_usec_to_bytes(TSCHED_WATERMARK_DEC_STEP_USEC, &u->sink->sample_spec); + + u->watermark_inc_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_INC_THRESHOLD_USEC, &u->sink->sample_spec); + u->watermark_dec_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_DEC_THRESHOLD_USEC, &u->sink->sample_spec); fix_min_sleep_wakeup(u); fix_tsched_watermark(u); @@ -1756,6 +1897,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca } else pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss)); + reserve_update(u); if (update_sw_params(u) < 0) diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c index a6760e1e7..fa3ac0aac 100644 --- a/src/modules/alsa/alsa-source.c +++ b/src/modules/alsa/alsa-source.c @@ -59,11 +59,24 @@ /* #define DEBUG_TIMING */ #define DEFAULT_DEVICE "default" -#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */ -#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */ -#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ -#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ -#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */ + +#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */ +#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */ + +#define TSCHED_WATERMARK_INC_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ +#define TSCHED_WATERMARK_DEC_STEP_USEC (5*PA_USEC_PER_MSEC) /* 5ms */ +#define TSCHED_WATERMARK_VERIFY_AFTER_USEC (20*PA_USEC_PER_SEC) /* 20s */ +#define TSCHED_WATERMARK_INC_THRESHOLD_USEC (0*PA_USEC_PER_MSEC) /* 0ms */ +#define TSCHED_WATERMARK_DEC_THRESHOLD_USEC (100*PA_USEC_PER_MSEC) /* 100ms */ +#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ + +#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */ +#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */ + +#define SMOOTHER_MIN_INTERVAL (2*PA_USEC_PER_MSEC) /* 2ms */ +#define SMOOTHER_MAX_INTERVAL (200*PA_USEC_PER_MSEC) /* 200ms */ + +#define VOLUME_ACCURACY (PA_VOLUME_NORM/100) struct userdata { pa_core *core; @@ -91,9 +104,12 @@ struct userdata { hwbuf_unused, min_sleep, min_wakeup, - watermark_step; + watermark_inc_step, + watermark_dec_step, + watermark_inc_threshold, + watermark_dec_threshold; - unsigned nfragments; + pa_usec_t watermark_dec_not_before; char *device_name; char *control_device; @@ -106,6 +122,8 @@ struct userdata { pa_smoother *smoother; uint64_t read_count; + pa_usec_t smoother_interval; + pa_usec_t last_smoother_update; pa_reserve_wrapper *reserve; pa_hook_slot *reserve_slot; @@ -234,6 +252,7 @@ static int reserve_monitor_init(struct userdata *u, const char *dname) { static void fix_min_sleep_wakeup(struct userdata *u) { size_t max_use, max_use_2; pa_assert(u); + pa_assert(u->use_tsched); max_use = u->hwbuf_size - u->hwbuf_unused; max_use_2 = pa_frame_align(max_use/2, &u->source->sample_spec); @@ -248,6 +267,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) { static void fix_tsched_watermark(struct userdata *u) { size_t max_use; pa_assert(u); + pa_assert(u->use_tsched); max_use = u->hwbuf_size - u->hwbuf_unused; @@ -258,7 +278,7 @@ static void fix_tsched_watermark(struct userdata *u) { u->tsched_watermark = u->min_wakeup; } -static void adjust_after_overrun(struct userdata *u) { +static void increase_watermark(struct userdata *u) { size_t old_watermark; pa_usec_t old_min_latency, new_min_latency; @@ -267,36 +287,72 @@ static void adjust_after_overrun(struct userdata *u) { /* First, just try to increase the watermark */ old_watermark = u->tsched_watermark; - u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step); - + u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_inc_step); fix_tsched_watermark(u); if (old_watermark != u->tsched_watermark) { - pa_log_notice("Increasing wakeup watermark to %0.2f ms", - (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC); + pa_log_info("Increasing wakeup watermark to %0.2f ms", + (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC); return; } /* Hmm, we cannot increase the watermark any further, hence let's raise the latency */ old_min_latency = u->source->thread_info.min_latency; - new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC); + new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_INC_STEP_USEC); new_min_latency = PA_MIN(new_min_latency, u->source->thread_info.max_latency); if (old_min_latency != new_min_latency) { - pa_log_notice("Increasing minimal latency to %0.2f ms", - (double) new_min_latency / PA_USEC_PER_MSEC); + pa_log_info("Increasing minimal latency to %0.2f ms", + (double) new_min_latency / PA_USEC_PER_MSEC); pa_source_set_latency_range_within_thread(u->source, new_min_latency, u->source->thread_info.max_latency); - return; } /* When we reach this we're officialy fucked! */ } +static void decrease_watermark(struct userdata *u) { + size_t old_watermark; + pa_usec_t now; + + pa_assert(u); + pa_assert(u->use_tsched); + + now = pa_rtclock_now(); + + if (u->watermark_dec_not_before <= 0) + goto restart; + + if (u->watermark_dec_not_before > now) + return; + + old_watermark = u->tsched_watermark; + + if (u->tsched_watermark < u->watermark_dec_step) + u->tsched_watermark = u->tsched_watermark / 2; + else + u->tsched_watermark = PA_MAX(u->tsched_watermark / 2, u->tsched_watermark - u->watermark_dec_step); + + fix_tsched_watermark(u); + + if (old_watermark != u->tsched_watermark) + pa_log_info("Decreasing wakeup watermark to %0.2f ms", + (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC); + + /* We don't change the latency range*/ + +restart: + u->watermark_dec_not_before = now + TSCHED_WATERMARK_VERIFY_AFTER_USEC; +} + static pa_usec_t hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*process_usec) { pa_usec_t wm, usec; + pa_assert(sleep_usec); + pa_assert(process_usec); + pa_assert(u); + pa_assert(u->use_tsched); usec = pa_source_get_requested_latency_within_thread(u->source); @@ -333,6 +389,9 @@ static int try_recover(struct userdata *u, const char *call, int err) { if (err == -EPIPE) pa_log_debug("%s: Buffer overrun!", call); + if (err == -ESTRPIPE) + pa_log_debug("%s: System suspended!", call); + if ((err = snd_pcm_recover(u->pcm_handle, err, 1)) < 0) { pa_log("%s: %s", call, pa_alsa_strerror(err)); return -1; @@ -342,24 +401,23 @@ static int try_recover(struct userdata *u, const char *call, int err) { return 0; } -static size_t check_left_to_record(struct userdata *u, size_t n_bytes) { +static size_t check_left_to_record(struct userdata *u, size_t n_bytes, pa_bool_t on_timeout) { size_t left_to_record; size_t rec_space = u->hwbuf_size - u->hwbuf_unused; + pa_bool_t overrun = FALSE; /* We use <= instead of < for this check here because an overrun * only happens after the last sample was processed, not already when * it is removed from the buffer. This is particularly important * when block transfer is used. */ - if (n_bytes <= rec_space) { + if (n_bytes <= rec_space) left_to_record = rec_space - n_bytes; + else { -#ifdef DEBUG_TIMING - pa_log_debug("%0.2f ms left to record", (double) pa_bytes_to_usec(left_to_record, &u->source->sample_spec) / PA_USEC_PER_MSEC); -#endif - - } else { + /* We got a dropout. What a mess! */ left_to_record = 0; + overrun = TRUE; #ifdef DEBUG_TIMING PA_DEBUG_TRAP; @@ -367,15 +425,36 @@ static size_t check_left_to_record(struct userdata *u, size_t n_bytes) { if (pa_log_ratelimit()) pa_log_info("Overrun!"); + } - if (u->use_tsched) - adjust_after_overrun(u); +#ifdef DEBUG_TIMING + pa_log_debug("%0.2f ms left to record", (double) pa_bytes_to_usec(left_to_record, &u->source->sample_spec) / PA_USEC_PER_MSEC); +#endif + + if (u->use_tsched) { + pa_bool_t reset_not_before = TRUE; + + if (overrun || left_to_record < u->watermark_inc_threshold) + increase_watermark(u); + else if (left_to_record > u->watermark_dec_threshold) { + reset_not_before = FALSE; + + /* We decrease the watermark only if have actually been + * woken up by a timeout. If something else woke us up + * it's too easy to fulfill the deadlines... */ + + if (on_timeout) + decrease_watermark(u); + } + + if (reset_not_before) + u->watermark_dec_not_before = 0; } return left_to_record; } -static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) { +static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) { pa_bool_t work_done = FALSE; pa_usec_t max_sleep_usec = 0, process_usec = 0; size_t left_to_record; @@ -391,6 +470,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled snd_pcm_sframes_t n; size_t n_bytes; int r; + pa_bool_t after_avail = TRUE; if (PA_UNLIKELY((n = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->source->sample_spec)) < 0)) { @@ -406,7 +486,8 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled pa_log_debug("avail: %lu", (unsigned long) n_bytes); #endif - left_to_record = check_left_to_record(u, n_bytes); + left_to_record = check_left_to_record(u, n_bytes, on_timeout); + on_timeout = FALSE; if (u->use_tsched) if (!polled && @@ -463,6 +544,9 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled if (PA_UNLIKELY((err = pa_alsa_safe_mmap_begin(u->pcm_handle, &areas, &offset, &frames, u->hwbuf_size, &u->source->sample_spec)) < 0)) { + if (!after_avail && err == -EAGAIN) + break; + if ((r = try_recover(u, "snd_pcm_mmap_begin", err)) == 0) continue; @@ -473,6 +557,12 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled if (frames > pa_mempool_block_size_max(u->source->core->mempool)/u->frame_size) frames = pa_mempool_block_size_max(u->source->core->mempool)/u->frame_size; + if (!after_avail && frames == 0) + break; + + pa_assert(frames > 0); + after_avail = FALSE; + /* Check these are multiples of 8 bit */ pa_assert((areas[0].first & 7) == 0); pa_assert((areas[0].step & 7)== 0); @@ -523,7 +613,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled return work_done ? 1 : 0; } -static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled) { +static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled, pa_bool_t on_timeout) { int work_done = FALSE; pa_usec_t max_sleep_usec = 0, process_usec = 0; size_t left_to_record; @@ -539,6 +629,7 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled snd_pcm_sframes_t n; size_t n_bytes; int r; + pa_bool_t after_avail = TRUE; if (PA_UNLIKELY((n = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->source->sample_spec)) < 0)) { @@ -549,7 +640,8 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled } n_bytes = (size_t) n * u->frame_size; - left_to_record = check_left_to_record(u, n_bytes); + left_to_record = check_left_to_record(u, n_bytes, on_timeout); + on_timeout = FALSE; if (u->use_tsched) if (!polled && @@ -599,17 +691,26 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled frames = snd_pcm_readi(u->pcm_handle, (uint8_t*) p, (snd_pcm_uframes_t) frames); pa_memblock_release(chunk.memblock); - pa_assert(frames != 0); - if (PA_UNLIKELY(frames < 0)) { pa_memblock_unref(chunk.memblock); - if ((r = try_recover(u, "snd_pcm_readi", (int) (frames))) == 0) + if (!after_avail && (int) frames == -EAGAIN) + break; + + if ((r = try_recover(u, "snd_pcm_readi", (int) frames)) == 0) continue; return r; } + if (!after_avail && frames == 0) { + pa_memblock_unref(chunk.memblock); + break; + } + + pa_assert(frames > 0); + after_avail = FALSE; + chunk.index = 0; chunk.length = (size_t) frames * u->frame_size; @@ -666,15 +767,23 @@ static void update_smoother(struct userdata *u) { now1 = pa_timespec_load(&htstamp); } - position = u->read_count + ((uint64_t) delay * (uint64_t) u->frame_size); - /* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */ if (now1 <= 0) now1 = pa_rtclock_now(); + /* check if the time since the last update is bigger than the interval */ + if (u->last_smoother_update > 0) + if (u->last_smoother_update + u->smoother_interval > now1) + return; + + position = u->read_count + ((uint64_t) delay * (uint64_t) u->frame_size); now2 = pa_bytes_to_usec(position, &u->source->sample_spec); pa_smoother_put(u->smoother, now1, now2); + + u->last_smoother_update = now1; + /* exponentially increase the update interval up to the MAX limit */ + u->smoother_interval = PA_MIN (u->smoother_interval * 2, SMOOTHER_MAX_INTERVAL); } static pa_usec_t source_get_latency(struct userdata *u) { @@ -780,8 +889,7 @@ static int unsuspend(struct userdata *u) { pa_sample_spec ss; int err; pa_bool_t b, d; - unsigned nfrags; - snd_pcm_uframes_t period_size; + snd_pcm_uframes_t period_size, buffer_size; pa_assert(u); pa_assert(!u->pcm_handle); @@ -789,7 +897,7 @@ static int unsuspend(struct userdata *u) { pa_log_info("Trying resume..."); if ((err = snd_pcm_open(&u->pcm_handle, u->device_name, SND_PCM_STREAM_CAPTURE, - /*SND_PCM_NONBLOCK|*/ + SND_PCM_NONBLOCK| SND_PCM_NO_AUTO_RESAMPLE| SND_PCM_NO_AUTO_CHANNELS| SND_PCM_NO_AUTO_FORMAT)) < 0) { @@ -798,12 +906,12 @@ static int unsuspend(struct userdata *u) { } ss = u->source->sample_spec; - nfrags = u->nfragments; period_size = u->fragment_size / u->frame_size; + buffer_size = u->hwbuf_size / u->frame_size; b = u->use_mmap; d = u->use_tsched; - if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &nfrags, &period_size, u->hwbuf_size / u->frame_size, &b, &d, TRUE)) < 0) { + if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &period_size, &buffer_size, 0, &b, &d, TRUE)) < 0) { pa_log("Failed to set hardware parameters: %s", pa_alsa_strerror(err)); goto fail; } @@ -818,10 +926,11 @@ static int unsuspend(struct userdata *u) { goto fail; } - if (nfrags != u->nfragments || period_size*u->frame_size != u->fragment_size) { - pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu*%lu, New %lu*%lu)", - (unsigned long) u->nfragments, (unsigned long) u->fragment_size, - (unsigned long) nfrags, period_size * u->frame_size); + if (period_size*u->frame_size != u->fragment_size || + buffer_size*u->frame_size != u->hwbuf_size) { + pa_log_warn("Resume failed, couldn't restore original fragment settings. (Old: %lu/%lu, New %lu/%lu)", + (unsigned long) u->hwbuf_size, (unsigned long) u->fragment_size, + (unsigned long) (buffer_size*u->fragment_size), (unsigned long) (period_size*u->frame_size)); goto fail; } @@ -834,7 +943,11 @@ static int unsuspend(struct userdata *u) { /* FIXME: We need to reload the volume somehow */ snd_pcm_start(u->pcm_handle); - pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE); + + u->read_count = 0; + pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE); + u->smoother_interval = SMOOTHER_MIN_INTERVAL; + u->last_smoother_update = 0; pa_log_info("Resumed successfully..."); @@ -846,7 +959,7 @@ fail: u->pcm_handle = NULL; } - return -1; + return -PA_ERR_IO; } static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) { @@ -869,30 +982,34 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off switch ((pa_source_state_t) PA_PTR_TO_UINT(data)) { - case PA_SOURCE_SUSPENDED: + case PA_SOURCE_SUSPENDED: { + int r; pa_assert(PA_SOURCE_IS_OPENED(u->source->thread_info.state)); - if (suspend(u) < 0) - return -1; + if ((r = suspend(u)) < 0) + return r; break; + } case PA_SOURCE_IDLE: - case PA_SOURCE_RUNNING: + case PA_SOURCE_RUNNING: { + int r; if (u->source->thread_info.state == PA_SOURCE_INIT) { if (build_pollfd(u) < 0) - return -1; + return -PA_ERR_IO; snd_pcm_start(u->pcm_handle); } if (u->source->thread_info.state == PA_SOURCE_SUSPENDED) { - if (unsuspend(u) < 0) - return -1; + if ((r = unsuspend(u)) < 0) + return r; } break; + } case PA_SOURCE_UNLINKED: case PA_SOURCE_INIT: @@ -920,7 +1037,7 @@ static int source_set_state_cb(pa_source *s, pa_source_state_t new_state) { reserve_done(u); else if (old_state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(new_state)) if (reserve_init(u, u->device_name) < 0) - return -1; + return -PA_ERR_BUSY; return 0; } @@ -962,15 +1079,11 @@ static void source_get_volume_cb(pa_source *s) { if (pa_cvolume_equal(&u->hardware_volume, &r)) return; - s->virtual_volume = u->hardware_volume = r; + s->volume = u->hardware_volume = r; - if (u->mixer_path->has_dB) { - pa_cvolume reset; - - /* Hmm, so the hardware volume changed, let's reset our software volume */ - pa_cvolume_reset(&reset, s->sample_spec.channels); - pa_source_set_soft_volume(s, &reset); - } + /* Hmm, so the hardware volume changed, let's reset our software volume */ + if (u->mixer_path->has_dB) + pa_source_set_soft_volume(s, NULL); } static void source_set_volume_cb(pa_source *s) { @@ -983,7 +1096,7 @@ static void source_set_volume_cb(pa_source *s) { pa_assert(u->mixer_handle); /* Shift up by the base volume */ - pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume); + pa_sw_cvolume_divide_scalar(&r, &s->volume, s->base_volume); if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0) return; @@ -994,13 +1107,26 @@ static void source_set_volume_cb(pa_source *s) { u->hardware_volume = r; if (u->mixer_path->has_dB) { + pa_cvolume new_soft_volume; + pa_bool_t accurate_enough; /* Match exactly what the user requested by software */ - pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume); + pa_sw_cvolume_divide(&new_soft_volume, &s->volume, &u->hardware_volume); - pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume)); + /* If the adjustment to do in software is only minimal we + * can skip it. That saves us CPU at the expense of a bit of + * accuracy */ + accurate_enough = + (pa_cvolume_min(&new_soft_volume) >= (PA_VOLUME_NORM - VOLUME_ACCURACY)) && + (pa_cvolume_max(&new_soft_volume) <= (PA_VOLUME_NORM + VOLUME_ACCURACY)); + + pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->volume)); pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &u->hardware_volume)); - pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume)); + pa_log_debug("Calculated software volume: %s (accurate-enough=%s)", pa_cvolume_snprint(t, sizeof(t), &new_soft_volume), + pa_yes_no(accurate_enough)); + + if (!accurate_enough) + s->soft_volume = new_soft_volume; } else { pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r)); @@ -1008,7 +1134,7 @@ static void source_set_volume_cb(pa_source *s) { /* We can't match exactly what the user requested, hence let's * at least tell the user about it */ - s->virtual_volume = r; + s->volume = r; } } @@ -1107,11 +1233,12 @@ static void thread_func(void *userdata) { if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) { int work_done; pa_usec_t sleep_usec = 0; + pa_bool_t on_timeout = pa_rtpoll_timer_elapsed(u->rtpoll); if (u->use_mmap) - work_done = mmap_read(u, &sleep_usec, revents & POLLIN); + work_done = mmap_read(u, &sleep_usec, revents & POLLIN, on_timeout); else - work_done = unix_read(u, &sleep_usec, revents & POLLIN); + work_done = unix_read(u, &sleep_usec, revents & POLLIN, on_timeout); if (work_done < 0) goto fail; @@ -1358,8 +1485,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p const char *dev_id = NULL; pa_sample_spec ss, requested_ss; pa_channel_map map; - uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark; - snd_pcm_uframes_t period_frames, tsched_frames; + uint32_t nfrags, frag_size, buffer_size, tsched_size, tsched_watermark; + snd_pcm_uframes_t period_frames, buffer_frames, tsched_frames; size_t frame_size; pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE; pa_source_new_data data; @@ -1393,8 +1520,10 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p goto fail; } - hwbuf_size = frag_size * nfrags; + buffer_size = nfrags * frag_size; + period_frames = frag_size/frame_size; + buffer_frames = buffer_size/frame_size; tsched_frames = tsched_size/frame_size; if (pa_modargs_get_value_boolean(ma, "mmap", &use_mmap) < 0) { @@ -1433,6 +1562,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p 5, pa_rtclock_now(), FALSE); + u->smoother_interval = SMOOTHER_MIN_INTERVAL; dev_id = pa_modargs_get_value( ma, "device_id", @@ -1459,7 +1589,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p &u->device_name, &ss, &map, SND_PCM_STREAM_CAPTURE, - &nfrags, &period_frames, tsched_frames, + &period_frames, &buffer_frames, tsched_frames, &b, &d, mapping))) goto fail; @@ -1473,7 +1603,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p &u->device_name, &ss, &map, SND_PCM_STREAM_CAPTURE, - &nfrags, &period_frames, tsched_frames, + &period_frames, &buffer_frames, tsched_frames, &b, &d, profile_set, &mapping))) goto fail; @@ -1484,7 +1614,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p &u->device_name, &ss, &map, SND_PCM_STREAM_CAPTURE, - &nfrags, &period_frames, tsched_frames, + &period_frames, &buffer_frames, tsched_frames, &b, &d, FALSE))) goto fail; } @@ -1510,11 +1640,6 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p u->use_tsched = use_tsched = FALSE; } - if (use_tsched && !pa_alsa_pcm_is_hw(u->pcm_handle)) { - pa_log_info("Device is not a hardware device, disabling timer-based scheduling."); - u->use_tsched = use_tsched = FALSE; - } - if (u->use_mmap) pa_log_info("Successfully enabled mmap() mode."); @@ -1536,7 +1661,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p pa_alsa_init_proplist_pcm(m->core, data.proplist, u->pcm_handle); pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name); - pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags)); + pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (buffer_frames * frame_size)); pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size)); pa_proplist_sets(data.proplist, PA_PROP_DEVICE_ACCESS_MODE, u->use_tsched ? "mmap+timer" : (u->use_mmap ? "mmap" : "serial")); @@ -1577,18 +1702,25 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p pa_source_set_rtpoll(u->source, u->rtpoll); u->frame_size = frame_size; - u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size); - u->nfragments = nfrags; - u->hwbuf_size = u->fragment_size * nfrags; - u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec); + u->fragment_size = frag_size = (size_t) (period_frames * frame_size); + u->hwbuf_size = buffer_size = (size_t) (buffer_frames * frame_size); pa_cvolume_mute(&u->hardware_volume, u->source->sample_spec.channels); - pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms", - nfrags, (long unsigned) u->fragment_size, + pa_log_info("Using %0.1f fragments of size %lu bytes (%0.2fms), buffer size is %lu bytes (%0.2fms)", + (double) u->hwbuf_size / (double) u->fragment_size, + (long unsigned) u->fragment_size, + (double) pa_bytes_to_usec(u->fragment_size, &ss) / PA_USEC_PER_MSEC, + (long unsigned) u->hwbuf_size, (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC); if (u->use_tsched) { - u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->source->sample_spec); + u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec); + + u->watermark_inc_step = pa_usec_to_bytes(TSCHED_WATERMARK_INC_STEP_USEC, &u->source->sample_spec); + u->watermark_dec_step = pa_usec_to_bytes(TSCHED_WATERMARK_DEC_STEP_USEC, &u->source->sample_spec); + + u->watermark_inc_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_INC_THRESHOLD_USEC, &u->source->sample_spec); + u->watermark_dec_threshold = pa_usec_to_bytes_round_up(TSCHED_WATERMARK_DEC_THRESHOLD_USEC, &u->source->sample_spec); fix_min_sleep_wakeup(u); fix_tsched_watermark(u); diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c index 1f3e5dcd8..56d60dfbd 100644 --- a/src/modules/alsa/alsa-util.c +++ b/src/modules/alsa/alsa-util.c @@ -93,6 +93,7 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s int ret; pa_assert(pcm_handle); + pa_assert(hwparams); pa_assert(f); if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0) @@ -148,33 +149,71 @@ try_auto: return -1; } +static int set_period_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, snd_pcm_uframes_t size) { + snd_pcm_uframes_t s; + int d, ret; + + pa_assert(pcm_handle); + pa_assert(hwparams); + + s = size; + d = 0; + if (snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d) < 0) { + s = size; + d = -1; + if (snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d) < 0) { + s = size; + d = 1; + if ((ret = snd_pcm_hw_params_set_period_size_near(pcm_handle, hwparams, &s, &d)) < 0) { + pa_log_info("snd_pcm_hw_params_set_period_size_near() failed: %s", pa_alsa_strerror(ret)); + return ret; + } + } + } + + return 0; +} + +static int set_buffer_size(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, snd_pcm_uframes_t size) { + int ret; + + pa_assert(pcm_handle); + pa_assert(hwparams); + + if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &size)) < 0) { + pa_log_info("snd_pcm_hw_params_set_buffer_size_near() failed: %s", pa_alsa_strerror(ret)); + return ret; + } + + return 0; +} + /* Set the hardware parameters of the given ALSA device. Returns the - * selected fragment settings in *period and *period_size */ + * selected fragment settings in *buffer_size and *period_size. If tsched mode can be enabled */ int pa_alsa_set_hw_params( snd_pcm_t *pcm_handle, pa_sample_spec *ss, - uint32_t *periods, snd_pcm_uframes_t *period_size, + snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, pa_bool_t *use_tsched, pa_bool_t require_exact_channel_number) { int ret = -1; + snd_pcm_hw_params_t *hwparams, *hwparams_copy; + int dir; snd_pcm_uframes_t _period_size = period_size ? *period_size : 0; - unsigned int _periods = periods ? *periods : 0; - unsigned int r = ss->rate; - unsigned int c = ss->channels; - pa_sample_format_t f = ss->format; - snd_pcm_hw_params_t *hwparams; + snd_pcm_uframes_t _buffer_size = buffer_size ? *buffer_size : 0; pa_bool_t _use_mmap = use_mmap && *use_mmap; pa_bool_t _use_tsched = use_tsched && *use_tsched; - int dir; + pa_sample_spec _ss = *ss; pa_assert(pcm_handle); pa_assert(ss); snd_pcm_hw_params_alloca(&hwparams); + snd_pcm_hw_params_alloca(&hwparams_copy); if ((ret = snd_pcm_hw_params_any(pcm_handle, hwparams)) < 0) { pa_log_debug("snd_pcm_hw_params_any() failed: %s", pa_alsa_strerror(ret)); @@ -208,111 +247,143 @@ int pa_alsa_set_hw_params( if (!_use_mmap) _use_tsched = FALSE; - if ((ret = set_format(pcm_handle, hwparams, &f)) < 0) + if (!pa_alsa_pcm_is_hw(pcm_handle)) + _use_tsched = FALSE; + + if ((ret = set_format(pcm_handle, hwparams, &_ss.format)) < 0) goto finish; - if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &r, NULL)) < 0) { + if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &_ss.rate, NULL)) < 0) { pa_log_debug("snd_pcm_hw_params_set_rate_near() failed: %s", pa_alsa_strerror(ret)); goto finish; } if (require_exact_channel_number) { - if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, c)) < 0) { - pa_log_debug("snd_pcm_hw_params_set_channels(%u) failed: %s", c, pa_alsa_strerror(ret)); + if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, _ss.channels)) < 0) { + pa_log_debug("snd_pcm_hw_params_set_channels(%u) failed: %s", _ss.channels, pa_alsa_strerror(ret)); goto finish; } } else { + unsigned int c = _ss.channels; + if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0) { - pa_log_debug("snd_pcm_hw_params_set_channels_near(%u) failed: %s", c, pa_alsa_strerror(ret)); + pa_log_debug("snd_pcm_hw_params_set_channels_near(%u) failed: %s", _ss.channels, pa_alsa_strerror(ret)); goto finish; } + + _ss.channels = c; } - if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, hwparams)) < 0) { - pa_log_debug("snd_pcm_hw_params_set_periods_integer() failed: %s", pa_alsa_strerror(ret)); - goto finish; + if (_use_tsched && tsched_size > 0) { + _buffer_size = (snd_pcm_uframes_t) (((uint64_t) tsched_size * _ss.rate) / ss->rate); + _period_size = _buffer_size; + } else { + _period_size = (snd_pcm_uframes_t) (((uint64_t) _period_size * _ss.rate) / ss->rate); + _buffer_size = (snd_pcm_uframes_t) (((uint64_t) _buffer_size * _ss.rate) / ss->rate); } - if (_period_size && tsched_size && _periods) { + if (_buffer_size > 0 || _period_size > 0) { + snd_pcm_uframes_t max_frames = 0; - /* Adjust the buffer sizes, if we didn't get the rate we were asking for */ - _period_size = (snd_pcm_uframes_t) (((uint64_t) _period_size * r) / ss->rate); - tsched_size = (snd_pcm_uframes_t) (((uint64_t) tsched_size * r) / ss->rate); + if ((ret = snd_pcm_hw_params_get_buffer_size_max(hwparams, &max_frames)) < 0) + pa_log_warn("snd_pcm_hw_params_get_buffer_size_max() failed: %s", pa_alsa_strerror(ret)); + else + pa_log_debug("Maximum hw buffer size is %lu ms", (long unsigned) max_frames * PA_MSEC_PER_SEC / _ss.rate); - if (_use_tsched) { - snd_pcm_uframes_t buffer_size = 0; + /* Some ALSA drivers really don't like if we set the buffer + * size first and the number of periods second. (which would + * make a lot more sense to me) So, try a few combinations + * before we give up. */ - if ((ret = snd_pcm_hw_params_get_buffer_size_max(hwparams, &buffer_size)) < 0) - pa_log_warn("snd_pcm_hw_params_get_buffer_size_max() failed: %s", pa_alsa_strerror(ret)); - else - pa_log_debug("Maximum hw buffer size is %u ms", (unsigned) buffer_size * 1000 / r); + if (_buffer_size > 0 && _period_size > 0) { + snd_pcm_hw_params_copy(hwparams_copy, hwparams); - _period_size = tsched_size; - _periods = 1; + /* First try: set buffer size first, followed by period size */ + if (set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 && + set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 && + snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) { + pa_log_debug("Set buffer size first, period size second."); + goto success; + } + + /* Second try: set period size first, followed by buffer size */ + if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 && + set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 && + snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) { + pa_log_debug("Set period size first, buffer size second."); + goto success; + } } - if (_period_size > 0 && _periods > 0) { - snd_pcm_uframes_t buffer_size; + if (_buffer_size > 0) { + snd_pcm_hw_params_copy(hwparams_copy, hwparams); - buffer_size = _periods * _period_size; - - if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &buffer_size)) < 0) - pa_log_info("snd_pcm_hw_params_set_buffer_size_near() failed: %s", pa_alsa_strerror(ret)); + /* Third try: set only buffer size */ + if (set_buffer_size(pcm_handle, hwparams_copy, _buffer_size) >= 0 && + snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) { + pa_log_debug("Set only buffer size second."); + goto success; + } } - if (_periods > 0) { + if (_period_size > 0) { + snd_pcm_hw_params_copy(hwparams_copy, hwparams); - /* First we pass 0 as direction to get exactly what we - * asked for. That this is necessary is presumably a bug - * in ALSA. All in all this is mostly a hint to ALSA, so - * we don't care if this fails. */ - - dir = 0; - if (snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir) < 0) { - dir = 1; - if (snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir) < 0) { - dir = -1; - if ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir)) < 0) - pa_log_info("snd_pcm_hw_params_set_periods_near() failed: %s", pa_alsa_strerror(ret)); - } + /* Fourth try: set only period size */ + if (set_period_size(pcm_handle, hwparams_copy, _period_size) >= 0 && + snd_pcm_hw_params(pcm_handle, hwparams_copy) >= 0) { + pa_log_debug("Set only period size second."); + goto success; } } } - if ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0) + pa_log_debug("Set neither period nor buffer size."); + + /* Last chance, set nothing */ + if ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0) { + pa_log_info("snd_pcm_hw_params failed: %s", pa_alsa_strerror(ret)); goto finish; + } - if (ss->rate != r) - pa_log_info("Device %s doesn't support %u Hz, changed to %u Hz.", snd_pcm_name(pcm_handle), ss->rate, r); +success: - if (ss->channels != c) - pa_log_info("Device %s doesn't support %u channels, changed to %u.", snd_pcm_name(pcm_handle), ss->channels, c); + if (ss->rate != _ss.rate) + pa_log_info("Device %s doesn't support %u Hz, changed to %u Hz.", snd_pcm_name(pcm_handle), ss->rate, _ss.rate); - if (ss->format != f) - pa_log_info("Device %s doesn't support sample format %s, changed to %s.", snd_pcm_name(pcm_handle), pa_sample_format_to_string(ss->format), pa_sample_format_to_string(f)); + if (ss->channels != _ss.channels) + pa_log_info("Device %s doesn't support %u channels, changed to %u.", snd_pcm_name(pcm_handle), ss->channels, _ss.channels); + + if (ss->format != _ss.format) + pa_log_info("Device %s doesn't support sample format %s, changed to %s.", snd_pcm_name(pcm_handle), pa_sample_format_to_string(ss->format), pa_sample_format_to_string(_ss.format)); if ((ret = snd_pcm_prepare(pcm_handle)) < 0) { pa_log_info("snd_pcm_prepare() failed: %s", pa_alsa_strerror(ret)); goto finish; } + if ((ret = snd_pcm_hw_params_current(pcm_handle, hwparams)) < 0) { + pa_log_info("snd_pcm_hw_params_current() failed: %s", pa_alsa_strerror(ret)); + goto finish; + } + if ((ret = snd_pcm_hw_params_get_period_size(hwparams, &_period_size, &dir)) < 0 || - (ret = snd_pcm_hw_params_get_periods(hwparams, &_periods, &dir)) < 0) { - pa_log_info("snd_pcm_hw_params_get_period{s|_size}() failed: %s", pa_alsa_strerror(ret)); + (ret = snd_pcm_hw_params_get_buffer_size(hwparams, &_buffer_size)) < 0) { + pa_log_info("snd_pcm_hw_params_get_{period|buffer}_size() failed: %s", pa_alsa_strerror(ret)); goto finish; } /* If the sample rate deviates too much, we need to resample */ - if (r < ss->rate*.95 || r > ss->rate*1.05) - ss->rate = r; - ss->channels = (uint8_t) c; - ss->format = f; + if (_ss.rate < ss->rate*.95 || _ss.rate > ss->rate*1.05) + ss->rate = _ss.rate; + ss->channels = _ss.channels; + ss->format = _ss.format; - pa_assert(_periods > 0); pa_assert(_period_size > 0); + pa_assert(_buffer_size > 0); - if (periods) - *periods = _periods; + if (buffer_size) + *buffer_size = _buffer_size; if (period_size) *period_size = _period_size; @@ -390,8 +461,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto( pa_sample_spec *ss, pa_channel_map* map, int mode, - uint32_t *nfrags, snd_pcm_uframes_t *period_size, + snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, pa_bool_t *use_tsched, @@ -407,8 +478,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto( pa_assert(dev); pa_assert(ss); pa_assert(map); - pa_assert(nfrags); - pa_assert(period_size); pa_assert(ps); /* First we try to find a device string with a superset of the @@ -430,8 +499,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto( ss, map, mode, - nfrags, period_size, + buffer_size, tsched_size, use_mmap, use_tsched, @@ -457,8 +526,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto( ss, map, mode, - nfrags, period_size, + buffer_size, tsched_size, use_mmap, use_tsched, @@ -475,7 +544,18 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto( /* OK, we didn't find any good device, so let's try the raw hw: stuff */ d = pa_sprintf_malloc("hw:%s", dev_id); pa_log_debug("Trying %s as last resort...", d); - pcm_handle = pa_alsa_open_by_device_string(d, dev, ss, map, mode, nfrags, period_size, tsched_size, use_mmap, use_tsched, FALSE); + pcm_handle = pa_alsa_open_by_device_string( + d, + dev, + ss, + map, + mode, + period_size, + buffer_size, + tsched_size, + use_mmap, + use_tsched, + FALSE); pa_xfree(d); if (pcm_handle && mapping) @@ -490,8 +570,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping( pa_sample_spec *ss, pa_channel_map* map, int mode, - uint32_t *nfrags, snd_pcm_uframes_t *period_size, + snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, pa_bool_t *use_tsched, @@ -505,8 +585,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping( pa_assert(dev); pa_assert(ss); pa_assert(map); - pa_assert(nfrags); - pa_assert(period_size); pa_assert(m); try_ss.channels = m->channel_map.channels; @@ -521,8 +599,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping( &try_ss, &try_map, mode, - nfrags, period_size, + buffer_size, tsched_size, use_mmap, use_tsched, @@ -544,8 +622,8 @@ snd_pcm_t *pa_alsa_open_by_device_string( pa_sample_spec *ss, pa_channel_map* map, int mode, - uint32_t *nfrags, snd_pcm_uframes_t *period_size, + snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, pa_bool_t *use_tsched, @@ -576,7 +654,15 @@ snd_pcm_t *pa_alsa_open_by_device_string( pa_log_debug("Managed to open %s", d); - if ((err = pa_alsa_set_hw_params(pcm_handle, ss, nfrags, period_size, tsched_size, use_mmap, use_tsched, require_exact_channel_number)) < 0) { + if ((err = pa_alsa_set_hw_params( + pcm_handle, + ss, + period_size, + buffer_size, + tsched_size, + use_mmap, + use_tsched, + require_exact_channel_number)) < 0) { if (!reformat) { reformat = TRUE; @@ -629,8 +715,8 @@ snd_pcm_t *pa_alsa_open_by_template( pa_sample_spec *ss, pa_channel_map* map, int mode, - uint32_t *nfrags, snd_pcm_uframes_t *period_size, + snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, pa_bool_t *use_tsched, @@ -650,8 +736,8 @@ snd_pcm_t *pa_alsa_open_by_template( ss, map, mode, - nfrags, period_size, + buffer_size, tsched_size, use_mmap, use_tsched, @@ -897,7 +983,7 @@ void pa_alsa_init_proplist_ctl(pa_proplist *p, const char *name) { snd_ctl_card_info_alloca(&info); if ((err = snd_ctl_open(&ctl, name, 0)) < 0) { - pa_log_warn("Error opening low-level control device '%s'", name); + pa_log_warn("Error opening low-level control device '%s': %s", name, snd_strerror(err)); return; } diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h index 830a922ec..265cd28c0 100644 --- a/src/modules/alsa/alsa-util.h +++ b/src/modules/alsa/alsa-util.h @@ -42,8 +42,8 @@ int pa_alsa_set_hw_params( snd_pcm_t *pcm_handle, pa_sample_spec *ss, /* modified at return */ - uint32_t *periods, /* modified at return */ snd_pcm_uframes_t *period_size, /* modified at return */ + snd_pcm_uframes_t *buffer_size, /* modified at return */ snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, /* modified at return */ pa_bool_t *use_tsched, /* modified at return */ @@ -60,8 +60,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto( pa_sample_spec *ss, /* modified at return */ pa_channel_map* map, /* modified at return */ int mode, - uint32_t *nfrags, /* modified at return */ snd_pcm_uframes_t *period_size, /* modified at return */ + snd_pcm_uframes_t *buffer_size, /* modified at return */ snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, /* modified at return */ pa_bool_t *use_tsched, /* modified at return */ @@ -75,8 +75,8 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping( pa_sample_spec *ss, /* modified at return */ pa_channel_map* map, /* modified at return */ int mode, - uint32_t *nfrags, /* modified at return */ snd_pcm_uframes_t *period_size, /* modified at return */ + snd_pcm_uframes_t *buffer_size, /* modified at return */ snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, /* modified at return */ pa_bool_t *use_tsched, /* modified at return */ @@ -89,8 +89,8 @@ snd_pcm_t *pa_alsa_open_by_device_string( pa_sample_spec *ss, /* modified at return */ pa_channel_map* map, /* modified at return */ int mode, - uint32_t *nfrags, /* modified at return */ snd_pcm_uframes_t *period_size, /* modified at return */ + snd_pcm_uframes_t *buffer_size, /* modified at return */ snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, /* modified at return */ pa_bool_t *use_tsched, /* modified at return */ @@ -104,8 +104,8 @@ snd_pcm_t *pa_alsa_open_by_template( pa_sample_spec *ss, /* modified at return */ pa_channel_map* map, /* modified at return */ int mode, - uint32_t *nfrags, /* modified at return */ snd_pcm_uframes_t *period_size, /* modified at return */ + snd_pcm_uframes_t *buffer_size, /* modified at return */ snd_pcm_uframes_t tsched_size, pa_bool_t *use_mmap, /* modified at return */ pa_bool_t *use_tsched, /* modified at return */ diff --git a/src/modules/alsa/mixer/Makefile b/src/modules/alsa/mixer/Makefile new file mode 120000 index 000000000..b49551945 --- /dev/null +++ b/src/modules/alsa/mixer/Makefile @@ -0,0 +1 @@ +../../../pulse/Makefile \ No newline at end of file diff --git a/src/modules/alsa/mixer/paths/Makefile b/src/modules/alsa/mixer/paths/Makefile new file mode 120000 index 000000000..dc23aaa27 --- /dev/null +++ b/src/modules/alsa/mixer/paths/Makefile @@ -0,0 +1 @@ +../../../../pulse/Makefile \ No newline at end of file diff --git a/src/modules/alsa/mixer/paths/analog-input.conf.common b/src/modules/alsa/mixer/paths/analog-input.conf.common index 6728a6ae7..87af38b3e 100644 --- a/src/modules/alsa/mixer/paths/analog-input.conf.common +++ b/src/modules/alsa/mixer/paths/analog-input.conf.common @@ -78,6 +78,10 @@ priority = 19 name = input-microphone priority = 19 +[Option Input Source:Internal Mic] +name = input-microphone +priority = 19 + [Option Input Source:Line] name = input-linein priority = 18 @@ -90,6 +94,10 @@ priority = 18 name = input-linein priority = 18 +[Option Input Source:Docking-Station] +name = input-docking +priority = 17 + ;;; ' Capture Source' [Element Capture Source] diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf index c018e0eb2..691cb3f22 100644 --- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf +++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf @@ -44,6 +44,10 @@ volume = merge override-map.1 = all override-map.2 = all-left,all-right +[Element Speaker] +switch = off +volume = off + [Element Front] switch = off volume = off diff --git a/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf index 7a267890c..3457d4a22 100644 --- a/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf +++ b/src/modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf @@ -41,9 +41,18 @@ volume = merge override-map.1 = lfe override-map.2 = lfe,lfe +; This profile path is intended to control the speaker, not the +; headphones. But it should not hurt if we leave the headphone jack +; enabled nonetheless. [Element Headphone] -switch = off -volume = off +switch = mute +volume = zero + +[Element Speaker] +switch = mute +volume = merge +override-map.1 = all +override-map.2 = all-left,all-right [Element Front] switch = off diff --git a/src/modules/alsa/mixer/paths/analog-output-mono.conf b/src/modules/alsa/mixer/paths/analog-output-mono.conf index f6cb9f8ae..dc270cfe0 100644 --- a/src/modules/alsa/mixer/paths/analog-output-mono.conf +++ b/src/modules/alsa/mixer/paths/analog-output-mono.conf @@ -38,9 +38,18 @@ volume = merge override-map.1 = all override-map.2 = all-left,all-right +; This profile path is intended to control the speaker, not the +; headphones. But it should not hurt if we leave the headphone jack +; enabled nonetheless. [Element Headphone] -switch = off -volume = off +switch = mute +volume = zero + +[Element Speaker] +switch = mute +volume = merge +override-map.1 = all +override-map.2 = all-left,all-right [Element Front] switch = off diff --git a/src/modules/alsa/mixer/paths/analog-output.conf b/src/modules/alsa/mixer/paths/analog-output.conf index ea108aaf1..f71a05a1d 100644 --- a/src/modules/alsa/mixer/paths/analog-output.conf +++ b/src/modules/alsa/mixer/paths/analog-output.conf @@ -37,9 +37,18 @@ override-map.2 = all-left,all-right switch = off volume = off +; This profile path is intended to control the speaker, not the +; headphones. But it should not hurt if we leave the headphone jack +; enabled nonetheless. [Element Headphone] -switch = off -volume = off +switch = mute +volume = zero + +[Element Speaker] +switch = mute +volume = merge +override-map.1 = all +override-map.2 = all-left,all-right [Element Front] switch = mute diff --git a/src/modules/alsa/mixer/paths/analog-output.conf.common b/src/modules/alsa/mixer/paths/analog-output.conf.common index cc1185f4f..3c6ce8036 100644 --- a/src/modules/alsa/mixer/paths/analog-output.conf.common +++ b/src/modules/alsa/mixer/paths/analog-output.conf.common @@ -104,8 +104,8 @@ switch = select [Option External Amplifier:on] name = output-amplifier-on -priority = 0 +priority = 10 [Option External Amplifier:off] name = output-amplifier-off -priority = 10 +priority = 0 diff --git a/src/modules/alsa/mixer/profile-sets/Makefile b/src/modules/alsa/mixer/profile-sets/Makefile new file mode 120000 index 000000000..dc23aaa27 --- /dev/null +++ b/src/modules/alsa/mixer/profile-sets/Makefile @@ -0,0 +1 @@ +../../../../pulse/Makefile \ No newline at end of file diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c index 55f6a6e25..6bea33d75 100644 --- a/src/modules/alsa/module-alsa-card.c +++ b/src/modules/alsa/module-alsa-card.c @@ -329,7 +329,7 @@ int pa__init(pa_module *m) { if (!u->profile_set) goto fail; - pa_alsa_profile_set_probe(u->profile_set, u->device_id, &m->core->default_sample_spec); + pa_alsa_profile_set_probe(u->profile_set, u->device_id, &m->core->default_sample_spec, m->core->default_n_fragments, m->core->default_fragment_size_msec); pa_card_new_data_init(&data); data.driver = __FILE__; diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c index 66e1c31eb..f8c5b7782 100644 --- a/src/modules/bluetooth/bluetooth-util.c +++ b/src/modules/bluetooth/bluetooth-util.c @@ -1,7 +1,7 @@ /*** This file is part of PulseAudio. - Copyright 2008 Joao Paulo Rechi Vita + Copyright 2008-2009 Joao Paulo Rechi Vita PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -95,6 +95,7 @@ static pa_bluetooth_device* device_new(const char *path) { d->audio_state = PA_BT_AUDIO_STATE_INVALID; d->audio_sink_state = PA_BT_AUDIO_STATE_INVALID; + d->audio_source_state = PA_BT_AUDIO_STATE_INVALID; d->headset_state = PA_BT_AUDIO_STATE_INVALID; return d; @@ -122,9 +123,10 @@ static pa_bool_t device_is_audio(pa_bluetooth_device *d) { return d->device_info_valid && - (d->audio_state != PA_BT_AUDIO_STATE_INVALID || - d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID || - d->headset_state != PA_BT_AUDIO_STATE_INVALID); + (d->audio_state != PA_BT_AUDIO_STATE_INVALID && + (d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID || + d->audio_source_state != PA_BT_AUDIO_STATE_INVALID || + d->headset_state != PA_BT_AUDIO_STATE_INVALID)); } static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device *d, DBusMessageIter *i) { @@ -226,10 +228,6 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device node = uuid_new(value); PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node); - /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */ - pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties")); - send_and_add_to_pending(y, d, m, get_properties_reply); - /* Vudentz said the interfaces are here when the UUIDs are announced */ if (strcasecmp(HSP_HS_UUID, value) == 0 || strcasecmp(HFP_HS_UUID, value) == 0) { pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Headset", "GetProperties")); @@ -237,8 +235,15 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device } else if (strcasecmp(A2DP_SINK_UUID, value) == 0) { pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.AudioSink", "GetProperties")); send_and_add_to_pending(y, d, m, get_properties_reply); + } else if (strcasecmp(A2DP_SOURCE_UUID, value) == 0) { + pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.AudioSource", "GetProperties")); + send_and_add_to_pending(y, d, m, get_properties_reply); } + /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */ + pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties")); + send_and_add_to_pending(y, d, m, get_properties_reply); + if (!dbus_message_iter_next(&ai)) break; } @@ -278,7 +283,7 @@ static int parse_audio_property(pa_bluetooth_discovery *u, int *state, DBusMessa dbus_message_iter_recurse(i, &variant_i); -/* pa_log_debug("Parsing property org.bluez.{Audio|AudioSink|Headset}.%s", key); */ +/* pa_log_debug("Parsing property org.bluez.{Audio|AudioSink|AudioSource|Headset}.%s", key); */ switch (dbus_message_iter_get_arg_type(&variant_i)) { @@ -390,6 +395,9 @@ static void get_properties_reply(DBusPendingCall *pending, void *userdata) { } else if (dbus_message_has_interface(p->message, "org.bluez.AudioSink")) { if (parse_audio_property(y, &d->audio_sink_state, &dict_i) < 0) goto finish; + } else if (dbus_message_has_interface(p->message, "org.bluez.AudioSource")) { + if (parse_audio_property(y, &d->audio_source_state, &dict_i) < 0) + goto finish; } } @@ -440,8 +448,8 @@ static void found_device(pa_bluetooth_discovery *y, const char* path) { pa_assert_se(m = dbus_message_new_method_call("org.bluez", path, "org.bluez.Device", "GetProperties")); send_and_add_to_pending(y, d, m, get_properties_reply); - /* Before we read the other properties (Audio, AudioSink, Headset) we wait - * that the UUID is read */ + /* Before we read the other properties (Audio, AudioSink, AudioSource, + * Headset) we wait that the UUID is read */ } static void list_devices_reply(DBusPendingCall *pending, void *userdata) { @@ -616,6 +624,7 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us } else if (dbus_message_is_signal(m, "org.bluez.Audio", "PropertyChanged") || dbus_message_is_signal(m, "org.bluez.Headset", "PropertyChanged") || dbus_message_is_signal(m, "org.bluez.AudioSink", "PropertyChanged") || + dbus_message_is_signal(m, "org.bluez.AudioSource", "PropertyChanged") || dbus_message_is_signal(m, "org.bluez.Device", "PropertyChanged")) { pa_bluetooth_device *d; @@ -643,6 +652,9 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us } else if (dbus_message_has_interface(m, "org.bluez.AudioSink")) { if (parse_audio_property(y, &d->audio_sink_state, &arg_i) < 0) goto fail; + } else if (dbus_message_has_interface(m, "org.bluez.AudioSource")) { + if (parse_audio_property(y, &d->audio_source_state, &arg_i) < 0) + goto fail; } run_callback(y, d, FALSE); @@ -650,6 +662,21 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + } else if (dbus_message_is_signal(m, "org.bluez.Device", "DisconnectRequested")) { + pa_bluetooth_device *d; + + if ((d = pa_hashmap_get(y->devices, dbus_message_get_path(m)))) { + /* Device will disconnect in 2 sec */ + d->audio_state = PA_BT_AUDIO_STATE_DISCONNECTED; + d->audio_sink_state = PA_BT_AUDIO_STATE_DISCONNECTED; + d->audio_source_state = PA_BT_AUDIO_STATE_DISCONNECTED; + d->headset_state = PA_BT_AUDIO_STATE_DISCONNECTED; + + run_callback(y, d, FALSE); + } + + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + } else if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameOwnerChanged")) { const char *name, *old_owner, *new_owner; @@ -758,14 +785,16 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) { if (pa_dbus_add_matches( pa_dbus_connection_get(y->connection), &err, - "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged'", + "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.bluez'", "type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'", "type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'", "type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'", "type='signal',sender='org.bluez',interface='org.bluez.Device',member='PropertyChanged'", + "type='signal',sender='org.bluez',interface='org.bluez.Device',member='DisconnectRequested'", "type='signal',sender='org.bluez',interface='org.bluez.Audio',member='PropertyChanged'", "type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged'", - "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", NULL) < 0) { + "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", + "type='signal',sender='org.bluez',interface='org.bluez.AudioSource',member='PropertyChanged'", NULL) < 0) { pa_log("Failed to add D-Bus matches: %s", err.message); goto fail; } @@ -809,15 +838,17 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) { if (y->connection) { pa_dbus_remove_matches(pa_dbus_connection_get(y->connection), - "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged'", + "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.bluez'", "type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'", "type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterRemoved'", "type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'", "type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'", "type='signal',sender='org.bluez',interface='org.bluez.Device',member='PropertyChanged'", + "type='signal',sender='org.bluez',interface='org.bluez.Device',member='DisconnectRequested'", "type='signal',sender='org.bluez',interface='org.bluez.Audio',member='PropertyChanged'", "type='signal',sender='org.bluez',interface='org.bluez.Headset',member='PropertyChanged'", - "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", NULL); + "type='signal',sender='org.bluez',interface='org.bluez.AudioSink',member='PropertyChanged'", + "type='signal',sender='org.bluez',interface='org.bluez.AudioSource',member='PropertyChanged'", NULL); dbus_connection_remove_filter(pa_dbus_connection_get(y->connection), filter_cb, y); diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h index 265caf404..e2a0c3d5f 100644 --- a/src/modules/bluetooth/bluetooth-util.h +++ b/src/modules/bluetooth/bluetooth-util.h @@ -4,7 +4,7 @@ /*** This file is part of PulseAudio. - Copyright 2008 Joao Paulo Rechi Vita + Copyright 2008-2009 Joao Paulo Rechi Vita PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -53,14 +53,13 @@ struct pa_bluetooth_uuid { PA_LLIST_FIELDS(pa_bluetooth_uuid); }; -/* This enum is shared among Audio, Headset, and AudioSink, although not all values are acceptable in all profiles */ +/* This enum is shared among Audio, Headset, AudioSink, and AudioSource, although not all values are acceptable in all profiles */ typedef enum pa_bt_audio_state { PA_BT_AUDIO_STATE_INVALID = -1, PA_BT_AUDIO_STATE_DISCONNECTED, PA_BT_AUDIO_STATE_CONNECTING, PA_BT_AUDIO_STATE_CONNECTED, - PA_BT_AUDIO_STATE_PLAYING, - PA_BT_AUDIO_STATE_LAST + PA_BT_AUDIO_STATE_PLAYING } pa_bt_audio_state_t; struct pa_bluetooth_device { @@ -85,6 +84,9 @@ struct pa_bluetooth_device { /* AudioSink state */ pa_bt_audio_state_t audio_sink_state; + /* AudioSource state */ + pa_bt_audio_state_t audio_source_state; + /* Headset state */ pa_bt_audio_state_t headset_state; }; diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c index 0560ef32a..4592fca18 100644 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@ -1,7 +1,7 @@ /*** This file is part of PulseAudio. - Copyright 2008 Joao Paulo Rechi Vita + Copyright 2008-2009 Joao Paulo Rechi Vita PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -129,6 +129,7 @@ struct hsp_info { enum profile { PROFILE_A2DP, + PROFILE_A2DP_SOURCE, PROFILE_HSP, PROFILE_OFF }; @@ -178,6 +179,7 @@ struct userdata { }; #define FIXED_LATENCY_PLAYBACK_A2DP (25*PA_USEC_PER_MSEC) +#define FIXED_LATENCY_RECORD_A2DP (25*PA_USEC_PER_MSEC) #define FIXED_LATENCY_PLAYBACK_HSP (125*PA_USEC_PER_MSEC) #define FIXED_LATENCY_RECORD_HSP (25*PA_USEC_PER_MSEC) @@ -219,9 +221,7 @@ static int service_recv(struct userdata *u, bt_audio_msg_header_t *msg, size_t r pa_assert(u); pa_assert(u->service_fd >= 0); pa_assert(msg); - - if (room <= 0) - room = BT_SUGGESTED_BUFFER_SIZE; + pa_assert(room >= sizeof(*msg)); pa_log_debug("Trying to receive message from audio service..."); @@ -234,6 +234,11 @@ static int service_recv(struct userdata *u, bt_audio_msg_header_t *msg, size_t r return -1; } + if (msg->length > room) { + pa_log_error("Not enough room."); + return -1; + } + /* Secondly, read the payload */ if (msg->length > sizeof(*msg)) { @@ -307,7 +312,7 @@ static int parse_caps(struct userdata *u, uint8_t seid, const struct bt_get_capa pa_log_debug("Payload size is %lu %lu", (unsigned long) bytes_left, (unsigned long) sizeof(*codec)); - if ((u->profile == PROFILE_A2DP && codec->transport != BT_CAPABILITIES_TRANSPORT_A2DP) || + if (((u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) && codec->transport != BT_CAPABILITIES_TRANSPORT_A2DP) || (u->profile == PROFILE_HSP && codec->transport != BT_CAPABILITIES_TRANSPORT_SCO)) { pa_log_error("Got capabilities for wrong codec."); return -1; @@ -340,6 +345,26 @@ static int parse_caps(struct userdata *u, uint8_t seid, const struct bt_get_capa 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)); + + } else if (u->profile == PROFILE_A2DP_SOURCE) { + + while (bytes_left > 0) { + if ((codec->type == BT_A2DP_SBC_SOURCE) && !codec->lock) + break; + + bytes_left -= codec->length; + codec = (const codec_capabilities_t*) ((const uint8_t*) codec + codec->length); + } + + if (bytes_left <= 0 || codec->length != sizeof(u->a2dp.sbc_capabilities)) + return -1; + + pa_assert(codec->type == BT_A2DP_SBC_SOURCE); + if (codec->configured && seid == 0) return codec->seid; @@ -368,7 +393,7 @@ static int get_caps(struct userdata *u, uint8_t seid) { msg.getcaps_req.seid = seid; pa_strlcpy(msg.getcaps_req.object, u->path, sizeof(msg.getcaps_req.object)); - if (u->profile == PROFILE_A2DP) + if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) msg.getcaps_req.transport = BT_CAPABILITIES_TRANSPORT_A2DP; else { pa_assert(u->profile == PROFILE_HSP); @@ -451,7 +476,7 @@ static int setup_a2dp(struct userdata *u) { }; pa_assert(u); - pa_assert(u->profile == PROFILE_A2DP); + pa_assert(u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE); cap = &u->a2dp.sbc_capabilities; @@ -652,8 +677,8 @@ static int set_conf(struct userdata *u) { msg.open_req.h.length = sizeof(msg.open_req); pa_strlcpy(msg.open_req.object, u->path, sizeof(msg.open_req.object)); - msg.open_req.seid = u->profile == PROFILE_A2DP ? u->a2dp.sbc_capabilities.capability.seid : BT_A2DP_SEID_RANGE + 1; - msg.open_req.lock = u->profile == PROFILE_A2DP ? BT_WRITE_LOCK : BT_READ_LOCK | BT_WRITE_LOCK; + msg.open_req.seid = (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) ? u->a2dp.sbc_capabilities.capability.seid : BT_A2DP_SEID_RANGE + 1; + msg.open_req.lock = (u->profile == PROFILE_A2DP) ? BT_WRITE_LOCK : BT_READ_LOCK | BT_WRITE_LOCK; if (service_send(u, &msg.open_req.h) < 0) return -1; @@ -661,7 +686,7 @@ static int set_conf(struct userdata *u) { if (service_expect(u, &msg.open_rsp.h, sizeof(msg), BT_OPEN, sizeof(msg.open_rsp)) < 0) return -1; - if (u->profile == PROFILE_A2DP ) { + if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) { u->sample_spec.format = PA_SAMPLE_S16LE; if (setup_a2dp(u) < 0) @@ -679,7 +704,7 @@ static int set_conf(struct userdata *u) { msg.setconf_req.h.name = BT_SET_CONFIGURATION; msg.setconf_req.h.length = sizeof(msg.setconf_req); - if (u->profile == PROFILE_A2DP) { + if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) { memcpy(&msg.setconf_req.codec, &u->a2dp.sbc_capabilities, sizeof(u->a2dp.sbc_capabilities)); } else { msg.setconf_req.codec.transport = BT_CAPABILITIES_TRANSPORT_SCO; @@ -697,7 +722,7 @@ static int set_conf(struct userdata *u) { u->link_mtu = msg.setconf_rsp.link_mtu; /* setup SBC encoder now we agree on parameters */ - if (u->profile == PROFILE_A2DP) { + if (u->profile == PROFILE_A2DP || u->profile == PROFILE_A2DP_SOURCE) { setup_sbc(&u->a2dp); u->block_size = @@ -881,7 +906,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse *((pa_usec_t*) data) = wi > ri ? wi - ri : 0; } - *((pa_usec_t*) data) += u->sink->fixed_latency; + *((pa_usec_t*) data) += u->sink->thread_info.fixed_latency; return 0; } } @@ -943,7 +968,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off wi = pa_smoother_get(u->read_smoother, pa_rtclock_now()); ri = pa_bytes_to_usec(u->read_index, &u->sample_spec); - *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->fixed_latency; + *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->thread_info.fixed_latency; return 0; } @@ -1250,6 +1275,119 @@ static int a2dp_process_render(struct userdata *u) { return ret; } +static int a2dp_process_push(struct userdata *u) { + int ret = 0; + pa_memchunk memchunk; + + pa_assert(u); + pa_assert(u->profile == PROFILE_A2DP_SOURCE); + pa_assert(u->source); + pa_assert(u->read_smoother); + + memchunk.memblock = pa_memblock_new(u->core->mempool, u->block_size); + memchunk.index = memchunk.length = 0; + + for (;;) { + pa_bool_t found_tstamp = FALSE; + pa_usec_t tstamp; + struct a2dp_info *a2dp; + struct rtp_header *header; + struct rtp_payload *payload; + const void *p; + void *d; + ssize_t l; + size_t to_write, to_decode; + unsigned frame_count; + + a2dp_prepare_buffer(u); + + a2dp = &u->a2dp; + header = a2dp->buffer; + payload = (struct rtp_payload*) ((uint8_t*) a2dp->buffer + sizeof(*header)); + + l = pa_read(u->stream_fd, a2dp->buffer, a2dp->buffer_size, &u->stream_write_type); + + if (l <= 0) { + + if (l < 0 && errno == EINTR) + /* Retry right away if we got interrupted */ + continue; + + else if (l < 0 && errno == EAGAIN) + /* Hmm, apparently the socket was not readable, give up for now. */ + break; + + pa_log_error("Failed to read data from socket: %s", l < 0 ? pa_cstrerror(errno) : "EOF"); + ret = -1; + break; + } + + pa_assert((size_t) l <= a2dp->buffer_size); + + u->read_index += (uint64_t) l; + + /* TODO: get timestamp from rtp */ + if (!found_tstamp) { + /* pa_log_warn("Couldn't find SO_TIMESTAMP data in auxiliary recvmsg() data!"); */ + tstamp = pa_rtclock_now(); + } + + pa_smoother_put(u->read_smoother, tstamp, pa_bytes_to_usec(u->read_index, &u->sample_spec)); + pa_smoother_resume(u->read_smoother, tstamp, TRUE); + + p = (uint8_t*) a2dp->buffer + sizeof(*header) + sizeof(*payload); + to_decode = l - sizeof(*header) - sizeof(*payload); + + d = pa_memblock_acquire(memchunk.memblock); + to_write = memchunk.length = pa_memblock_get_length(memchunk.memblock); + + while (PA_LIKELY(to_decode > 0 && to_write > 0)) { + size_t written; + ssize_t decoded; + + decoded = sbc_decode(&a2dp->sbc, + p, to_decode, + d, to_write, + &written); + + if (PA_UNLIKELY(decoded <= 0)) { + pa_log_error("SBC decoding error (%li)", (long) decoded); + pa_memblock_release(memchunk.memblock); + pa_memblock_unref(memchunk.memblock); + return -1; + } + +/* pa_log_debug("SBC: decoded: %lu; written: %lu", (unsigned long) decoded, (unsigned long) written); */ +/* pa_log_debug("SBC: frame_length: %lu; codesize: %lu", (unsigned long) a2dp->frame_length, (unsigned long) a2dp->codesize); */ + + pa_assert_fp((size_t) decoded <= to_decode); + pa_assert_fp((size_t) decoded == a2dp->frame_length); + + pa_assert_fp((size_t) written <= to_write); + pa_assert_fp((size_t) written == a2dp->codesize); + + p = (const uint8_t*) p + decoded; + to_decode -= decoded; + + d = (uint8_t*) d + written; + to_write -= written; + + frame_count++; + } + + pa_memblock_release(memchunk.memblock); + + pa_source_post(u->source, &memchunk); + + ret = 1; + break; + } + + pa_memblock_unref(memchunk.memblock); + + return ret; +} + static void thread_func(void *userdata) { struct userdata *u = userdata; unsigned do_write = 0; @@ -1262,11 +1400,11 @@ static void thread_func(void *userdata) { if (u->core->realtime_scheduling) pa_make_realtime(u->core->realtime_priority); + pa_thread_mq_install(&u->thread_mq); + if (start_stream_fd(u) < 0) goto fail; - pa_thread_mq_install(&u->thread_mq); - for (;;) { struct pollfd *pollfd; int ret; @@ -1285,7 +1423,12 @@ static void thread_func(void *userdata) { if (pollfd && (pollfd->revents & POLLIN)) { int n_read; - if ((n_read = hsp_process_push(u)) < 0) + if (u->profile == PROFILE_HSP) + n_read = hsp_process_push(u); + else + n_read = a2dp_process_push(u); + + if (n_read < 0) goto fail; /* We just read something, so we are supposed to write something, too */ @@ -1319,18 +1462,21 @@ static void thread_func(void *userdata) { if (u->write_index > 0 && audio_to_send > MAX_PLAYBACK_CATCH_UP_USEC) { pa_usec_t skip_usec; uint64_t skip_bytes; - pa_memchunk tmp; skip_usec = audio_to_send - MAX_PLAYBACK_CATCH_UP_USEC; skip_bytes = pa_usec_to_bytes(skip_usec, &u->sample_spec); - pa_log_warn("Skipping %llu us (= %llu bytes) in audio stream", - (unsigned long long) skip_usec, - (unsigned long long) skip_bytes); + if (skip_bytes > 0) { + pa_memchunk tmp; - pa_sink_render_full(u->sink, skip_bytes, &tmp); - pa_memblock_unref(tmp.memblock); - u->write_index += skip_bytes; + pa_log_warn("Skipping %llu us (= %llu bytes) in audio stream", + (unsigned long long) skip_usec, + (unsigned long long) skip_bytes); + + pa_sink_render_full(u->sink, skip_bytes, &tmp); + pa_memblock_unref(tmp.memblock); + u->write_index += skip_bytes; + } } do_write = 1; @@ -1446,12 +1592,12 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *us if (u->sink && dbus_message_is_signal(m, "org.bluez.Headset", "SpeakerGainChanged")) { pa_cvolume_set(&v, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); - pa_sink_volume_changed(u->sink, &v, TRUE); + pa_sink_volume_changed(u->sink, &v); } else if (u->source && dbus_message_is_signal(m, "org.bluez.Headset", "MicrophoneGainChanged")) { pa_cvolume_set(&v, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); - pa_source_volume_changed(u->source, &v, TRUE); + pa_source_volume_changed(u->source, &v); } } } @@ -1473,12 +1619,12 @@ static void sink_set_volume_cb(pa_sink *s) { if (u->profile != PROFILE_HSP) return; - gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM; + gain = (pa_cvolume_max(&s->real_volume) * 15) / PA_VOLUME_NORM; if (gain > 15) gain = 15; - pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); + pa_cvolume_set(&s->real_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetSpeakerGain")); pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID)); @@ -1497,12 +1643,12 @@ static void source_set_volume_cb(pa_source *s) { if (u->profile != PROFILE_HSP) return; - gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM; + gain = (pa_cvolume_max(&s->volume) * 15) / PA_VOLUME_NORM; if (gain > 15) gain = 15; - pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); + pa_cvolume_set(&s->volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15)); pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetMicrophoneGain")); pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID)); @@ -1684,7 +1830,7 @@ static int add_source(struct userdata *u) { data.driver = __FILE__; data.module = u->module; pa_source_new_data_set_sample_spec(&data, &u->sample_spec); - pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP ? "a2dp" : "hsp"); + pa_proplist_sets(data.proplist, "bluetooth.protocol", u->profile == PROFILE_A2DP_SOURCE ? "a2dp_source" : "hsp"); if (u->profile == PROFILE_HSP) pa_proplist_sets(data.proplist, PA_PROP_DEVICE_INTENDED_ROLES, "phone"); data.card = u->card; @@ -1709,7 +1855,7 @@ static int add_source(struct userdata *u) { u->source->parent.process_msg = source_process_msg; pa_source_set_fixed_latency(u->source, - (/* u->profile == PROFILE_A2DP ? FIXED_LATENCY_RECORD_A2DP : */ FIXED_LATENCY_RECORD_HSP) + + (u->profile == PROFILE_A2DP_SOURCE ? FIXED_LATENCY_RECORD_A2DP : FIXED_LATENCY_RECORD_HSP) + pa_bytes_to_usec(u->block_size, &u->sample_spec)); } @@ -1736,7 +1882,8 @@ static void shutdown_bt(struct userdata *u) { if (u->service_fd >= 0) { pa_close(u->service_fd); u->service_fd = -1; - u->service_write_type = u->service_write_type = 0; + u->service_write_type = 0; + u->service_read_type = 0; } if (u->write_memchunk.memblock) { @@ -1752,7 +1899,8 @@ static int init_bt(struct userdata *u) { shutdown_bt(u); u->stream_write_type = 0; - u->service_write_type = u->service_write_type = 0; + u->service_write_type = 0; + u->service_read_type = 0; if ((u->service_fd = bt_audio_service_open()) < 0) { pa_log_error("Couldn't connect to bluetooth audio service"); @@ -1804,7 +1952,8 @@ static int init_profile(struct userdata *u) { if (add_sink(u) < 0) r = -1; - if (u->profile == PROFILE_HSP) + if (u->profile == PROFILE_HSP || + u->profile == PROFILE_A2DP_SOURCE) if (add_source(u) < 0) r = -1; @@ -2045,6 +2194,20 @@ static int add_card(struct userdata *u, const pa_bluetooth_device *device) { pa_hashmap_put(data.profiles, p->name, p); } + if (pa_bluetooth_uuid_has(device->uuids, A2DP_SOURCE_UUID)) { + p = pa_card_profile_new("a2dp_source", _("High Fidelity Capture (A2DP)"), sizeof(enum profile)); + p->priority = 10; + p->n_sinks = 0; + p->n_sources = 1; + p->max_sink_channels = 0; + p->max_source_channels = 2; + + d = PA_CARD_PROFILE_DATA(p); + *d = PROFILE_A2DP_SOURCE; + + pa_hashmap_put(data.profiles, p->name, p); + } + if (pa_bluetooth_uuid_has(device->uuids, HSP_HS_UUID) || pa_bluetooth_uuid_has(device->uuids, HFP_HS_UUID)) { p = pa_card_profile_new("hsp", _("Telephony Duplex (HSP/HFP)"), sizeof(enum profile)); diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c index 788fee004..02fd42408 100644 --- a/src/modules/bluetooth/module-bluetooth-discover.c +++ b/src/modules/bluetooth/module-bluetooth-discover.c @@ -1,7 +1,7 @@ /*** This file is part of PulseAudio. - Copyright 2008 Joao Paulo Rechi Vita + Copyright 2008-2009 Joao Paulo Rechi Vita PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -84,7 +84,7 @@ static pa_hook_result_t load_module_for_device(pa_bluetooth_discovery *y, const mi = pa_hashmap_get(u->hashmap, d->path); if (!d->dead && - d->device_connected > 0 && d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED) { + d->device_connected > 0 && (d->audio_state >= PA_BT_AUDIO_STATE_CONNECTED || d->audio_source_state >= PA_BT_AUDIO_STATE_CONNECTED)) { if (!mi) { pa_module *m = NULL; @@ -116,6 +116,9 @@ static pa_hook_result_t load_module_for_device(pa_bluetooth_discovery *y, const } #endif + if (d->audio_source_state >= PA_BT_AUDIO_STATE_CONNECTED) + args = pa_sprintf_malloc("%s profile=\"a2dp_source\"", args); + pa_log_debug("Loading module-bluetooth-device %s", args); m = pa_module_load(u->module->core, "module-bluetooth-device", args); pa_xfree(args); diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c index c01ebbf68..85523b390 100644 --- a/src/modules/gconf/module-gconf.c +++ b/src/modules/gconf/module-gconf.c @@ -52,9 +52,6 @@ PA_MODULE_LOAD_ONCE(TRUE); #define MAX_MODULES 10 #define BUF_MAX 2048 -/* #undef PA_GCONF_HELPER */ -/* #define PA_GCONF_HELPER "/home/lennart/projects/pulseaudio/src/gconf-helper" */ - struct module_item { char *name; char *args; @@ -343,7 +340,11 @@ int pa__init(pa_module*m) { u->io_event = NULL; u->buf_fill = 0; - if ((u->fd = pa_start_child_for_read(PA_GCONF_HELPER, NULL, &u->pid)) < 0) + if ((u->fd = pa_start_child_for_read( +#if defined(__linux__) && !defined(__OPTIMIZE__) + pa_run_from_build_tree() ? PA_BUILDDIR "/.libs/gconf-helper" : +#endif + PA_GCONF_HELPER, NULL, &u->pid)) < 0) goto fail; u->io_event = m->core->mainloop->io_new( diff --git a/src/modules/hal-util.c b/src/modules/hal-util.c index e2a2d8d75..2d59f51d7 100644 --- a/src/modules/hal-util.c +++ b/src/modules/hal-util.c @@ -65,7 +65,7 @@ int pa_hal_get_info(pa_core *core, pa_proplist *p, int card) { goto finish; } - if (!(udis = libhal_find_device_by_capability(hal, "sound", &n, &error)) < 0) { + if (!(udis = libhal_find_device_by_capability(hal, "sound", &n, &error))) { pa_log_error("Couldn't find devices: %s: %s", error.name, error.message); goto finish; } diff --git a/src/modules/module-always-sink.c b/src/modules/module-always-sink.c index aee1c650f..3d7de9c63 100644 --- a/src/modules/module-always-sink.c +++ b/src/modules/module-always-sink.c @@ -24,6 +24,7 @@ #endif #include +#include #include #include @@ -35,7 +36,7 @@ #include "module-always-sink-symdef.h" PA_MODULE_AUTHOR("Colin Guthrie"); -PA_MODULE_DESCRIPTION("Always keeps at least one sink loaded even if it's a null one"); +PA_MODULE_DESCRIPTION(_("Always keeps at least one sink loaded even if it's a null one")); PA_MODULE_VERSION(PACKAGE_VERSION); PA_MODULE_LOAD_ONCE(TRUE); PA_MODULE_USAGE( @@ -78,7 +79,8 @@ static void load_null_sink_if_needed(pa_core *c, pa_sink *sink, struct userdata* u->ignore = TRUE; - t = pa_sprintf_malloc("sink_name=%s", u->sink_name); + t = pa_sprintf_malloc("sink_name=%s sink_properties='device.description=\"%s\"'", u->sink_name, + _("Dummy Output")); m = pa_module_load(c, "module-null-sink", t); u->null_module = m ? m->index : PA_INVALID_INDEX; pa_xfree(t); diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c index 16de68902..a186c899b 100644 --- a/src/modules/module-combine.c +++ b/src/modules/module-combine.c @@ -58,7 +58,7 @@ PA_MODULE_USAGE( "sink_name= " "sink_properties= " "slaves= " - "adjust_time= " + "adjust_time= " "resample_method= " "format= " "rate= " @@ -69,7 +69,7 @@ PA_MODULE_USAGE( #define MEMBLOCKQ_MAXLENGTH (1024*1024*16) -#define DEFAULT_ADJUST_TIME 10 +#define DEFAULT_ADJUST_TIME_USEC (10*PA_USEC_PER_SEC) #define BLOCK_USEC (PA_USEC_PER_MSEC * 200) @@ -91,6 +91,7 @@ struct output { pa_sink *sink; pa_sink_input *sink_input; + pa_bool_t ignore_state_change; pa_asyncmsgq *inq, /* Message queue from the sink thread to this sink input */ *outq; /* Message queue from this sink input to the sink thread */ @@ -99,9 +100,12 @@ struct output { pa_memblockq *memblockq; + /* For communication of the stream latencies to the main thread */ pa_usec_t total_latency; + /* For coomunication of the stream parameters to the sink thread */ pa_atomic_t max_request; + pa_atomic_t requested_latency; PA_LLIST_FIELDS(struct output); }; @@ -116,7 +120,7 @@ struct userdata { pa_rtpoll *rtpoll; pa_time_event *time_event; - uint32_t adjust_time; + pa_usec_t adjust_time; pa_bool_t automatic; pa_bool_t auto_desc; @@ -125,8 +129,6 @@ struct userdata { pa_resample_method_t resample_method; - struct timeval adjust_timestamp; - pa_usec_t block_usec; pa_idxset* outputs; /* managed in main context */ @@ -146,13 +148,16 @@ enum { SINK_MESSAGE_REMOVE_OUTPUT, SINK_MESSAGE_NEED, SINK_MESSAGE_UPDATE_LATENCY, - SINK_MESSAGE_UPDATE_MAX_REQUEST + SINK_MESSAGE_UPDATE_MAX_REQUEST, + SINK_MESSAGE_UPDATE_REQUESTED_LATENCY }; enum { SINK_INPUT_MESSAGE_POST = PA_SINK_INPUT_MESSAGE_MAX, }; +static void output_disable(struct output *o); +static void output_enable(struct output *o); static void output_free(struct output *o); static int output_create_sink_input(struct output *o); @@ -172,7 +177,7 @@ static void adjust_rates(struct userdata *u) { if (!PA_SINK_IS_OPENED(pa_sink_get_state(u->sink))) return; - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) { + PA_IDXSET_FOREACH(o, u->outputs, idx) { pa_usec_t sink_latency; if (!o->sink_input || !PA_SINK_IS_OPENED(pa_sink_get_state(o->sink))) @@ -189,6 +194,11 @@ static void adjust_rates(struct userdata *u) { avg_total_latency += o->total_latency; n++; + + pa_log_debug("[%s] total=%0.2fms sink=%0.2fms ", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC, (double) sink_latency / PA_USEC_PER_MSEC); + + if (o->total_latency > 10*PA_USEC_PER_SEC) + pa_log_warn("[%s] Total latency of output is very high (%0.2fms), most likely the audio timing in one of your drivers is broken.", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC); } if (min_total_latency == (pa_usec_t) -1) @@ -203,22 +213,22 @@ static void adjust_rates(struct userdata *u) { base_rate = u->sink->sample_spec.rate; - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) { + PA_IDXSET_FOREACH(o, u->outputs, idx) { uint32_t r = base_rate; if (!o->sink_input || !PA_SINK_IS_OPENED(pa_sink_get_state(o->sink))) continue; if (o->total_latency < target_latency) - r -= (uint32_t) ((((double) (target_latency - o->total_latency))/(double)u->adjust_time)*(double)r/PA_USEC_PER_SEC); + r -= (uint32_t) ((((double) (target_latency - o->total_latency))/(double)u->adjust_time)*(double)r); else if (o->total_latency > target_latency) - r += (uint32_t) ((((double) (o->total_latency - target_latency))/(double)u->adjust_time)*(double)r/PA_USEC_PER_SEC); + r += (uint32_t) ((((double) (o->total_latency - target_latency))/(double)u->adjust_time)*(double)r); if (r < (uint32_t) (base_rate*0.9) || r > (uint32_t) (base_rate*1.1)) { - pa_log_warn("[%s] sample rates too different, not adjusting (%u vs. %u).", pa_proplist_gets(o->sink_input->proplist, PA_PROP_MEDIA_NAME), base_rate, r); + pa_log_warn("[%s] sample rates too different, not adjusting (%u vs. %u).", o->sink_input->sink->name, base_rate, r); pa_sink_input_set_rate(o->sink_input, base_rate); } else { - pa_log_info("[%s] new rate is %u Hz; ratio is %0.3f; latency is %0.0f usec.", pa_proplist_gets(o->sink_input->proplist, PA_PROP_MEDIA_NAME), r, (double) r / base_rate, (float) o->total_latency); + pa_log_info("[%s] new rate is %u Hz; ratio is %0.3f; latency is %0.0f usec.", o->sink_input->sink->name, r, (double) r / base_rate, (float) o->total_latency); pa_sink_input_set_rate(o->sink_input, r); } } @@ -235,7 +245,7 @@ static void time_callback(pa_mainloop_api *a, pa_time_event *e, const struct tim adjust_rates(u); - pa_core_rttime_restart(u->core, e, pa_rtclock_now() + u->adjust_time * PA_USEC_PER_SEC); + pa_core_rttime_restart(u->core, e, pa_rtclock_now() + u->adjust_time); } static void process_render_null(struct userdata *u, pa_usec_t now) { @@ -355,18 +365,15 @@ static void render_memblock(struct userdata *u, struct output *o, size_t length) u->thread_info.counter += chunk.length; /* OK, let's send this data to the other threads */ - for (j = u->thread_info.active_outputs; j; j = j->next) + PA_LLIST_FOREACH(j, u->thread_info.active_outputs) { + if (j == o) + continue; - /* Send to other outputs, which are not the requesting - * one */ - - if (j != o) - pa_asyncmsgq_post(j->inq, PA_MSGOBJECT(j->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, &chunk, NULL); + pa_asyncmsgq_post(j->inq, PA_MSGOBJECT(j->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, &chunk, NULL); + } /* And place it directly into the requesting output's queue */ - if (o) - pa_memblockq_push_align(o->memblockq, &chunk); - + pa_memblockq_push_align(o->memblockq, &chunk); pa_memblock_unref(chunk.memblock); } } @@ -402,10 +409,18 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk /* If necessary, get some new data */ request_memblock(o, nbytes); + /* pa_log("%s q size is %u + %u (%u/%u)", */ + /* i->sink->name, */ + /* pa_memblockq_get_nblocks(o->memblockq), */ + /* pa_memblockq_get_nblocks(i->thread_info.render_memblockq), */ + /* pa_memblockq_get_maxrewind(o->memblockq), */ + /* pa_memblockq_get_maxrewind(i->thread_info.render_memblockq)); */ + if (pa_memblockq_peek(o->memblockq, chunk) < 0) return -1; pa_memblockq_drop(o->memblockq, chunk->length); + return 0; } @@ -440,13 +455,35 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) { return; pa_atomic_store(&o->max_request, (int) nbytes); - pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_MAX_REQUEST, NULL, 0, NULL, NULL); } +/* Called from thread context */ +static void sink_input_update_sink_requested_latency_cb(pa_sink_input *i) { + struct output *o; + pa_usec_t c; + + pa_assert(i); + + pa_sink_input_assert_ref(i); + pa_assert_se(o = i->userdata); + + c = pa_sink_get_requested_latency_within_thread(i->sink); + + if (c == (pa_usec_t) -1) + c = i->sink->thread_info.max_latency; + + if (pa_atomic_load(&o->requested_latency) == (int) c) + return; + + pa_atomic_store(&o->requested_latency, (int) c); + pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_REQUESTED_LATENCY, NULL, 0, NULL, NULL); +} + /* Called from I/O thread context */ static void sink_input_attach_cb(pa_sink_input *i) { struct output *o; + pa_usec_t c; pa_sink_input_assert_ref(i); pa_assert_se(o = i->userdata); @@ -455,14 +492,24 @@ static void sink_input_attach_cb(pa_sink_input *i) { pa_assert(!o->inq_rtpoll_item_read && !o->outq_rtpoll_item_write); o->inq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read( - i->sink->rtpoll, + i->sink->thread_info.rtpoll, PA_RTPOLL_LATE, /* This one is not that important, since we check for data in _peek() anyway. */ o->inq); o->outq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write( - i->sink->rtpoll, + i->sink->thread_info.rtpoll, PA_RTPOLL_EARLY, o->outq); + + pa_sink_input_request_rewind(i, 0, FALSE, TRUE, TRUE); + + pa_atomic_store(&o->max_request, (int) pa_sink_input_get_max_request(i)); + + c = pa_sink_get_requested_latency_within_thread(i->sink); + pa_atomic_store(&o->requested_latency, (int) (c == (pa_usec_t) -1 ? 0 : c)); + + pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_MAX_REQUEST, NULL, 0, NULL, NULL); + pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_REQUESTED_LATENCY, NULL, 0, NULL, NULL); } /* Called from I/O thread context */ @@ -472,14 +519,15 @@ static void sink_input_detach_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(o = i->userdata); - /* Shut down the queue from the sink thread to us */ - pa_assert(o->inq_rtpoll_item_read && o->outq_rtpoll_item_write); + if (o->inq_rtpoll_item_read) { + pa_rtpoll_item_free(o->inq_rtpoll_item_read); + o->inq_rtpoll_item_read = NULL; + } - pa_rtpoll_item_free(o->inq_rtpoll_item_read); - o->inq_rtpoll_item_read = NULL; - - pa_rtpoll_item_free(o->outq_rtpoll_item_write); - o->outq_rtpoll_item_write = NULL; + if (o->outq_rtpoll_item_write) { + pa_rtpoll_item_free(o->outq_rtpoll_item_write); + o->outq_rtpoll_item_write = NULL; + } } /* Called from main context */ @@ -493,20 +541,6 @@ static void sink_input_kill_cb(pa_sink_input *i) { output_free(o); } -/* Called from IO thread context */ -static void sink_input_state_change_cb(pa_sink_input *i, pa_sink_input_state_t state) { - struct userdata *u; - - pa_sink_input_assert_ref(i); - pa_assert_se(u = i->userdata); - - /* If we are added for the first time, ask for a rewinding so that - * we are heard right-away. */ - if (PA_SINK_INPUT_IS_LINKED(state) && - i->thread_info.state == PA_SINK_INPUT_INIT) - pa_sink_input_request_rewind(i, 0, FALSE, TRUE, TRUE); -} - /* Called from thread context */ static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) { struct output *o = PA_SINK_INPUT(obj)->userdata; @@ -536,37 +570,6 @@ static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64 return pa_sink_input_process_msg(obj, code, data, offset, chunk); } -/* Called from main context */ -static void disable_output(struct output *o) { - pa_assert(o); - - if (!o->sink_input) - return; - - pa_sink_input_unlink(o->sink_input); - pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_REMOVE_OUTPUT, o, 0, NULL); - pa_sink_input_unref(o->sink_input); - o->sink_input = NULL; -} - -/* Called from main context */ -static void enable_output(struct output *o) { - pa_assert(o); - - if (o->sink_input) - return; - - if (output_create_sink_input(o) >= 0) { - - pa_memblockq_flush_write(o->memblockq); - - pa_sink_input_put(o->sink_input); - - if (o->userdata->sink && PA_SINK_IS_LINKED(pa_sink_get_state(o->userdata->sink))) - pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL); - } -} - /* Called from main context */ static void suspend(struct userdata *u) { struct output *o; @@ -575,8 +578,8 @@ static void suspend(struct userdata *u) { pa_assert(u); /* Let's suspend by unlinking all streams */ - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) - disable_output(o); + PA_IDXSET_FOREACH(o, u->outputs, idx) + output_disable(o); pa_log_info("Device suspended..."); } @@ -589,13 +592,8 @@ static void unsuspend(struct userdata *u) { pa_assert(u); /* Let's resume */ - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) { - - pa_sink_suspend(o->sink, FALSE, PA_SUSPEND_IDLE); - - if (PA_SINK_IS_OPENED(pa_sink_get_state(o->sink))) - enable_output(o); - } + PA_IDXSET_FOREACH(o, u->outputs, idx) + output_enable(o); pa_log_info("Resumed successfully..."); } @@ -639,7 +637,13 @@ static void update_max_request(struct userdata *u) { size_t max_request = 0; struct output *o; - for (o = u->thread_info.active_outputs; o; o = o->next) { + pa_assert(u); + pa_sink_assert_io_context(u->sink); + + /* Collects the max_request values of all streams and sets the + * largest one locally */ + + PA_LLIST_FOREACH(o, u->thread_info.active_outputs) { size_t mr = (size_t) pa_atomic_load(&o->max_request); if (mr > max_request) @@ -652,6 +656,67 @@ static void update_max_request(struct userdata *u) { pa_sink_set_max_request_within_thread(u->sink, max_request); } +/* Called from IO context */ +static void update_fixed_latency(struct userdata *u) { + pa_usec_t fixed_latency = 0; + struct output *o; + + pa_assert(u); + pa_sink_assert_io_context(u->sink); + + /* Collects the requested_latency values of all streams and sets + * the largest one as fixed_latency locally */ + + PA_LLIST_FOREACH(o, u->thread_info.active_outputs) { + pa_usec_t rl = (size_t) pa_atomic_load(&o->requested_latency); + + if (rl > fixed_latency) + fixed_latency = rl; + } + + if (fixed_latency <= 0) + fixed_latency = u->block_usec; + + pa_sink_set_fixed_latency_within_thread(u->sink, fixed_latency); +} + +/* Called from thread context of the io thread */ +static void output_add_within_thread(struct output *o) { + pa_assert(o); + pa_sink_assert_io_context(o->sink); + + PA_LLIST_PREPEND(struct output, o->userdata->thread_info.active_outputs, o); + + pa_assert(!o->outq_rtpoll_item_read && !o->inq_rtpoll_item_write); + + o->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read( + o->userdata->rtpoll, + PA_RTPOLL_EARLY-1, /* This item is very important */ + o->outq); + o->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write( + o->userdata->rtpoll, + PA_RTPOLL_EARLY, + o->inq); +} + +/* Called from thread context of the io thread */ +static void output_remove_within_thread(struct output *o) { + pa_assert(o); + pa_sink_assert_io_context(o->sink); + + PA_LLIST_REMOVE(struct output, o->userdata->thread_info.active_outputs, o); + + if (o->outq_rtpoll_item_read) { + pa_rtpoll_item_free(o->outq_rtpoll_item_read); + o->outq_rtpoll_item_read = NULL; + } + + if (o->inq_rtpoll_item_write) { + pa_rtpoll_item_free(o->inq_rtpoll_item_write); + o->inq_rtpoll_item_write = NULL; + } +} + /* Called from thread context of the io thread */ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) { struct userdata *u = PA_SINK(o)->userdata; @@ -684,42 +749,17 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse return 0; } - case SINK_MESSAGE_ADD_OUTPUT: { - struct output *op = data; - - PA_LLIST_PREPEND(struct output, u->thread_info.active_outputs, op); - - pa_assert(!op->outq_rtpoll_item_read && !op->inq_rtpoll_item_write); - - op->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read( - u->rtpoll, - PA_RTPOLL_EARLY-1, /* This item is very important */ - op->outq); - op->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write( - u->rtpoll, - PA_RTPOLL_EARLY, - op->inq); - + case SINK_MESSAGE_ADD_OUTPUT: + output_add_within_thread(data); update_max_request(u); + update_fixed_latency(u); return 0; - } - - case SINK_MESSAGE_REMOVE_OUTPUT: { - struct output *op = data; - - PA_LLIST_REMOVE(struct output, u->thread_info.active_outputs, op); - - pa_assert(op->outq_rtpoll_item_read && op->inq_rtpoll_item_write); - - pa_rtpoll_item_free(op->outq_rtpoll_item_read); - op->outq_rtpoll_item_read = NULL; - - pa_rtpoll_item_free(op->inq_rtpoll_item_write); - op->inq_rtpoll_item_write = NULL; + case SINK_MESSAGE_REMOVE_OUTPUT: + output_remove_within_thread(data); update_max_request(u); + update_fixed_latency(u); return 0; - } case SINK_MESSAGE_NEED: render_memblock(u, (struct output*) data, (size_t) offset); @@ -741,10 +781,13 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse } case SINK_MESSAGE_UPDATE_MAX_REQUEST: - update_max_request(u); break; - } + + case SINK_MESSAGE_UPDATE_REQUESTED_LATENCY: + update_fixed_latency(u); + break; +} return pa_sink_process_msg(o, code, data, offset, chunk); } @@ -767,7 +810,7 @@ static void update_description(struct userdata *u) { t = pa_xstrdup("Simultaneous output to"); - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) { + PA_IDXSET_FOREACH(o, u->outputs, idx) { char *e; if (first) { @@ -801,8 +844,9 @@ static int output_create_sink_input(struct output *o) { pa_sink_input_new_data_set_channel_map(&data, &o->userdata->sink->channel_map); data.module = o->userdata->module; data.resample_method = o->userdata->resample_method; + data.flags = PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE|PA_SINK_INPUT_NO_CREATE_ON_SUSPEND; - pa_sink_input_new(&o->sink_input, o->userdata->core, &data, PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE); + pa_sink_input_new(&o->sink_input, o->userdata->core, &data); pa_sink_input_new_data_done(&data); @@ -812,9 +856,9 @@ static int output_create_sink_input(struct output *o) { o->sink_input->parent.process_msg = sink_input_process_msg; o->sink_input->pop = sink_input_pop_cb; o->sink_input->process_rewind = sink_input_process_rewind_cb; - o->sink_input->state_change = sink_input_state_change_cb; o->sink_input->update_max_rewind = sink_input_update_max_rewind_cb; o->sink_input->update_max_request = sink_input_update_max_request_cb; + o->sink_input->update_sink_requested_latency = sink_input_update_sink_requested_latency_cb; o->sink_input->attach = sink_input_attach_cb; o->sink_input->detach = sink_input_detach_cb; o->sink_input->kill = sink_input_kill_cb; @@ -825,22 +869,19 @@ static int output_create_sink_input(struct output *o) { return 0; } +/* Called from main context */ static struct output *output_new(struct userdata *u, pa_sink *sink) { struct output *o; - pa_sink_state_t state; pa_assert(u); pa_assert(sink); pa_assert(u->sink); - o = pa_xnew(struct output, 1); + o = pa_xnew0(struct output, 1); o->userdata = u; o->inq = pa_asyncmsgq_new(0); o->outq = pa_asyncmsgq_new(0); - o->inq_rtpoll_item_write = o->inq_rtpoll_item_read = NULL; - o->outq_rtpoll_item_write = o->outq_rtpoll_item_read = NULL; o->sink = sink; - o->sink_input = NULL; o->memblockq = pa_memblockq_new( 0, MEMBLOCKQ_MAXLENGTH, @@ -850,84 +891,135 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) { 0, 0, NULL); - pa_atomic_store(&o->max_request, 0); - PA_LLIST_INIT(struct output, o); pa_assert_se(pa_idxset_put(u->outputs, o, NULL) == 0); - - state = pa_sink_get_state(u->sink); - - if (state != PA_SINK_INIT) - pa_asyncmsgq_send(u->sink->asyncmsgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL); - else { - /* If the sink is not yet started, we need to do the activation ourselves */ - PA_LLIST_PREPEND(struct output, u->thread_info.active_outputs, o); - - o->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read( - u->rtpoll, - PA_RTPOLL_EARLY-1, /* This item is very important */ - o->outq); - o->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write( - u->rtpoll, - PA_RTPOLL_EARLY, - o->inq); - } - - if (PA_SINK_IS_OPENED(state) || state == PA_SINK_INIT) { - pa_sink_suspend(sink, FALSE, PA_SUSPEND_IDLE); - - if (PA_SINK_IS_OPENED(pa_sink_get_state(sink))) - if (output_create_sink_input(o) < 0) - goto fail; - } - update_description(u); return o; - -fail: - - if (o) { - pa_idxset_remove_by_data(u->outputs, o, NULL); - - if (o->sink_input) { - pa_sink_input_unlink(o->sink_input); - pa_sink_input_unref(o->sink_input); - } - - if (o->memblockq) - pa_memblockq_free(o->memblockq); - - if (o->inq) - pa_asyncmsgq_unref(o->inq); - - if (o->outq) - pa_asyncmsgq_unref(o->outq); - - pa_xfree(o); - } - - return NULL; } +/* Called from main context */ +static void output_free(struct output *o) { + pa_assert(o); + + output_disable(o); + + pa_assert_se(pa_idxset_remove_by_data(o->userdata->outputs, o, NULL)); + update_description(o->userdata); + + if (o->inq_rtpoll_item_read) + pa_rtpoll_item_free(o->inq_rtpoll_item_read); + if (o->inq_rtpoll_item_write) + pa_rtpoll_item_free(o->inq_rtpoll_item_write); + + if (o->outq_rtpoll_item_read) + pa_rtpoll_item_free(o->outq_rtpoll_item_read); + if (o->outq_rtpoll_item_write) + pa_rtpoll_item_free(o->outq_rtpoll_item_write); + + if (o->inq) + pa_asyncmsgq_unref(o->inq); + + if (o->outq) + pa_asyncmsgq_unref(o->outq); + + if (o->memblockq) + pa_memblockq_free(o->memblockq); + + pa_xfree(o); +} + +/* Called from main context */ +static void output_enable(struct output *o) { + pa_assert(o); + + if (o->sink_input) + return; + + /* This might cause the sink to be resumed. The state change hook + * of the sink might hence be called from here, which might then + * cause us to be called in a loop. Make sure that state changes + * for this output don't cause this loop by setting a flag here */ + o->ignore_state_change = TRUE; + + if (output_create_sink_input(o) >= 0) { + + if (pa_sink_get_state(o->sink) != PA_SINK_INIT) { + + /* First we register the output. That means that the sink + * will start to pass data to this output. */ + pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL); + + /* Then we enable the sink input. That means that the sink + * is now asked for new data. */ + pa_sink_input_put(o->sink_input); + + } else + /* Hmm the sink is not yet started, do things right here */ + output_add_within_thread(o); + } + + o->ignore_state_change = FALSE; +} + +/* Called from main context */ +static void output_disable(struct output *o) { + pa_assert(o); + + if (!o->sink_input) + return; + + /* First we disable the sink input. That means that the sink is + * not asked for new data anymore */ + pa_sink_input_unlink(o->sink_input); + + /* Then we unregister the output. That means that the sink doesn't + * pass any further data to this output */ + pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_REMOVE_OUTPUT, o, 0, NULL); + + /* Now dellocate the stream */ + pa_sink_input_unref(o->sink_input); + o->sink_input = NULL; + + /* Finally, drop all queued data */ + pa_memblockq_flush_write(o->memblockq); + pa_asyncmsgq_flush(o->inq, FALSE); + pa_asyncmsgq_flush(o->outq, FALSE); +} + +/* Called from main context */ +static void output_verify(struct output *o) { + pa_assert(o); + + if (PA_SINK_IS_OPENED(pa_sink_get_state(o->userdata->sink))) + output_enable(o); + else + output_disable(o); +} + +/* Called from main context */ static pa_bool_t is_suitable_sink(struct userdata *u, pa_sink *s) { const char *t; pa_sink_assert_ref(s); - if (!(s->flags & PA_SINK_HARDWARE)) - return FALSE; - if (s == u->sink) return FALSE; + if (!(s->flags & PA_SINK_HARDWARE)) + return FALSE; + + if (!(s->flags & PA_SINK_LATENCY)) + return FALSE; + if ((t = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_CLASS))) - if (strcmp(t, "sound")) + if (!pa_streq(t, "sound")) return FALSE; return TRUE; } +/* Called from main context */ static pa_hook_result_t sink_put_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) { struct output *o; @@ -940,18 +1032,17 @@ static pa_hook_result_t sink_put_hook_cb(pa_core *c, pa_sink *s, struct userdata return PA_HOOK_OK; pa_log_info("Configuring new sink: %s", s->name); - if (!(o = output_new(u, s))) { pa_log("Failed to create sink input on sink '%s'.", s->name); return PA_HOOK_OK; } - if (o->sink_input) - pa_sink_input_put(o->sink_input); + output_verify(o); return PA_HOOK_OK; } +/* Called from main context */ static struct output* find_output(struct userdata *u, pa_sink *s) { struct output *o; uint32_t idx; @@ -962,13 +1053,14 @@ static struct output* find_output(struct userdata *u, pa_sink *s) { if (u->sink == s) return NULL; - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) + PA_IDXSET_FOREACH(o, u->outputs, idx) if (o->sink == s) return o; return NULL; } +/* Called from main context */ static pa_hook_result_t sink_unlink_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) { struct output *o; @@ -980,26 +1072,25 @@ static pa_hook_result_t sink_unlink_hook_cb(pa_core *c, pa_sink *s, struct userd return PA_HOOK_OK; pa_log_info("Unconfiguring sink: %s", s->name); - output_free(o); return PA_HOOK_OK; } +/* Called from main context */ static pa_hook_result_t sink_state_changed_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) { struct output *o; - pa_sink_state_t state; if (!(o = find_output(u, s))) return PA_HOOK_OK; - state = pa_sink_get_state(s); + /* This state change might be triggered because we are creating a + * stream here, in that case we don't want to create it a second + * time here and enter a loop */ + if (o->ignore_state_change) + return PA_HOOK_OK; - if (PA_SINK_IS_OPENED(state) && PA_SINK_IS_OPENED(pa_sink_get_state(u->sink)) && !o->sink_input) - enable_output(o); - - if (state == PA_SINK_SUSPENDED && o->sink_input) - disable_output(o); + output_verify(o); return PA_HOOK_OK; } @@ -1014,6 +1105,7 @@ int pa__init(pa_module*m) { struct output *o; uint32_t idx; pa_sink_new_data data; + uint32_t adjust_time_sec; pa_assert(m); @@ -1029,23 +1121,13 @@ int pa__init(pa_module*m) { } } - m->userdata = u = pa_xnew(struct userdata, 1); + m->userdata = u = pa_xnew0(struct userdata, 1); u->core = m->core; u->module = m; - u->sink = NULL; - u->time_event = NULL; - u->adjust_time = DEFAULT_ADJUST_TIME; u->rtpoll = pa_rtpoll_new(); pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll); - u->thread = NULL; u->resample_method = resample_method; u->outputs = pa_idxset_new(NULL, NULL); - memset(&u->adjust_timestamp, 0, sizeof(u->adjust_timestamp)); - u->sink_put_slot = u->sink_unlink_slot = u->sink_state_changed_slot = NULL; - PA_LLIST_HEAD_INIT(struct output, u->thread_info.active_outputs); - pa_atomic_store(&u->thread_info.running, FALSE); - u->thread_info.in_null_mode = FALSE; - u->thread_info.counter = 0; u->thread_info.smoother = pa_smoother_new( PA_USEC_PER_SEC, PA_USEC_PER_SEC*2, @@ -1055,16 +1137,73 @@ int pa__init(pa_module*m) { 0, FALSE); - if (pa_modargs_get_value_u32(ma, "adjust_time", &u->adjust_time) < 0) { + adjust_time_sec = DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC; + if (pa_modargs_get_value_u32(ma, "adjust_time", &adjust_time_sec) < 0) { pa_log("Failed to parse adjust_time value"); goto fail; } + if (adjust_time_sec != DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC) + u->adjust_time = adjust_time_sec * PA_USEC_PER_SEC; + else + u->adjust_time = DEFAULT_ADJUST_TIME_USEC; + slaves = pa_modargs_get_value(ma, "slaves", NULL); u->automatic = !slaves; ss = m->core->default_sample_spec; map = m->core->default_channel_map; + + /* Check the specified slave sinks for sample_spec and channel_map to use for the combined sink */ + if (!u->automatic) { + const char*split_state = NULL; + char *n = NULL; + pa_sample_spec slaves_spec; + pa_channel_map slaves_map; + pa_bool_t is_first_slave = TRUE; + + pa_sample_spec_init(&slaves_spec); + + while ((n = pa_split(slaves, ",", &split_state))) { + pa_sink *slave_sink; + + if (!(slave_sink = pa_namereg_get(m->core, n, PA_NAMEREG_SINK))) { + pa_log("Invalid slave sink '%s'", n); + pa_xfree(n); + goto fail; + } + + pa_xfree(n); + + if (is_first_slave) { + slaves_spec = slave_sink->sample_spec; + slaves_map = slave_sink->channel_map; + is_first_slave = FALSE; + } else { + if (slaves_spec.format != slave_sink->sample_spec.format) + slaves_spec.format = PA_SAMPLE_INVALID; + + if (slaves_spec.rate < slave_sink->sample_spec.rate) + slaves_spec.rate = slave_sink->sample_spec.rate; + + if (!pa_channel_map_equal(&slaves_map, &slave_sink->channel_map)) + slaves_spec.channels = 0; + } + } + + if (!is_first_slave) { + if (slaves_spec.format != PA_SAMPLE_INVALID) + ss.format = slaves_spec.format; + + ss.rate = slaves_spec.rate; + + if (slaves_spec.channels > 0) { + map = slaves_map; + ss.channels = slaves_map.channels; + } + } + } + if ((pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0)) { pa_log("Invalid sample specification."); goto fail; @@ -1095,7 +1234,6 @@ int pa__init(pa_module*m) { pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Simultaneous Output"); } - u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY); pa_sink_new_data_done(&data); @@ -1149,7 +1287,7 @@ int pa__init(pa_module*m) { /* We're in automatic mode, we add every sink that matches our needs */ - for (s = pa_idxset_first(m->core->sinks, &idx); s; s = pa_idxset_next(m->core->sinks, &idx)) { + PA_IDXSET_FOREACH(s, m->core->sinks, idx) { if (!is_suitable_sink(u, s)) continue; @@ -1174,12 +1312,11 @@ int pa__init(pa_module*m) { /* Activate the sink and the sink inputs */ pa_sink_put(u->sink); - for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) - if (o->sink_input) - pa_sink_input_put(o->sink_input); + PA_IDXSET_FOREACH(o, u->outputs, idx) + output_verify(o); if (u->adjust_time > 0) - u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time * PA_USEC_PER_SEC, time_callback, u); + u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time, time_callback, u); pa_modargs_free(ma); @@ -1195,37 +1332,6 @@ fail: return -1; } -static void output_free(struct output *o) { - pa_assert(o); - - disable_output(o); - - pa_assert_se(pa_idxset_remove_by_data(o->userdata->outputs, o, NULL)); - - update_description(o->userdata); - - if (o->inq_rtpoll_item_read) - pa_rtpoll_item_free(o->inq_rtpoll_item_read); - if (o->inq_rtpoll_item_write) - pa_rtpoll_item_free(o->inq_rtpoll_item_write); - - if (o->outq_rtpoll_item_read) - pa_rtpoll_item_free(o->outq_rtpoll_item_read); - if (o->outq_rtpoll_item_write) - pa_rtpoll_item_free(o->outq_rtpoll_item_write); - - if (o->inq) - pa_asyncmsgq_unref(o->inq); - - if (o->outq) - pa_asyncmsgq_unref(o->outq); - - if (o->memblockq) - pa_memblockq_free(o->memblockq); - - pa_xfree(o); -} - void pa__done(pa_module*m) { struct userdata *u; struct output *o; diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c index a666073cf..103f5c48d 100644 --- a/src/modules/module-console-kit.c +++ b/src/modules/module-console-kit.c @@ -187,7 +187,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo } add_session(u, path); - return DBUS_HANDLER_RESULT_HANDLED; } else if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionRemoved")) { @@ -202,7 +201,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo } remove_session(u, path); - return DBUS_HANDLER_RESULT_HANDLED; } finish: diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c index 18479df37..b1f24e158 100644 --- a/src/modules/module-detect.c +++ b/src/modules/module-detect.c @@ -50,7 +50,7 @@ PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers PA_MODULE_VERSION(PACKAGE_VERSION); PA_MODULE_LOAD_ONCE(TRUE); PA_MODULE_USAGE("just-one="); -PA_MODULE_DEPRECATED("Please use module-hal-detect instead of module-detect!"); +PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-detect!"); static const char* const valid_modargs[] = { "just-one", @@ -119,7 +119,7 @@ static int detect_alsa(pa_core *c, int just_one) { } #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT static int detect_oss(pa_core *c, int just_one) { FILE *f; int n = 0, b = 0; @@ -240,7 +240,7 @@ int pa__init(pa_module*m) { #ifdef HAVE_ALSA if ((n = detect_alsa(m->core, just_one)) <= 0) #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if ((n = detect_oss(m->core, just_one)) <= 0) #endif #ifdef HAVE_SOLARIS diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c index 120b762c1..da6c96661 100644 --- a/src/modules/module-device-restore.c +++ b/src/modules/module-device-restore.c @@ -218,7 +218,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 if (sink->save_volume) { entry.channel_map = sink->channel_map; - entry.volume = *pa_sink_get_volume(sink, FALSE, TRUE); + entry.volume = *pa_sink_get_volume(sink, FALSE); entry.volume_valid = TRUE; } diff --git a/src/modules/module-hal-detect-compat.c b/src/modules/module-hal-detect-compat.c new file mode 100644 index 000000000..14cf8143b --- /dev/null +++ b/src/modules/module-hal-detect-compat.c @@ -0,0 +1,84 @@ +/*** + This file is part of PulseAudio. + + Copyright 2009 Lennart Poettering + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#include +#include +#include +#include + +#include "module-hal-detect-symdef.h" + +PA_MODULE_AUTHOR("Lennart Poettering"); +PA_MODULE_DESCRIPTION("Compatibility module"); +PA_MODULE_VERSION(PACKAGE_VERSION); +PA_MODULE_LOAD_ONCE(TRUE); +PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!"); + +static const char* const valid_modargs[] = { + "api", + "tsched", + "subdevices", + NULL, +}; + +int pa__init(pa_module*m) { + pa_modargs *ma = NULL; + pa_bool_t tsched = TRUE; + pa_module *n; + char *t; + + pa_assert(m); + + if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { + pa_log("Failed to parse module arguments"); + goto fail; + } + + if (pa_modargs_get_value_boolean(ma, "tsched", &tsched) < 0) { + pa_log("tsched= expects boolean arguments"); + goto fail; + } + + pa_log_warn("We will now load module-udev-detect. Please make sure to remove module-hal-detect from your configuration."); + + t = pa_sprintf_malloc("tsched=%s", pa_yes_no(tsched)); + n = pa_module_load(m->core, "module-udev-detect", t); + pa_xfree(t); + + if (n) + pa_module_unload_request(m, TRUE); + + pa_modargs_free(ma); + + return n ? 0 : -1; + +fail: + if (ma) + pa_modargs_free(ma); + + return -1; +} diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c index 658b3e556..185191318 100644 --- a/src/modules/module-hal-detect.c +++ b/src/modules/module-hal-detect.c @@ -55,14 +55,16 @@ PA_MODULE_AUTHOR("Shahms King"); PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers"); PA_MODULE_VERSION(PACKAGE_VERSION); PA_MODULE_LOAD_ONCE(TRUE); -#if defined(HAVE_ALSA) && defined(HAVE_OSS) +#if defined(HAVE_ALSA) && defined(HAVE_OSS_OUTPUT) PA_MODULE_USAGE("api= " - "tsched="); + "tsched=" + "subdevices="); #elif defined(HAVE_ALSA) PA_MODULE_USAGE("api= " "tsched="); -#elif defined(HAVE_OSS) -PA_MODULE_USAGE("api="); +#elif defined(HAVE_OSS_OUTPUT) +PA_MODULE_USAGE("api=" + "subdevices="); #endif PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!"); @@ -82,6 +84,9 @@ struct userdata { #ifdef HAVE_ALSA pa_bool_t use_tsched; #endif +#ifdef HAVE_OSS_OUTPUT + pa_bool_t init_subdevs; +#endif }; #define CAPABILITY_ALSA "alsa" @@ -91,6 +96,9 @@ static const char* const valid_modargs[] = { "api", #ifdef HAVE_ALSA "tsched", +#endif +#ifdef HAVE_OSS_OUTPUT + "subdevices", #endif NULL }; @@ -262,9 +270,9 @@ fail: #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT -static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi) { +static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi, pa_bool_t init_subdevices) { char *class = NULL, *dev = NULL, *e; int device; pa_bool_t r = FALSE; @@ -294,7 +302,7 @@ static pa_bool_t hal_oss_device_is_pcm(LibHalContext *context, const char *udi) /* We only care for the main device */ device = libhal_device_get_property_int(context, udi, "oss.device", &error); - if (dbus_error_is_set(&error) || device != 0) + if (dbus_error_is_set(&error) || (device != 0 && init_subdevices == FALSE)) goto finish; r = TRUE; @@ -324,7 +332,7 @@ static int hal_device_load_oss(struct userdata *u, const char *udi, struct devic pa_assert(d); /* We only care for OSS PCM devices */ - if (!hal_oss_device_is_pcm(u->context, udi)) + if (!hal_oss_device_is_pcm(u->context, udi, u->init_subdevs)) goto fail; /* We store only one entry per card, hence we look for the originating device */ @@ -394,7 +402,7 @@ static struct device* hal_device_add(struct userdata *u, const char *udi) { if (pa_streq(u->capability, CAPABILITY_ALSA)) r = hal_device_load_alsa(u, udi, d); #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if (pa_streq(u->capability, CAPABILITY_OSS)) r = hal_device_load_oss(u, udi, d); #endif @@ -427,9 +435,7 @@ static int hal_device_add_all(struct userdata *u) { int i; for (i = 0; i < n; i++) { - struct device *d; - - if ((d = hal_device_add(u, udis[i]))) { + if (hal_device_add(u, udis[i])) { count++; pa_log_debug("Loaded device %s", udis[i]); } else @@ -615,8 +621,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo } - return DBUS_HANDLER_RESULT_HANDLED; - } else if (dbus_message_is_signal(message, "org.pulseaudio.Server", "DirtyGiveUpMessage")) { /* We use this message to avoid a dirty race condition when we get an ACLAdded message before the previously owning PA @@ -660,7 +664,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo /* Yes, we don't check the UDI for validity, but hopefully HAL will */ device_added_cb(u->context, udi); - return DBUS_HANDLER_RESULT_HANDLED; } finish: @@ -753,7 +756,7 @@ int pa__init(pa_module*m) { api = pa_modargs_get_value(ma, "api", "oss"); #endif -#ifdef HAVE_OSS +#ifdef HAVE_OSS_OUTPUT if (pa_streq(api, "oss")) u->capability = CAPABILITY_OSS; #endif @@ -763,6 +766,13 @@ int pa__init(pa_module*m) { goto fail; } +#ifdef HAVE_OSS_OUTPUT + if (pa_modargs_get_value_boolean(ma, "subdevices", &u->init_subdevs) < 0) { + pa_log("Failed to parse subdevices= argument."); + goto fail; + } +#endif + if (!(u->connection = pa_dbus_bus_get(m->core, DBUS_BUS_SYSTEM, &error)) || dbus_error_is_set(&error)) { pa_log_error("Unable to contact DBUS system bus: %s: %s", error.name, error.message); goto fail; diff --git a/src/modules/module-intended-roles.c b/src/modules/module-intended-roles.c index c697209a8..b9924dfd9 100644 --- a/src/modules/module-intended-roles.c +++ b/src/modules/module-intended-roles.c @@ -127,6 +127,9 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n if (s == def) continue; + if (!PA_SINK_IS_LINKED(pa_sink_get_state(s))) + continue; + if (role_match(s->proplist, role)) { new_data->sink = s; new_data->save_sink = FALSE; @@ -173,6 +176,9 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou if (s == def) continue; + if (!PA_SOURCE_IS_LINKED(pa_source_get_state(s))) + continue; + if (role_match(s->proplist, role)) { new_data->source = s; new_data->save_source = FALSE; @@ -201,6 +207,17 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct if (si->save_sink) continue; + /* Skip this if it is already in the process of being moved + * anyway */ + if (!si->sink) + continue; + + /* It might happen that a stream and a sink are set up at the + same time, in which case we want to make sure we don't + interfere with that */ + if (!PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(si))) + continue; + if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE))) continue; @@ -237,6 +254,17 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, if (so->direct_on_input) continue; + /* Skip this if it is already in the process of being moved + * anyway */ + if (!so->source) + continue; + + /* It might happen that a stream and a source are set up at the + same time, in which case we want to make sure we don't + interfere with that */ + if (!PA_SOURCE_OUTPUT_IS_LINKED(pa_source_output_get_state(so))) + continue; + if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE))) continue; @@ -275,24 +303,28 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str uint32_t jdx; pa_sink *d; + if (!si->sink) + continue; + if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE))) continue; /* Would the default sink fit? If so, let's use it */ - if (def != sink && role_match(def->proplist, role)) { - pa_sink_input_move_to(si, def, FALSE); - continue; - } + if (def != sink && role_match(def->proplist, role)) + if (pa_sink_input_move_to(si, def, FALSE) >= 0) + continue; /* Try to find some other fitting sink */ PA_IDXSET_FOREACH(d, c->sinks, jdx) { if (d == def || d == sink) continue; - if (role_match(d->proplist, role)) { - pa_sink_input_move_to(si, d, FALSE); - break; - } + if (!PA_SINK_IS_LINKED(pa_sink_get_state(d))) + continue; + + if (role_match(d->proplist, role)) + if (pa_sink_input_move_to(si, d, FALSE) >= 0) + break; } } @@ -325,6 +357,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc if (so->direct_on_input) continue; + if (!so->source) + continue; + if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE))) continue; @@ -339,6 +374,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc if (d == def || d == source) continue; + if (!PA_SOURCE_IS_LINKED(pa_source_get_state(d))) + continue; + if (role_match(d->proplist, role) && !source->monitor_of == !d->monitor_of) { pa_source_output_move_to(so, d, FALSE); break; diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c index 21f4a8f1e..994c778fe 100644 --- a/src/modules/module-ladspa-sink.c +++ b/src/modules/module-ladspa-sink.c @@ -64,10 +64,9 @@ PA_MODULE_USAGE( #define MEMBLOCKQ_MAXLENGTH (16*1024*1024) struct userdata { - pa_core *core; pa_module *module; - pa_sink *sink, *master; + pa_sink *sink; pa_sink_input *sink_input; const LADSPA_Descriptor *descriptor; @@ -83,6 +82,8 @@ struct userdata { LADSPA_Data control_out; pa_memblockq *memblockq; + + pa_bool_t auto_desc; }; static const char* const valid_modargs[] = { @@ -100,69 +101,111 @@ static const char* const valid_modargs[] = { }; /* Called from I/O thread context */ -static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) { +static int sink_process_msg_cb(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) { struct userdata *u = PA_SINK(o)->userdata; switch (code) { - case PA_SINK_MESSAGE_GET_LATENCY: { - pa_usec_t usec = 0; + case PA_SINK_MESSAGE_GET_LATENCY: - /* Get the latency of the master sink */ - if (PA_MSGOBJECT(u->master)->process_msg(PA_MSGOBJECT(u->master), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0) - usec = 0; + /* The sink is _put() before the sink input is, so let's + * make sure we don't access it in that time. Also, the + * sink input is first shut down, the sink second. */ + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) || + !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) { + *((pa_usec_t*) data) = 0; + return 0; + } - /* Add the latency internal to our sink input on top */ - usec += pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->master->sample_spec); + *((pa_usec_t*) data) = + + /* Get the latency of the master sink */ + pa_sink_get_latency_within_thread(u->sink_input->sink) + + + /* Add the latency internal to our sink input on top */ + pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec); - *((pa_usec_t*) data) = usec; return 0; - } } return pa_sink_process_msg(o, code, data, offset, chunk); } /* Called from main context */ -static int sink_set_state(pa_sink *s, pa_sink_state_t state) { +static int sink_set_state_cb(pa_sink *s, pa_sink_state_t state) { struct userdata *u; pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); - if (PA_SINK_IS_LINKED(state) && - u->sink_input && - PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input))) - - pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED); + if (!PA_SINK_IS_LINKED(state) || + !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input))) + return 0; + pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED); return 0; } /* Called from I/O thread context */ -static void sink_request_rewind(pa_sink *s) { +static void sink_request_rewind_cb(pa_sink *s) { struct userdata *u; pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) || + !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) + return; + /* Just hand this one over to the master sink */ pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes + pa_memblockq_get_length(u->memblockq), TRUE, FALSE, FALSE); } /* Called from I/O thread context */ -static void sink_update_requested_latency(pa_sink *s) { +static void sink_update_requested_latency_cb(pa_sink *s) { struct userdata *u; pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) || + !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) + return; + /* Just hand this one over to the master sink */ pa_sink_input_set_requested_latency_within_thread( u->sink_input, pa_sink_get_requested_latency_within_thread(s)); } +/* Called from main context */ +static void sink_set_volume_cb(pa_sink *s) { + struct userdata *u; + + pa_sink_assert_ref(s); + pa_assert_se(u = s->userdata); + + if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)) || + !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input))) + return; + + pa_sink_input_set_volume(u->sink_input, &s->real_volume, s->save_volume, TRUE); +} + +/* Called from main context */ +static void sink_set_mute_cb(pa_sink *s) { + struct userdata *u; + + pa_sink_assert_ref(s); + pa_assert_se(u = s->userdata); + + if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)) || + !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input))) + return; + + pa_sink_input_set_mute(u->sink_input, s->muted, s->save_muted); +} + /* Called from I/O thread context */ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) { struct userdata *u; @@ -175,8 +218,8 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk pa_assert(chunk); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state)) - return -1; + /* Hmm, process any rewind request that might be queued up */ + pa_sink_process_rewind(u->sink, 0); while (pa_memblockq_peek(u->memblockq, &tchunk) < 0) { pa_memchunk nchunk; @@ -225,9 +268,6 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state)) - return; - if (u->sink->thread_info.rewind_nbytes > 0) { size_t max_rewrite; @@ -263,9 +303,6 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_memblockq_set_maxrewind(u->memblockq, nbytes); pa_sink_set_max_rewind_within_thread(u->sink, nbytes); } @@ -277,9 +314,6 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_set_max_request_within_thread(u->sink, nbytes); } @@ -290,12 +324,19 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); } +/* Called from I/O thread context */ +static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_se(u = i->userdata); + + pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); +} + /* Called from I/O thread context */ static void sink_input_detach_cb(pa_sink_input *i) { struct userdata *u; @@ -303,11 +344,8 @@ static void sink_input_detach_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_detach_within_thread(u->sink); - pa_sink_set_asyncmsgq(u->sink, NULL); + pa_sink_set_rtpoll(u->sink, NULL); } @@ -318,14 +356,13 @@ static void sink_input_attach_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; + pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll); + pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); + pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); + pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i)); + pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i)); - pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq); - pa_sink_set_rtpoll(u->sink, i->sink->rtpoll); pa_sink_attach_within_thread(u->sink); - - pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency); } /* Called from main context */ @@ -335,13 +372,17 @@ static void sink_input_kill_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - pa_sink_unlink(u->sink); + /* The order here matters! We first kill the sink input, followed + * by the sink. That means the sink callbacks must be protected + * against an unconnected sink input! */ pa_sink_input_unlink(u->sink_input); + pa_sink_unlink(u->sink); + + pa_sink_input_unref(u->sink_input); + u->sink_input = NULL; pa_sink_unref(u->sink); u->sink = NULL; - pa_sink_input_unref(u->sink_input); - u->sink_input = NULL; pa_module_unload_request(u->module, TRUE); } @@ -372,13 +413,59 @@ static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) { return u->sink != dest; } +/* Called from main context */ +static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_se(u = i->userdata); + + if (dest) { + pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq); + pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags); + } else + pa_sink_set_asyncmsgq(u->sink, NULL); + + if (u->auto_desc && dest) { + const char *z; + pa_proplist *pl; + + pl = pa_proplist_new(); + z = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION); + pa_proplist_setf(pl, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", + pa_proplist_gets(u->sink->proplist, "device.ladspa.name"), z ? z : dest->name); + + pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl); + pa_proplist_free(pl); + } +} + +/* Called from main context */ +static void sink_input_volume_changed_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_se(u = i->userdata); + + pa_sink_volume_changed(u->sink, &i->volume); +} + +/* Called from main context */ +static void sink_input_mute_changed_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_se(u = i->userdata); + + pa_sink_mute_changed(u->sink, i->muted); +} + int pa__init(pa_module*m) { struct userdata *u; pa_sample_spec ss; pa_channel_map map; pa_modargs *ma; char *t; - const char *z; pa_sink *master; pa_sink_input_new_data sink_input_data; pa_sink_new_data sink_data; @@ -392,7 +479,7 @@ int pa__init(pa_module*m) { pa_assert(m); - pa_assert(sizeof(LADSPA_Data) == sizeof(float)); + pa_assert_cc(sizeof(LADSPA_Data) == sizeof(float)); if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { pa_log("Failed to parse module arguments."); @@ -425,12 +512,8 @@ int pa__init(pa_module*m) { cdata = pa_modargs_get_value(ma, "control", NULL); u = pa_xnew0(struct userdata, 1); - u->core = m->core; u->module = m; m->userdata = u; - u->master = master; - u->sink = NULL; - u->sink_input = NULL; u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL); if (!(e = getenv("LADSPA_PATH"))) @@ -694,11 +777,8 @@ int pa__init(pa_module*m) { sink_data.module = m; if (!(sink_data.name = pa_xstrdup(pa_modargs_get_value(ma, "sink_name", NULL)))) sink_data.name = pa_sprintf_malloc("%s.ladspa", master->name); - sink_data.namereg_fail = FALSE; pa_sink_new_data_set_sample_spec(&sink_data, &ss); pa_sink_new_data_set_channel_map(&sink_data, &map); - z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION); - pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", label, z ? z : master->name); pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name); pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter"); pa_proplist_sets(sink_data.proplist, "device.ladspa.module", plugin); @@ -714,7 +794,16 @@ int pa__init(pa_module*m) { goto fail; } - u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY); + if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION))) { + const char *z; + + z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION); + pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", d->Name, z ? z : master->name); + } + + u->sink = pa_sink_new(m->core, &sink_data, + PA_SINK_HW_MUTE_CTRL|PA_SINK_HW_VOLUME_CTRL|PA_SINK_DECIBEL_VOLUME| + (master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY))); pa_sink_new_data_done(&sink_data); if (!u->sink) { @@ -722,26 +811,27 @@ int pa__init(pa_module*m) { goto fail; } - u->sink->parent.process_msg = sink_process_msg; - u->sink->set_state = sink_set_state; - u->sink->update_requested_latency = sink_update_requested_latency; - u->sink->request_rewind = sink_request_rewind; + u->sink->parent.process_msg = sink_process_msg_cb; + u->sink->set_state = sink_set_state_cb; + u->sink->update_requested_latency = sink_update_requested_latency_cb; + u->sink->request_rewind = sink_request_rewind_cb; + u->sink->set_volume = sink_set_volume_cb; + u->sink->set_mute = sink_set_mute_cb; u->sink->userdata = u; pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq); - pa_sink_set_rtpoll(u->sink, master->rtpoll); /* Create sink input */ pa_sink_input_new_data_init(&sink_input_data); sink_input_data.driver = __FILE__; sink_input_data.module = m; - sink_input_data.sink = u->master; + sink_input_data.sink = master; pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "LADSPA Stream"); pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter"); pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss); pa_sink_input_new_data_set_channel_map(&sink_input_data, &map); - pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, PA_SINK_INPUT_DONT_MOVE); + pa_sink_input_new(&u->sink_input, m->core, &sink_input_data); pa_sink_input_new_data_done(&sink_input_data); if (!u->sink_input) @@ -752,11 +842,15 @@ int pa__init(pa_module*m) { u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb; u->sink_input->update_max_request = sink_input_update_max_request_cb; u->sink_input->update_sink_latency_range = sink_input_update_sink_latency_range_cb; + u->sink_input->update_sink_fixed_latency = sink_input_update_sink_fixed_latency_cb; u->sink_input->kill = sink_input_kill_cb; u->sink_input->attach = sink_input_attach_cb; u->sink_input->detach = sink_input_detach_cb; u->sink_input->state_change = sink_input_state_change_cb; u->sink_input->may_move_to = sink_input_may_move_to_cb; + u->sink_input->moving = sink_input_moving_cb; + u->sink_input->volume_changed = sink_input_volume_changed_cb; + u->sink_input->mute_changed = sink_input_mute_changed_cb; u->sink_input->userdata = u; pa_sink_put(u->sink); @@ -797,15 +891,20 @@ void pa__done(pa_module*m) { if (!(u = m->userdata)) return; - if (u->sink) { - pa_sink_unlink(u->sink); - pa_sink_unref(u->sink); - } + /* See comments in sink_input_kill_cb() above regarding + * destruction order! */ - if (u->sink_input) { + if (u->sink_input) pa_sink_input_unlink(u->sink_input); + + if (u->sink) + pa_sink_unlink(u->sink); + + if (u->sink_input) pa_sink_input_unref(u->sink_input); - } + + if (u->sink) + pa_sink_unref(u->sink); for (c = 0; c < u->channels; c++) if (u->handle[c]) { diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c index 06efeb8fa..d0e902f69 100644 --- a/src/modules/module-lirc.c +++ b/src/modules/module-lirc.c @@ -63,6 +63,8 @@ struct userdata { float mute_toggle_save; }; +#define DELTA (PA_VOLUME_NORM/20) + static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) { struct userdata *u = userdata; char *name = NULL, *code = NULL; @@ -119,32 +121,17 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK))) pa_log("Failed to get sink '%s'", u->sink_name); else { - int i; - pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE); - -#define DELTA (PA_VOLUME_NORM/20) + pa_cvolume cv = *pa_sink_get_volume(s, FALSE); switch (volchange) { case UP: - for (i = 0; i < cv.channels; i++) { - if (cv.values[i] < PA_VOLUME_MAX - DELTA) - cv.values[i] += DELTA; - else - cv.values[i] = PA_VOLUME_MAX; - } - - pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE); + pa_cvolume_inc(&cv, DELTA); + pa_sink_set_volume(s, &cv, TRUE, TRUE); break; case DOWN: - for (i = 0; i < cv.channels; i++) { - if (cv.values[i] > DELTA) - cv.values[i] -= DELTA; - else - cv.values[i] = PA_VOLUME_MUTED; - } - - pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE); + pa_cvolume_dec(&cv, DELTA); + pa_sink_set_volume(s, &cv, TRUE, TRUE); break; case MUTE: @@ -156,7 +143,6 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event break; case MUTE_TOGGLE: - pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE); break; diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c new file mode 100644 index 000000000..29c3ddaba --- /dev/null +++ b/src/modules/module-loopback.c @@ -0,0 +1,784 @@ +/*** + This file is part of PulseAudio. + + Copyright 2009 Intel Corporation + Contributor: Pierre-Louis Bossart + + 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 +#endif + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "module-loopback-symdef.h" + +PA_MODULE_AUTHOR("Pierre-Louis Bossart"); +PA_MODULE_DESCRIPTION("Loopback from source to sink"); +PA_MODULE_VERSION(PACKAGE_VERSION); +PA_MODULE_LOAD_ONCE(FALSE); +PA_MODULE_USAGE( + "source= " + "sink= " + "adjust_time= " + "latency_msec= " + "format= " + "rate= " + "channels= " + "channel_map="); + +#define DEFAULT_LATENCY_MSEC 200 + +#define MEMBLOCKQ_MAXLENGTH (1024*1024*16) + +#define DEFAULT_ADJUST_TIME_USEC (10*PA_USEC_PER_SEC) + +struct userdata { + pa_core *core; + pa_module *module; + + pa_sink_input *sink_input; + pa_source_output *source_output; + + pa_asyncmsgq *asyncmsgq; + pa_memblockq *memblockq; + + pa_rtpoll_item *rtpoll_item_read, *rtpoll_item_write; + + pa_time_event *time_event; + pa_usec_t adjust_time; + + int64_t recv_counter; + int64_t send_counter; + + size_t skip; + pa_usec_t latency; + + pa_bool_t in_pop; + size_t min_memblockq_length; + + struct { + int64_t send_counter; + size_t source_output_buffer; + pa_usec_t source_latency; + + int64_t recv_counter; + size_t sink_input_buffer; + pa_usec_t sink_latency; + + size_t min_memblockq_length; + size_t max_request; + } latency_snapshot; +}; + +static const char* const valid_modargs[] = { + "source", + "sink", + "latency", + "format", + "rate", + "channels", + "channel_map", + NULL, +}; + +enum { + SINK_INPUT_MESSAGE_POST = PA_SINK_INPUT_MESSAGE_MAX, + SINK_INPUT_MESSAGE_REWIND, + SINK_INPUT_MESSAGE_LATENCY_SNAPSHOT, + SINK_INPUT_MESSAGE_MAX_REQUEST_CHANGED +}; + +enum { + SOURCE_OUTPUT_MESSAGE_LATENCY_SNAPSHOT +}; + +/* Called from main context */ +static void teardown(struct userdata *u) { + pa_assert(u); + pa_assert_ctl_context(); + + if (u->sink_input) + pa_sink_input_unlink(u->sink_input); + + if (u->source_output) + pa_source_output_unlink(u->source_output); + + if (u->sink_input) { + pa_sink_input_unref(u->sink_input); + u->sink_input = NULL; + } + + if (u->source_output) { + pa_source_output_unref(u->source_output); + u->source_output = NULL; + } +} + +/* Called from main context */ +static void adjust_rates(struct userdata *u) { + size_t buffer, fs; + uint32_t old_rate, base_rate, new_rate; + pa_usec_t buffer_latency; + + pa_assert(u); + pa_assert_ctl_context(); + + pa_asyncmsgq_send(u->source_output->source->asyncmsgq, PA_MSGOBJECT(u->source_output), SOURCE_OUTPUT_MESSAGE_LATENCY_SNAPSHOT, NULL, 0, NULL); + pa_asyncmsgq_send(u->sink_input->sink->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_LATENCY_SNAPSHOT, NULL, 0, NULL); + + buffer = + u->latency_snapshot.sink_input_buffer + + u->latency_snapshot.source_output_buffer; + + if (u->latency_snapshot.recv_counter <= u->latency_snapshot.send_counter) + buffer += (size_t) (u->latency_snapshot.send_counter - u->latency_snapshot.recv_counter); + else + buffer += PA_CLIP_SUB(buffer, (size_t) (u->latency_snapshot.recv_counter - u->latency_snapshot.send_counter)); + + buffer_latency = pa_bytes_to_usec(buffer, &u->sink_input->sample_spec); + + pa_log_info("Loopback overall latency is %0.2f ms + %0.2f ms + %0.2f ms = %0.2f ms", + (double) u->latency_snapshot.sink_latency / PA_USEC_PER_MSEC, + (double) buffer_latency / PA_USEC_PER_MSEC, + (double) u->latency_snapshot.source_latency / PA_USEC_PER_MSEC, + ((double) u->latency_snapshot.sink_latency + buffer_latency + u->latency_snapshot.source_latency) / PA_USEC_PER_MSEC); + + pa_log_info("Should buffer %zu bytes, buffered at minimum %zu bytes", + u->latency_snapshot.max_request*2, + u->latency_snapshot.min_memblockq_length); + + fs = pa_frame_size(&u->sink_input->sample_spec); + old_rate = u->sink_input->sample_spec.rate; + base_rate = u->source_output->sample_spec.rate; + + if (u->latency_snapshot.min_memblockq_length < u->latency_snapshot.max_request*2) + new_rate = base_rate - (((u->latency_snapshot.max_request*2 - u->latency_snapshot.min_memblockq_length) / fs) *PA_USEC_PER_SEC)/u->adjust_time; + else + new_rate = base_rate + (((u->latency_snapshot.min_memblockq_length - u->latency_snapshot.max_request*2) / fs) *PA_USEC_PER_SEC)/u->adjust_time; + + pa_log_info("Old rate %lu Hz, new rate %lu Hz", (unsigned long) old_rate, (unsigned long) new_rate); + + pa_sink_input_set_rate(u->sink_input, new_rate); + + pa_core_rttime_restart(u->core, u->time_event, pa_rtclock_now() + u->adjust_time); +} + +/* Called from main context */ +static void time_callback(pa_mainloop_api *a, pa_time_event *e, const struct timeval *t, void *userdata) { + struct userdata *u = userdata; + + pa_assert(u); + pa_assert(a); + pa_assert(u->time_event == e); + + adjust_rates(u); +} + +/* Called from input thread context */ +static void source_output_push_cb(pa_source_output *o, const pa_memchunk *chunk) { + struct userdata *u; + pa_memchunk copy; + + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); + pa_assert_se(u = o->userdata); + + if (u->skip > chunk->length) { + u->skip -= chunk->length; + return; + } + + if (u->skip > 0) { + copy = *chunk; + copy.index += u->skip; + copy.length -= u->skip; + u->skip = 0; + + chunk = © + } + + pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, chunk, NULL); + u->send_counter += (int64_t) chunk->length; +} + +/* Called from input thread context */ +static void source_output_process_rewind_cb(pa_source_output *o, size_t nbytes) { + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); + pa_assert_se(u = o->userdata); + + pa_asyncmsgq_post(u->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_REWIND, NULL, (int64_t) nbytes, NULL, NULL); + u->send_counter -= (int64_t) nbytes; +} + +/* Called from output thread context */ +static int source_output_process_msg_cb(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) { + struct userdata *u = PA_SOURCE_OUTPUT(obj)->userdata; + + switch (code) { + + case SOURCE_OUTPUT_MESSAGE_LATENCY_SNAPSHOT: { + size_t length; + + length = pa_memblockq_get_length(u->source_output->thread_info.delay_memblockq); + + u->latency_snapshot.send_counter = u->send_counter; + u->latency_snapshot.source_output_buffer = u->source_output->thread_info.resampler ? pa_resampler_result(u->source_output->thread_info.resampler, length) : length; + u->latency_snapshot.source_latency = pa_source_get_latency_within_thread(u->source_output->source); + + return 0; + } + } + + return pa_source_output_process_msg(obj, code, data, offset, chunk); +} + +/* Called from output thread context */ +static void source_output_attach_cb(pa_source_output *o) { + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); + pa_assert_se(u = o->userdata); + + u->rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write( + o->source->thread_info.rtpoll, + PA_RTPOLL_LATE, + u->asyncmsgq); +} + +/* Called from output thread context */ +static void source_output_detach_cb(pa_source_output *o) { + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); + pa_assert_se(u = o->userdata); + + if (u->rtpoll_item_write) { + pa_rtpoll_item_free(u->rtpoll_item_write); + u->rtpoll_item_write = NULL; + } +} + +/* Called from output thread context */ +static void source_output_state_change_cb(pa_source_output *o, pa_source_output_state_t state) { + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); + pa_assert_se(u = o->userdata); + + if (PA_SOURCE_OUTPUT_IS_LINKED(state) && o->thread_info.state == PA_SOURCE_OUTPUT_INIT) { + + u->skip = pa_usec_to_bytes(PA_CLIP_SUB(pa_source_get_latency_within_thread(o->source), + u->latency), + &o->sample_spec); + + pa_log_info("Skipping %lu bytes", (unsigned long) u->skip); + } +} + +/* Called from main thread */ +static void source_output_kill_cb(pa_source_output *o) { + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_assert_ctl_context(); + pa_assert_se(u = o->userdata); + + teardown(u); + pa_module_unload_request(u->module, TRUE); +} + +/* Called from main thread */ +static pa_bool_t source_output_may_move_to_cb(pa_source_output *o, pa_source *dest) { + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_assert_ctl_context(); + pa_assert_se(u = o->userdata); + + return dest != u->sink_input->sink->monitor_source; +} + +/* Called from main thread */ +static void source_output_moving_cb(pa_source_output *o, pa_source *dest) { + pa_proplist *p; + const char *n; + struct userdata *u; + + pa_source_output_assert_ref(o); + pa_assert_ctl_context(); + pa_assert_se(u = o->userdata); + + p = pa_proplist_new(); + pa_proplist_setf(p, PA_PROP_MEDIA_NAME, "Loopback of %s", pa_strnull(pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION))); + + if ((n = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_ICON_NAME))) + pa_proplist_sets(p, PA_PROP_MEDIA_ICON_NAME, n); + + pa_sink_input_update_proplist(u->sink_input, PA_UPDATE_REPLACE, p); + pa_proplist_free(p); +} + +/* Called from output thread context */ +static void update_min_memblockq_length(struct userdata *u) { + size_t length; + + pa_assert(u); + pa_sink_input_assert_io_context(u->sink_input); + + length = pa_memblockq_get_length(u->memblockq); + + if (u->min_memblockq_length == (size_t) -1 || + length < u->min_memblockq_length) + u->min_memblockq_length = length; +} + +/* Called from output thread context */ +static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + pa_assert_se(u = i->userdata); + pa_assert(chunk); + + u->in_pop = TRUE; + while (pa_asyncmsgq_process_one(u->asyncmsgq) > 0) + ; + u->in_pop = FALSE; + + if (pa_memblockq_peek(u->memblockq, chunk) < 0) { + pa_log_info("Coud not peek into queue"); + return -1; + } + + chunk->length = PA_MIN(chunk->length, nbytes); + pa_memblockq_drop(u->memblockq, chunk->length); + + update_min_memblockq_length(u); + + return 0; +} + +/* Called from output thread context */ +static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + pa_assert_se(u = i->userdata); + + pa_memblockq_rewind(u->memblockq, nbytes); +} + +/* Called from output thread context */ +static int sink_input_process_msg_cb(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) { + struct userdata *u = PA_SINK_INPUT(obj)->userdata; + + switch (code) { + + case PA_SINK_INPUT_MESSAGE_GET_LATENCY: { + pa_usec_t *r = data; + + pa_sink_input_assert_io_context(u->sink_input); + + *r = pa_bytes_to_usec(pa_memblockq_get_length(u->memblockq), &u->sink_input->sample_spec); + + /* Fall through, the default handler will add in the extra + * latency added by the resampler */ + break; + } + + case SINK_INPUT_MESSAGE_POST: + + pa_sink_input_assert_io_context(u->sink_input); + + if (PA_SINK_IS_OPENED(u->sink_input->sink->thread_info.state)) + pa_memblockq_push_align(u->memblockq, chunk); + else + pa_memblockq_flush_write(u->memblockq); + + update_min_memblockq_length(u); + + /* Is this the end of an underrun? Then let's start things + * right-away */ + if (!u->in_pop && + u->sink_input->thread_info.underrun_for > 0 && + pa_memblockq_is_readable(u->memblockq)) { + + pa_log_debug("Requesting rewind due to end of underrun."); + pa_sink_input_request_rewind(u->sink_input, + (size_t) (u->sink_input->thread_info.underrun_for == (size_t) -1 ? 0 : u->sink_input->thread_info.underrun_for), + FALSE, TRUE, FALSE); + } + + u->recv_counter += (int64_t) chunk->length; + + return 0; + + case SINK_INPUT_MESSAGE_REWIND: + + pa_sink_input_assert_io_context(u->sink_input); + + if (PA_SINK_IS_OPENED(u->sink_input->sink->thread_info.state)) + pa_memblockq_seek(u->memblockq, -offset, PA_SEEK_RELATIVE, TRUE); + else + pa_memblockq_flush_write(u->memblockq); + + u->recv_counter -= offset; + + update_min_memblockq_length(u); + + return 0; + + case SINK_INPUT_MESSAGE_LATENCY_SNAPSHOT: { + size_t length; + + update_min_memblockq_length(u); + + length = pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq); + + u->latency_snapshot.recv_counter = u->recv_counter; + u->latency_snapshot.sink_input_buffer = + pa_memblockq_get_length(u->memblockq) + + (u->sink_input->thread_info.resampler ? pa_resampler_request(u->sink_input->thread_info.resampler, length) : length); + u->latency_snapshot.sink_latency = pa_sink_get_latency_within_thread(u->sink_input->sink); + + u->latency_snapshot.max_request = pa_sink_input_get_max_request(u->sink_input); + + u->latency_snapshot.min_memblockq_length = u->min_memblockq_length; + u->min_memblockq_length = (size_t) -1; + + return 0; + } + + case SINK_INPUT_MESSAGE_MAX_REQUEST_CHANGED: { + /* This message is sent from the IO thread to the main + * thread! So don't be confused. All the user cases above + * are executed in thread context, but this one is not! */ + + pa_assert_ctl_context(); + + adjust_rates(u); + return 0; + } + } + + return pa_sink_input_process_msg(obj, code, data, offset, chunk); +} + +/* Called from output thread context */ +static void sink_input_attach_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + pa_assert_se(u = i->userdata); + + u->rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read( + i->sink->thread_info.rtpoll, + PA_RTPOLL_LATE, + u->asyncmsgq); + + pa_memblockq_set_prebuf(u->memblockq, pa_sink_input_get_max_request(i)*2); + pa_memblockq_set_maxrewind(u->memblockq, pa_sink_input_get_max_rewind(i)); + + u->min_memblockq_length = (size_t) -1; +} + +/* Called from output thread context */ +static void sink_input_detach_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + pa_assert_se(u = i->userdata); + + if (u->rtpoll_item_read) { + pa_rtpoll_item_free(u->rtpoll_item_read); + u->rtpoll_item_read = NULL; + } +} + +/* Called from output thread context */ +static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + pa_assert_se(u = i->userdata); + + pa_memblockq_set_maxrewind(u->memblockq, nbytes); +} + +/* Called from output thread context */ +static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + pa_assert_se(u = i->userdata); + + pa_memblockq_set_prebuf(u->memblockq, nbytes*2); + pa_log_info("Max request changed"); + pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_MAX_REQUEST_CHANGED, NULL, 0, NULL, NULL); +} + +/* Called from main thread */ +static void sink_input_kill_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); + pa_assert_se(u = i->userdata); + + teardown(u); + pa_module_unload_request(u->module, TRUE); +} + +/* Called from main thread */ +static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) { + struct userdata *u; + pa_proplist *p; + const char *n; + + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); + pa_assert_se(u = i->userdata); + + p = pa_proplist_new(); + pa_proplist_setf(p, PA_PROP_MEDIA_NAME, "Loopback to %s", pa_strnull(pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION))); + + if ((n = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_ICON_NAME))) + pa_proplist_sets(p, PA_PROP_MEDIA_ICON_NAME, n); + + pa_source_output_update_proplist(u->source_output, PA_UPDATE_REPLACE, p); + pa_proplist_free(p); +} + +/* Called from main thread */ +static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); + pa_assert_se(u = i->userdata); + + if (!u->source_output->source->monitor_of) + return TRUE; + + return dest != u->source_output->source->monitor_of; +} + +int pa__init(pa_module *m) { + pa_modargs *ma = NULL; + struct userdata *u; + pa_sink *sink; + pa_sink_input_new_data sink_input_data; + pa_source *source; + pa_source_output_new_data source_output_data; + uint32_t latency_msec; + pa_sample_spec ss; + pa_channel_map map; + pa_memchunk silence; + uint32_t adjust_time_sec; + const char *n; + + pa_assert(m); + + if (!(ma = pa_modargs_new(m->argument, valid_modargs))) { + pa_log("Failed to parse module arguments"); + goto fail; + } + + if (!(source = pa_namereg_get(m->core, pa_modargs_get_value(ma, "source", NULL), PA_NAMEREG_SOURCE))) { + pa_log("No such source."); + goto fail; + } + + if (!(sink = pa_namereg_get(m->core, pa_modargs_get_value(ma, "sink", NULL), PA_NAMEREG_SINK))) { + pa_log("No such sink."); + goto fail; + } + + ss = sink->sample_spec; + map = sink->channel_map; + if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) { + pa_log("Invalid sample format specification or channel map"); + goto fail; + } + + latency_msec = DEFAULT_LATENCY_MSEC; + if (pa_modargs_get_value_u32(ma, "latency_msec", &latency_msec) < 0 || latency_msec < 1 || latency_msec > 2000) { + pa_log("Invalid latency specification"); + goto fail; + } + + m->userdata = u = pa_xnew0(struct userdata, 1); + u->core = m->core; + u->module = m; + u->latency = (pa_usec_t) latency_msec * PA_USEC_PER_MSEC; + + adjust_time_sec = DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC; + if (pa_modargs_get_value_u32(ma, "adjust_time", &adjust_time_sec) < 0) { + pa_log("Failed to parse adjust_time value"); + goto fail; + } + + if (adjust_time_sec != DEFAULT_ADJUST_TIME_USEC / PA_USEC_PER_SEC) + u->adjust_time = adjust_time_sec * PA_USEC_PER_SEC; + else + u->adjust_time = DEFAULT_ADJUST_TIME_USEC; + + pa_sink_input_new_data_init(&sink_input_data); + sink_input_data.driver = __FILE__; + sink_input_data.module = m; + sink_input_data.sink = sink; + + pa_proplist_setf(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Loopback of %s", + pa_strnull(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION))); + if ((n = pa_proplist_gets(source->proplist, PA_PROP_DEVICE_ICON_NAME))) + pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ICON_NAME, n); + pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "abstract"); + pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss); + pa_sink_input_new_data_set_channel_map(&sink_input_data, &map); + sink_input_data.flags = PA_SINK_INPUT_VARIABLE_RATE; + + pa_sink_input_new(&u->sink_input, m->core, &sink_input_data); + pa_sink_input_new_data_done(&sink_input_data); + + if (!u->sink_input) + goto fail; + + u->sink_input->parent.process_msg = sink_input_process_msg_cb; + u->sink_input->pop = sink_input_pop_cb; + u->sink_input->process_rewind = sink_input_process_rewind_cb; + u->sink_input->kill = sink_input_kill_cb; + u->sink_input->attach = sink_input_attach_cb; + u->sink_input->detach = sink_input_detach_cb; + u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb; + u->sink_input->update_max_request = sink_input_update_max_request_cb; + u->sink_input->may_move_to = sink_input_may_move_to_cb; + u->sink_input->moving = sink_input_moving_cb; + u->sink_input->userdata = u; + + pa_sink_input_set_requested_latency(u->sink_input, u->latency/3); + + pa_source_output_new_data_init(&source_output_data); + source_output_data.driver = __FILE__; + source_output_data.module = m; + source_output_data.source = source; + pa_proplist_setf(source_output_data.proplist, PA_PROP_MEDIA_NAME, "Loopback to %s", + pa_strnull(pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_DESCRIPTION))); + if ((n = pa_proplist_gets(sink->proplist, PA_PROP_DEVICE_ICON_NAME))) + pa_proplist_sets(source_output_data.proplist, PA_PROP_MEDIA_ICON_NAME, n); + pa_proplist_sets(source_output_data.proplist, PA_PROP_MEDIA_ROLE, "abstract"); + pa_source_output_new_data_set_sample_spec(&source_output_data, &ss); + pa_sink_input_new_data_set_channel_map(&sink_input_data, &map); + + pa_source_output_new(&u->source_output, m->core, &source_output_data); + pa_source_output_new_data_done(&source_output_data); + + if (!u->source_output) + goto fail; + + u->source_output->parent.process_msg = source_output_process_msg_cb; + u->source_output->push = source_output_push_cb; + u->source_output->process_rewind = source_output_process_rewind_cb; + u->source_output->kill = source_output_kill_cb; + u->source_output->attach = source_output_attach_cb; + u->source_output->detach = source_output_detach_cb; + u->source_output->state_change = source_output_state_change_cb; + u->source_output->may_move_to = source_output_may_move_to_cb; + u->source_output->moving = source_output_moving_cb; + u->source_output->userdata = u; + + pa_source_output_set_requested_latency(u->source_output, u->latency/3); + + pa_sink_input_get_silence(u->sink_input, &silence); + u->memblockq = pa_memblockq_new( + 0, /* idx */ + MEMBLOCKQ_MAXLENGTH, /* maxlength */ + MEMBLOCKQ_MAXLENGTH, /* tlength */ + pa_frame_size(&ss), /* base */ + 0, /* prebuf */ + 0, /* minreq */ + 0, /* maxrewind */ + &silence); /* silence frame */ + pa_memblock_unref(silence.memblock); + + u->asyncmsgq = pa_asyncmsgq_new(0); + + pa_sink_input_put(u->sink_input); + pa_source_output_put(u->source_output); + + if (u->adjust_time > 0) + u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time, time_callback, u); + + pa_modargs_free(ma); + return 0; + +fail: + if (ma) + pa_modargs_free(ma); + + pa__done(m); + + return -1; +} + +void pa__done(pa_module*m) { + struct userdata *u; + + pa_assert(m); + + if (!(u = m->userdata)) + return; + + teardown(u); + + if (u->memblockq) + pa_memblockq_free(u->memblockq); + + if (u->asyncmsgq) + pa_asyncmsgq_unref(u->asyncmsgq); + + if (u->time_event) + u->core->mainloop->time_free(u->time_event); + + pa_xfree(u); +} diff --git a/src/modules/module-match.c b/src/modules/module-match.c index 625f2a8bb..0bd781d2b 100644 --- a/src/modules/module-match.c +++ b/src/modules/module-match.c @@ -216,7 +216,7 @@ static void callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, v pa_cvolume cv; pa_log_debug("changing volume of sink input '%s' to 0x%03x", n, r->volume); pa_cvolume_set(&cv, si->sample_spec.channels, r->volume); - pa_sink_input_set_volume(si, &cv, TRUE, TRUE); + pa_sink_input_set_volume(si, &cv, TRUE, FALSE); } } } @@ -243,6 +243,9 @@ int pa__init(pa_module*m) { if (load_rules(u, pa_modargs_get_value(ma, "table", NULL)) < 0) goto fail; + /* FIXME: Doing this asynchronously is just broken. This needs to + * use a hook! */ + u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_SINK_INPUT, callback, u); pa_modargs_free(ma); diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c index b30fae512..516bf4137 100644 --- a/src/modules/module-mmkbd-evdev.c +++ b/src/modules/module-mmkbd-evdev.c @@ -65,6 +65,8 @@ struct userdata { pa_module *module; }; +#define DELTA (PA_VOLUME_NORM/20) + static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) { struct userdata *u = userdata; @@ -85,14 +87,27 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event } if (ev.type == EV_KEY && (ev.value == 1 || ev.value == 2)) { - enum { INVALID, UP, DOWN, MUTE_TOGGLE } volchange = INVALID; + enum { + INVALID, + UP, + DOWN, + MUTE_TOGGLE + } volchange = INVALID; pa_log_debug("Key code=%u, value=%u", ev.code, ev.value); switch (ev.code) { - case KEY_VOLUMEDOWN: volchange = DOWN; break; - case KEY_VOLUMEUP: volchange = UP; break; - case KEY_MUTE: volchange = MUTE_TOGGLE; break; + case KEY_VOLUMEDOWN: + volchange = DOWN; + break; + + case KEY_VOLUMEUP: + volchange = UP; + break; + + case KEY_MUTE: + volchange = MUTE_TOGGLE; + break; } if (volchange != INVALID) { @@ -101,36 +116,20 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK))) pa_log("Failed to get sink '%s'", u->sink_name); else { - int i; - pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE); - -#define DELTA (PA_VOLUME_NORM/20) + pa_cvolume cv = *pa_sink_get_volume(s, FALSE); switch (volchange) { case UP: - for (i = 0; i < cv.channels; i++) { - if (cv.values[i] < PA_VOLUME_MAX - DELTA) - cv.values[i] += DELTA; - else - cv.values[i] = PA_VOLUME_MAX; - } - - pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE); + pa_cvolume_inc(&cv, DELTA); + pa_sink_set_volume(s, &cv, TRUE, TRUE); break; case DOWN: - for (i = 0; i < cv.channels; i++) { - if (cv.values[i] > DELTA) - cv.values[i] -= DELTA; - else - cv.values[i] = PA_VOLUME_MUTED; - } - - pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE); + pa_cvolume_dec(&cv, DELTA); + pa_sink_set_volume(s, &cv, TRUE, TRUE); break; case MUTE_TOGGLE: - pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE); break; diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c index 36c50b053..74a2ebb1f 100644 --- a/src/modules/module-null-sink.c +++ b/src/modules/module-null-sink.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -51,7 +52,7 @@ #include "module-null-sink-symdef.h" PA_MODULE_AUTHOR("Lennart Poettering"); -PA_MODULE_DESCRIPTION("Clocked NULL sink"); +PA_MODULE_DESCRIPTION(_("Clocked NULL sink")); PA_MODULE_VERSION(PACKAGE_VERSION); PA_MODULE_LOAD_ONCE(FALSE); PA_MODULE_USAGE( @@ -287,7 +288,7 @@ int pa__init(pa_module*m) { pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME)); pa_sink_new_data_set_sample_spec(&data, &ss); pa_sink_new_data_set_channel_map(&data, &map); - pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, pa_modargs_get_value(ma, "description", "Null Output")); + pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, pa_modargs_get_value(ma, "description", _("Null Output"))); pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "abstract"); if (pa_modargs_get_proplist(ma, "sink_properties", data.proplist, PA_UPDATE_REPLACE) < 0) { diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c index 8a7dc8465..9c1693270 100644 --- a/src/modules/module-pipe-sink.c +++ b/src/modules/module-pipe-sink.c @@ -122,7 +122,7 @@ static int process_render(struct userdata *u) { pa_assert(u); if (u->memchunk.length <= 0) - pa_sink_render(u->sink, PIPE_BUF, &u->memchunk); + pa_sink_render(u->sink, pa_pipe_buf(u->fd), &u->memchunk); pa_assert(u->memchunk.length > 0); @@ -299,8 +299,8 @@ int pa__init(pa_module*m) { pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); pa_sink_set_rtpoll(u->sink, u->rtpoll); - pa_sink_set_max_request(u->sink, PIPE_BUF); - pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(PIPE_BUF, &u->sink->sample_spec)); + pa_sink_set_max_request(u->sink, pa_pipe_buf(u->fd)); + pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(pa_pipe_buf(u->fd), &u->sink->sample_spec)); u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1); pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL); diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c index e5609fb59..49104f8d5 100644 --- a/src/modules/module-pipe-source.c +++ b/src/modules/module-pipe-source.c @@ -142,7 +142,7 @@ static void thread_func(void *userdata) { void *p; if (!u->memchunk.memblock) { - u->memchunk.memblock = pa_memblock_new(u->core->mempool, PIPE_BUF); + u->memchunk.memblock = pa_memblock_new(u->core->mempool, pa_pipe_buf(u->fd)); u->memchunk.index = u->memchunk.length = 0; } diff --git a/src/modules/module-position-event-sounds.c b/src/modules/module-position-event-sounds.c index e191ec33c..fa8f73d82 100644 --- a/src/modules/module-position-event-sounds.c +++ b/src/modules/module-position-event-sounds.c @@ -57,35 +57,68 @@ struct userdata { pa_hook_slot *sink_input_fixate_hook_slot; }; +static int parse_pos(const char *pos, double *f) { + + if (pa_atod(pos, f) < 0) { + pa_log_warn("Failed to parse hpos/vpos property '%s'.", pos); + return -1; + } + + if (*f < 0.0 || *f > 1.0) { + pa_log_warn("Property hpos/vpos out of range %0.2f", *f); + return -1; + } + + return 0; +} + static pa_hook_result_t sink_input_fixate_hook_callback(pa_core *core, pa_sink_input_new_data *data, struct userdata *u) { - const char *hpos; + const char *hpos, *vpos, *role; double f; char t[PA_CVOLUME_SNPRINT_MAX]; pa_cvolume v; pa_assert(data); + if (!(role = pa_proplist_gets(data->proplist, PA_PROP_MEDIA_ROLE))) + return PA_HOOK_OK; + + if (!pa_streq(role, "event")) + return PA_HOOK_OK; + if (!(hpos = pa_proplist_gets(data->proplist, PA_PROP_EVENT_MOUSE_HPOS))) + hpos = pa_proplist_gets(data->proplist, PA_PROP_WINDOW_HPOS); + + if (!(vpos = pa_proplist_gets(data->proplist, PA_PROP_EVENT_MOUSE_VPOS))) + vpos = pa_proplist_gets(data->proplist, PA_PROP_WINDOW_VPOS); + + if (!hpos && !vpos) return PA_HOOK_OK; - if (pa_atod(hpos, &f) < 0) { - pa_log_warn("Failed to parse "PA_PROP_EVENT_MOUSE_HPOS" property '%s'.", hpos); - return PA_HOOK_OK; + pa_cvolume_reset(&v, data->sink->sample_spec.channels); + + if (hpos) { + if (parse_pos(hpos, &f) < 0) + return PA_HOOK_OK; + + if (pa_channel_map_can_balance(&data->sink->channel_map)) { + pa_log_debug("Positioning event sound '%s' horizontally at %0.2f.", pa_strnull(pa_proplist_gets(data->proplist, PA_PROP_EVENT_ID)), f); + pa_cvolume_set_balance(&v, &data->sink->channel_map, f*2.0-1.0); + } } - if (f < 0.0 || f > 1.0) { - pa_log_warn("Property "PA_PROP_EVENT_MOUSE_HPOS" out of range %0.2f", f); - return PA_HOOK_OK; + if (vpos) { + if (parse_pos(vpos, &f) < 0) + return PA_HOOK_OK; + + if (pa_channel_map_can_fade(&data->sink->channel_map)) { + pa_log_debug("Positioning event sound '%s' vertically at %0.2f.", pa_strnull(pa_proplist_gets(data->proplist, PA_PROP_EVENT_ID)), f); + pa_cvolume_set_fade(&v, &data->sink->channel_map, f*2.0-1.0); + } } - pa_log_debug("Positioning event sound '%s' at %0.2f.", pa_strnull(pa_proplist_gets(data->proplist, PA_PROP_EVENT_ID)), f); - - pa_cvolume_reset(&v, data->sample_spec.channels); - pa_cvolume_set_balance(&v, &data->channel_map, f*2.0-1.0); - pa_log_debug("Final volume factor %s.", pa_cvolume_snprint(t, sizeof(t), &v)); - - pa_sink_input_new_data_apply_volume_factor(data, &v); + pa_sink_input_new_data_apply_volume_factor_sink(data, &v); return PA_HOOK_OK; } diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c index 119f5b9f5..43748bd0f 100644 --- a/src/modules/module-remap-sink.c +++ b/src/modules/module-remap-sink.c @@ -1,7 +1,7 @@ /*** This file is part of PulseAudio. - Copyright 2004-2008 Lennart Poettering + Copyright 2004-2009 Lennart Poettering PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published @@ -48,17 +48,18 @@ PA_MODULE_USAGE( "master= " "master_channel_map= " "format= " - "channels= " "rate= " + "channels= " "channel_map= " "remix="); struct userdata { - pa_core *core; pa_module *module; - pa_sink *sink, *master; + pa_sink *sink; pa_sink_input *sink_input; + + pa_bool_t auto_desc; }; static const char* const valid_modargs[] = { @@ -80,19 +81,24 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse switch (code) { - case PA_SINK_MESSAGE_GET_LATENCY: { - pa_usec_t usec = 0; + case PA_SINK_MESSAGE_GET_LATENCY: - /* Get the latency of the master sink */ - if (PA_MSGOBJECT(u->master)->process_msg(PA_MSGOBJECT(u->master), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0) - usec = 0; + /* The sink is _put() before the sink input is, so let's + * make sure we don't access it yet */ + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) || + !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) { + *((pa_usec_t*) data) = 0; + return 0; + } - /* Add the latency internal to our sink input on top */ - usec += pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->master->sample_spec); + *((pa_usec_t*) data) = + /* Get the latency of the master sink */ + pa_sink_get_latency_within_thread(u->sink_input->sink) + + + /* Add the latency internal to our sink input on top */ + pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec); - *((pa_usec_t*) data) = usec; return 0; - } } return pa_sink_process_msg(o, code, data, offset, chunk); @@ -105,12 +111,11 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) { pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); - if (PA_SINK_IS_LINKED(state) && - u->sink_input && - PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input))) - - pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED); + if (!PA_SINK_IS_LINKED(state) || + !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input))) + return 0; + pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED); return 0; } @@ -121,6 +126,10 @@ static void sink_request_rewind(pa_sink *s) { pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) || + !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) + return; + pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes, TRUE, FALSE, FALSE); } @@ -131,6 +140,10 @@ static void sink_update_requested_latency(pa_sink *s) { pa_sink_assert_ref(s); pa_assert_se(u = s->userdata); + if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) || + !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) + return; + /* Just hand this one over to the master sink */ pa_sink_input_set_requested_latency_within_thread( u->sink_input, @@ -145,8 +158,8 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk pa_assert(chunk); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state)) - return -1; + /* Hmm, process any rewind request that might be queued up */ + pa_sink_process_rewind(u->sink, 0); pa_sink_render(u->sink, nbytes, chunk); return 0; @@ -160,9 +173,6 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state)) - return; - if (u->sink->thread_info.rewind_nbytes > 0) { amount = PA_MIN(u->sink->thread_info.rewind_nbytes, nbytes); u->sink->thread_info.rewind_nbytes = 0; @@ -178,9 +188,6 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_set_max_rewind_within_thread(u->sink, nbytes); } @@ -191,9 +198,6 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_set_max_request_within_thread(u->sink, nbytes); } @@ -204,12 +208,19 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); } +/* Called from I/O thread context */ +static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_se(u = i->userdata); + + pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); +} + /* Called from I/O thread context */ static void sink_input_detach_cb(pa_sink_input *i) { struct userdata *u; @@ -217,11 +228,8 @@ static void sink_input_detach_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; - pa_sink_detach_within_thread(u->sink); - pa_sink_set_asyncmsgq(u->sink, NULL); + pa_sink_set_rtpoll(u->sink, NULL); } @@ -232,14 +240,13 @@ static void sink_input_attach_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state)) - return; + pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll); + pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); + pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency); + pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i)); + pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i)); - pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq); - pa_sink_set_rtpoll(u->sink, i->sink->rtpoll); pa_sink_attach_within_thread(u->sink); - - pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency); } /* Called from main context */ @@ -249,13 +256,17 @@ static void sink_input_kill_cb(pa_sink_input *i) { pa_sink_input_assert_ref(i); pa_assert_se(u = i->userdata); - pa_sink_unlink(u->sink); + /* The order here matters! We first kill the sink input, followed + * by the sink. That means the sink callbacks must be protected + * against an unconnected sink input! */ pa_sink_input_unlink(u->sink_input); + pa_sink_unlink(u->sink); + + pa_sink_input_unref(u->sink_input); + u->sink_input = NULL; pa_sink_unref(u->sink); u->sink = NULL; - pa_sink_input_unref(u->sink_input); - u->sink_input = NULL; pa_module_unload_request(u->module, TRUE); } @@ -286,12 +297,37 @@ static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) { return u->sink != dest; } +/* Called from main context */ +static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) { + struct userdata *u; + + pa_sink_input_assert_ref(i); + pa_assert_se(u = i->userdata); + + if (dest) { + pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq); + pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags); + } else + pa_sink_set_asyncmsgq(u->sink, NULL); + + if (u->auto_desc && dest) { + const char *k; + pa_proplist *pl; + + pl = pa_proplist_new(); + k = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION); + pa_proplist_setf(pl, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : dest->name); + + pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl); + pa_proplist_free(pl); + } +} + int pa__init(pa_module*m) { struct userdata *u; pa_sample_spec ss; pa_channel_map sink_map, stream_map; pa_modargs *ma; - const char *k; pa_sink *master; pa_sink_input_new_data sink_input_data; pa_sink_new_data sink_data; @@ -336,12 +372,8 @@ int pa__init(pa_module*m) { } u = pa_xnew0(struct userdata, 1); - u->core = m->core; u->module = m; m->userdata = u; - u->master = master; - u->sink = NULL; - u->sink_input = NULL; /* Create sink */ pa_sink_new_data_init(&sink_data); @@ -351,8 +383,6 @@ int pa__init(pa_module*m) { sink_data.name = pa_sprintf_malloc("%s.remapped", master->name); pa_sink_new_data_set_sample_spec(&sink_data, &ss); pa_sink_new_data_set_channel_map(&sink_data, &sink_map); - k = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION); - pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : master->name); pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name); pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter"); @@ -362,7 +392,14 @@ int pa__init(pa_module*m) { goto fail; } - u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY); + if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION))) { + const char *k; + + k = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION); + pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : master->name); + } + + u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)); pa_sink_new_data_done(&sink_data); if (!u->sink) { @@ -377,19 +414,19 @@ int pa__init(pa_module*m) { u->sink->userdata = u; pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq); - pa_sink_set_rtpoll(u->sink, master->rtpoll); /* Create sink input */ pa_sink_input_new_data_init(&sink_input_data); sink_input_data.driver = __FILE__; sink_input_data.module = m; - sink_input_data.sink = u->master; + sink_input_data.sink = master; pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Remapped Stream"); pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter"); pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss); pa_sink_input_new_data_set_channel_map(&sink_input_data, &stream_map); + sink_input_data.flags = (remix ? 0 : PA_SINK_INPUT_NO_REMIX); - pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, PA_SINK_INPUT_DONT_MOVE | (remix ? 0 : PA_SINK_INPUT_NO_REMIX)); + pa_sink_input_new(&u->sink_input, m->core, &sink_input_data); pa_sink_input_new_data_done(&sink_input_data); if (!u->sink_input) @@ -400,11 +437,13 @@ int pa__init(pa_module*m) { u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb; u->sink_input->update_max_request = sink_input_update_max_request_cb; u->sink_input->update_sink_latency_range = sink_input_update_sink_latency_range_cb; + u->sink_input->update_sink_fixed_latency = sink_input_update_sink_fixed_latency_cb; u->sink_input->attach = sink_input_attach_cb; u->sink_input->detach = sink_input_detach_cb; u->sink_input->kill = sink_input_kill_cb; u->sink_input->state_change = sink_input_state_change_cb; u->sink_input->may_move_to = sink_input_may_move_to_cb; + u->sink_input->moving = sink_input_moving_cb; u->sink_input->userdata = u; pa_sink_put(u->sink); @@ -440,15 +479,20 @@ void pa__done(pa_module*m) { if (!(u = m->userdata)) return; - if (u->sink) { - pa_sink_unlink(u->sink); - pa_sink_unref(u->sink); - } + /* See comments in sink_input_kill_cb() above regarding + * destruction order! */ - if (u->sink_input) { + if (u->sink_input) pa_sink_input_unlink(u->sink_input); + + if (u->sink) + pa_sink_unlink(u->sink); + + if (u->sink_input) pa_sink_input_unref(u->sink_input); - } + + if (u->sink) + pa_sink_unref(u->sink); pa_xfree(u); } diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c index c23fecebe..722d84b29 100644 --- a/src/modules/module-rescue-streams.c +++ b/src/modules/module-rescue-streams.c @@ -45,13 +45,46 @@ static const char* const valid_modargs[] = { }; struct userdata { - pa_hook_slot *sink_slot, *source_slot; + pa_hook_slot + *sink_unlink_slot, + *source_unlink_slot, + *sink_input_move_fail_slot, + *source_output_move_fail_slot; }; -static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) { +static pa_sink* find_evacuation_sink(pa_core *c, pa_sink_input *i, pa_sink *skip) { + pa_sink *target, *def; + uint32_t idx; + + pa_assert(c); + pa_assert(i); + + def = pa_namereg_get_default_sink(c); + + if (def && def != skip && pa_sink_input_may_move_to(i, def)) + return def; + + PA_IDXSET_FOREACH(target, c->sinks, idx) { + if (target == def) + continue; + + if (target == skip) + continue; + + if (!PA_SINK_IS_LINKED(pa_sink_get_state(target))) + continue; + + if (pa_sink_input_may_move_to(i, target)) + return target; + } + + pa_log_debug("No evacuation sink found."); + return NULL; +} + +static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) { pa_sink_input *i; uint32_t idx; - pa_sink *target; pa_assert(c); pa_assert(sink); @@ -65,21 +98,12 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user return PA_HOOK_OK; } - if (!(target = pa_namereg_get_default_sink(c)) || target == sink) { - - PA_IDXSET_FOREACH(target, c->sinks, idx) - if (target != sink) - break; - - if (!target) { - pa_log_debug("No evacuation sink found."); - return PA_HOOK_OK; - } - } - - pa_assert(target != sink); - PA_IDXSET_FOREACH(i, sink->inputs, idx) { + pa_sink *target; + + if (!(target = find_evacuation_sink(c, i, sink))) + continue; + if (pa_sink_input_move_to(i, target, FALSE) < 0) pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index, pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name); @@ -91,9 +115,66 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user return PA_HOOK_OK; } -static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void* userdata) { +static pa_hook_result_t sink_input_move_fail_hook_callback(pa_core *c, pa_sink_input *i, void *userdata) { + pa_sink *target; + + pa_assert(c); + pa_assert(i); + + /* There's no point in doing anything if the core is shut down anyway */ + if (c->state == PA_CORE_SHUTDOWN) + return PA_HOOK_OK; + + if (!(target = find_evacuation_sink(c, i, NULL))) + return PA_HOOK_OK; + + if (pa_sink_input_finish_move(i, target, FALSE) < 0) { + pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index, + pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name); + return PA_HOOK_OK; + + } else { + pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index, + pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name); + return PA_HOOK_STOP; + } +} + +static pa_source* find_evacuation_source(pa_core *c, pa_source_output *o, pa_source *skip) { + pa_source *target, *def; + uint32_t idx; + + pa_assert(c); + pa_assert(o); + + def = pa_namereg_get_default_source(c); + + if (def && def != skip && pa_source_output_may_move_to(o, def)) + return def; + + PA_IDXSET_FOREACH(target, c->sources, idx) { + if (target == def) + continue; + + if (target == skip) + continue; + + if (!target->monitor_of != !skip->monitor_of) + continue; + + if (!PA_SOURCE_IS_LINKED(pa_source_get_state(target))) + continue; + + if (pa_source_output_may_move_to(o, target)) + return target; + } + + pa_log_debug("No evacuation source found."); + return NULL; +} + +static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *source, void* userdata) { pa_source_output *o; - pa_source *target; uint32_t idx; pa_assert(c); @@ -108,21 +189,12 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void return PA_HOOK_OK; } - if (!(target = pa_namereg_get_default_source(c)) || target == source) { - - PA_IDXSET_FOREACH(target, c->sources, idx) - if (target != source && !target->monitor_of == !source->monitor_of) - break; - - if (!target) { - pa_log_info("No evacuation source found."); - return PA_HOOK_OK; - } - } - - pa_assert(target != source); - PA_IDXSET_FOREACH(o, source->outputs, idx) { + pa_source *target; + + if (!(target = find_evacuation_source(c, o, source))) + continue; + if (pa_source_output_move_to(o, target, FALSE) < 0) pa_log_info("Failed to move source output %u \"%s\" to %s.", o->index, pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME)), target->name); @@ -134,6 +206,31 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void return PA_HOOK_OK; } +static pa_hook_result_t source_output_move_fail_hook_callback(pa_core *c, pa_source_output *i, void *userdata) { + pa_source *target; + + pa_assert(c); + pa_assert(i); + + /* There's no point in doing anything if the core is shut down anyway */ + if (c->state == PA_CORE_SHUTDOWN) + return PA_HOOK_OK; + + if (!(target = find_evacuation_source(c, i, NULL))) + return PA_HOOK_OK; + + if (pa_source_output_finish_move(i, target, FALSE) < 0) { + pa_log_info("Failed to move source input %u \"%s\" to %s.", i->index, + pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name); + return PA_HOOK_OK; + + } else { + pa_log_info("Sucessfully moved source input %u \"%s\" to %s.", i->index, + pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name); + return PA_HOOK_STOP; + } +} + int pa__init(pa_module*m) { pa_modargs *ma; struct userdata *u; @@ -148,8 +245,11 @@ int pa__init(pa_module*m) { m->userdata = u = pa_xnew(struct userdata, 1); /* A little bit later than module-stream-restore, module-intended-roles... */ - u->sink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_hook_callback, u); - u->source_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) source_hook_callback, u); + u->sink_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_unlink_hook_callback, u); + u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) source_unlink_hook_callback, u); + + u->sink_input_move_fail_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_input_move_fail_hook_callback, u); + u->source_output_move_fail_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], PA_HOOK_LATE+20, (pa_hook_cb_t) source_output_move_fail_hook_callback, u); pa_modargs_free(ma); return 0; @@ -163,10 +263,15 @@ void pa__done(pa_module*m) { if (!(u = m->userdata)) return; - if (u->sink_slot) - pa_hook_slot_free(u->sink_slot); - if (u->source_slot) - pa_hook_slot_free(u->source_slot); + if (u->sink_unlink_slot) + pa_hook_slot_free(u->sink_unlink_slot); + if (u->source_unlink_slot) + pa_hook_slot_free(u->source_unlink_slot); + + if (u->sink_input_move_fail_slot) + pa_hook_slot_free(u->sink_input_move_fail_slot); + if (u->source_output_move_fail_slot) + pa_hook_slot_free(u->source_output_move_fail_slot); pa_xfree(u); } diff --git a/src/modules/module-sine.c b/src/modules/module-sine.c index 0be1d7228..69b20028c 100644 --- a/src/modules/module-sine.c +++ b/src/modules/module-sine.c @@ -163,7 +163,7 @@ int pa__init(pa_module*m) { pa_proplist_setf(data.proplist, "sine.hz", "%u", frequency); pa_sink_input_new_data_set_sample_spec(&data, &ss); - pa_sink_input_new(&u->sink_input, m->core, &data, 0); + pa_sink_input_new(&u->sink_input, m->core, &data); pa_sink_input_new_data_done(&data); if (!u->sink_input) diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c index 0920d25e9..b0d4db43e 100644 --- a/src/modules/module-solaris.c +++ b/src/modules/module-solaris.c @@ -60,6 +60,7 @@ #include #include #include +#include #include "module-solaris-symdef.h" @@ -110,6 +111,8 @@ struct userdata { uint32_t prev_playback_samples, prev_record_samples; int32_t minimum_request; + + pa_smoother *smoother; }; static const char* const valid_modargs[] = { @@ -133,6 +136,9 @@ static const char* const valid_modargs[] = { #define MAX_RENDER_HZ (300) /* This render rate limit imposes a minimum latency, but without it we waste too much CPU time. */ +#define MAX_BUFFER_SIZE (128 * 1024) +/* An attempt to buffer more than 128 KB causes write() to fail with errno == EAGAIN. */ + static uint64_t get_playback_buffered_bytes(struct userdata *u) { audio_info_t info; uint64_t played_bytes; @@ -145,7 +151,12 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) { /* Handle wrap-around of the device's sample counter, which is a uint_32. */ if (u->prev_playback_samples > info.play.samples) { - /* Unfortunately info.play.samples can sometimes go backwards, even before it wraps! */ + /* + * Unfortunately info.play.samples can sometimes go backwards, even before it wraps! + * The bug seems to be absent on Solaris x86 nv117 with audio810 driver, at least on this (UP) machine. + * The bug is present on a different (SMP) machine running Solaris x86 nv103 with audioens driver. + * An earlier revision of this file mentions the same bug independently (unknown configuration). + */ if (u->prev_playback_samples + info.play.samples < 240000) { ++u->play_samples_msw; } else { @@ -155,6 +166,8 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) { u->prev_playback_samples = info.play.samples; played_bytes = (((uint64_t)u->play_samples_msw << 32) + info.play.samples) * u->frame_size; + pa_smoother_put(u->smoother, pa_rtclock_now(), pa_bytes_to_usec(played_bytes, &u->sink->sample_spec)); + return u->written_bytes - played_bytes; } @@ -387,6 +400,8 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state)); + pa_smoother_pause(u->smoother, pa_rtclock_now()); + if (!u->source || u->source_suspended) { if (suspend(u) < 0) return -1; @@ -398,6 +413,8 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse case PA_SINK_RUNNING: if (u->sink->thread_info.state == PA_SINK_SUSPENDED) { + pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE); + if (!u->source || u->source_suspended) { if (unsuspend(u) < 0) return -1; @@ -479,7 +496,7 @@ static void sink_set_volume(pa_sink *s) { if (u->fd >= 0) { AUDIO_INITINFO(&info); - info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM; + info.play.gain = pa_cvolume_max(&s->real_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM; assert(info.play.gain <= AUDIO_MAX_GAIN); if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) { @@ -501,8 +518,7 @@ static void sink_get_volume(pa_sink *s) { if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0) pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno)); else - pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels, - info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN); + pa_cvolume_set(&s->real_volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN); } } @@ -515,7 +531,7 @@ static void source_set_volume(pa_source *s) { if (u->fd >= 0) { AUDIO_INITINFO(&info); - info.play.gain = pa_cvolume_max(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM; + info.play.gain = pa_cvolume_max(&s->volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM; assert(info.play.gain <= AUDIO_MAX_GAIN); if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) { @@ -537,8 +553,7 @@ static void source_get_volume(pa_source *s) { if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0) pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno)); else - pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels, - info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN); + pa_cvolume_set(&s->volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN); } } @@ -585,6 +600,10 @@ static void process_rewind(struct userdata *u) { pa_log_debug("Requested to rewind %lu bytes.", (unsigned long) rewind_nbytes); rewind_nbytes = PA_MIN(u->memchunk.length, rewind_nbytes); u->memchunk.length -= rewind_nbytes; + if (u->memchunk.length <= 0 && u->memchunk.memblock) { + pa_memblock_unref(u->memchunk.memblock); + pa_memchunk_reset(&u->memchunk); + } pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes); } @@ -606,11 +625,13 @@ static void thread_func(void *userdata) { pa_thread_mq_install(&u->thread_mq); + pa_smoother_set_time_offset(u->smoother, pa_rtclock_now()); + for (;;) { /* Render some data and write it to the dsp */ if (u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state)) { - pa_usec_t xtime0; + pa_usec_t xtime0, ysleep_interval, xsleep_interval; uint64_t buffered_bytes; if (u->sink->thread_info.rewind_requested) @@ -629,12 +650,15 @@ static void thread_func(void *userdata) { info.play.error = 0; if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno)); + + pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE); } for (;;) { void *p; ssize_t w; size_t len; + int write_type = 1; /* * Since we cannot modify the size of the output buffer we fake it @@ -651,39 +675,32 @@ static void thread_func(void *userdata) { if (len < (size_t) u->minimum_request) break; - if (u->memchunk.length < len) + if (!u->memchunk.length) pa_sink_render(u->sink, u->sink->thread_info.max_request, &u->memchunk); + len = PA_MIN(u->memchunk.length, len); + p = pa_memblock_acquire(u->memchunk.memblock); - w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, u->memchunk.length, NULL); + w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, len, &write_type); pa_memblock_release(u->memchunk.memblock); if (w <= 0) { - switch (errno) { - case EINTR: - continue; - case EAGAIN: - /* If the buffer_size is too big, we get EAGAIN. Avoiding that limit by trial and error - * is not ideal, but I don't know how to get the system to tell me what the limit is. - */ - u->buffer_size = u->buffer_size * 18 / 25; - u->buffer_size -= u->buffer_size % u->frame_size; - u->buffer_size = PA_MAX(u->buffer_size, 2 * u->minimum_request); - pa_sink_set_max_request_within_thread(u->sink, u->buffer_size); - pa_sink_set_max_rewind_within_thread(u->sink, u->buffer_size); - pa_log("EAGAIN. Buffer size is now %u bytes (%llu buffered)", u->buffer_size, buffered_bytes); - break; - default: - pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno)); - goto fail; + if (errno == EINTR) { + continue; + } else if (errno == EAGAIN) { + /* We may have realtime priority so yield the CPU to ensure that fd can become writable again. */ + pa_log_debug("EAGAIN with %llu bytes buffered.", buffered_bytes); + break; + } else { + pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno)); + goto fail; } } else { pa_assert(w % u->frame_size == 0); u->written_bytes += w; - u->memchunk.length -= w; - u->memchunk.index += w; + u->memchunk.length -= w; if (u->memchunk.length <= 0) { pa_memblock_unref(u->memchunk.memblock); pa_memchunk_reset(&u->memchunk); @@ -691,7 +708,9 @@ static void thread_func(void *userdata) { } } - pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec)); + ysleep_interval = pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec); + xsleep_interval = pa_smoother_translate(u->smoother, xtime0, ysleep_interval); + pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + PA_MIN(xsleep_interval, ysleep_interval)); } else pa_rtpoll_set_timer_disabled(u->rtpoll); @@ -797,7 +816,7 @@ static void sig_callback(pa_mainloop_api *api, pa_signal_event*e, int sig, void pa_log_debug("caught signal"); if (u->sink) { - pa_sink_get_volume(u->sink, TRUE, FALSE); + pa_sink_get_volume(u->sink, TRUE); pa_sink_get_mute(u->sink, TRUE); } @@ -812,7 +831,7 @@ int pa__init(pa_module *m) { pa_channel_map map; pa_modargs *ma = NULL; uint32_t buffer_length_msec; - int fd; + int fd = -1; pa_sink_new_data sink_new_data; pa_source_new_data source_new_data; char const *name; @@ -838,6 +857,9 @@ int pa__init(pa_module *m) { u = pa_xnew0(struct userdata, 1); + if (!(u->smoother = pa_smoother_new(PA_USEC_PER_SEC, PA_USEC_PER_SEC * 2, TRUE, TRUE, 10, pa_rtclock_now(), TRUE))) + goto fail; + /* * For a process (or several processes) to use the same audio device for both * record and playback at the same time, the device's mixer must be enabled. @@ -861,7 +883,13 @@ int pa__init(pa_module *m) { } u->buffer_size = pa_usec_to_bytes(1000 * buffer_length_msec, &ss); if (u->buffer_size < 2 * u->minimum_request) { - pa_log("supplied buffer size argument is too small"); + pa_log("buffer_length argument cannot be smaller than %u", + (unsigned)(pa_bytes_to_usec(2 * u->minimum_request, &ss) / 1000)); + goto fail; + } + if (u->buffer_size > MAX_BUFFER_SIZE) { + pa_log("buffer_length argument cannot be greater than %u", + (unsigned)(pa_bytes_to_usec(MAX_BUFFER_SIZE, &ss) / 1000)); goto fail; } @@ -924,6 +952,7 @@ int pa__init(pa_module *m) { pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); pa_source_set_rtpoll(u->source, u->rtpoll); + pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->buffer_size, &u->source->sample_spec)); u->source->get_volume = source_get_volume; u->source->set_volume = source_set_volume; @@ -966,15 +995,15 @@ int pa__init(pa_module *m) { pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); pa_sink_set_rtpoll(u->sink, u->rtpoll); + pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->buffer_size, &u->sink->sample_spec)); + pa_sink_set_max_request(u->sink, u->buffer_size); + pa_sink_set_max_rewind(u->sink, u->buffer_size); u->sink->get_volume = sink_get_volume; u->sink->set_volume = sink_set_volume; u->sink->get_mute = sink_get_mute; u->sink->set_mute = sink_set_mute; u->sink->refresh_volume = u->sink->refresh_muted = TRUE; - - pa_sink_set_max_request(u->sink, u->buffer_size); - pa_sink_set_max_rewind(u->sink, u->buffer_size); } else u->sink = NULL; @@ -1075,6 +1104,9 @@ void pa__done(pa_module *m) { if (u->fd >= 0) close(u->fd); + if (u->smoother) + pa_smoother_free(u->smoother); + pa_xfree(u->device_name); pa_xfree(u); diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c index 8c0bb6b00..d6e3c1534 100644 --- a/src/modules/module-stream-restore.c +++ b/src/modules/module-stream-restore.c @@ -102,15 +102,16 @@ struct userdata { pa_idxset *subscribed; }; -#define ENTRY_VERSION 2 +#define ENTRY_VERSION 3 struct entry { uint8_t version; - pa_bool_t muted_valid:1, volume_valid:1, device_valid:1; + pa_bool_t muted_valid:1, volume_valid:1, device_valid:1, card_valid:1; pa_bool_t muted:1; pa_channel_map channel_map; pa_cvolume volume; char device[PA_NAME_MAX]; + char card[PA_NAME_MAX]; } PA_GCC_PACKED; enum { @@ -196,11 +197,21 @@ static struct entry* read_entry(struct userdata *u, const char *name) { goto fail; } + if (!memchr(e->card, 0, sizeof(e->card))) { + pa_log_warn("Database contains entry for stream %s with missing NUL byte in card name", name); + goto fail; + } + if (e->device_valid && !pa_namereg_is_valid_name(e->device)) { pa_log_warn("Invalid device name stored in database for stream %s", name); goto fail; } + if (e->card_valid && !pa_namereg_is_valid_name(e->card)) { + pa_log_warn("Invalid card name stored in database for stream %s", name); + goto fail; + } + if (e->volume_valid && !pa_channel_map_valid(&e->channel_map)) { pa_log_warn("Invalid channel map stored in database for stream %s", name); goto fail; @@ -252,6 +263,10 @@ static pa_bool_t entries_equal(const struct entry *a, const struct entry *b) { (a->device_valid && strncmp(a->device, b->device, sizeof(a->device)))) return FALSE; + if (a->card_valid != b->card_valid || + (a->card_valid && strncmp(a->card, b->card, sizeof(a->card)))) + return FALSE; + if (a->muted_valid != b->muted_valid || (a->muted_valid && (a->muted != b->muted))) return FALSE; @@ -308,6 +323,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 if (sink_input->save_sink) { pa_strlcpy(entry.device, sink_input->sink->name, sizeof(entry.device)); entry.device_valid = TRUE; + + if (sink_input->sink->card) { + pa_strlcpy(entry.card, sink_input->sink->card->name, sizeof(entry.card)); + entry.card_valid = TRUE; + } } } else { @@ -327,6 +347,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 if (source_output->save_source) { pa_strlcpy(entry.device, source_output->source->name, sizeof(entry.device)); entry.device_valid = source_output->save_source; + + if (source_output->source->card) { + pa_strlcpy(entry.card, source_output->source->card->name, sizeof(entry.card)); + entry.card_valid = TRUE; + } } } @@ -368,19 +393,28 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n if (!(name = get_name(new_data->proplist, "sink-input"))) return PA_HOOK_OK; - if ((e = read_entry(u, name))) { + if (new_data->sink) + pa_log_debug("Not restoring device for stream %s, because already set.", name); + else if ((e = read_entry(u, name))) { + pa_sink *s = NULL; - if (e->device_valid) { - pa_sink *s; + if (e->device_valid) + s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK); - if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK))) { - if (!new_data->sink) { - pa_log_info("Restoring device for stream %s.", name); - new_data->sink = s; - new_data->save_sink = TRUE; - } else - pa_log_debug("Not restoring device for stream %s, because already set.", name); - } + if (!s && e->card_valid) { + pa_card *card; + + if ((card = pa_namereg_get(c, e->card, PA_NAMEREG_CARD))) + s = pa_idxset_first(card->sinks, NULL); + } + + /* It might happen that a stream and a sink are set up at the + same time, in which case we want to make sure we don't + interfere with that */ + if (s && PA_SINK_IS_LINKED(pa_sink_get_state(s))) { + pa_log_info("Restoring device for stream %s.", name); + new_data->sink = s; + new_data->save_sink = TRUE; } pa_xfree(e); @@ -455,18 +489,28 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou if (!(name = get_name(new_data->proplist, "source-output"))) return PA_HOOK_OK; - if ((e = read_entry(u, name))) { - pa_source *s; + if (new_data->source) + pa_log_debug("Not restoring device for stream %s, because already set", name); + else if ((e = read_entry(u, name))) { + pa_source *s = NULL; - if (e->device_valid) { - if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE))) { - if (!new_data->source) { - pa_log_info("Restoring device for stream %s.", name); - new_data->source = s; - new_data->save_source = TRUE; - } else - pa_log_debug("Not restoring device for stream %s, because already set", name); - } + if (e->device_valid) + s = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE); + + if (!s && e->card_valid) { + pa_card *card; + + if ((card = pa_namereg_get(c, e->card, PA_NAMEREG_CARD))) + s = pa_idxset_first(card->sources, NULL); + } + + /* It might happen that a stream and a sink are set up at the + same time, in which case we want to make sure we don't + interfere with that */ + if (s && PA_SOURCE_IS_LINKED(pa_source_get_state(s))) { + pa_log_info("Restoring device for stream %s.", name); + new_data->source = s; + new_data->save_source = TRUE; } pa_xfree(e); @@ -496,6 +540,17 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct if (si->save_sink) continue; + /* Skip this if it is already in the process of being moved + * anyway */ + if (!si->sink) + continue; + + /* It might happen that a stream and a sink are set up at the + same time, in which case we want to make sure we don't + interfere with that */ + if (!PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(si))) + continue; + if (!(name = get_name(si->proplist, "sink-input"))) continue; @@ -534,6 +589,16 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, if (so->direct_on_input) continue; + /* Skip this if it is already in the process of being moved anyway */ + if (!so->source) + continue; + + /* It might happen that a stream and a sink are set up at the + same time, in which case we want to make sure we don't + interfere with that */ + if (!PA_SOURCE_OUTPUT_IS_LINKED(pa_source_output_get_state(so))) + continue; + if (!(name = get_name(so->proplist, "source-input"))) continue; @@ -567,6 +632,9 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str char *name; struct entry *e; + if (!si->sink) + continue; + if (!(name = get_name(si->proplist, "sink-input"))) continue; @@ -575,7 +643,9 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str if (e->device_valid) { pa_sink *d; - if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) && d != sink) + if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) && + d != sink && + PA_SINK_IS_LINKED(pa_sink_get_state(d))) pa_sink_input_move_to(si, d, TRUE); } @@ -605,6 +675,12 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc char *name; struct entry *e; + if (so->direct_on_input) + continue; + + if (!so->source) + continue; + if (!(name = get_name(so->proplist, "source-output"))) continue; @@ -613,7 +689,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc if (e->device_valid) { pa_source *d; - if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) && d != source) + if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) && + d != source && + PA_SOURCE_IS_LINKED(pa_source_get_state(d))) pa_source_output_move_to(so, d, TRUE); } @@ -856,6 +934,10 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio data.data = &entry; data.size = sizeof(entry); + pa_log_debug("Client %s changes entry %s.", + pa_strnull(pa_proplist_gets(pa_native_connection_get_client(c)->proplist, PA_PROP_APPLICATION_PROCESS_BINARY)), + name); + if (pa_database_set(u->database, &key, &data, mode == PA_UPDATE_REPLACE) == 0) if (apply_immediately) apply_entry(u, name, &entry); diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c index 70a7b0492..7adaa0b10 100644 --- a/src/modules/module-suspend-on-idle.c +++ b/src/modules/module-suspend-on-idle.c @@ -145,6 +145,9 @@ static pa_hook_result_t sink_input_fixate_hook_cb(pa_core *c, pa_sink_input_new_ pa_assert(data); pa_assert(u); + if (data->flags & PA_SINK_INPUT_START_CORKED) + return PA_HOOK_OK; + if ((d = pa_hashmap_get(u->device_infos, data->sink))) resume(d); @@ -158,6 +161,9 @@ static pa_hook_result_t source_output_fixate_hook_cb(pa_core *c, pa_source_outpu pa_assert(data); pa_assert(u); + if (data->flags & PA_SOURCE_OUTPUT_START_CORKED) + return PA_HOOK_OK; + if (data->source->monitor_of) d = pa_hashmap_get(u->device_infos, data->source->monitor_of); else @@ -226,11 +232,16 @@ static pa_hook_result_t sink_input_move_start_hook_cb(pa_core *c, pa_sink_input static pa_hook_result_t sink_input_move_finish_hook_cb(pa_core *c, pa_sink_input *s, struct userdata *u) { struct device_info *d; + pa_sink_input_state_t state; pa_assert(c); pa_sink_input_assert_ref(s); pa_assert(u); + state = pa_sink_input_get_state(s); + if (state != PA_SINK_INPUT_RUNNING && state != PA_SINK_INPUT_DRAINED) + return PA_HOOK_OK; + if ((d = pa_hashmap_get(u->device_infos, s->sink))) resume(d); @@ -265,6 +276,9 @@ static pa_hook_result_t source_output_move_finish_hook_cb(pa_core *c, pa_source_ pa_source_output_assert_ref(s); pa_assert(u); + if (pa_source_output_get_state(s) != PA_SOURCE_OUTPUT_RUNNING) + return PA_HOOK_OK; + if (s->source->monitor_of) d = pa_hashmap_get(u->device_infos, s->source->monitor_of); else @@ -279,6 +293,7 @@ static pa_hook_result_t source_output_move_finish_hook_cb(pa_core *c, pa_source_ static pa_hook_result_t sink_input_state_changed_hook_cb(pa_core *c, pa_sink_input *s, struct userdata *u) { struct device_info *d; pa_sink_input_state_t state; + pa_assert(c); pa_sink_input_assert_ref(s); pa_assert(u); @@ -292,15 +307,11 @@ static pa_hook_result_t sink_input_state_changed_hook_cb(pa_core *c, pa_sink_inp } static pa_hook_result_t source_output_state_changed_hook_cb(pa_core *c, pa_source_output *s, struct userdata *u) { - pa_source_output_state_t state; - pa_assert(c); pa_source_output_assert_ref(s); pa_assert(u); - state = pa_source_output_get_state(s); - - if (state == PA_SOURCE_OUTPUT_RUNNING) { + if (pa_source_output_get_state(s) == PA_SOURCE_OUTPUT_RUNNING) { struct device_info *d; if (s->source->monitor_of) @@ -387,22 +398,17 @@ static pa_hook_result_t device_state_changed_hook_cb(pa_core *c, pa_object *o, s pa_sink *s = PA_SINK(o); pa_sink_state_t state = pa_sink_get_state(s); - if (pa_sink_check_suspend(s) <= 0) { - + if (pa_sink_check_suspend(s) <= 0) if (PA_SINK_IS_OPENED(state)) restart(d); - } - } else if (pa_source_isinstance(o)) { pa_source *s = PA_SOURCE(o); pa_source_state_t state = pa_source_get_state(s); - if (pa_source_check_suspend(s) <= 0) { - + if (pa_source_check_suspend(s) <= 0) if (PA_SOURCE_IS_OPENED(state)) restart(d); - } } return PA_HOOK_OK; diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c index d11538299..af4b8b2ac 100644 --- a/src/modules/module-tunnel.c +++ b/src/modules/module-tunnel.c @@ -55,6 +55,7 @@ #include #include #include +#include #ifdef TUNNEL_SINK #include "module-tunnel-sink-symdef.h" @@ -194,6 +195,7 @@ struct userdata { #else char *source_name; pa_source *source; + pa_mcalign *mcalign; #endif pa_auth_cookie *auth_cookie; @@ -330,7 +332,7 @@ static void command_moved(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa static void command_stream_buffer_attr_changed(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) { struct userdata *u = userdata; - uint32_t channel, maxlength, tlength, fragsize, prebuf, minreq; + uint32_t channel, maxlength, tlength = 0, fragsize, prebuf, minreq; pa_usec_t usec; pa_assert(pd); @@ -614,14 +616,23 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off return 0; } - case SOURCE_MESSAGE_POST: + case SOURCE_MESSAGE_POST: { + pa_memchunk c; - if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) - pa_source_post(u->source, chunk); + pa_mcalign_push(u->mcalign, chunk); - u->counter += (int64_t) chunk->length; + while (pa_mcalign_pop(u->mcalign, &c) >= 0) { + + if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) + pa_source_post(u->source, &c); + + pa_memblock_unref(c.memblock); + + u->counter += (int64_t) c.length; + } return 0; + } case SOURCE_MESSAGE_REMOTE_SUSPEND: @@ -1086,7 +1097,7 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag uint32_t idx, owner_module, client, sink; pa_usec_t buffer_usec, sink_usec; const char *name, *driver, *resample_method; - pa_bool_t mute; + pa_bool_t mute = FALSE; pa_sample_spec sample_spec; pa_channel_map channel_map; pa_cvolume volume; @@ -1151,13 +1162,13 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag pa_assert(u->sink); if ((u->version < 11 || !!mute == !!u->sink->muted) && - pa_cvolume_equal(&volume, &u->sink->virtual_volume)) + pa_cvolume_equal(&volume, &u->sink->real_volume)) return; - pa_sink_volume_changed(u->sink, &volume, FALSE); + pa_sink_volume_changed(u->sink, &volume); if (u->version >= 11) - pa_sink_mute_changed(u->sink, mute, FALSE); + pa_sink_mute_changed(u->sink, mute); return; @@ -1334,12 +1345,11 @@ static void command_subscribe_event(pa_pdispatch *pd, uint32_t command, uint32 /* Called from main context */ static void start_subscribe(struct userdata *u) { pa_tagstruct *t; - uint32_t tag; pa_assert(u); t = pa_tagstruct_new(NULL, 0); pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE); - pa_tagstruct_putu32(t, tag = u->ctag++); + pa_tagstruct_putu32(t, u->ctag++); pa_tagstruct_putu32(t, PA_SUBSCRIPTION_MASK_SERVER| #ifdef TUNNEL_SINK PA_SUBSCRIPTION_MASK_SINK_INPUT|PA_SUBSCRIPTION_MASK_SINK @@ -1515,7 +1525,7 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t reply = pa_tagstruct_new(NULL, 0); pa_tagstruct_putu32(reply, PA_COMMAND_SET_CLIENT_NAME); - pa_tagstruct_putu32(reply, tag = u->ctag++); + pa_tagstruct_putu32(reply, u->ctag++); if (u->version >= 13) { pa_proplist *pl; @@ -1742,7 +1752,6 @@ static void on_connection(pa_socket_client *sc, pa_iochannel *io, void *userdata static void sink_set_volume(pa_sink *sink) { struct userdata *u; pa_tagstruct *t; - uint32_t tag; pa_assert(sink); u = sink->userdata; @@ -1750,9 +1759,9 @@ static void sink_set_volume(pa_sink *sink) { t = pa_tagstruct_new(NULL, 0); pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_VOLUME); - pa_tagstruct_putu32(t, tag = u->ctag++); + pa_tagstruct_putu32(t, u->ctag++); pa_tagstruct_putu32(t, u->device_index); - pa_tagstruct_put_cvolume(t, &sink->virtual_volume); + pa_tagstruct_put_cvolume(t, &sink->real_volume); pa_pstream_send_tagstruct(u->pstream, t); } @@ -1760,7 +1769,6 @@ static void sink_set_volume(pa_sink *sink) { static void sink_set_mute(pa_sink *sink) { struct userdata *u; pa_tagstruct *t; - uint32_t tag; pa_assert(sink); u = sink->userdata; @@ -1771,7 +1779,7 @@ static void sink_set_mute(pa_sink *sink) { t = pa_tagstruct_new(NULL, 0); pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_MUTE); - pa_tagstruct_putu32(t, tag = u->ctag++); + pa_tagstruct_putu32(t, u->ctag++); pa_tagstruct_putu32(t, u->device_index); pa_tagstruct_put_boolean(t, !!sink->muted); pa_pstream_send_tagstruct(u->pstream, t); @@ -1937,6 +1945,8 @@ int pa__init(pa_module*m) { pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); pa_source_set_rtpoll(u->source, u->rtpoll); + + u->mcalign = pa_mcalign_new(pa_frame_size(&u->source->sample_spec)); #endif pa_xfree(dn); @@ -2030,6 +2040,11 @@ void pa__done(pa_module*m) { if (u->time_event) u->core->mainloop->time_free(u->time_event); +#ifndef TUNNEL_SINK + if (u->mcalign) + pa_mcalign_free(u->mcalign); +#endif + #ifdef TUNNEL_SINK pa_xfree(u->sink_name); #else diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c index 1ad6fa2d0..1b1e9c1a6 100644 --- a/src/modules/module-udev-detect.c +++ b/src/modules/module-udev-detect.c @@ -25,13 +25,17 @@ #include #include +#include #include #include +#include + #include #include #include #include +#include #include "module-udev-detect-symdef.h" @@ -39,18 +43,25 @@ PA_MODULE_AUTHOR("Lennart Poettering"); PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers"); PA_MODULE_VERSION(PACKAGE_VERSION); PA_MODULE_LOAD_ONCE(TRUE); +PA_MODULE_USAGE( + "tsched= " + "ignore_dB="); struct device { char *path; - pa_bool_t accessible; + pa_bool_t need_verify; char *card_name; + char *args; uint32_t module; + pa_ratelimit ratelimit; }; struct userdata { pa_core *core; pa_hashmap *devices; - pa_bool_t use_tsched; + + pa_bool_t use_tsched:1; + pa_bool_t ignore_dB:1; struct udev* udev; struct udev_monitor *monitor; @@ -62,14 +73,18 @@ struct userdata { static const char* const valid_modargs[] = { "tsched", + "ignore_dB", NULL }; +static int setup_inotify(struct userdata *u); + static void device_free(struct device *d) { pa_assert(d); pa_xfree(d->path); pa_xfree(d->card_name); + pa_xfree(d->args); pa_xfree(d); } @@ -88,35 +103,204 @@ static const char *path_get_card_id(const char *path) { return e + 5; } +static pa_bool_t is_card_busy(const char *id) { + char *card_path = NULL, *pcm_path = NULL, *sub_status = NULL; + DIR *card_dir = NULL, *pcm_dir = NULL; + FILE *status_file = NULL; + size_t len; + struct dirent *space = NULL, *de; + pa_bool_t busy = FALSE; + int r; + + pa_assert(id); + + /* This simply uses /proc/asound/card.../pcm.../sub.../status to + * check whether there is still a process using this audio device. */ + + card_path = pa_sprintf_malloc("/proc/asound/card%s", id); + + if (!(card_dir = opendir(card_path))) { + pa_log_warn("Failed to open %s: %s", card_path, pa_cstrerror(errno)); + goto fail; + } + + len = offsetof(struct dirent, d_name) + fpathconf(dirfd(card_dir), _PC_NAME_MAX) + 1; + space = pa_xmalloc(len); + + for (;;) { + de = NULL; + + if ((r = readdir_r(card_dir, space, &de)) != 0) { + pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r)); + goto fail; + } + + if (!de) + break; + + if (!pa_startswith(de->d_name, "pcm")) + continue; + + pa_xfree(pcm_path); + pcm_path = pa_sprintf_malloc("%s/%s", card_path, de->d_name); + + if (pcm_dir) + closedir(pcm_dir); + + if (!(pcm_dir = opendir(pcm_path))) { + pa_log_warn("Failed to open %s: %s", pcm_path, pa_cstrerror(errno)); + continue; + } + + for (;;) { + char line[32]; + + if ((r = readdir_r(pcm_dir, space, &de)) != 0) { + pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r)); + goto fail; + } + + if (!de) + break; + + if (!pa_startswith(de->d_name, "sub")) + continue; + + pa_xfree(sub_status); + sub_status = pa_sprintf_malloc("%s/%s/status", pcm_path, de->d_name); + + if (status_file) + fclose(status_file); + + if (!(status_file = fopen(sub_status, "r"))) { + pa_log_warn("Failed to open %s: %s", sub_status, pa_cstrerror(errno)); + continue; + } + + if (!(fgets(line, sizeof(line)-1, status_file))) { + pa_log_warn("Failed to read from %s: %s", sub_status, pa_cstrerror(errno)); + continue; + } + + if (!pa_streq(line, "closed\n")) { + busy = TRUE; + break; + } + } + } + +fail: + + pa_xfree(card_path); + pa_xfree(pcm_path); + pa_xfree(sub_status); + pa_xfree(space); + + if (card_dir) + closedir(card_dir); + + if (pcm_dir) + closedir(pcm_dir); + + if (status_file) + fclose(status_file); + + return busy; +} + static void verify_access(struct userdata *u, struct device *d) { char *cd; pa_card *card; + pa_bool_t accessible; pa_assert(u); pa_assert(d); - if (!(card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD))) - return; - cd = pa_sprintf_malloc("%s/snd/controlC%s", udev_get_dev_path(u->udev), path_get_card_id(d->path)); - d->accessible = access(cd, W_OK) >= 0; - pa_log_info("%s is accessible: %s", cd, pa_yes_no(d->accessible)); + accessible = access(cd, R_OK|W_OK) >= 0; + pa_log_debug("%s is accessible: %s", cd, pa_yes_no(accessible)); + pa_xfree(cd); - pa_card_suspend(card, !d->accessible, PA_SUSPEND_SESSION); + if (d->module == PA_INVALID_INDEX) { + + /* If we are not loaded, try to load */ + + if (accessible) { + pa_module *m; + pa_bool_t busy; + + /* Check if any of the PCM devices that belong to this + * card are currently busy. If they are, don't try to load + * right now, to make sure the probing phase can + * successfully complete. When the current user of the + * device closes it we will get another notification via + * inotify and can then recheck. */ + + busy = is_card_busy(path_get_card_id(d->path)); + pa_log_debug("%s is busy: %s", d->path, pa_yes_no(busy)); + + if (!busy) { + + /* So, why do we rate limit here? It's certainly ugly, + * but there seems to be no other way. Problem is + * this: if we are unable to configure/probe an audio + * device after opening it we will close it again and + * the module initialization will fail. This will then + * cause an inotify event on the device node which + * will be forwarded to us. We then try to reopen the + * audio device again, practically entering a busy + * loop. + * + * A clean fix would be if we would be able to ignore + * our own inotify close events. However, inotify + * lacks such functionality. Also, during probing of + * the device we cannot really distuingish between + * other processes causing EBUSY or ourselves, which + * means we have no way to figure out if the probing + * during opening was canceled by a "try again" + * failure or a "fatal" failure. */ + + if (pa_ratelimit_test(&d->ratelimit)) { + pa_log_debug("Loading module-alsa-card with arguments '%s'", d->args); + m = pa_module_load(u->core, "module-alsa-card", d->args); + + if (m) { + d->module = m->index; + pa_log_info("Card %s (%s) module loaded.", d->path, d->card_name); + } else + pa_log_info("Card %s (%s) failed to load module.", d->path, d->card_name); + } else + pa_log_warn("Tried to configure %s (%s) more often than %u times in %llus", + d->path, + d->card_name, + d->ratelimit.burst, + (long long unsigned) (d->ratelimit.interval / PA_USEC_PER_SEC)); + } + } + + } else { + + /* If we are already loaded update suspend status with + * accessible boolean */ + + if ((card = pa_namereg_get(u->core, d->card_name, PA_NAMEREG_CARD))) + pa_card_suspend(card, !accessible, PA_SUSPEND_SESSION); + } } static void card_changed(struct userdata *u, struct udev_device *dev) { struct device *d; const char *path; const char *t; - char *card_name, *args; - pa_module *m; char *n; pa_assert(u); pa_assert(dev); + /* Maybe /dev/snd is now available? */ + setup_inotify(u); + path = udev_device_get_devpath(dev); if ((d = pa_hashmap_get(u->devices, path))) { @@ -124,42 +308,34 @@ static void card_changed(struct userdata *u, struct udev_device *dev) { return; } + d = pa_xnew0(struct device, 1); + d->path = pa_xstrdup(path); + d->module = PA_INVALID_INDEX; + PA_INIT_RATELIMIT(d->ratelimit, 10*PA_USEC_PER_SEC, 5); + if (!(t = udev_device_get_property_value(dev, "PULSE_NAME"))) if (!(t = udev_device_get_property_value(dev, "ID_ID"))) if (!(t = udev_device_get_property_value(dev, "ID_PATH"))) t = path_get_card_id(path); n = pa_namereg_make_valid_name(t); - - card_name = pa_sprintf_malloc("alsa_card.%s", n); - args = pa_sprintf_malloc("device_id=\"%s\" " - "name=\"%s\" " - "card_name=\"%s\" " - "tsched=%i " - "card_properties=\"module-udev-detect.discovered=1\"", - path_get_card_id(path), - n, - card_name, - (int) u->use_tsched); - - pa_log_debug("Loading module-alsa-card with arguments '%s'", args); - m = pa_module_load(u->core, "module-alsa-card", args); - pa_xfree(args); - - if (m) { - pa_log_info("Card %s (%s) added.", path, n); - - d = pa_xnew(struct device, 1); - d->path = pa_xstrdup(path); - d->card_name = card_name; - d->module = m->index; - d->accessible = TRUE; - - pa_hashmap_put(u->devices, d->path, d); - } else - pa_xfree(card_name); - + d->card_name = pa_sprintf_malloc("alsa_card.%s", n); + d->args = pa_sprintf_malloc("device_id=\"%s\" " + "name=\"%s\" " + "card_name=\"%s\" " + "tsched=%s " + "ignore_dB=%s " + "card_properties=\"module-udev-detect.discovered=1\"", + path_get_card_id(path), + n, + d->card_name, + pa_yes_no(u->use_tsched), + pa_yes_no(u->ignore_dB)); pa_xfree(n); + + pa_hashmap_put(u->devices, d->path, d); + + verify_access(u, d); } static void remove_card(struct userdata *u, struct udev_device *dev) { @@ -172,7 +348,10 @@ static void remove_card(struct userdata *u, struct udev_device *dev) { return; pa_log_info("Card %s removed.", d->path); - pa_module_unload_request_by_index(u->core, d->module, TRUE); + + if (d->module != PA_INVALID_INDEX) + pa_module_unload_request_by_index(u->core, d->module, TRUE); + device_free(d); } @@ -249,6 +428,34 @@ fail: u->udev_io = NULL; } +static pa_bool_t pcm_node_belongs_to_device( + struct device *d, + const char *node) { + + char *cd; + pa_bool_t b; + + cd = pa_sprintf_malloc("pcmC%sD", path_get_card_id(d->path)); + b = pa_startswith(node, cd); + pa_xfree(cd); + + return b; +} + +static pa_bool_t control_node_belongs_to_device( + struct device *d, + const char *node) { + + char *cd; + pa_bool_t b; + + cd = pa_sprintf_malloc("controlC%s", path_get_card_id(d->path)); + b = pa_streq(node, cd); + pa_xfree(cd); + + return b; +} + static void inotify_cb( pa_mainloop_api*a, pa_io_event* e, @@ -262,10 +469,13 @@ static void inotify_cb( } buf; struct userdata *u = userdata; static int type = 0; - pa_bool_t verify = FALSE; + pa_bool_t deleted = FALSE; + struct device *d; + void *state; for (;;) { ssize_t r; + struct inotify_event *event; pa_zero(buf); if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) { @@ -277,25 +487,60 @@ static void inotify_cb( goto fail; } - if ((buf.e.mask & IN_CLOSE_WRITE) && pa_startswith(buf.e.name, "pcmC")) - verify = TRUE; + event = &buf.e; + while (r > 0) { + size_t len; + + if ((size_t) r < sizeof(struct inotify_event)) { + pa_log("read() too short."); + goto fail; + } + + len = sizeof(struct inotify_event) + event->len; + + if ((size_t) r < len) { + pa_log("Payload missing."); + goto fail; + } + + /* From udev we get the guarantee that the control + * device's ACL is changed last. To avoid races when ACLs + * are changed we hence watch only the control device */ + if (((event->mask & IN_ATTRIB) && pa_startswith(event->name, "controlC"))) + PA_HASHMAP_FOREACH(d, u->devices, state) + if (control_node_belongs_to_device(d, event->name)) + d->need_verify = TRUE; + + /* ALSA doesn't really give us any guarantee on the closing + * order, so let's simply hope */ + if (((event->mask & IN_CLOSE_WRITE) && pa_startswith(event->name, "pcmC"))) + PA_HASHMAP_FOREACH(d, u->devices, state) + if (pcm_node_belongs_to_device(d, event->name)) + d->need_verify = TRUE; + + /* /dev/snd/ might have been removed */ + if ((event->mask & (IN_DELETE_SELF|IN_MOVE_SELF))) + deleted = TRUE; + + event = (struct inotify_event*) ((uint8_t*) event + len); + r -= len; + } } - if (verify) { - struct device *d; - void *state; - - pa_log_debug("Verifying access."); - - PA_HASHMAP_FOREACH(d, u->devices, state) + PA_HASHMAP_FOREACH(d, u->devices, state) + if (d->need_verify) { + d->need_verify = FALSE; verify_access(u, d); - } + } - return; + if (!deleted) + return; fail: - a->io_free(u->inotify_io); - u->inotify_io = NULL; + if (u->inotify_io) { + a->io_free(u->inotify_io); + u->inotify_io = NULL; + } if (u->inotify_fd >= 0) { pa_close(u->inotify_fd); @@ -307,17 +552,38 @@ static int setup_inotify(struct userdata *u) { char *dev_snd; int r; + if (u->inotify_fd >= 0) + return 0; + if ((u->inotify_fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK)) < 0) { pa_log("inotify_init1() failed: %s", pa_cstrerror(errno)); return -1; } dev_snd = pa_sprintf_malloc("%s/snd", udev_get_dev_path(u->udev)); - r = inotify_add_watch(u->inotify_fd, dev_snd, IN_CLOSE_WRITE); + r = inotify_add_watch(u->inotify_fd, dev_snd, IN_ATTRIB|IN_CLOSE_WRITE|IN_DELETE_SELF|IN_MOVE_SELF); pa_xfree(dev_snd); if (r < 0) { - pa_log("inotify_add_watch() failed: %s", pa_cstrerror(errno)); + int saved_errno = errno; + + pa_close(u->inotify_fd); + u->inotify_fd = -1; + + if (saved_errno == ENOENT) { + pa_log_debug("/dev/snd/ is apparently not existing yet, retrying to create inotify watch later."); + return 0; + } + + if (saved_errno == ENOSPC) { + pa_log("You apparently ran out of inotify watches, probably because Tracker/Beagle took them all away. " + "I wished people would do their homework first and fix inotify before using it for watching whole " + "directory trees which is something the current inotify is certainly not useful for. " + "Please make sure to drop the Tracker/Beagle guys a line complaining about their broken use of inotify."); + return 0; + } + + pa_log("inotify_add_watch() failed: %s", pa_cstrerror(saved_errno)); return -1; } @@ -332,6 +598,7 @@ int pa__init(pa_module *m) { struct udev_enumerate *enumerate = NULL; struct udev_list_entry *item = NULL, *first = NULL; int fd; + pa_bool_t use_tsched = TRUE, ignore_dB = FALSE; pa_assert(m); @@ -343,13 +610,19 @@ int pa__init(pa_module *m) { m->userdata = u = pa_xnew0(struct userdata, 1); u->core = m->core; u->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); - u->use_tsched = TRUE; u->inotify_fd = -1; - if (pa_modargs_get_value_boolean(ma, "tsched", &u->use_tsched) < 0) { - pa_log("Failed to parse tsched argument."); + if (pa_modargs_get_value_boolean(ma, "tsched", &use_tsched) < 0) { + pa_log("Failed to parse tsched= argument."); goto fail; } + u->use_tsched = use_tsched; + + if (pa_modargs_get_value_boolean(ma, "ignore_dB", &ignore_dB) < 0) { + pa_log("Failed to parse ignore_dB= argument."); + goto fail; + } + u->ignore_dB = ignore_dB; if (!(u->udev = udev_new())) { pa_log("Failed to initialize udev library."); @@ -402,7 +675,7 @@ int pa__init(pa_module *m) { udev_enumerate_unref(enumerate); - pa_log_info("Loaded %u modules.", pa_hashmap_size(u->devices)); + pa_log_info("Found %u cards.", pa_hashmap_size(u->devices)); pa_modargs_free(ma); diff --git a/src/modules/module-volume-restore.c b/src/modules/module-volume-restore.c index 91da598e3..6e484eae2 100644 --- a/src/modules/module-volume-restore.c +++ b/src/modules/module-volume-restore.c @@ -48,6 +48,7 @@ static const char* const valid_modargs[] = { int pa__init(pa_module*m) { pa_modargs *ma = NULL; pa_bool_t restore_device = TRUE, restore_volume = TRUE; + pa_module *n; char *t; pa_assert(m); @@ -66,13 +67,15 @@ int pa__init(pa_module*m) { pa_log_warn("We will now load module-stream-restore. Please make sure to remove module-volume-restore from your configuration."); t = pa_sprintf_malloc("restore_volume=%s restore_device=%s", pa_yes_no(restore_volume), pa_yes_no(restore_device)); - pa_module_load(m->core, "module-stream-restore", t); + n = pa_module_load(m->core, "module-stream-restore", t); pa_xfree(t); - pa_module_unload_request(m, TRUE); + if (n) + pa_module_unload_request(m, TRUE); pa_modargs_free(ma); - return 0; + + return n ? 0 : -1; fail: if (ma) diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c index c44b882b7..715362602 100644 --- a/src/modules/oss/module-oss.c +++ b/src/modules/oss/module-oss.c @@ -812,11 +812,11 @@ static void sink_get_volume(pa_sink *s) { pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM)); if (u->mixer_devmask & SOUND_MASK_VOLUME) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->real_volume) >= 0) return; if (u->mixer_devmask & SOUND_MASK_PCM) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->real_volume) >= 0) return; pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno)); @@ -830,11 +830,11 @@ static void sink_set_volume(pa_sink *s) { pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM)); if (u->mixer_devmask & SOUND_MASK_VOLUME) - if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->real_volume) >= 0) return; if (u->mixer_devmask & SOUND_MASK_PCM) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->real_volume) >= 0) return; pa_log_info("Device doesn't support writing mixer settings: %s", pa_cstrerror(errno)); @@ -848,11 +848,11 @@ static void source_get_volume(pa_source *s) { pa_assert(u->mixer_devmask & (SOUND_MASK_IGAIN|SOUND_MASK_RECLEV)); if (u->mixer_devmask & SOUND_MASK_IGAIN) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->volume) >= 0) return; if (u->mixer_devmask & SOUND_MASK_RECLEV) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->volume) >= 0) return; pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno)); @@ -866,11 +866,11 @@ static void source_set_volume(pa_source *s) { pa_assert(u->mixer_devmask & (SOUND_MASK_IGAIN|SOUND_MASK_RECLEV)); if (u->mixer_devmask & SOUND_MASK_IGAIN) - if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->volume) >= 0) return; if (u->mixer_devmask & SOUND_MASK_RECLEV) - if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->virtual_volume) >= 0) + if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->volume) >= 0) return; pa_log_info("Device doesn't support writing mixer settings: %s", pa_cstrerror(errno)); diff --git a/src/modules/raop/base64.c b/src/modules/raop/base64.c index e1cbed026..5b0610341 100644 --- a/src/modules/raop/base64.c +++ b/src/modules/raop/base64.c @@ -57,7 +57,6 @@ int pa_base64_encode(const void *data, int size, char **str) p = s = pa_xnew(char, size * 4 / 3 + 4); q = (const unsigned char *) data; - i = 0; for (i = 0; i < size;) { c = q[i++]; c *= 256; diff --git a/src/modules/raop/module-raop-sink.c b/src/modules/raop/module-raop-sink.c index 9699132df..ac48ab105 100644 --- a/src/modules/raop/module-raop-sink.c +++ b/src/modules/raop/module-raop-sink.c @@ -283,15 +283,15 @@ static void sink_set_volume_cb(pa_sink *s) { /* Calculate the max volume of all channels. We'll use this as our (single) volume on the APEX device and emulate any variation in channel volumes in software */ - v = pa_cvolume_max(&s->virtual_volume); + v = pa_cvolume_max(&s->real_volume); /* Create a pa_cvolume version of our single value */ pa_cvolume_set(&hw, s->sample_spec.channels, v); /* Perform any software manipulation of the volume needed */ - pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &hw); + pa_sw_cvolume_divide(&s->soft_volume, &s->real_volume, &hw); - pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume)); + pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->real_volume)); pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &hw)); pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume)); diff --git a/src/modules/reserve-monitor.c b/src/modules/reserve-monitor.c index 13ecde2b0..ab453e61a 100644 --- a/src/modules/reserve-monitor.c +++ b/src/modules/reserve-monitor.c @@ -38,6 +38,7 @@ struct rm_monitor { char *device_name; char *service_name; + char *match; DBusConnection *connection; @@ -51,12 +52,18 @@ struct rm_monitor { #define SERVICE_PREFIX "org.freedesktop.ReserveDevice1." +#define SERVICE_FILTER \ + "type='signal'," \ + "sender='" DBUS_SERVICE_DBUS "'," \ + "interface='" DBUS_INTERFACE_DBUS "'," \ + "member='NameOwnerChanged'," \ + "arg0='%s'" + static DBusHandlerResult filter_handler( DBusConnection *c, DBusMessage *s, void *userdata) { - DBusMessage *reply; rm_monitor *m; DBusError error; @@ -97,31 +104,10 @@ static DBusHandlerResult filter_handler( } } - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - invalid: - if (!(reply = dbus_message_new_error( - s, - DBUS_ERROR_INVALID_ARGS, - "Invalid arguments"))) - goto oom; - - if (!dbus_connection_send(c, reply, NULL)) - goto oom; - - dbus_message_unref(reply); - dbus_error_free(&error); - return DBUS_HANDLER_RESULT_HANDLED; - -oom: - if (reply) - dbus_message_unref(reply); - - dbus_error_free(&error); - - return DBUS_HANDLER_RESULT_NEED_MEMORY; + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } int rm_watch( @@ -175,11 +161,13 @@ int rm_watch( m->filtering = 1; - dbus_bus_add_match(m->connection, - "type='signal'," - "sender='" DBUS_SERVICE_DBUS "'," - "interface='" DBUS_INTERFACE_DBUS "'," - "member='NameOwnerChanged'", error); + if (!(m->match = malloc(sizeof(SERVICE_FILTER) - 2 + strlen(m->service_name)))) { + r = -ENOMEM; + goto fail; + } + + sprintf(m->match, SERVICE_FILTER, m->service_name); + dbus_bus_add_match(m->connection, m->match, error); if (dbus_error_is_set(error)) { r = -EIO; @@ -220,10 +208,8 @@ void rm_release(rm_monitor *m) { if (m->matching) dbus_bus_remove_match( m->connection, - "type='signal'," - "sender='" DBUS_SERVICE_DBUS "'," - "interface='" DBUS_INTERFACE_DBUS "'," - "member='NameOwnerChanged'", NULL); + m->match, + NULL); if (m->filtering) dbus_connection_remove_filter( @@ -233,6 +219,7 @@ void rm_release(rm_monitor *m) { free(m->device_name); free(m->service_name); + free(m->match); if (m->connection) dbus_connection_unref(m->connection); diff --git a/src/modules/reserve.c b/src/modules/reserve.c index 5597f177d..b4c168cf7 100644 --- a/src/modules/reserve.c +++ b/src/modules/reserve.c @@ -291,7 +291,6 @@ static DBusHandlerResult filter_handler( DBusMessage *m, void *userdata) { - DBusMessage *reply; rd_device *d; DBusError error; @@ -323,35 +322,13 @@ static DBusHandlerResult filter_handler( rd_release(d); } - return DBUS_HANDLER_RESULT_HANDLED; } } - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - invalid: - if (!(reply = dbus_message_new_error( - m, - DBUS_ERROR_INVALID_ARGS, - "Invalid arguments"))) - goto oom; - - if (!dbus_connection_send(c, reply, NULL)) - goto oom; - - dbus_message_unref(reply); - dbus_error_free(&error); - return DBUS_HANDLER_RESULT_HANDLED; - -oom: - if (reply) - dbus_message_unref(reply); - - dbus_error_free(&error); - - return DBUS_HANDLER_RESULT_NEED_MEMORY; + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c index 5caf8272b..1a05f57d1 100644 --- a/src/modules/rtp/module-rtp-recv.c +++ b/src/modules/rtp/module-rtp-recv.c @@ -361,7 +361,7 @@ static void sink_input_attach(pa_sink_input *i) { pa_assert_se(s = i->userdata); pa_assert(!s->rtpoll_item); - s->rtpoll_item = pa_rtpoll_item_new(i->sink->rtpoll, PA_RTPOLL_LATE, 1); + s->rtpoll_item = pa_rtpoll_item_new(i->sink->thread_info.rtpoll, PA_RTPOLL_LATE, 1); p = pa_rtpoll_item_get_pollfd(s->rtpoll_item, NULL); p->fd = s->rtp_context.fd; @@ -501,8 +501,9 @@ static struct session *session_new(struct userdata *u, const pa_sdp_info *sdp_in pa_proplist_setf(data.proplist, "rtp.payload", "%u", (unsigned) sdp_info->payload); data.module = u->module; pa_sink_input_new_data_set_sample_spec(&data, &sdp_info->sample_spec); + data.flags = PA_SINK_INPUT_VARIABLE_RATE; - pa_sink_input_new(&s->sink_input, u->module->core, &data, PA_SINK_INPUT_VARIABLE_RATE); + pa_sink_input_new(&s->sink_input, u->module->core, &data); pa_sink_input_new_data_done(&data); if (!s->sink_input) { diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c index f147364df..8e1cfe361 100644 --- a/src/modules/rtp/module-rtp-send.c +++ b/src/modules/rtp/module-rtp-send.c @@ -330,8 +330,9 @@ int pa__init(pa_module*m) { data.source = s; pa_source_output_new_data_set_sample_spec(&data, &ss); pa_source_output_new_data_set_channel_map(&data, &cm); + data.flags = PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND; - pa_source_output_new(&o, m->core, &data, PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND); + pa_source_output_new(&o, m->core, &data); pa_source_output_new_data_done(&data); if (!o) { diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c index 72d304e84..915c1072e 100644 --- a/src/modules/rtp/rtsp_client.c +++ b/src/modules/rtp/rtsp_client.c @@ -214,11 +214,13 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) { /* End of headers */ /* We will have a header left from our looping iteration, so add it in :) */ if (c->last_header) { + char *tmp = pa_strbuf_tostring_free(c->header_buffer); /* This is not a continuation header so let's dump it into our proplist */ - pa_headerlist_puts(c->response_headers, c->last_header, pa_strbuf_tostring_free(c->header_buffer)); + pa_headerlist_puts(c->response_headers, c->last_header, tmp); + pa_xfree(tmp); pa_xfree(c->last_header); c->last_header = NULL; - c->header_buffer= NULL; + c->header_buffer = NULL; } pa_log_debug("Full response received. Dispatching"); @@ -240,9 +242,11 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) { } if (c->last_header) { + char *tmp = pa_strbuf_tostring_free(c->header_buffer); /* This is not a continuation header so let's dump the full header/value into our proplist */ - pa_headerlist_puts(c->response_headers, c->last_header, pa_strbuf_tostring_free(c->header_buffer)); + pa_headerlist_puts(c->response_headers, c->last_header, tmp); + pa_xfree(tmp); pa_xfree(c->last_header); c->last_header = NULL; c->header_buffer = NULL; @@ -452,6 +456,8 @@ static int rtsp_exec(pa_rtsp_client* c, const char* cmd, l = pa_iochannel_write(c->io, hdrs, strlen(hdrs)); pa_xfree(hdrs); + /* FIXME: this is broken, not necessarily all bytes are written */ + return 0; } diff --git a/src/modules/x11/module-x11-publish.c b/src/modules/x11/module-x11-publish.c index 2c7fdc123..7ee1b6daf 100644 --- a/src/modules/x11/module-x11-publish.c +++ b/src/modules/x11/module-x11-publish.c @@ -90,7 +90,7 @@ static void publish_servers(struct userdata *u, pa_strlist *l) { l = pa_strlist_reverse(l); s = pa_strlist_tostring(l); - l = pa_strlist_reverse(l); + pa_strlist_reverse(l); pa_x11_set_prop(pa_x11_wrapper_get_display(u->x11_wrapper), "PULSE_SERVER", s); pa_xfree(s); diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c index 888230127..9b5162628 100644 --- a/src/pulse/channelmap.c +++ b/src/pulse/channelmap.c @@ -219,11 +219,11 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p case 6: m->map[0] = PA_CHANNEL_POSITION_FRONT_LEFT; - m->map[1] = PA_CHANNEL_POSITION_REAR_LEFT; + m->map[1] = PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER; m->map[2] = PA_CHANNEL_POSITION_FRONT_CENTER; m->map[3] = PA_CHANNEL_POSITION_FRONT_RIGHT; - m->map[4] = PA_CHANNEL_POSITION_REAR_RIGHT; - m->map[5] = PA_CHANNEL_POSITION_LFE; + m->map[4] = PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER; + m->map[5] = PA_CHANNEL_POSITION_REAR_CENTER; return m; case 5: @@ -247,7 +247,7 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p m->map[0] = PA_CHANNEL_POSITION_LEFT; m->map[1] = PA_CHANNEL_POSITION_CENTER; m->map[2] = PA_CHANNEL_POSITION_RIGHT; - m->map[3] = PA_CHANNEL_POSITION_LFE; + m->map[3] = PA_CHANNEL_POSITION_REAR_CENTER; return m; default: @@ -299,6 +299,8 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p case PA_CHANNEL_MAP_WAVEEX: + /* Following http://www.microsoft.com/whdc/device/audio/multichaud.mspx#EKLAC */ + switch (channels) { case 1: m->map[0] = PA_CHANNEL_POSITION_MONO; @@ -451,6 +453,10 @@ int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) { pa_assert(b); pa_return_val_if_fail(pa_channel_map_valid(a), 0); + + if (PA_UNLIKELY(a == b)) + return 1; + pa_return_val_if_fail(pa_channel_map_valid(b), 0); if (a->channels != b->channels) @@ -639,6 +645,10 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) { pa_assert(b); pa_return_val_if_fail(pa_channel_map_valid(a), 0); + + if (PA_UNLIKELY(a == b)) + return 1; + pa_return_val_if_fail(pa_channel_map_valid(b), 0); am = pa_channel_map_mask(a); diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h index d7901ac21..469effc86 100644 --- a/src/pulse/channelmap.h +++ b/src/pulse/channelmap.h @@ -216,17 +216,27 @@ typedef enum pa_channel_map_def { PA_CHANNEL_MAP_AIFF, /**< The mapping from RFC3551, which is based on AIFF-C */ +/** \cond fulldocs */ PA_CHANNEL_MAP_ALSA, - /**< The default mapping used by ALSA */ + /**< The default mapping used by ALSA. This mapping is probably + * not too useful since ALSA's default channel mapping depends on + * the device string used. */ +/** \endcond */ PA_CHANNEL_MAP_AUX, /**< Only aux channels */ PA_CHANNEL_MAP_WAVEEX, - /**< Microsoft's WAVEFORMATEXTENSIBLE mapping */ + /**< Microsoft's WAVEFORMATEXTENSIBLE mapping. This mapping works + * as if all LSBs of dwChannelMask are set. */ +/** \cond fulldocs */ PA_CHANNEL_MAP_OSS, - /**< The default channel mapping used by OSS as defined in the OSS 4.0 API specs */ + /**< The default channel mapping used by OSS as defined in the OSS + * 4.0 API specs. This mapping is probably not too useful since + * the OSS API has changed in this respect and no longer knows a + * default channel mapping based on the number of channels. */ +/** \endcond */ /**< Upper limit of valid channel mapping definitions */ PA_CHANNEL_MAP_DEF_MAX, @@ -282,7 +292,7 @@ pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels, /** Return a text label for the specified channel position */ const char* pa_channel_position_to_string(pa_channel_position_t pos) PA_GCC_PURE; -/* The inverse of pa_channel_position_to_string(). \since 0.9.16 */ +/** The inverse of pa_channel_position_to_string(). \since 0.9.16 */ pa_channel_position_t pa_channel_position_from_string(const char *s) PA_GCC_PURE; /** Return a human readable text label for the specified channel position. \since 0.9.7 */ diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c index 940d0b673..4aa4ba1fc 100644 --- a/src/pulse/client-conf.c +++ b/src/pulse/client-conf.c @@ -92,16 +92,17 @@ int pa_client_conf_load(pa_client_conf *c, const char *filename) { /* Prepare the configuration parse table */ pa_config_item table[] = { - { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL }, - { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL }, - { "default-sink", pa_config_parse_string, &c->default_sink, NULL }, - { "default-source", pa_config_parse_string, &c->default_source, NULL }, - { "default-server", pa_config_parse_string, &c->default_server, NULL }, - { "autospawn", pa_config_parse_bool, &c->autospawn, NULL }, - { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL }, - { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL }, - { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL }, - { NULL, NULL, NULL, NULL }, + { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL }, + { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL }, + { "default-sink", pa_config_parse_string, &c->default_sink, NULL }, + { "default-source", pa_config_parse_string, &c->default_source, NULL }, + { "default-server", pa_config_parse_string, &c->default_server, NULL }, + { "autospawn", pa_config_parse_bool, &c->autospawn, NULL }, + { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL }, + { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL }, + { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL }, + { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL }, + { NULL, NULL, NULL, NULL }, }; if (filename) { diff --git a/src/pulse/client.conf.in b/src/pulse/client.conf.in index 579bcc204..6c8d371c4 100644 --- a/src/pulse/client.conf.in +++ b/src/pulse/client.conf.in @@ -29,5 +29,5 @@ ; cookie-file = -; disable-shm = no +; enable-shm = yes ; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB diff --git a/src/pulse/context.c b/src/pulse/context.c index 4ded55651..894ab2e0f 100644 --- a/src/pulse/context.c +++ b/src/pulse/context.c @@ -668,11 +668,24 @@ static pa_strlist *prepend_per_user(pa_strlist *l) { static int context_autospawn(pa_context *c) { pid_t pid; int status, r; - - pa_log_debug("Trying to autospawn..."); + struct sigaction sa; pa_context_ref(c); + if (sigaction(SIGCHLD, NULL, &sa) < 0) { + pa_log_debug("sigaction() failed: %s", pa_cstrerror(errno)); + pa_context_fail(c, PA_ERR_INTERNAL); + goto fail; + } + + if ((sa.sa_flags & SA_NOCLDWAIT) || sa.sa_handler == SIG_IGN) { + pa_log_debug("Process disabled waitpid(), cannot autospawn."); + pa_context_fail(c, PA_ERR_CONNECTIONREFUSED); + goto fail; + } + + pa_log_debug("Trying to autospawn..."); + if (c->spawn_api.prefork) c->spawn_api.prefork(); @@ -688,23 +701,23 @@ static int context_autospawn(pa_context *c) { /* Child */ const char *state = NULL; -#define MAX_ARGS 64 - const char * argv[MAX_ARGS+1]; - int n; + const char * argv[32]; + unsigned n = 0; if (c->spawn_api.atfork) c->spawn_api.atfork(); + /* We leave most of the cleaning up of the process environment + * to the executable. We only clean up the file descriptors to + * make sure the executable can actually be loaded + * correctly. */ pa_close_all(-1); /* Setup argv */ - - n = 0; - argv[n++] = c->conf->daemon_binary; argv[n++] = "--start"; - while (n < MAX_ARGS) { + while (n < PA_ELEMENTSOF(argv)-1) { char *a; if (!(a = pa_split_spaces(c->conf->extra_arguments, &state))) @@ -714,10 +727,10 @@ static int context_autospawn(pa_context *c) { } argv[n++] = NULL; + pa_assert(n <= PA_ELEMENTSOF(argv)); execv(argv[0], (char * const *) argv); _exit(1); -#undef MAX_ARGS } /* Parent */ @@ -730,9 +743,16 @@ static int context_autospawn(pa_context *c) { } while (r < 0 && errno == EINTR); if (r < 0) { - pa_log(_("waitpid(): %s"), pa_cstrerror(errno)); - pa_context_fail(c, PA_ERR_INTERNAL); - goto fail; + + if (errno != ESRCH) { + pa_log(_("waitpid(): %s"), pa_cstrerror(errno)); + pa_context_fail(c, PA_ERR_INTERNAL); + goto fail; + } + + /* hmm, something already reaped our child, so we assume + * startup worked, even if we cannot know */ + } else if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { pa_context_fail(c, PA_ERR_CONNECTIONREFUSED); goto fail; diff --git a/src/pulse/context.h b/src/pulse/context.h index cd129313e..ecff58dfc 100644 --- a/src/pulse/context.h +++ b/src/pulse/context.h @@ -147,12 +147,6 @@ * server. A pa_context object wraps a connection to a PulseAudio * server using its native protocol. */ -/** \example pacat.c - * A playback and recording tool using the asynchronous API */ - -/** \example paplay.c - * A sound file playback tool using the asynchronous API, based on libsndfile */ - PA_C_DECL_BEGIN /** An opaque connection context to a daemon */ @@ -267,7 +261,6 @@ pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_even for mainloop->time_restart). \since 0.9.16 */ void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec); - PA_C_DECL_END #endif diff --git a/src/pulse/def.h b/src/pulse/def.h index 08399ca84..1a7da974c 100644 --- a/src/pulse/def.h +++ b/src/pulse/def.h @@ -394,6 +394,7 @@ enum { PA_ERR_NOTIMPLEMENTED, /**< Missing implementation. \since 0.9.15 */ PA_ERR_FORKED, /**< The caller forked without calling execve() and tried to reuse the context. \since 0.9.15 */ PA_ERR_IO, /**< An IO error happened. \since 0.9.16 */ + PA_ERR_BUSY, /**< Device or resource busy. \since 0.9.17 */ PA_ERR_MAX /**< Not really an error but the first invalid error code */ }; diff --git a/src/pulse/error.c b/src/pulse/error.c index 93a13fc6e..e82769902 100644 --- a/src/pulse/error.c +++ b/src/pulse/error.c @@ -64,7 +64,9 @@ const char*pa_strerror(int error) { [PA_ERR_NOEXTENSION] = N_("No such extension"), [PA_ERR_OBSOLETE] = N_("Obsolete functionality"), [PA_ERR_NOTIMPLEMENTED] = N_("Missing implementation"), - [PA_ERR_FORKED] = N_("Client forked") + [PA_ERR_FORKED] = N_("Client forked"), + [PA_ERR_IO] = N_("Input/Output error"), + [PA_ERR_BUSY] = N_("Device or resource busy") }; pa_init_i18n(); diff --git a/src/pulse/ext-stream-restore.c b/src/pulse/ext-stream-restore.c index 63c911f80..10e9fd5dd 100644 --- a/src/pulse/ext-stream-restore.c +++ b/src/pulse/ext-stream-restore.c @@ -239,13 +239,10 @@ pa_operation *pa_ext_stream_restore_write( return o; fail: - if (o) { - pa_operation_cancel(o); - pa_operation_unref(o); - } + pa_operation_cancel(o); + pa_operation_unref(o); - if (t) - pa_tagstruct_free(t); + pa_tagstruct_free(t); pa_context_set_error(c, PA_ERR_INVALID); return NULL; @@ -290,13 +287,10 @@ pa_operation *pa_ext_stream_restore_delete( return o; fail: - if (o) { - pa_operation_cancel(o); - pa_operation_unref(o); - } + pa_operation_cancel(o); + pa_operation_unref(o); - if (t) - pa_tagstruct_free(t); + pa_tagstruct_free(t); pa_context_set_error(c, PA_ERR_INVALID); return NULL; diff --git a/src/pulse/glib-mainloop.h b/src/pulse/glib-mainloop.h index 189513a8e..67aba27d3 100644 --- a/src/pulse/glib-mainloop.h +++ b/src/pulse/glib-mainloop.h @@ -56,7 +56,9 @@ pa_glib_mainloop *pa_glib_mainloop_new(GMainContext *c); /** Free the GLIB main loop object */ void pa_glib_mainloop_free(pa_glib_mainloop* g); -/** Return the abstract main loop API vtable for the GLIB main loop object */ +/** Return the abstract main loop API vtable for the GLIB main loop + object. No need of freeing the API as it is owned by the loop and + it is destroyed when this dies */ pa_mainloop_api* pa_glib_mainloop_get_api(pa_glib_mainloop *g); PA_C_DECL_END diff --git a/src/pulse/internal.h b/src/pulse/internal.h index ec2da85be..e069c9e91 100644 --- a/src/pulse/internal.h +++ b/src/pulse/internal.h @@ -151,6 +151,11 @@ struct pa_stream { uint32_t device_index; char *device_name; + /* playback */ + pa_memblock *write_memblock; + void *write_data; + + /* recording */ pa_memchunk peek_memchunk; void *peek_data; pa_memblockq *record_memblockq; diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c index 27a587cb4..100413ee5 100644 --- a/src/pulse/introspect.c +++ b/src/pulse/introspect.c @@ -834,6 +834,8 @@ pa_operation* pa_context_get_card_info_by_name(pa_context *c, const char*name, p } pa_operation* pa_context_get_card_info_list(pa_context *c, pa_card_info_cb_t cb, void *userdata) { + PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15, PA_ERR_NOTSUPPORTED); + return pa_context_send_simple_command(c, PA_COMMAND_GET_CARD_INFO_LIST, context_get_card_info_callback, (pa_operation_cb_t) cb, userdata); } diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h index ee9821000..68cfc8745 100644 --- a/src/pulse/introspect.h +++ b/src/pulse/introspect.h @@ -331,6 +331,12 @@ pa_operation* pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, i /** Set the mute switch of a source device specified by its name */ pa_operation* pa_context_set_source_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata); +/** Suspend/Resume a source. \since 0.9.7 */ +pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void* userdata); + +/** Suspend/Resume a source. If idx is PA_INVALID_INDEX all sources will be suspended. \since 0.9.7 */ +pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void* userdata); + /** Change the profile of a source. \since 0.9.16 */ pa_operation* pa_context_set_source_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata); @@ -557,12 +563,6 @@ pa_operation* pa_context_move_source_output_by_name(pa_context *c, uint32_t idx, /** Move the specified source output to a different source. \since 0.9.5 */ pa_operation* pa_context_move_source_output_by_index(pa_context *c, uint32_t idx, uint32_t source_idx, pa_context_success_cb_t cb, void* userdata); -/** Suspend/Resume a source. \since 0.9.7 */ -pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void* userdata); - -/** Suspend/Resume a source. If idx is PA_INVALID_INDEX all sources will be suspended. \since 0.9.7 */ -pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void* userdata); - /** Kill a source output. */ pa_operation* pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata); diff --git a/src/pulse/mainloop.c b/src/pulse/mainloop.c index c418d1086..93a4742d0 100644 --- a/src/pulse/mainloop.c +++ b/src/pulse/mainloop.c @@ -765,23 +765,22 @@ static pa_time_event* find_next_time_event(pa_mainloop *m) { static int calc_next_timeout(pa_mainloop *m) { pa_time_event *t; - pa_usec_t usec; + pa_usec_t clock_now; if (!m->n_enabled_time_events) return -1; - t = find_next_time_event(m); - pa_assert(t); + pa_assert_se(t = find_next_time_event(m)); - if (t->time == 0) + if (t->time <= 0) return 0; - usec = t->time - pa_rtclock_now(); + clock_now = pa_rtclock_now(); - if (usec <= 0) + if (t->time <= clock_now) return 0; - return (int) (usec / 1000); /* in milliseconds */ + return (int) ((t->time - clock_now) / 1000); /* in milliseconds */ } static int dispatch_timeout(pa_mainloop *m) { diff --git a/src/pulse/mainloop.h b/src/pulse/mainloop.h index 4a83ebe8d..63abd588d 100644 --- a/src/pulse/mainloop.h +++ b/src/pulse/mainloop.h @@ -108,7 +108,9 @@ int pa_mainloop_iterate(pa_mainloop *m, int block, int *retval); /** Run unlimited iterations of the main loop object until the main loop's quit() routine is called. */ int pa_mainloop_run(pa_mainloop *m, int *retval); -/** Return the abstract main loop abstraction layer vtable for this main loop. */ +/** Return the abstract main loop abstraction layer vtable for this + main loop. No need of freeing the API as it is owned by the loop + and it is destroyed when this dies */ pa_mainloop_api* pa_mainloop_get_api(pa_mainloop*m); /** Shutdown the main loop */ diff --git a/src/pulse/operation.h b/src/pulse/operation.h index 7b0dabdd1..b6b5691d2 100644 --- a/src/pulse/operation.h +++ b/src/pulse/operation.h @@ -40,7 +40,11 @@ pa_operation *pa_operation_ref(pa_operation *o); /** Decrease the reference count by one */ void pa_operation_unref(pa_operation *o); -/** Cancel the operation. Beware! This will not necessarily cancel the execution of the operation on the server side. */ +/** Cancel the operation. Beware! This will not necessarily cancel the + * execution of the operation on the server side. However it will make + * sure that the callback associated with this operation will not be + * called anymore, effectively disabling the operation from the client + * side's view. */ void pa_operation_cancel(pa_operation *o); /** Return the current status of the operation */ diff --git a/src/pulse/proplist.c b/src/pulse/proplist.c index c904f533e..048b241a5 100644 --- a/src/pulse/proplist.c +++ b/src/pulse/proplist.c @@ -251,7 +251,7 @@ int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nb pa_assert(p); pa_assert(key); - pa_assert(data); + pa_assert(data || nbytes == 0); if (!property_name_valid(key)) return -1; @@ -264,7 +264,8 @@ int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nb pa_xfree(prop->value); prop->value = pa_xmalloc(nbytes+1); - memcpy(prop->value, data, nbytes); + if (nbytes > 0) + memcpy(prop->value, data, nbytes); ((char*) prop->value)[nbytes] = 0; prop->nbytes = nbytes; diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h index bc4dbd8ae..8bf9c4822 100644 --- a/src/pulse/proplist.h +++ b/src/pulse/proplist.h @@ -97,6 +97,24 @@ PA_C_DECL_BEGIN /** For streams that belong to a window on the screen: an XDG icon name for the window. e.g. "totem" */ #define PA_PROP_WINDOW_ICON_NAME "window.icon_name" +/** For streams that belong to a window on the screen: absolute horizontal window position on the screen, integer formatted as text string. e.g. "865". \since 0.9.17 */ +#define PA_PROP_WINDOW_X "window.x" + +/** For streams that belong to a window on the screen: absolute vertical window position on the screen, integer formatted as text string. e.g. "343". \since 0.9.17 */ +#define PA_PROP_WINDOW_Y "window.y" + +/** For streams that belong to a window on the screen: window width on the screen, integer formatted as text string. e.g. "365". \since 0.9.17 */ +#define PA_PROP_WINDOW_WIDTH "window.width" + +/** For streams that belong to a window on the screen: window height on the screen, integer formatted as text string. e.g. "643". \since 0.9.17 */ +#define PA_PROP_WINDOW_HEIGHT "window.height" + +/** For streams that belong to a window on the screen: relative position of the window center on the screen, float formatted as text string, ranging from 0.0 (left side of the screen) to 1.0 (right side of the screen). e.g. "0.65". \since 0.9.17 */ +#define PA_PROP_WINDOW_HPOS "window.hpos" + +/** For streams that belong to a window on the screen: relative position of the window center on the screen, float formatted as text string, ranging from 0.0 (top of the screen) to 1.0 (bottom of the screen). e.g. "0.43". \since 0.9.17 */ +#define PA_PROP_WINDOW_VPOS "window.vpos" + /** For streams that belong to an X11 window on the screen: the X11 display string. e.g. ":0.0" */ #define PA_PROP_WINDOW_X11_DISPLAY "window.x11.display" @@ -197,7 +215,7 @@ PA_C_DECL_BEGIN /** For filter devices: master device id if applicable. */ #define PA_PROP_DEVICE_MASTER_DEVICE "device.master_device" -/** For devices: buffer size in bytes, integer formatted as string.. */ +/** For devices: buffer size in bytes, integer formatted as string. */ #define PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE "device.buffering.buffer_size" /** For devices: fragment size in bytes, integer formatted as string. */ diff --git a/src/pulse/pulseaudio.h b/src/pulse/pulseaudio.h index aa369e695..793ba9b15 100644 --- a/src/pulse/pulseaudio.h +++ b/src/pulse/pulseaudio.h @@ -44,15 +44,17 @@ #include #include #include +#include /** \file - * Include all libpulse header files at once. The following - * files are included: \ref mainloop-api.h, \ref sample.h, \ref def.h, - * \ref context.h, \ref stream.h, \ref introspect.h, \ref subscribe.h, - * \ref scache.h, \ref version.h, \ref error.h, \ref channelmap.h, - * \ref operation.h,\ref volume.h, \ref xmalloc.h, \ref utf8.h, \ref - * thread-mainloop.h, \ref mainloop.h, \ref util.h, \ref proplist.h, \ref timeval.h and - * \ref mainloop-signal.h at once */ + * Include all libpulse header files at once. The following files are + * included: \ref mainloop-api.h, \ref sample.h, \ref def.h, \ref + * context.h, \ref stream.h, \ref introspect.h, \ref subscribe.h, \ref + * scache.h, \ref version.h, \ref error.h, \ref channelmap.h, \ref + * operation.h,\ref volume.h, \ref xmalloc.h, \ref utf8.h, \ref + * thread-mainloop.h, \ref mainloop.h, \ref util.h, \ref proplist.h, + * \ref timeval.h, \ref rtclock.h and \ref mainloop-signal.h at + * once */ /** \mainpage * diff --git a/src/pulse/sample.c b/src/pulse/sample.c index 0f19f8ebf..9698d8a55 100644 --- a/src/pulse/sample.c +++ b/src/pulse/sample.c @@ -36,28 +36,27 @@ #include "sample.h" +static const size_t size_table[] = { + [PA_SAMPLE_U8] = 1, + [PA_SAMPLE_ULAW] = 1, + [PA_SAMPLE_ALAW] = 1, + [PA_SAMPLE_S16LE] = 2, + [PA_SAMPLE_S16BE] = 2, + [PA_SAMPLE_FLOAT32LE] = 4, + [PA_SAMPLE_FLOAT32BE] = 4, + [PA_SAMPLE_S32LE] = 4, + [PA_SAMPLE_S32BE] = 4, + [PA_SAMPLE_S24LE] = 3, + [PA_SAMPLE_S24BE] = 3, + [PA_SAMPLE_S24_32LE] = 4, + [PA_SAMPLE_S24_32BE] = 4 +}; + size_t pa_sample_size_of_format(pa_sample_format_t f) { - - static const size_t table[] = { - [PA_SAMPLE_U8] = 1, - [PA_SAMPLE_ULAW] = 1, - [PA_SAMPLE_ALAW] = 1, - [PA_SAMPLE_S16LE] = 2, - [PA_SAMPLE_S16BE] = 2, - [PA_SAMPLE_FLOAT32LE] = 4, - [PA_SAMPLE_FLOAT32BE] = 4, - [PA_SAMPLE_S32LE] = 4, - [PA_SAMPLE_S32BE] = 4, - [PA_SAMPLE_S24LE] = 3, - [PA_SAMPLE_S24BE] = 3, - [PA_SAMPLE_S24_32LE] = 4, - [PA_SAMPLE_S24_32BE] = 4 - }; - pa_assert(f >= 0); pa_assert(f < PA_SAMPLE_MAX); - return table[f]; + return size_table[f]; } size_t pa_sample_size(const pa_sample_spec *spec) { @@ -65,35 +64,35 @@ size_t pa_sample_size(const pa_sample_spec *spec) { pa_assert(spec); pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); - return pa_sample_size_of_format(spec->format); + return size_table[spec->format]; } size_t pa_frame_size(const pa_sample_spec *spec) { pa_assert(spec); pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); - return pa_sample_size(spec) * spec->channels; + return size_table[spec->format] * spec->channels; } size_t pa_bytes_per_second(const pa_sample_spec *spec) { pa_assert(spec); pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); - return spec->rate*pa_frame_size(spec); + return spec->rate * size_table[spec->format] * spec->channels; } pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec) { pa_assert(spec); pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); - return (((pa_usec_t) (length / pa_frame_size(spec)) * PA_USEC_PER_SEC) / spec->rate); + return (((pa_usec_t) (length / (size_table[spec->format] * spec->channels)) * PA_USEC_PER_SEC) / spec->rate); } size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec) { pa_assert(spec); pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); - return (size_t) (((t * spec->rate) / PA_USEC_PER_SEC)) * pa_frame_size(spec); + return (size_t) (((t * spec->rate) / PA_USEC_PER_SEC)) * (size_table[spec->format] * spec->channels); } pa_sample_spec* pa_sample_spec_init(pa_sample_spec *spec) { @@ -109,12 +108,12 @@ pa_sample_spec* pa_sample_spec_init(pa_sample_spec *spec) { int pa_sample_spec_valid(const pa_sample_spec *spec) { pa_assert(spec); - if (spec->rate <= 0 || + if (PA_UNLIKELY (spec->rate <= 0 || spec->rate > PA_RATE_MAX || spec->channels <= 0 || spec->channels > PA_CHANNELS_MAX || spec->format >= PA_SAMPLE_MAX || - spec->format < 0) + spec->format < 0)) return 0; return 1; @@ -125,6 +124,10 @@ int pa_sample_spec_equal(const pa_sample_spec*a, const pa_sample_spec*b) { pa_assert(b); pa_return_val_if_fail(pa_sample_spec_valid(a), 0); + + if (PA_UNLIKELY(a == b)) + return 1; + pa_return_val_if_fail(pa_sample_spec_valid(b), 0); return diff --git a/src/pulse/sample.h b/src/pulse/sample.h index 53d7dea39..7a4a55a0f 100644 --- a/src/pulse/sample.h +++ b/src/pulse/sample.h @@ -302,6 +302,13 @@ pa_sample_format_t pa_parse_sample_format(const char *format) PA_GCC_PURE; /** Pretty print a sample type specification to a string */ char* pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec *spec); +/** Maximum required string length for pa_bytes_snprint(). Please note + * that this value can change with any release without warning and + * without being considered API or ABI breakage. You should not use + * this definition anywhere where it might become part of an + * ABI. \since 0.9.16 */ +#define PA_BYTES_SNPRINT_MAX 11 + /** Pretty print a byte size value. (i.e. "2.5 MiB") */ char* pa_bytes_snprint(char *s, size_t l, unsigned v); diff --git a/src/pulse/scache.c b/src/pulse/scache.c index 77f60d72c..27da6887a 100644 --- a/src/pulse/scache.c +++ b/src/pulse/scache.c @@ -187,7 +187,7 @@ pa_operation *pa_context_play_sample(pa_context *c, const char *name, const char pa_tagstruct_putu32(t, PA_INVALID_INDEX); pa_tagstruct_puts(t, dev); - if (volume == (pa_volume_t) -1 && c->version < 15) + if (volume == PA_VOLUME_INVALID && c->version < 15) volume = PA_VOLUME_NORM; pa_tagstruct_putu32(t, volume); @@ -216,7 +216,6 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE); PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID); PA_CHECK_VALIDITY_RETURN_NULL(c, !dev || *dev, PA_ERR_INVALID); - PA_CHECK_VALIDITY_RETURN_NULL(c, p, PA_ERR_INVALID); PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 13, PA_ERR_NOTSUPPORTED); o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata); @@ -228,12 +227,19 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na pa_tagstruct_putu32(t, PA_INVALID_INDEX); pa_tagstruct_puts(t, dev); - if (volume == (pa_volume_t) -1 && c->version < 15) + if (volume == PA_VOLUME_INVALID && c->version < 15) volume = PA_VOLUME_NORM; pa_tagstruct_putu32(t, volume); pa_tagstruct_puts(t, name); - pa_tagstruct_put_proplist(t, p); + + if (p) + pa_tagstruct_put_proplist(t, p); + else { + p = pa_proplist_new(); + pa_tagstruct_put_proplist(t, p); + pa_proplist_free(p); + } pa_pstream_send_tagstruct(c->pstream, t); pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, play_sample_with_proplist_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref); diff --git a/src/pulse/scache.h b/src/pulse/scache.h index cd579d2ec..31cf7b01c 100644 --- a/src/pulse/scache.h +++ b/src/pulse/scache.h @@ -101,7 +101,7 @@ pa_operation* pa_context_play_sample( pa_context *c /**< Context */, const char *name /**< Name of the sample to play */, const char *dev /**< Sink to play this sample on */, - pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here (pa_volume_t) -1 which will leave the decision about the volume to the server side which is a good idea. */ , + pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here PA_VOLUME_INVALID which will leave the decision about the volume to the server side which is a good idea. */ , pa_context_success_cb_t cb /**< Call this function after successfully starting playback, or NULL */, void *userdata /**< Userdata to pass to the callback */); @@ -113,7 +113,7 @@ pa_operation* pa_context_play_sample_with_proplist( pa_context *c /**< Context */, const char *name /**< Name of the sample to play */, const char *dev /**< Sink to play this sample on */, - pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here (pa_volume_t) -1 which will leave the decision about the volume to the server side which is a good idea. */ , + pa_volume_t volume /**< Volume to play this sample with. Starting with 0.9.15 you may pass here PA_VOLUME_INVALID which will leave the decision about the volume to the server side which is a good idea. */ , pa_proplist *proplist /**< Property list for this sound. The property list of the cached entry will be merged into this property list */, pa_context_play_sample_cb_t cb /**< Call this function after successfully starting playback, or NULL */, void *userdata /**< Userdata to pass to the callback */); diff --git a/src/pulse/simple.c b/src/pulse/simple.c index f4481fc32..9ed7a6535 100644 --- a/src/pulse/simple.c +++ b/src/pulse/simple.c @@ -70,8 +70,8 @@ struct pa_simple { #define CHECK_DEAD_GOTO(p, rerror, label) \ do { \ - if (!(p)->context || pa_context_get_state((p)->context) != PA_CONTEXT_READY || \ - !(p)->stream || pa_stream_get_state((p)->stream) != PA_STREAM_READY) { \ + if (!(p)->context || !PA_CONTEXT_IS_GOOD(pa_context_get_state((p)->context)) || \ + !(p)->stream || !PA_STREAM_IS_GOOD(pa_stream_get_state((p)->stream))) { \ if (((p)->context && pa_context_get_state((p)->context) == PA_CONTEXT_FAILED) || \ ((p)->stream && pa_stream_get_state((p)->stream) == PA_STREAM_FAILED)) { \ if (rerror) \ @@ -157,12 +157,8 @@ pa_simple* pa_simple_new( CHECK_VALIDITY_RETURN_ANY(rerror, ss && pa_sample_spec_valid(ss), PA_ERR_INVALID, NULL); CHECK_VALIDITY_RETURN_ANY(rerror, !map || (pa_channel_map_valid(map) && map->channels == ss->channels), PA_ERR_INVALID, NULL) - p = pa_xnew(pa_simple, 1); - p->context = NULL; - p->stream = NULL; + p = pa_xnew0(pa_simple, 1); p->direction = dir; - p->read_data = NULL; - p->read_index = p->read_length = 0; if (!(p->mainloop = pa_threaded_mainloop_new())) goto fail; @@ -182,12 +178,21 @@ pa_simple* pa_simple_new( if (pa_threaded_mainloop_start(p->mainloop) < 0) goto unlock_and_fail; - /* Wait until the context is ready */ - pa_threaded_mainloop_wait(p->mainloop); + for (;;) { + pa_context_state_t state; - if (pa_context_get_state(p->context) != PA_CONTEXT_READY) { - error = pa_context_errno(p->context); - goto unlock_and_fail; + state = pa_context_get_state(p->context); + + if (state == PA_CONTEXT_READY) + break; + + if (!PA_CONTEXT_IS_GOOD(state)) { + error = pa_context_errno(p->context); + goto unlock_and_fail; + } + + /* Wait until the context is ready */ + pa_threaded_mainloop_wait(p->mainloop); } if (!(p->stream = pa_stream_new(p->context, stream_name, ss, map))) { @@ -216,13 +221,21 @@ pa_simple* pa_simple_new( goto unlock_and_fail; } - /* Wait until the stream is ready */ - pa_threaded_mainloop_wait(p->mainloop); + for (;;) { + pa_stream_state_t state; - /* Wait until the stream is ready */ - if (pa_stream_get_state(p->stream) != PA_STREAM_READY) { - error = pa_context_errno(p->context); - goto unlock_and_fail; + state = pa_stream_get_state(p->stream); + + if (state == PA_STREAM_READY) + break; + + if (!PA_STREAM_IS_GOOD(state)) { + error = pa_context_errno(p->context); + goto unlock_and_fail; + } + + /* Wait until the stream is ready */ + pa_threaded_mainloop_wait(p->mainloop); } pa_threaded_mainloop_unlock(p->mainloop); @@ -248,8 +261,10 @@ void pa_simple_free(pa_simple *s) { if (s->stream) pa_stream_unref(s->stream); - if (s->context) + if (s->context) { + pa_context_disconnect(s->context); pa_context_unref(s->context); + } if (s->mainloop) pa_threaded_mainloop_free(s->mainloop); @@ -261,7 +276,8 @@ int pa_simple_write(pa_simple *p, const void*data, size_t length, int *rerror) { pa_assert(p); CHECK_VALIDITY_RETURN_ANY(rerror, p->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE, -1); - CHECK_VALIDITY_RETURN_ANY(rerror, data && length, PA_ERR_INVALID, -1); + CHECK_VALIDITY_RETURN_ANY(rerror, data, PA_ERR_INVALID, -1); + CHECK_VALIDITY_RETURN_ANY(rerror, length > 0, PA_ERR_INVALID, -1); pa_threaded_mainloop_lock(p->mainloop); @@ -300,7 +316,8 @@ int pa_simple_read(pa_simple *p, void*data, size_t length, int *rerror) { pa_assert(p); CHECK_VALIDITY_RETURN_ANY(rerror, p->direction == PA_STREAM_RECORD, PA_ERR_BADSTATE, -1); - CHECK_VALIDITY_RETURN_ANY(rerror, data && length, PA_ERR_INVALID, -1); + CHECK_VALIDITY_RETURN_ANY(rerror, data, PA_ERR_INVALID, -1); + CHECK_VALIDITY_RETURN_ANY(rerror, length > 0, PA_ERR_INVALID, -1); pa_threaded_mainloop_lock(p->mainloop); @@ -375,7 +392,7 @@ int pa_simple_drain(pa_simple *p, int *rerror) { CHECK_SUCCESS_GOTO(p, rerror, o, unlock_and_fail); p->operation_success = 0; - while (pa_operation_get_state(o) != PA_OPERATION_DONE) { + while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) { pa_threaded_mainloop_wait(p->mainloop); CHECK_DEAD_GOTO(p, rerror, unlock_and_fail); } @@ -411,7 +428,7 @@ int pa_simple_flush(pa_simple *p, int *rerror) { CHECK_SUCCESS_GOTO(p, rerror, o, unlock_and_fail); p->operation_success = 0; - while (pa_operation_get_state(o) != PA_OPERATION_DONE) { + while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) { pa_threaded_mainloop_wait(p->mainloop); CHECK_DEAD_GOTO(p, rerror, unlock_and_fail); } diff --git a/src/pulse/stream.c b/src/pulse/stream.c index 405563296..2bc2b1e4a 100644 --- a/src/pulse/stream.c +++ b/src/pulse/stream.c @@ -144,12 +144,13 @@ pa_stream *pa_stream_new_with_proplist( s->suspended = FALSE; s->corked = FALSE; + s->write_memblock = NULL; + s->write_data = NULL; + pa_memchunk_reset(&s->peek_memchunk); s->peek_data = NULL; - s->record_memblockq = NULL; - memset(&s->timing_info, 0, sizeof(s->timing_info)); s->timing_info_valid = FALSE; @@ -221,6 +222,11 @@ static void stream_free(pa_stream *s) { stream_unlink(s); + if (s->write_memblock) { + pa_memblock_release(s->write_memblock); + pa_memblock_unref(s->write_data); + } + if (s->peek_memchunk.memblock) { if (s->peek_data) pa_memblock_release(s->peek_memchunk.memblock); @@ -821,7 +827,7 @@ static void create_stream_complete(pa_stream *s) { if (s->flags & PA_STREAM_AUTO_TIMING_UPDATE) { s->auto_timing_interval_usec = AUTO_TIMING_INTERVAL_START_USEC; pa_assert(!s->auto_timing_update_event); - s->auto_timing_update_event = pa_context_rttime_new(s->context, pa_rtclock_now() + s->auto_timing_interval_usec, &auto_timing_update_callback, s); + s->auto_timing_update_event = pa_context_rttime_new(s->context, pa_rtclock_now() + s->auto_timing_interval_usec, &auto_timing_update_callback, s); request_auto_timing_update(s, TRUE); } @@ -861,7 +867,7 @@ static void automatic_buffer_attr(pa_stream *s, pa_buffer_attr *attr, const pa_s void pa_create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) { pa_stream *s = userdata; - uint32_t requested_bytes; + uint32_t requested_bytes = 0; pa_assert(pd); pa_assert(s); @@ -1166,7 +1172,7 @@ int pa_stream_connect_playback( const char *dev, const pa_buffer_attr *attr, pa_stream_flags_t flags, - pa_cvolume *volume, + const pa_cvolume *volume, pa_stream *sync_stream) { pa_assert(s); @@ -1187,20 +1193,71 @@ int pa_stream_connect_record( return create_stream(PA_STREAM_RECORD, s, dev, attr, flags, NULL, NULL); } +int pa_stream_begin_write( + pa_stream *s, + void **data, + size_t *nbytes) { + + pa_assert(s); + pa_assert(PA_REFCNT_VALUE(s) >= 1); + + PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED); + PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE); + PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE); + PA_CHECK_VALIDITY(s->context, data, PA_ERR_INVALID); + PA_CHECK_VALIDITY(s->context, nbytes && *nbytes != 0, PA_ERR_INVALID); + + if (*nbytes != (size_t) -1) { + size_t m, fs; + + m = pa_mempool_block_size_max(s->context->mempool); + fs = pa_frame_size(&s->sample_spec); + + m = (m / fs) * fs; + if (*nbytes > m) + *nbytes = m; + } + + if (!s->write_memblock) { + s->write_memblock = pa_memblock_new(s->context->mempool, *nbytes); + s->write_data = pa_memblock_acquire(s->write_memblock); + } + + *data = s->write_data; + *nbytes = pa_memblock_get_length(s->write_memblock); + + return 0; +} + +int pa_stream_cancel_write( + pa_stream *s) { + + pa_assert(s); + pa_assert(PA_REFCNT_VALUE(s) >= 1); + + PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED); + PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE); + PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE); + PA_CHECK_VALIDITY(s->context, s->write_memblock, PA_ERR_BADSTATE); + + pa_assert(s->write_data); + + pa_memblock_release(s->write_memblock); + pa_memblock_unref(s->write_memblock); + s->write_memblock = NULL; + s->write_data = NULL; + + return 0; +} + int pa_stream_write( pa_stream *s, const void *data, size_t length, - void (*free_cb)(void *p), + pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek) { - pa_memchunk chunk; - pa_seek_mode_t t_seek; - int64_t t_offset; - size_t t_length; - const void *t_data; - pa_assert(s); pa_assert(PA_REFCNT_VALUE(s) >= 1); pa_assert(data); @@ -1210,47 +1267,72 @@ int pa_stream_write( PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE); PA_CHECK_VALIDITY(s->context, seek <= PA_SEEK_RELATIVE_END, PA_ERR_INVALID); PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || (seek == PA_SEEK_RELATIVE && offset == 0), PA_ERR_INVALID); + PA_CHECK_VALIDITY(s->context, + !s->write_memblock || + ((data >= s->write_data) && + ((const char*) data + length <= (const char*) s->write_data + pa_memblock_get_length(s->write_memblock))), + PA_ERR_INVALID); + PA_CHECK_VALIDITY(s->context, !free_cb || !s->write_memblock, PA_ERR_INVALID); - if (length <= 0) - return 0; + if (s->write_memblock) { + pa_memchunk chunk; - t_seek = seek; - t_offset = offset; - t_length = length; - t_data = data; + /* pa_stream_write_begin() was called before */ - while (t_length > 0) { + pa_memblock_release(s->write_memblock); - chunk.index = 0; + chunk.memblock = s->write_memblock; + chunk.index = (const char *) data - (const char *) s->write_data; + chunk.length = length; - if (free_cb && !pa_pstream_get_shm(s->context->pstream)) { - chunk.memblock = pa_memblock_new_user(s->context->mempool, (void*) t_data, t_length, free_cb, 1); - chunk.length = t_length; - } else { - void *d; + s->write_memblock = NULL; + s->write_data = NULL; - chunk.length = PA_MIN(t_length, pa_mempool_block_size_max(s->context->mempool)); - chunk.memblock = pa_memblock_new(s->context->mempool, chunk.length); + pa_pstream_send_memblock(s->context->pstream, s->channel, offset, seek, &chunk); + pa_memblock_unref(chunk.memblock); - d = pa_memblock_acquire(chunk.memblock); - memcpy(d, t_data, chunk.length); - pa_memblock_release(chunk.memblock); + } else { + pa_seek_mode_t t_seek = seek; + int64_t t_offset = offset; + size_t t_length = length; + const void *t_data = data; + + /* pa_stream_write_begin() was not called before */ + + while (t_length > 0) { + pa_memchunk chunk; + + chunk.index = 0; + + if (free_cb && !pa_pstream_get_shm(s->context->pstream)) { + chunk.memblock = pa_memblock_new_user(s->context->mempool, (void*) t_data, t_length, free_cb, 1); + chunk.length = t_length; + } else { + void *d; + + chunk.length = PA_MIN(t_length, pa_mempool_block_size_max(s->context->mempool)); + chunk.memblock = pa_memblock_new(s->context->mempool, chunk.length); + + d = pa_memblock_acquire(chunk.memblock); + memcpy(d, t_data, chunk.length); + pa_memblock_release(chunk.memblock); + } + + pa_pstream_send_memblock(s->context->pstream, s->channel, t_offset, t_seek, &chunk); + + t_offset = 0; + t_seek = PA_SEEK_RELATIVE; + + t_data = (const uint8_t*) t_data + chunk.length; + t_length -= chunk.length; + + pa_memblock_unref(chunk.memblock); } - pa_pstream_send_memblock(s->context->pstream, s->channel, t_offset, t_seek, &chunk); - - t_offset = 0; - t_seek = PA_SEEK_RELATIVE; - - t_data = (const uint8_t*) t_data + chunk.length; - t_length -= chunk.length; - - pa_memblock_unref(chunk.memblock); + if (free_cb && pa_pstream_get_shm(s->context->pstream)) + free_cb((void*) data); } - if (free_cb && pa_pstream_get_shm(s->context->pstream)) - free_cb((void*) data); - /* This is obviously wrong since we ignore the seeking index . But * that's OK, the server side applies the same error */ s->requested_bytes -= (seek == PA_SEEK_RELATIVE ? offset : 0) + (int64_t) length; diff --git a/src/pulse/stream.h b/src/pulse/stream.h index 49c132a2b..21dd0a857 100644 --- a/src/pulse/stream.h +++ b/src/pulse/stream.h @@ -319,7 +319,7 @@ typedef struct pa_stream pa_stream; typedef void (*pa_stream_success_cb_t) (pa_stream*s, int success, void *userdata); /** A generic request callback */ -typedef void (*pa_stream_request_cb_t)(pa_stream *p, size_t bytes, void *userdata); +typedef void (*pa_stream_request_cb_t)(pa_stream *p, size_t nbytes, void *userdata); /** A generic notification callback */ typedef void (*pa_stream_notify_cb_t)(pa_stream *p, void *userdata); @@ -405,7 +405,7 @@ int pa_stream_connect_playback( const char *dev /**< Name of the sink to connect to, or NULL for default */ , const pa_buffer_attr *attr /**< Buffering attributes, or NULL for default */, pa_stream_flags_t flags /**< Additional flags, or 0 for default */, - pa_cvolume *volume /**< Initial volume, or NULL for default */, + const pa_cvolume *volume /**< Initial volume, or NULL for default */, pa_stream *sync_stream /**< Synchronize this stream with the specified one, or NULL for a standalone stream*/); /** Connect the stream to a source */ @@ -418,15 +418,71 @@ int pa_stream_connect_record( /** Disconnect a stream from a source/sink */ int pa_stream_disconnect(pa_stream *s); -/** Write some data to the server (for playback sinks), if free_cb is - * non-NULL this routine is called when all data has been written out - * and an internal reference to the specified data is kept, the data - * is not copied. If NULL, the data is copied into an internal - * buffer. The client my freely seek around in the output buffer. For +/** Prepare writing data to the server (for playback streams). This + * function may be used to optimize the number of memory copies when + * doing playback ("zero-copy"). It is recommended to call this + * function before each call to pa_stream_write(). Pass in the address + * to a pointer and an address of the number of bytes you want to + * write. On return the two values will contain a pointer where you + * can place the data to write and the maximum number of bytes you can + * write. On return *nbytes can be smaller or have the same value as + * you passed in. You need to be able to handle both cases. Accessing + * memory beyond the returned *nbytes value is invalid. Acessing the + * memory returned after the following pa_stream_write() or + * pa_stream_cancel_write() is invalid. On invocation only *nbytes + * needs to be initialized, on return both *data and *nbytes will be + * valid. If you place (size_t) -1 in *nbytes on invocation the memory + * size will be chosen automatically (which is recommended to + * do). After placing your data in the memory area returned call + * pa_stream_write() with data set to an address within this memory + * area and an nbytes value that is smaller or equal to what was + * returned by this function to actually execute the write. An + * invocation of pa_stream_write() should follow "quickly" on + * pa_stream_begin_write(). It is not recommended letting an unbounded + * amount of time pass after calling pa_stream_begin_write() and + * before calling pa_stream_write(). If you want to cancel a + * previously called pa_stream_begin_write() without calling + * pa_stream_write() use pa_stream_cancel_write(). Calling + * pa_stream_begin_write() twice without calling pa_stream_write() or + * pa_stream_cancel_write() in between will return exactly the same + * pointer/nbytes values.\since 0.9.16 */ +int pa_stream_begin_write( + pa_stream *p, + void **data, + size_t *nbytes); + +/** Reverses the effect of pa_stream_begin_write() dropping all data + * that has already been placed in the memory area returned by + * pa_stream_begin_write(). Only valid to call if + * pa_stream_begin_write() was called before and neither + * pa_stream_cancel_write() nor pa_stream_write() have been called + * yet. Accessing the memory previously returned by + * pa_stream_begin_write() after this call is invalid. Any further + * explicit freeing of the memory area is not necessary. \since + * 0.9.16 */ +int pa_stream_cancel_write( + pa_stream *p); + +/** Write some data to the server (for playback streams), if free_cb + * is non-NULL this routine is called when all data has been written + * out and an internal reference to the specified data is kept, the + * data is not copied. If NULL, the data is copied into an internal + * buffer. The client may freely seek around in the output buffer. For * most applications passing 0 and PA_SEEK_RELATIVE as arguments for * offset and seek should be useful. Afte ther write call succeeded * the write index will be a the position after where this chunk of - * data has been written to. */ + * data has been written to. + * + * As an optimization for avoiding needless memory copies you may call + * pa_stream_begin_write() before this call and then place your audio + * data directly in the memory area returned by that call. Then, pass + * a pointer to that memory area to pa_stream_write(). After the + * invocation of pa_stream_write() the memory area may no longer be + * accessed. Any further explicit freeing of the memory area is not + * necessary. It is OK to write the memory area returned by + * pa_stream_begin_write() only partially with this call, skipping + * bytes both at the end and at the beginning of the reserved memory + * area.*/ int pa_stream_write( pa_stream *p /**< The stream to use */, const void *data /**< The data to write */, @@ -435,11 +491,12 @@ int pa_stream_write( int64_t offset, /**< Offset for seeking, must be 0 for upload streams */ pa_seek_mode_t seek /**< Seek mode, must be PA_SEEK_RELATIVE for upload streams */); -/** Read the next fragment from the buffer (for recording). - * data will point to the actual data and length will contain the size - * of the data in bytes (which can be less than a complete framgnet). - * Use pa_stream_drop() to actually remove the data from the - * buffer. If no data is available will return a NULL pointer */ +/** Read the next fragment from the buffer (for recording streams). + * data will point to the actual data and nbytes will contain the size + * of the data in bytes (which can be less or more than a complete + * fragment). Use pa_stream_drop() to actually remove the data from + * the buffer. If no data is available this will return a NULL + * pointer */ int pa_stream_peek( pa_stream *p /**< The stream to use */, const void **data /**< Pointer to pointer that will point to data */, @@ -455,7 +512,9 @@ size_t pa_stream_writable_size(pa_stream *p); /** Return the number of bytes that may be read using pa_stream_peek()*/ size_t pa_stream_readable_size(pa_stream *p); -/** Drain a playback stream. Use this for notification when the buffer is empty */ +/** Drain a playback stream. Use this for notification when the buffer + * is empty. Please note that only one drain operation per stream may + * be issued at a time. */ pa_operation* pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata); /** Request a timing info structure update for a stream. Use diff --git a/src/pulse/thread-mainloop.c b/src/pulse/thread-mainloop.c index 6916d8671..a2b98ce12 100644 --- a/src/pulse/thread-mainloop.c +++ b/src/pulse/thread-mainloop.c @@ -51,7 +51,7 @@ struct pa_threaded_mainloop { pa_mainloop *real_mainloop; - int n_waiting; + int n_waiting, n_waiting_for_accept; pa_thread* thread; pa_mutex* mutex; @@ -190,8 +190,12 @@ void pa_threaded_mainloop_signal(pa_threaded_mainloop *m, int wait_for_accept) { pa_cond_signal(m->cond, 1); - if (wait_for_accept && m->n_waiting > 0) - pa_cond_wait(m->accept_cond, m->mutex); + if (wait_for_accept) { + m->n_waiting_for_accept ++; + + while (m->n_waiting_for_accept > 0) + pa_cond_wait(m->accept_cond, m->mutex); + } } void pa_threaded_mainloop_wait(pa_threaded_mainloop *m) { @@ -214,6 +218,9 @@ void pa_threaded_mainloop_accept(pa_threaded_mainloop *m) { /* Make sure that this function is not called from the helper thread */ pa_assert(!m->thread || !pa_thread_is_running(m->thread) || !in_worker(m)); + pa_assert(m->n_waiting_for_accept > 0); + m->n_waiting_for_accept --; + pa_cond_signal(m->accept_cond, 0); } diff --git a/src/pulse/thread-mainloop.h b/src/pulse/thread-mainloop.h index 8eddce4c4..2cf496e1c 100644 --- a/src/pulse/thread-mainloop.h +++ b/src/pulse/thread-mainloop.h @@ -137,15 +137,19 @@ PA_C_DECL_BEGIN * The main function, my_drain_stream_func(), will wait for the callback to * be called using pa_threaded_mainloop_wait(). * - * If your application is multi-threaded, then this waiting must be done - * inside a while loop. The reason for this is that multiple threads might be - * using pa_threaded_mainloop_wait() at the same time. Each thread must - * therefore verify that it was its callback that was invoked. + * If your application is multi-threaded, then this waiting must be + * done inside a while loop. The reason for this is that multiple + * threads might be using pa_threaded_mainloop_wait() at the same + * time. Each thread must therefore verify that it was its callback + * that was invoked. Also the underlying OS synchronization primitives + * are usually not free of spurious wake-ups, so a + * pa_threaded_mainloop_wait() must be called within a loop even if + * you have only one thread waiting. * * The callback, my_drain_callback(), indicates to the main function that it * has been called using pa_threaded_mainloop_signal(). * - * As you can see, both pa_threaded_mainloop_wait() may only be called with + * As you can see, pa_threaded_mainloop_wait() may only be called with * the lock held. The same thing is true for pa_threaded_mainloop_signal(), * but as the lock is held before the callback is invoked, you do not have to * deal with that. @@ -274,7 +278,9 @@ void pa_threaded_mainloop_unlock(pa_threaded_mainloop *m); * inside the event loop thread. Prior to this call the event loop * object needs to be locked using pa_threaded_mainloop_lock(). While * waiting the lock will be released, immediately before returning it - * will be acquired again. */ + * will be acquired again. This function may spuriously wake up even + * without _signal() being called. You need to make sure to handle + * that! */ void pa_threaded_mainloop_wait(pa_threaded_mainloop *m); /** Signal all threads waiting for a signalling event in @@ -293,7 +299,9 @@ void pa_threaded_mainloop_accept(pa_threaded_mainloop *m); /** Return the return value as specified with the main loop's quit() routine. */ int pa_threaded_mainloop_get_retval(pa_threaded_mainloop *m); -/** Return the abstract main loop abstraction layer vtable for this main loop. */ +/** Return the abstract main loop abstraction layer vtable for this + main loop. No need of freeing the API as it is owned by the loop + and it is destroyed when this dies */ pa_mainloop_api* pa_threaded_mainloop_get_api(pa_threaded_mainloop*m); /** Returns non-zero when called from withing the event loop thread. \since 0.9.7 */ diff --git a/src/pulse/utf8.c b/src/pulse/utf8.c index 6b58bde34..fe7bcd264 100644 --- a/src/pulse/utf8.c +++ b/src/pulse/utf8.c @@ -120,10 +120,8 @@ static char* utf8_validate(const char *str, char *output) { size = 4; min = (1 << 16); val = (uint32_t) (*p & 0x07); - } else { - size = 1; + } else goto error; - } p++; if (!is_continuation_char(*p)) @@ -150,12 +148,9 @@ ONE_REMAINING: if (o) { memcpy(o, last, (size_t) size); - o += size - 1; + o += size; } - if (o) - o++; - continue; error: diff --git a/src/pulse/util.c b/src/pulse/util.c index 6f1e40a93..9440f5de3 100644 --- a/src/pulse/util.c +++ b/src/pulse/util.c @@ -61,38 +61,40 @@ #include #include #include +#include #include "util.h" char *pa_get_user_name(char *s, size_t l) { const char *p; + char *name = NULL; +#ifdef OS_IS_WIN32 char buf[1024]; +#endif #ifdef HAVE_PWD_H - struct passwd pw, *r; + struct passwd *r; #endif pa_assert(s); pa_assert(l > 0); - if (!(p = (getuid() == 0 ? "root" : NULL)) && - !(p = getenv("USER")) && - !(p = getenv("LOGNAME")) && - !(p = getenv("USERNAME"))) { + if ((p = (getuid() == 0 ? "root" : NULL)) || + (p = getenv("USER")) || + (p = getenv("LOGNAME")) || + (p = getenv("USERNAME"))) + { + name = pa_strlcpy(s, p, l); + } else { #ifdef HAVE_PWD_H -#ifdef HAVE_GETPWUID_R - if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) { -#else - /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X) - * that do not support getpwuid_r. */ - if ((r = getpwuid(getuid())) == NULL) { -#endif + if ((r = pa_getpwuid_malloc(getuid())) == NULL) { pa_snprintf(s, l, "%lu", (unsigned long) getuid()); return s; } - p = r->pw_name; + name = pa_strlcpy(s, r->pw_name, l); + pa_getpwuid_free(r); #elif defined(OS_IS_WIN32) /* HAVE_PWD_H */ DWORD size = sizeof(buf); @@ -102,7 +104,7 @@ char *pa_get_user_name(char *s, size_t l) { return NULL; } - p = buf; + name = pa_strlcpy(s, buf, l); #else /* HAVE_PWD_H */ @@ -110,7 +112,7 @@ char *pa_get_user_name(char *s, size_t l) { #endif /* HAVE_PWD_H */ } - return pa_strlcpy(s, p, l); + return name; } char *pa_get_host_name(char *s, size_t l) { @@ -126,11 +128,10 @@ char *pa_get_host_name(char *s, size_t l) { } char *pa_get_home_dir(char *s, size_t l) { - char *e; + char *e, *dir; #ifdef HAVE_PWD_H - char buf[1024]; - struct passwd pw, *r; + struct passwd *r; #endif pa_assert(s); @@ -143,22 +144,19 @@ char *pa_get_home_dir(char *s, size_t l) { return pa_strlcpy(s, e, l); #ifdef HAVE_PWD_H - errno = 0; -#ifdef HAVE_GETPWUID_R - if (getpwuid_r(getuid(), &pw, buf, sizeof(buf), &r) != 0 || !r) { -#else - /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X) - * that do not support getpwuid_r. */ - if ((r = getpwuid(getuid())) == NULL) { -#endif + if ((r = pa_getpwuid_malloc(getuid())) == NULL) { if (!errno) errno = ENOENT; return NULL; } - return pa_strlcpy(s, r->pw_dir, l); + dir = pa_strlcpy(s, r->pw_dir, l); + + pa_getpwuid_free(r); + + return dir; #else /* HAVE_PWD_H */ errno = ENOENT; diff --git a/src/pulse/volume.c b/src/pulse/volume.c index 42cde5b96..2d2bba250 100644 --- a/src/pulse/volume.c +++ b/src/pulse/volume.c @@ -40,6 +40,10 @@ int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) { pa_assert(b); pa_return_val_if_fail(pa_cvolume_valid(a), 0); + + if (PA_UNLIKELY(a == b)) + return 1; + pa_return_val_if_fail(pa_cvolume_valid(b), 0); if (a->channels != b->channels) @@ -60,7 +64,7 @@ pa_cvolume* pa_cvolume_init(pa_cvolume *a) { a->channels = 0; for (c = 0; c < PA_CHANNELS_MAX; c++) - a->values[c] = (pa_volume_t) -1; + a->values[c] = PA_VOLUME_INVALID; return a; } @@ -122,7 +126,7 @@ pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, p } pa_volume_t pa_cvolume_max(const pa_cvolume *a) { - pa_volume_t m = 0; + pa_volume_t m = PA_VOLUME_MUTED; unsigned c; pa_assert(a); @@ -135,9 +139,23 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) { return m; } +pa_volume_t pa_cvolume_min(const pa_cvolume *a) { + pa_volume_t m = PA_VOLUME_MAX; + unsigned c; + + pa_assert(a); + pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED); + + for (c = 0; c < a->channels; c++) + if (a->values[c] < m) + m = a->values[c]; + + return m; +} + pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) { - pa_volume_t m = 0; - unsigned c, n; + pa_volume_t m = PA_VOLUME_MUTED; + unsigned c; pa_assert(a); @@ -146,7 +164,7 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED); - for (c = n = 0; c < a->channels; c++) { + for (c = 0; c < a->channels; c++) { if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask)) continue; @@ -158,17 +176,48 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p return m; } +pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) { + pa_volume_t m = PA_VOLUME_MAX; + unsigned c; + + pa_assert(a); + + if (!cm) + return pa_cvolume_min(a); + + pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED); + + for (c = 0; c < a->channels; c++) { + + if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask)) + continue; + + if (a->values[c] < m) + m = a->values[c]; + } + + return m; +} + pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) { - return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) * pa_sw_volume_to_linear(b)); + + pa_return_val_if_fail(a != PA_VOLUME_INVALID, PA_VOLUME_INVALID); + pa_return_val_if_fail(b != PA_VOLUME_INVALID, PA_VOLUME_INVALID); + + /* cbrt((a/PA_VOLUME_NORM)^3*(b/PA_VOLUME_NORM)^3)*PA_VOLUME_NORM = a*b/PA_VOLUME_NORM */ + + return (pa_volume_t) (((uint64_t) a * (uint64_t) b + (uint64_t) PA_VOLUME_NORM / 2ULL) / (uint64_t) PA_VOLUME_NORM); } pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) { - double v = pa_sw_volume_to_linear(b); - if (v <= 0) + pa_return_val_if_fail(a != PA_VOLUME_INVALID, PA_VOLUME_INVALID); + pa_return_val_if_fail(b != PA_VOLUME_INVALID, PA_VOLUME_INVALID); + + if (b <= PA_VOLUME_MUTED) return 0; - return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) / v); + return (pa_volume_t) (((uint64_t) a * (uint64_t) PA_VOLUME_NORM + (uint64_t) b / 2ULL) / (uint64_t) b); } /* Amplitude, not power */ @@ -189,6 +238,8 @@ pa_volume_t pa_sw_volume_from_dB(double dB) { double pa_sw_volume_to_dB(pa_volume_t v) { + pa_return_val_if_fail(v != PA_VOLUME_INVALID, PA_DECIBEL_MININFTY); + if (v <= PA_VOLUME_MUTED) return PA_DECIBEL_MININFTY; @@ -205,14 +256,19 @@ pa_volume_t pa_sw_volume_from_linear(double v) { * * http://www.robotplanet.dk/audio/audio_gui_design/ * http://lists.linuxaudio.org/pipermail/linux-audio-dev/2009-May/thread.html#23151 + * + * We make sure that the conversion to linear and back yields the + * same volume value! That's why we need the lround() below! */ - return (pa_volume_t) (cbrt(v) * PA_VOLUME_NORM); + return (pa_volume_t) lround(cbrt(v) * PA_VOLUME_NORM); } double pa_sw_volume_to_linear(pa_volume_t v) { double f; + pa_return_val_if_fail(v != PA_VOLUME_INVALID, 0.0); + if (v <= PA_VOLUME_MUTED) return 0.0; @@ -246,7 +302,7 @@ char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) { l -= pa_snprintf(e, l, "%s%u: %3u%%", first ? "" : " ", channel, - (c->values[channel]*100)/PA_VOLUME_NORM); + (c->values[channel]*100+PA_VOLUME_NORM/2)/PA_VOLUME_NORM); e = strchr(e, 0); first = FALSE; @@ -261,12 +317,12 @@ char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) { pa_init_i18n(); - if (v == (pa_volume_t) -1) { + if (v == PA_VOLUME_INVALID) { pa_snprintf(s, l, _("(invalid)")); return s; } - pa_snprintf(s, l, "%3u%%", (v*100)/PA_VOLUME_NORM); + pa_snprintf(s, l, "%3u%%", (v*100+PA_VOLUME_NORM/2)/PA_VOLUME_NORM); return s; } @@ -311,7 +367,7 @@ char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) { pa_init_i18n(); - if (v == (pa_volume_t) -1) { + if (v == PA_VOLUME_INVALID) { pa_snprintf(s, l, _("(invalid)")); return s; } @@ -328,6 +384,7 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) { pa_assert(a); pa_return_val_if_fail(pa_cvolume_valid(a), 0); + pa_return_val_if_fail(v != PA_VOLUME_INVALID, 0); for (c = 0; c < a->channels; c++) if (a->values[c] != v) @@ -361,6 +418,7 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_assert(a); pa_return_val_if_fail(pa_cvolume_valid(a), NULL); + pa_return_val_if_fail(b != PA_VOLUME_INVALID, NULL); for (i = 0; i < a->channels; i++) dest->values[i] = pa_sw_volume_multiply(a->values[i], b); @@ -395,6 +453,7 @@ pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, p pa_assert(a); pa_return_val_if_fail(pa_cvolume_valid(a), NULL); + pa_return_val_if_fail(b != PA_VOLUME_INVALID, NULL); for (i = 0; i < a->channels; i++) dest->values[i] = pa_sw_volume_divide(a->values[i], b); @@ -413,7 +472,7 @@ int pa_cvolume_valid(const pa_cvolume *v) { return 0; for (c = 0; c < v->channels; c++) - if (v->values[c] == (pa_volume_t) -1) + if (v->values[c] == PA_VOLUME_INVALID) return 0; return 1; @@ -451,8 +510,6 @@ pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa pa_assert(from); pa_assert(to); - pa_return_val_if_fail(pa_cvolume_valid(v), NULL); - pa_return_val_if_fail(pa_channel_map_valid(from), NULL); pa_return_val_if_fail(pa_channel_map_valid(to), NULL); pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, from), NULL); @@ -554,8 +611,6 @@ float pa_cvolume_get_balance(const pa_cvolume *v, const pa_channel_map *map) { pa_assert(v); pa_assert(map); - pa_return_val_if_fail(pa_cvolume_valid(v), 0.0f); - pa_return_val_if_fail(pa_channel_map_valid(map), 0.0f); pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), 0.0f); if (!pa_channel_map_can_balance(map)) @@ -587,12 +642,10 @@ pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, flo pa_assert(map); pa_assert(v); - pa_assert(new_balance >= -1.0f); - pa_assert(new_balance <= 1.0f); - pa_return_val_if_fail(pa_cvolume_valid(v), NULL); - pa_return_val_if_fail(pa_channel_map_valid(map), NULL); pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), NULL); + pa_return_val_if_fail(new_balance >= -1.0f, NULL); + pa_return_val_if_fail(new_balance <= 1.0f, NULL); if (!pa_channel_map_can_balance(map)) return v; @@ -633,7 +686,7 @@ pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) { pa_assert(v); pa_return_val_if_fail(pa_cvolume_valid(v), NULL); - pa_return_val_if_fail(max != (pa_volume_t) -1, NULL); + pa_return_val_if_fail(max != PA_VOLUME_INVALID, NULL); t = pa_cvolume_max(v); @@ -652,8 +705,12 @@ pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map pa_assert(v); - pa_return_val_if_fail(pa_cvolume_valid(v), NULL); - pa_return_val_if_fail(max != (pa_volume_t) -1, NULL); + pa_return_val_if_fail(max != PA_VOLUME_INVALID, NULL); + + if (!cm) + return pa_cvolume_scale(v, max); + + pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, cm), NULL); t = pa_cvolume_max_mask(v, cm, mask); @@ -704,8 +761,6 @@ float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) { pa_assert(v); pa_assert(map); - pa_return_val_if_fail(pa_cvolume_valid(v), 0.0f); - pa_return_val_if_fail(pa_channel_map_valid(map), 0.0f); pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), 0.0f); if (!pa_channel_map_can_fade(map)) @@ -728,12 +783,10 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float pa_assert(map); pa_assert(v); - pa_assert(new_fade >= -1.0f); - pa_assert(new_fade <= 1.0f); - pa_return_val_if_fail(pa_cvolume_valid(v), NULL); - pa_return_val_if_fail(pa_channel_map_valid(map), NULL); pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(v, map), NULL); + pa_return_val_if_fail(new_fade >= -1.0f, NULL); + pa_return_val_if_fail(new_fade <= 1.0f, NULL); if (!pa_channel_map_can_fade(map)) return v; @@ -781,6 +834,7 @@ pa_cvolume* pa_cvolume_set_position( pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL); pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL); + pa_return_val_if_fail(v != PA_VOLUME_INVALID, NULL); for (c = 0; c < map->channels; c++) if (map->map[c] == t) { @@ -812,3 +866,57 @@ pa_volume_t pa_cvolume_get_position( return v; } + +pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) { + unsigned i; + + pa_assert(dest); + pa_assert(a); + pa_assert(b); + + pa_return_val_if_fail(pa_cvolume_valid(a), NULL); + pa_return_val_if_fail(pa_cvolume_valid(b), NULL); + + for (i = 0; i < a->channels && i < b->channels; i++) + dest->values[i] = PA_MAX(a->values[i], b->values[i]); + + dest->channels = (uint8_t) i; + + return dest; +} + +pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) { + pa_volume_t m; + + pa_assert(v); + + pa_return_val_if_fail(pa_cvolume_valid(v), NULL); + pa_return_val_if_fail(inc != PA_VOLUME_INVALID, NULL); + + m = pa_cvolume_max(v); + + if (m >= PA_VOLUME_MAX - inc) + m = PA_VOLUME_MAX; + else + m += inc; + + return pa_cvolume_scale(v, m); +} + +pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) { + pa_volume_t m; + + pa_assert(v); + + pa_return_val_if_fail(pa_cvolume_valid(v), NULL); + pa_return_val_if_fail(dec != PA_VOLUME_INVALID, NULL); + + m = pa_cvolume_max(v); + + if (m <= PA_VOLUME_MUTED + dec) + m = PA_VOLUME_MUTED; + else + m -= dec; + + return pa_cvolume_scale(v, m); +} diff --git a/src/pulse/volume.h b/src/pulse/volume.h index 05b7ebb40..c964020ac 100644 --- a/src/pulse/volume.h +++ b/src/pulse/volume.h @@ -106,11 +106,14 @@ typedef uint32_t pa_volume_t; /** Normal volume (100%, 0 dB) */ #define PA_VOLUME_NORM ((pa_volume_t) 0x10000U) -/** Muted volume (0%, -inf dB) */ +/** Muted (minimal valid) volume (0%, -inf dB) */ #define PA_VOLUME_MUTED ((pa_volume_t) 0U) -/** Maximum volume we can store. \since 0.9.15 */ -#define PA_VOLUME_MAX ((pa_volume_t) UINT32_MAX) +/** Maximum valid volume we can store. \since 0.9.15 */ +#define PA_VOLUME_MAX ((pa_volume_t) UINT32_MAX-1) + +/** Special 'invalid' volume. \since 0.9.16 */ +#define PA_VOLUME_INVALID ((pa_volume_t) UINT32_MAX) /** A structure encapsulating a per-channel volume */ typedef struct pa_cvolume { @@ -195,6 +198,16 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) PA_GCC_PURE; * \since 0.9.16 */ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE; +/** Return the minimum volume of all channels. \since 0.9.16 */ +pa_volume_t pa_cvolume_min(const pa_cvolume *a) PA_GCC_PURE; + +/** Return the minimum volume of all channels that are included in the + * specified channel map with the specified channel position mask. If + * cm is NULL this call is identical to pa_cvolume_min(). If no + * channel is selected the returned value will be PA_VOLUME_MUTED. + * \since 0.9.16 */ +pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE; + /** Return TRUE when the passed cvolume structure is valid, FALSE otherwise */ int pa_cvolume_valid(const pa_cvolume *v) PA_GCC_PURE; @@ -213,11 +226,13 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) PA_GCC_PURE pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) PA_GCC_CONST; /** Multiply two per-channel volumes and return the result in - * *dest. This is only valid for software volumes! */ + * *dest. This is only valid for software volumes! a, b and dest may + * point to the same structure. */ pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b); /** Multiply a per-channel volume with a scalar volume and return the - * result in *dest. This is only valid for software volumes! \since + * result in *dest. This is only valid for software volumes! a + * and dest may point to the same structure. \since * 0.9.16 */ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b); @@ -228,11 +243,13 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) PA_GCC_CONST; /** Divide two per-channel volumes and return the result in - * *dest. This is only valid for software volumes! \since 0.9.13 */ + * *dest. This is only valid for software volumes! a, b + * and dest may point to the same structure. \since 0.9.13 */ pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b); /** Divide a per-channel volume by a scalar volume and return the - * result in *dest. This is only valid for software volumes! \since + * result in *dest. This is only valid for software volumes! a + * and dest may point to the same structure. \since * 0.9.16 */ pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b); @@ -326,6 +343,19 @@ pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, p * position by calling pa_channel_map_has_position(). \since 0.9.16 */ pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) PA_GCC_PURE; +/** This goes through all channels in a and b and sets the + * corresponding channel in dest to the greater volume of both. a, b + * and dest may point to the same structure. \since 0.9.16 */ +pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b); + +/** Increase the volume passed in by 'inc'. The proportions between + * the channels are kept. \since 0.9.16 */ +pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc); + +/** Increase the volume passed in by 'inc'. The proportions between + * the channels are kept. \since 0.9.16 */ +pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec); + PA_C_DECL_END #endif diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c index 083d9de21..b0804f79f 100644 --- a/src/pulsecore/asyncmsgq.c +++ b/src/pulsecore/asyncmsgq.c @@ -26,14 +26,16 @@ #include #include +#include + #include +#include #include #include #include #include #include #include -#include #include "asyncmsgq.h" @@ -76,7 +78,7 @@ static void asyncmsgq_free(pa_asyncmsgq *a) { struct asyncmsgq_item *i; pa_assert(a); - while ((i = pa_asyncq_pop(a->asyncq, 0))) { + while ((i = pa_asyncq_pop(a->asyncq, FALSE))) { pa_assert(!i->semaphore); @@ -246,7 +248,7 @@ int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code) { pa_memchunk chunk; int ret; - if (pa_asyncmsgq_get(a, &o, &c, &data, &offset, &chunk, 1) < 0) + if (pa_asyncmsgq_get(a, &o, &c, &data, &offset, &chunk, TRUE) < 0) return -1; ret = pa_asyncmsgq_dispatch(o, c, data, offset, &chunk); @@ -269,7 +271,7 @@ int pa_asyncmsgq_process_one(pa_asyncmsgq *a) { pa_assert(PA_REFCNT_VALUE(a) > 0); - if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, 0) < 0) + if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, FALSE) < 0) return 0; pa_asyncmsgq_ref(a); @@ -323,3 +325,35 @@ int pa_asyncmsgq_dispatch(pa_msgobject *object, int code, void *userdata, int64_ return 0; } + +void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run) { + pa_assert(PA_REFCNT_VALUE(a) > 0); + + for (;;) { + pa_msgobject *object; + int code; + void *data; + int64_t offset; + pa_memchunk chunk; + int ret; + + if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, FALSE) < 0) + return; + + if (!run) { + pa_asyncmsgq_done(a, -1); + continue; + } + + pa_asyncmsgq_ref(a); + ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk); + pa_asyncmsgq_done(a, ret); + pa_asyncmsgq_unref(a); + } +} + +pa_bool_t pa_asyncmsgq_dispatching(pa_asyncmsgq *a) { + pa_assert(PA_REFCNT_VALUE(a) > 0); + + return !!a->current; +} diff --git a/src/pulsecore/asyncmsgq.h b/src/pulsecore/asyncmsgq.h index 1f38207a3..1085c2f02 100644 --- a/src/pulsecore/asyncmsgq.h +++ b/src/pulsecore/asyncmsgq.h @@ -66,6 +66,8 @@ void pa_asyncmsgq_done(pa_asyncmsgq *q, int ret); int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code); int pa_asyncmsgq_process_one(pa_asyncmsgq *a); +void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run); + /* For the reading side */ int pa_asyncmsgq_read_fd(pa_asyncmsgq *q); int pa_asyncmsgq_read_before_poll(pa_asyncmsgq *a); @@ -76,4 +78,6 @@ int pa_asyncmsgq_write_fd(pa_asyncmsgq *q); void pa_asyncmsgq_write_before_poll(pa_asyncmsgq *a); void pa_asyncmsgq_write_after_poll(pa_asyncmsgq *a); +pa_bool_t pa_asyncmsgq_dispatching(pa_asyncmsgq *a); + #endif diff --git a/src/pulsecore/aupdate.c b/src/pulsecore/aupdate.c index 56ebb8e5d..85b6e00e8 100644 --- a/src/pulsecore/aupdate.c +++ b/src/pulsecore/aupdate.c @@ -39,6 +39,7 @@ struct pa_aupdate { pa_atomic_t read_lock; pa_mutex *write_lock; pa_semaphore *semaphore; + pa_bool_t swapped; }; pa_aupdate *pa_aupdate_new(void) { @@ -101,6 +102,8 @@ unsigned pa_aupdate_write_begin(pa_aupdate *a) { n = (unsigned) pa_atomic_load(&a->read_lock); + a->swapped = FALSE; + return !WHICH(n); } @@ -119,11 +122,16 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a) { break; } + a->swapped = TRUE; + return WHICH(n); } void pa_aupdate_write_end(pa_aupdate *a) { pa_assert(a); + if (!a->swapped) + pa_aupdate_write_swap(a); + pa_mutex_unlock(a->write_lock); } diff --git a/src/pulsecore/aupdate.h b/src/pulsecore/aupdate.h index 072e382d0..fb38ffa22 100644 --- a/src/pulsecore/aupdate.h +++ b/src/pulsecore/aupdate.h @@ -93,6 +93,10 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a); * pa_update_write_end(a) * } * + * In some cases keeping both structures up-to-date might not be + * necessary, since they are fully rebuilt on each iteration + * anyway. In that case you may leave the _write_swap() call out, it + * will then be done implicitly in the _write_end() invocation. */ #endif diff --git a/src/pulsecore/authkey.c b/src/pulsecore/authkey.c index 1e31d0768..15613e273 100644 --- a/src/pulsecore/authkey.c +++ b/src/pulsecore/authkey.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -147,47 +148,46 @@ int pa_authkey_load(const char *path, void *data, size_t length) { /* If the specified file path starts with / return it, otherwise * return path prepended with home directory */ -static const char *normalize_path(const char *fn, char *s, size_t l) { +static char *normalize_path(const char *fn) { pa_assert(fn); - pa_assert(s); - pa_assert(l > 0); #ifndef OS_IS_WIN32 if (fn[0] != '/') { #else if (strlen(fn) < 3 || !isalpha(fn[0]) || fn[1] != ':' || fn[2] != '\\') { #endif - char homedir[PATH_MAX]; + char *homedir, *s; - if (!pa_get_home_dir(homedir, sizeof(homedir))) + if (!(homedir = pa_get_home_dir_malloc())) return NULL; -#ifndef OS_IS_WIN32 - pa_snprintf(s, l, "%s/%s", homedir, fn); -#else - pa_snprintf(s, l, "%s\\%s", homedir, fn); -#endif + s = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", homedir, fn); + pa_xfree(homedir); + return s; } - return fn; + return pa_xstrdup(fn); } /* Load a cookie from a file in the home directory. If the specified * path starts with /, use it as absolute path instead. */ int pa_authkey_load_auto(const char *fn, void *data, size_t length) { - char path[PATH_MAX]; - const char *p; + char *p; + int ret; pa_assert(fn); pa_assert(data); pa_assert(length > 0); - if (!(p = normalize_path(fn, path, sizeof(path)))) + if (!(p = normalize_path(fn))) return -2; - return pa_authkey_load(p, data, length); + ret = pa_authkey_load(p, data, length); + pa_xfree(p); + + return ret; } /* Store the specified cookie in the specified cookie file */ @@ -195,14 +195,13 @@ int pa_authkey_save(const char *fn, const void *data, size_t length) { int fd = -1; int unlock = 0, ret = -1; ssize_t r; - char path[PATH_MAX]; - const char *p; + char *p; pa_assert(fn); pa_assert(data); pa_assert(length > 0); - if (!(p = normalize_path(fn, path, sizeof(path)))) + if (!(p = normalize_path(fn))) return -2; if ((fd = open(p, O_RDWR|O_CREAT|O_NOCTTY, S_IRUSR|S_IWUSR)) < 0) { @@ -232,5 +231,7 @@ finish: } } + pa_xfree(p); + return ret; } diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c index e2c3c066c..b57919a44 100644 --- a/src/pulsecore/cli-command.c +++ b/src/pulsecore/cli-command.c @@ -328,7 +328,7 @@ static int pa_cli_command_source_outputs(pa_core *c, pa_tokenizer *t, pa_strbuf static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) { char ss[PA_SAMPLE_SPEC_SNPRINT_MAX]; char cm[PA_CHANNEL_MAP_SNPRINT_MAX]; - char s[256]; + char bytes[PA_BYTES_SNPRINT_MAX]; const pa_mempool_stat *stat; unsigned k; pa_sink *def_sink; @@ -352,22 +352,22 @@ static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b pa_strbuf_printf(buf, "Memory blocks currently allocated: %u, size: %s.\n", (unsigned) pa_atomic_load(&stat->n_allocated), - pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->allocated_size))); + pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->allocated_size))); pa_strbuf_printf(buf, "Memory blocks allocated during the whole lifetime: %u, size: %s.\n", (unsigned) pa_atomic_load(&stat->n_accumulated), - pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->accumulated_size))); + pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->accumulated_size))); pa_strbuf_printf(buf, "Memory blocks imported from other processes: %u, size: %s.\n", (unsigned) pa_atomic_load(&stat->n_imported), - pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->imported_size))); + pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->imported_size))); pa_strbuf_printf(buf, "Memory blocks exported to other processes: %u, size: %s.\n", (unsigned) pa_atomic_load(&stat->n_exported), - pa_bytes_snprint(s, sizeof(s), (unsigned) pa_atomic_load(&stat->exported_size))); + pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_atomic_load(&stat->exported_size))); pa_strbuf_printf(buf, "Total sample cache size: %s.\n", - pa_bytes_snprint(s, sizeof(s), (unsigned) pa_scache_total_size(c))); + pa_bytes_snprint(bytes, sizeof(bytes), (unsigned) pa_scache_total_size(c))); pa_strbuf_printf(buf, "Default sample spec: %s\n", pa_sample_spec_snprint(ss, sizeof(ss), &c->default_sample_spec)); @@ -529,8 +529,8 @@ static int pa_cli_command_sink_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *bu return -1; } - pa_cvolume_set(&cvolume, sink->sample_spec.channels, volume); - pa_sink_set_volume(sink, &cvolume, TRUE, TRUE, TRUE, TRUE); + pa_cvolume_set(&cvolume, 1, volume); + pa_sink_set_volume(sink, &cvolume, TRUE, TRUE); return 0; } @@ -571,7 +571,7 @@ static int pa_cli_command_sink_input_volume(pa_core *c, pa_tokenizer *t, pa_strb return -1; } - pa_cvolume_set(&cvolume, si->sample_spec.channels, volume); + pa_cvolume_set(&cvolume, 1, volume); pa_sink_input_set_volume(si, &cvolume, TRUE, TRUE); return 0; } @@ -607,7 +607,7 @@ static int pa_cli_command_source_volume(pa_core *c, pa_tokenizer *t, pa_strbuf * return -1; } - pa_cvolume_set(&cvolume, source->sample_spec.channels, volume); + pa_cvolume_set(&cvolume, 1, volume); pa_source_set_volume(source, &cvolume, TRUE); return 0; } @@ -1549,7 +1549,7 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b pa_sink *sink; pa_source *source; pa_card *card; - int nl; + pa_bool_t nl; uint32_t idx; char txt[256]; time_t now; @@ -1567,7 +1567,7 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b pa_strbuf_printf(buf, "### Configuration dump generated at %s\n", ctime(&now)); #endif - for (m = pa_idxset_first(c->modules, &idx); m; m = pa_idxset_next(c->modules, &idx)) { + PA_IDXSET_FOREACH(m, c->modules, idx) { pa_strbuf_printf(buf, "load-module %s", m->name); @@ -1577,58 +1577,58 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b pa_strbuf_puts(buf, "\n"); } - nl = 0; - - for (sink = pa_idxset_first(c->sinks, &idx); sink; sink = pa_idxset_next(c->sinks, &idx)) { + nl = FALSE; + PA_IDXSET_FOREACH(sink, c->sinks, idx) { if (!nl) { pa_strbuf_puts(buf, "\n"); - nl = 1; + nl = TRUE; } - pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_avg(pa_sink_get_volume(sink, FALSE, TRUE))); + pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_max(pa_sink_get_volume(sink, FALSE))); pa_strbuf_printf(buf, "set-sink-mute %s %s\n", sink->name, pa_yes_no(pa_sink_get_mute(sink, FALSE))); pa_strbuf_printf(buf, "suspend-sink %s %s\n", sink->name, pa_yes_no(pa_sink_get_state(sink) == PA_SINK_SUSPENDED)); } - for (source = pa_idxset_first(c->sources, &idx); source; source = pa_idxset_next(c->sources, &idx)) { + nl = FALSE; + PA_IDXSET_FOREACH(source, c->sources, idx) { if (!nl) { pa_strbuf_puts(buf, "\n"); - nl = 1; + nl = TRUE; } - pa_strbuf_printf(buf, "set-source-volume %s 0x%03x\n", source->name, pa_cvolume_avg(pa_source_get_volume(source, FALSE))); + pa_strbuf_printf(buf, "set-source-volume %s 0x%03x\n", source->name, pa_cvolume_max(pa_source_get_volume(source, FALSE))); pa_strbuf_printf(buf, "set-source-mute %s %s\n", source->name, pa_yes_no(pa_source_get_mute(source, FALSE))); pa_strbuf_printf(buf, "suspend-source %s %s\n", source->name, pa_yes_no(pa_source_get_state(source) == PA_SOURCE_SUSPENDED)); } - for (card = pa_idxset_first(c->cards, &idx); card; card = pa_idxset_next(c->cards, &idx)) { + nl = FALSE; + PA_IDXSET_FOREACH(card, c->cards, idx) { if (!nl) { pa_strbuf_puts(buf, "\n"); - nl = 1; + nl = TRUE; } if (card->active_profile) pa_strbuf_printf(buf, "set-card-profile %s %s\n", card->name, card->active_profile->name); } - nl = 0; - + nl = FALSE; if ((sink = pa_namereg_get_default_sink(c))) { if (!nl) { pa_strbuf_puts(buf, "\n"); - nl = 1; + nl = TRUE; } + pa_strbuf_printf(buf, "set-default-sink %s\n", sink->name); } if ((source = pa_namereg_get_default_source(c))) { - if (!nl) { + if (!nl) pa_strbuf_puts(buf, "\n"); - nl = 1; - } + pa_strbuf_printf(buf, "set-default-source %s\n", source->name); } @@ -1813,8 +1813,6 @@ int pa_cli_command_execute_file(pa_core *c, const char *fn, pa_strbuf *buf, pa_b ret = pa_cli_command_execute_file_stream(c, f, buf, fail); - ret = 0; - fail: if (f) fclose(f); diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c index 9395513d1..23a57d370 100644 --- a/src/pulsecore/cli-text.c +++ b/src/pulsecore/cli-text.c @@ -232,6 +232,7 @@ char *pa_sink_list_to_string(pa_core *c) { "\tflags: %s%s%s%s%s%s%s%s\n" "\tstate: %s\n" "\tsuspend cause: %s%s%s%s\n" + "\tpriority: %u\n" "\tvolume: %s%s%s\n" "\t balance %0.2f\n" "\tbase volume: %s%s%s\n" @@ -262,10 +263,11 @@ char *pa_sink_list_to_string(pa_core *c) { sink->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "", sink->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "", sink->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "", - pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE, FALSE)), + sink->priority, + pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE)), sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "", - sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE, FALSE)) : "", - pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE, FALSE), &sink->channel_map), + sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE)) : "", + pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE), &sink->channel_map), pa_volume_snprint(v, sizeof(v), sink->base_volume), sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "", sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_volume_snprint_dB(vdb, sizeof(vdb), sink->base_volume) : "", @@ -296,7 +298,7 @@ char *pa_sink_list_to_string(pa_core *c) { pa_strbuf_printf( s, "\tfixed latency: %0.2f ms\n", - (double) pa_sink_get_requested_latency(sink) / PA_USEC_PER_MSEC); + (double) pa_sink_get_fixed_latency(sink) / PA_USEC_PER_MSEC); if (sink->card) pa_strbuf_printf(s, "\tcard: %u <%s>\n", sink->card->index, sink->card->name); @@ -356,6 +358,7 @@ char *pa_source_list_to_string(pa_core *c) { "\tflags: %s%s%s%s%s%s%s\n" "\tstate: %s\n" "\tsuspend cause: %s%s%s%s\n" + "\tpriority: %u\n" "\tvolume: %s%s%s\n" "\t balance %0.2f\n" "\tbase volume: %s%s%s\n" @@ -383,6 +386,7 @@ char *pa_source_list_to_string(pa_core *c) { source->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "", source->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "", source->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "", + source->priority, pa_cvolume_snprint(cv, sizeof(cv), pa_source_get_volume(source, FALSE)), source->flags & PA_SOURCE_DECIBEL_VOLUME ? "\n\t " : "", source->flags & PA_SOURCE_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_source_get_volume(source, FALSE)) : "", @@ -415,7 +419,7 @@ char *pa_source_list_to_string(pa_core *c) { pa_strbuf_printf( s, "\tfixed latency: %0.2f ms\n", - (double) pa_source_get_requested_latency(source) / PA_USEC_PER_MSEC); + (double) pa_source_get_fixed_latency(source) / PA_USEC_PER_MSEC); if (source->monitor_of) pa_strbuf_printf(s, "\tmonitor_of: %u\n", source->monitor_of->index); @@ -482,7 +486,7 @@ char *pa_source_output_list_to_string(pa_core *c) { s, " index: %u\n" "\tdriver: <%s>\n" - "\tflags: %s%s%s%s%s%s%s%s%s%s\n" + "\tflags: %s%s%s%s%s%s%s%s%s%s%s\n" "\tstate: %s\n" "\tsource: %u <%s>\n" "\tcurrent latency: %0.2f ms\n" @@ -501,7 +505,8 @@ char *pa_source_output_list_to_string(pa_core *c) { o->flags & PA_SOURCE_OUTPUT_FIX_RATE ? "FIX_RATE " : "", o->flags & PA_SOURCE_OUTPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "", o->flags & PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "", - o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "", + o->flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_ON_SUSPEND " : "", + o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "", state_table[pa_source_output_get_state(o)], o->source->index, o->source->name, (double) pa_source_output_get_latency(o, NULL) / PA_USEC_PER_MSEC, @@ -564,7 +569,7 @@ char *pa_sink_input_list_to_string(pa_core *c) { s, " index: %u\n" "\tdriver: <%s>\n" - "\tflags: %s%s%s%s%s%s%s%s%s%s\n" + "\tflags: %s%s%s%s%s%s%s%s%s%s%s\n" "\tstate: %s\n" "\tsink: %u <%s>\n" "\tvolume: %s\n" @@ -587,7 +592,8 @@ char *pa_sink_input_list_to_string(pa_core *c) { i->flags & PA_SINK_INPUT_FIX_RATE ? "FIX_RATE " : "", i->flags & PA_SINK_INPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "", i->flags & PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "", - i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "", + i->flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_SUSPEND " : "", + i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "", state_table[pa_sink_input_get_state(i)], i->sink->index, i->sink->name, pa_cvolume_snprint(cv, sizeof(cv), &v), diff --git a/src/pulsecore/conf-parser.c b/src/pulsecore/conf-parser.c index 2dc9a2239..dd4a99ee9 100644 --- a/src/pulsecore/conf-parser.c +++ b/src/pulsecore/conf-parser.c @@ -113,7 +113,7 @@ static int parse_line(const char *filename, unsigned line, char **section, const return 0; if (pa_startswith(b, ".include ")) { - char *path, *fn; + char *path = NULL, *fn; int r; fn = strip(b+9); @@ -278,6 +278,30 @@ int pa_config_parse_bool(const char *filename, unsigned line, const char *sectio return 0; } +int pa_config_parse_not_bool( + const char *filename, unsigned line, + const char *section, + const char *lvalue, const char *rvalue, + void *data, void *userdata) { + + int k; + pa_bool_t *b = data; + + pa_assert(filename); + pa_assert(lvalue); + pa_assert(rvalue); + pa_assert(data); + + if ((k = pa_parse_boolean(rvalue)) < 0) { + pa_log("[%s:%u] Failed to parse boolean value: %s", filename, line, rvalue); + return -1; + } + + *b = !k; + + return 0; +} + int pa_config_parse_string(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) { char **s = data; diff --git a/src/pulsecore/conf-parser.h b/src/pulsecore/conf-parser.h index 08e17ca7b..c6c8a148f 100644 --- a/src/pulsecore/conf-parser.h +++ b/src/pulsecore/conf-parser.h @@ -47,6 +47,7 @@ int pa_config_parse_int(const char *filename, unsigned line, const char *section int pa_config_parse_unsigned(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata); int pa_config_parse_size(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata); int pa_config_parse_bool(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata); +int pa_config_parse_not_bool(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata); int pa_config_parse_string(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata); #endif diff --git a/src/pulsecore/core-scache.c b/src/pulsecore/core-scache.c index 4c5a4b263..1fb81d0db 100644 --- a/src/pulsecore/core-scache.c +++ b/src/pulsecore/core-scache.c @@ -335,12 +335,12 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t pass_volume = TRUE; - if (e->volume_is_set && volume != (pa_volume_t) -1) { + if (e->volume_is_set && volume != PA_VOLUME_INVALID) { pa_cvolume_set(&r, e->sample_spec.channels, volume); pa_sw_cvolume_multiply(&r, &r, &e->volume); } else if (e->volume_is_set) r = e->volume; - else if (volume != (pa_volume_t) -1) + else if (volume != PA_VOLUME_INVALID) pa_cvolume_set(&r, e->sample_spec.channels, volume); else pass_volume = FALSE; @@ -494,13 +494,14 @@ int pa_scache_add_directory_lazy(pa_core *c, const char *pathname) { struct dirent *e; while ((e = readdir(dir))) { - char p[PATH_MAX]; + char *p; if (e->d_name[0] == '.') continue; - pa_snprintf(p, sizeof(p), "%s/%s", pathname, e->d_name); + p = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", pathname, e->d_name); add_file(c, p); + pa_xfree(p); } closedir(dir); diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 04e7eb24c..7a9f458c7 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -101,6 +101,10 @@ #include "rtkit.h" #endif +#ifdef __linux__ +#include +#endif + #include #include #include @@ -111,6 +115,8 @@ #include #include #include +#include +#include #include "core-util.h" @@ -119,6 +125,8 @@ #define MSG_NOSIGNAL 0 #endif +static pa_strlist *recorded_env = NULL; + #ifdef OS_IS_WIN32 #define PULSE_ROOTENV "PULSE_ROOT" @@ -552,12 +560,20 @@ char *pa_vsprintf_malloc(const char *format, va_list ap) { /* Similar to OpenBSD's strlcpy() function */ char *pa_strlcpy(char *b, const char *s, size_t l) { + size_t k; + pa_assert(b); pa_assert(s); pa_assert(l > 0); - strncpy(b, s, l); - b[l-1] = 0; + k = strlen(s); + + if (k > l-1) + k = l-1; + + memcpy(b, s, k); + b[k] = 0; + return b; } @@ -575,13 +591,13 @@ static int set_scheduler(int rtprio) { sp.sched_priority = rtprio; #ifdef SCHED_RESET_ON_FORK - if ((r = pthread_setschedparam(pthread_self(), SCHED_RR|SCHED_RESET_ON_FORK, &sp)) == 0) { + if (pthread_setschedparam(pthread_self(), SCHED_RR|SCHED_RESET_ON_FORK, &sp) == 0) { pa_log_debug("SCHED_RR|SCHED_RESET_ON_FORK worked."); return 0; } #endif - if ((r = pthread_setschedparam(pthread_self(), SCHED_RR, &sp)) == 0) { + if (pthread_setschedparam(pthread_self(), SCHED_RR, &sp) == 0) { pa_log_debug("SCHED_RR worked."); return 0; } @@ -596,6 +612,11 @@ static int set_scheduler(int rtprio) { return -1; } + /* We need to disable exit on disconnect because otherwise + * dbus_shutdown will kill us. See + * https://bugs.freedesktop.org/show_bug.cgi?id=16924 */ + dbus_connection_set_exit_on_disconnect(bus, FALSE); + r = rtkit_make_realtime(bus, 0, rtprio); dbus_connection_unref(bus); @@ -664,6 +685,11 @@ static int set_nice(int nice_level) { return -1; } + /* We need to disable exit on disconnect because otherwise + * dbus_shutdown will kill us. See + * https://bugs.freedesktop.org/show_bug.cgi?id=16924 */ + dbus_connection_set_exit_on_disconnect(bus, FALSE); + r = rtkit_make_high_priority(bus, 0, nice_level); dbus_connection_unref(bus); @@ -760,7 +786,6 @@ int pa_match(const char *expr, const char *v) { /* Try to parse a boolean string value.*/ int pa_parse_boolean(const char *v) { const char *expr; - int r; pa_assert(v); /* First we check language independant */ @@ -772,12 +797,12 @@ int pa_parse_boolean(const char *v) { /* And then we check language dependant */ if ((expr = nl_langinfo(YESEXPR))) if (expr[0]) - if ((r = pa_match(expr, v)) > 0) + if (pa_match(expr, v) > 0) return 1; if ((expr = nl_langinfo(NOEXPR))) if (expr[0]) - if ((r = pa_match(expr, v)) > 0) + if (pa_match(expr, v) > 0) return 0; errno = EINVAL; @@ -957,54 +982,24 @@ fail: /* Check whether the specified GID and the group name match */ static int is_group(gid_t gid, const char *name) { - struct group group, *result = NULL; - long n; - void *data; + struct group *group = NULL; int r = -1; -#ifdef HAVE_GETGRGID_R -#ifdef _SC_GETGR_R_SIZE_MAX - n = sysconf(_SC_GETGR_R_SIZE_MAX); -#else - n = -1; -#endif - if (n <= 0) - n = 512; - - data = pa_xmalloc((size_t) n); - errno = 0; - if (getgrgid_r(gid, &group, data, (size_t) n, &result) < 0 || !result) { - pa_log("getgrgid_r(%u): %s", (unsigned) gid, pa_cstrerror(errno)); - + if (!(group = pa_getgrgid_malloc(gid))) + { if (!errno) errno = ENOENT; + pa_log("pa_getgrgid_malloc(%u): %s", gid, pa_cstrerror(errno)); + goto finish; } - r = strcmp(name, result->gr_name) == 0; + r = strcmp(name, group->gr_name) == 0; finish: - pa_xfree(data); -#else - /* XXX Not thread-safe, but needed on OSes (e.g. FreeBSD 4.X) that do not - * support getgrgid_r. */ - - errno = 0; - if (!(result = getgrgid(gid))) { - pa_log("getgrgid(%u): %s", gid, pa_cstrerror(errno)); - - if (!errno) - errno = ENOENT; - - goto finish; - } - - r = strcmp(name, result->gr_name) == 0; - -finish: -#endif + pa_getgrgid_free(group); return r; } @@ -1053,38 +1048,12 @@ finish: /* Check whether the specifc user id is a member of the specified group */ int pa_uid_in_group(uid_t uid, const char *name) { - char *g_buf, *p_buf; - long g_n, p_n; - struct group grbuf, *gr; + struct group *group = NULL; char **i; int r = -1; -#ifdef _SC_GETGR_R_SIZE_MAX - g_n = sysconf(_SC_GETGR_R_SIZE_MAX); -#else - g_n = -1; -#endif - if (g_n <= 0) - g_n = 512; - - g_buf = pa_xmalloc((size_t) g_n); - -#ifdef _SC_GETPW_R_SIZE_MAX - p_n = sysconf(_SC_GETPW_R_SIZE_MAX); -#else - p_n = -1; -#endif - if (p_n <= 0) - p_n = 512; - - p_buf = pa_xmalloc((size_t) p_n); - errno = 0; -#ifdef HAVE_GETGRNAM_R - if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr) -#else - if (!(gr = getgrnam(name))) -#endif + if (!(group = pa_getgrnam_malloc(name))) { if (!errno) errno = ENOENT; @@ -1092,25 +1061,24 @@ int pa_uid_in_group(uid_t uid, const char *name) { } r = 0; - for (i = gr->gr_mem; *i; i++) { - struct passwd pwbuf, *pw; + for (i = group->gr_mem; *i; i++) { + struct passwd *pw = NULL; -#ifdef HAVE_GETPWNAM_R - if (getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw) != 0 || !pw) -#else - if (!(pw = getpwnam(*i))) -#endif + errno = 0; + if (!(pw = pa_getpwnam_malloc(*i))) continue; - if (pw->pw_uid == uid) { + if (pw->pw_uid == uid) r = 1; + + pa_getpwnam_free(pw); + + if (r == 1) break; - } } finish: - pa_xfree(g_buf); - pa_xfree(p_buf); + pa_getgrnam_free(group); return r; } @@ -1118,26 +1086,10 @@ finish: /* Get the GID of a gfiven group, return (gid_t) -1 on failure. */ gid_t pa_get_gid_of_group(const char *name) { gid_t ret = (gid_t) -1; - char *g_buf; - long g_n; - struct group grbuf, *gr; - -#ifdef _SC_GETGR_R_SIZE_MAX - g_n = sysconf(_SC_GETGR_R_SIZE_MAX); -#else - g_n = -1; -#endif - if (g_n <= 0) - g_n = 512; - - g_buf = pa_xmalloc((size_t) g_n); + struct group *gr = NULL; errno = 0; -#ifdef HAVE_GETGRNAM_R - if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr) -#else - if (!(gr = getgrnam(name))) -#endif + if (!(gr = pa_getgrnam_malloc(name))) { if (!errno) errno = ENOENT; @@ -1147,7 +1099,7 @@ gid_t pa_get_gid_of_group(const char *name) { ret = gr->gr_gid; finish: - pa_xfree(g_buf); + pa_getgrnam_free(gr); return ret; } @@ -1242,7 +1194,7 @@ char* pa_strip_nl(char *s) { /* Create a temporary lock file and lock it. */ int pa_lock_lockfile(const char *fn) { - int fd = -1; + int fd; pa_assert(fn); for (;;) { @@ -1285,8 +1237,6 @@ int pa_lock_lockfile(const char *fn) { fd = -1; goto fail; } - - fd = -1; } return fd; @@ -1328,26 +1278,32 @@ int pa_unlock_lockfile(const char *fn, int fd) { } static char *get_pulse_home(void) { - char h[PATH_MAX]; + char *h; struct stat st; + char *ret = NULL; - if (!pa_get_home_dir(h, sizeof(h))) { + if (!(h = pa_get_home_dir_malloc())) { pa_log_error("Failed to get home directory."); return NULL; } if (stat(h, &st) < 0) { pa_log_error("Failed to stat home directory %s: %s", h, pa_cstrerror(errno)); - return NULL; + goto finish; } if (st.st_uid != getuid()) { pa_log_error("Home directory %s not ours.", h); errno = EACCES; - return NULL; + goto finish; } - return pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h); + ret = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse", h); + +finish: + pa_xfree(h); + + return ret; } char *pa_get_state_dir(void) { @@ -1372,6 +1328,50 @@ char *pa_get_state_dir(void) { return d; } +char *pa_get_home_dir_malloc(void) { + char *homedir; + size_t allocated = 128; + + for (;;) { + homedir = pa_xmalloc(allocated); + + if (!pa_get_home_dir(homedir, allocated)) { + pa_xfree(homedir); + return NULL; + } + + if (strlen(homedir) < allocated - 1) + break; + + pa_xfree(homedir); + allocated *= 2; + } + + return homedir; +} + +char *pa_get_binary_name_malloc(void) { + char *t; + size_t allocated = 128; + + for (;;) { + t = pa_xmalloc(allocated); + + if (!pa_get_binary_name(t, allocated)) { + pa_xfree(t); + return NULL; + } + + if (strlen(t) < allocated - 1) + break; + + pa_xfree(t); + allocated *= 2; + } + + return t; +} + static char* make_random_dir(mode_t m) { static const char table[] = "abcdefghijklmnopqrstuvwxyz" @@ -1481,7 +1481,7 @@ char *pa_get_runtime_dir(void) { goto fail; } - k = pa_sprintf_malloc("%s" PA_PATH_SEP "%s:runtime", d, mid); + k = pa_sprintf_malloc("%s" PA_PATH_SEP "%s-runtime", d, mid); pa_xfree(d); pa_xfree(mid); @@ -1626,14 +1626,15 @@ FILE *pa_open_config_file(const char *global, const char *local, const char *env if (local) { const char *e; char *lfn; - char h[PATH_MAX]; + char *h; FILE *f; if ((e = getenv("PULSE_CONFIG_PATH"))) fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", e, local); - else if (pa_get_home_dir(h, sizeof(h))) + else if ((h = pa_get_home_dir_malloc())) { fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse" PA_PATH_SEP "%s", h, local); - else + pa_xfree(h); + } else return NULL; #ifdef OS_IS_WIN32 @@ -1713,13 +1714,14 @@ char *pa_find_config_file(const char *global, const char *local, const char *env if (local) { const char *e; char *lfn; - char h[PATH_MAX]; + char *h; if ((e = getenv("PULSE_CONFIG_PATH"))) fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", e, local); - else if (pa_get_home_dir(h, sizeof(h))) + else if ((h = pa_get_home_dir_malloc())) { fn = lfn = pa_sprintf_malloc("%s" PA_PATH_SEP ".pulse" PA_PATH_SEP "%s", h, local); - else + pa_xfree(h); + } else return NULL; #ifdef OS_IS_WIN32 @@ -1885,17 +1887,17 @@ char *pa_make_path_absolute(const char *p) { static char *get_path(const char *fn, pa_bool_t prependmid, pa_bool_t rt) { char *rtp; - if (pa_is_path_absolute(fn)) - return pa_xstrdup(fn); - rtp = rt ? pa_get_runtime_dir() : pa_get_state_dir(); - if (!rtp) - return NULL; - if (fn) { char *r; + if (pa_is_path_absolute(fn)) + return pa_xstrdup(fn); + + if (!rtp) + return NULL; + if (prependmid) { char *mid; @@ -1904,7 +1906,7 @@ static char *get_path(const char *fn, pa_bool_t prependmid, pa_bool_t rt) { return NULL; } - r = pa_sprintf_malloc("%s" PA_PATH_SEP "%s:%s", rtp, mid, fn); + r = pa_sprintf_malloc("%s" PA_PATH_SEP "%s-%s", rtp, mid, fn); pa_xfree(mid); } else r = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", rtp, fn); @@ -2231,7 +2233,7 @@ int pa_close_all(int except_fd, ...) { va_end(ap); r = pa_close_allv(p); - free(p); + pa_xfree(p); return r; } @@ -2402,7 +2404,7 @@ int pa_reset_sigs(int except, ...) { p[i++] = except; while ((sig = va_arg(ap, int)) >= 0) - sig = p[i++]; + p[i++] = sig; } p[i] = -1; @@ -2459,9 +2461,38 @@ void pa_set_env(const char *key, const char *value) { pa_assert(key); pa_assert(value); + /* This is not thread-safe */ + putenv(pa_sprintf_malloc("%s=%s", key, value)); } +void pa_set_env_and_record(const char *key, const char *value) { + pa_assert(key); + pa_assert(value); + + /* This is not thread-safe */ + + pa_set_env(key, value); + recorded_env = pa_strlist_prepend(recorded_env, key); +} + +void pa_unset_env_recorded(void) { + + /* This is not thread-safe */ + + for (;;) { + char *s; + + recorded_env = pa_strlist_pop(recorded_env, &s); + + if (!s) + break; + + unsetenv(s); + pa_xfree(s); + } +} + pa_bool_t pa_in_system_mode(void) { const char *e; @@ -2779,3 +2810,47 @@ char* pa_maybe_prefix_path(const char *path, const char *prefix) { return pa_sprintf_malloc("%s" PA_PATH_SEP "%s", prefix, path); } + +size_t pa_pipe_buf(int fd) { + +#ifdef _PC_PIPE_BUF + long n; + + if ((n = fpathconf(fd, _PC_PIPE_BUF)) >= 0) + return (size_t) n; +#endif + +#ifdef PIPE_BUF + return PIPE_BUF; +#else + return 4096; +#endif +} + +void pa_reset_personality(void) { + +#ifdef __linux__ + if (personality(PER_LINUX) < 0) + pa_log_warn("Uh, personality() failed: %s", pa_cstrerror(errno)); +#endif + +} + +#if defined(__linux__) && !defined(__OPTIMIZE__) + +pa_bool_t pa_run_from_build_tree(void) { + char *rp; + pa_bool_t b = FALSE; + + /* We abuse __OPTIMIZE__ as a check whether we are a debug build + * or not. */ + + if ((rp = pa_readlink("/proc/self/exe"))) { + b = pa_startswith(rp, PA_BUILDDIR); + pa_xfree(rp); + } + + return b; +} + +#endif diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h index 96a0480a8..ccc9a38ee 100644 --- a/src/pulsecore/core-util.h +++ b/src/pulsecore/core-util.h @@ -126,6 +126,8 @@ char* pa_find_config_file(const char *global, const char *local, const char *env char *pa_get_runtime_dir(void); char *pa_get_state_dir(void); +char *pa_get_home_dir_malloc(void); +char *pa_get_binary_name_malloc(void); char *pa_runtime_path(const char *fn); char *pa_state_path(const char *fn, pa_bool_t prepend_machine_id); @@ -193,6 +195,8 @@ int pa_reset_sigs(int except, ...); int pa_reset_sigsv(const int except[]); void pa_set_env(const char *key, const char *value); +void pa_set_env_and_record(const char *key, const char *value); +void pa_unset_env_recorded(void); pa_bool_t pa_in_system_mode(void); @@ -236,4 +240,13 @@ char **pa_split_spaces_strv(const char *s); char* pa_maybe_prefix_path(const char *path, const char *prefix); +/* Returns size of the specified pipe or 4096 on failure */ +size_t pa_pipe_buf(int fd); + +void pa_reset_personality(void); + +#if defined(__linux__) && !defined(__OPTIMIZE__) +pa_bool_t pa_run_from_build_tree(void); +#endif + #endif diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c index f5eb8352a..f07264530 100644 --- a/src/pulsecore/core.c +++ b/src/pulsecore/core.c @@ -47,7 +47,7 @@ #include "core.h" -static PA_DEFINE_CHECK_TYPE(pa_core, pa_msgobject); +PA_DEFINE_PUBLIC_CLASS(pa_core, pa_msgobject); static int core_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk) { pa_core *c = PA_CORE(o); diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h index e7abd61b9..c1002f93e 100644 --- a/src/pulsecore/core.h +++ b/src/pulsecore/core.h @@ -83,7 +83,6 @@ typedef enum pa_core_hook { PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL, PA_CORE_HOOK_SINK_INPUT_STATE_CHANGED, PA_CORE_HOOK_SINK_INPUT_PROPLIST_CHANGED, - PA_CORE_HOOK_SINK_INPUT_SET_VOLUME, PA_CORE_HOOK_SINK_INPUT_SEND_EVENT, PA_CORE_HOOK_SOURCE_OUTPUT_NEW, PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE, @@ -166,7 +165,7 @@ struct pa_core { pa_hook hooks[PA_CORE_HOOK_MAX]; }; -PA_DECLARE_CLASS(pa_core); +PA_DECLARE_PUBLIC_CLASS(pa_core); #define PA_CORE(o) pa_core_cast(o) enum { diff --git a/src/pulsecore/cpu-arm.c b/src/pulsecore/cpu-arm.c new file mode 100644 index 000000000..453b7848a --- /dev/null +++ b/src/pulsecore/cpu-arm.c @@ -0,0 +1,139 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include +#include +#include +#include + +#include +#include + +#include "cpu-arm.h" + +#if defined (__arm__) && defined (__linux__) + +#define MAX_BUFFER 4096 +static char * +get_cpuinfo_line (char *cpuinfo, const char *tag) { + char *line, *end, *colon; + + if (!(line = strstr (cpuinfo, tag))) + return NULL; + + if (!(end = strchr (line, '\n'))) + return NULL; + + if (!(colon = strchr (line, ':'))) + return NULL; + + if (++colon >= end) + return NULL; + + return pa_xstrndup (colon, end - colon); +} + +static char *get_cpuinfo(void) { + char *cpuinfo; + int n, fd; + + cpuinfo = pa_xmalloc(MAX_BUFFER); + + if ((fd = open("/proc/cpuinfo", O_RDONLY)) < 0) { + pa_xfree(cpuinfo); + return NULL; + } + + if ((n = pa_read(fd, cpuinfo, MAX_BUFFER-1)) < 0) { + pa_xfree(cpuinfo); + pa_close(fd); + return NULL; + } + cpuinfo[n] = 0; + pa_close(fd); + + return cpuinfo; +} +#endif /* defined (__arm__) && defined (__linux__) */ + +void pa_cpu_init_arm (void) { +#if defined (__arm__) +#if defined (__linux__) + char *cpuinfo, *line; + int arch; + pa_cpu_arm_flag_t flags = 0; + + /* We need to read the CPU flags from /proc/cpuinfo because there is no user + * space support to get the CPU features. This only works on linux AFAIK. */ + if (!(cpuinfo = get_cpuinfo ())) { + pa_log ("Can't read cpuinfo"); + return; + } + + /* get the CPU architecture */ + if ((line = get_cpuinfo_line (cpuinfo, "CPU architecture"))) { + arch = strtoul (line, NULL, 0); + if (arch >= 6) + flags |= PA_CPU_ARM_V6; + if (arch >= 7) + flags |= PA_CPU_ARM_V7; + + pa_xfree(line); + } + /* get the CPU features */ + if ((line = get_cpuinfo_line (cpuinfo, "Features"))) { + char *state = NULL, *current; + + while ((current = pa_split_spaces (line, &state))) { + if (!strcmp (current, "vfp")) + flags |= PA_CPU_ARM_VFP; + else if (!strcmp (current, "edsp")) + flags |= PA_CPU_ARM_EDSP; + else if (!strcmp (current, "neon")) + flags |= PA_CPU_ARM_NEON; + else if (!strcmp (current, "vfpv3")) + flags |= PA_CPU_ARM_VFPV3; + + pa_xfree(current); + } + } + pa_xfree(cpuinfo); + + pa_log_info ("CPU flags: %s%s%s%s%s%s", + (flags & PA_CPU_ARM_V6) ? "V6 " : "", + (flags & PA_CPU_ARM_V7) ? "V7 " : "", + (flags & PA_CPU_ARM_VFP) ? "VFP " : "", + (flags & PA_CPU_ARM_EDSP) ? "EDSP " : "", + (flags & PA_CPU_ARM_NEON) ? "NEON " : "", + (flags & PA_CPU_ARM_VFPV3) ? "VFPV3 " : ""); +#else /* defined (__linux__) */ + pa_log ("ARM cpu features not yet supported on this OS"); +#endif /* defined (__linux__) */ + + if (flags & PA_CPU_ARM_V6) + pa_volume_func_init_arm (flags); +#endif /* defined (__arm__) */ +} diff --git a/src/daemon/polkit.h b/src/pulsecore/cpu-arm.h similarity index 56% rename from src/daemon/polkit.h rename to src/pulsecore/cpu-arm.h index 018f6ef1c..3ccd07089 100644 --- a/src/daemon/polkit.h +++ b/src/pulsecore/cpu-arm.h @@ -1,10 +1,11 @@ -#ifndef foopolkithfoo -#define foopolkithfoo +#ifndef foocpuarmhfoo +#define foocpuarmhfoo /*** This file is part of PulseAudio. - Copyright 2007 Lennart Poettering + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published @@ -22,6 +23,20 @@ USA. ***/ -int pa_polkit_check(const char *action); +#include -#endif +typedef enum pa_cpu_arm_flag { + PA_CPU_ARM_V6 = (1 << 0), + PA_CPU_ARM_V7 = (1 << 1), + PA_CPU_ARM_VFP = (1 << 2), + PA_CPU_ARM_EDSP = (1 << 3), + PA_CPU_ARM_NEON = (1 << 4), + PA_CPU_ARM_VFPV3 = (1 << 5) +} pa_cpu_arm_flag_t; + +void pa_cpu_init_arm (void); + +/* some optimized functions */ +void pa_volume_func_init_arm(pa_cpu_arm_flag_t flags); + +#endif /* foocpuarmhfoo */ diff --git a/src/pulsecore/cpu-x86.c b/src/pulsecore/cpu-x86.c new file mode 100644 index 000000000..f194a6081 --- /dev/null +++ b/src/pulsecore/cpu-x86.c @@ -0,0 +1,125 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include + +#include + +#include "cpu-x86.h" + +#if defined (__i386__) || defined (__amd64__) +static void +get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d) +{ + __asm__ __volatile__ ( + " push %%"PA_REG_b" \n\t" + " cpuid \n\t" + " mov %%ebx, %%esi \n\t" + " pop %%"PA_REG_b" \n\t" + + : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d) + : "0" (op) + ); +} +#endif + +void pa_cpu_init_x86 (void) { +#if defined (__i386__) || defined (__amd64__) + uint32_t eax, ebx, ecx, edx; + uint32_t level; + pa_cpu_x86_flag_t flags = 0; + + /* get standard level */ + get_cpuid (0x00000000, &level, &ebx, &ecx, &edx); + if (level >= 1) { + get_cpuid (0x00000001, &eax, &ebx, &ecx, &edx); + + if (edx & (1<<23)) + flags |= PA_CPU_X86_MMX; + + if (edx & (1<<25)) + flags |= PA_CPU_X86_SSE; + + if (edx & (1<<26)) + flags |= PA_CPU_X86_SSE2; + + if (ecx & (1<<0)) + flags |= PA_CPU_X86_SSE3; + + if (ecx & (1<<9)) + flags |= PA_CPU_X86_SSSE3; + + if (ecx & (1<<19)) + flags |= PA_CPU_X86_SSE4_1; + + if (ecx & (1<<20)) + flags |= PA_CPU_X86_SSE4_2; + } + + /* get extended level */ + get_cpuid (0x80000000, &level, &ebx, &ecx, &edx); + if (level >= 0x80000001) { + get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx); + + if (edx & (1<<22)) + flags |= PA_CPU_X86_MMXEXT; + + if (edx & (1<<23)) + flags |= PA_CPU_X86_MMX; + + if (edx & (1<<30)) + flags |= PA_CPU_X86_3DNOWEXT; + + if (edx & (1<<31)) + flags |= PA_CPU_X86_3DNOW; + } + + pa_log_info ("CPU flags: %s%s%s%s%s%s%s%s%s%s", + (flags & PA_CPU_X86_MMX) ? "MMX " : "", + (flags & PA_CPU_X86_SSE) ? "SSE " : "", + (flags & PA_CPU_X86_SSE2) ? "SSE2 " : "", + (flags & PA_CPU_X86_SSE3) ? "SSE3 " : "", + (flags & PA_CPU_X86_SSSE3) ? "SSSE3 " : "", + (flags & PA_CPU_X86_SSE4_1) ? "SSE4_1 " : "", + (flags & PA_CPU_X86_SSE4_2) ? "SSE4_2 " : "", + (flags & PA_CPU_X86_MMXEXT) ? "MMXEXT " : "", + (flags & PA_CPU_X86_3DNOW) ? "3DNOW " : "", + (flags & PA_CPU_X86_3DNOWEXT) ? "3DNOWEXT " : ""); + + /* activate various optimisations */ + if (flags & PA_CPU_X86_MMX) { + pa_volume_func_init_mmx (flags); + pa_remap_func_init_mmx (flags); + } + + if (flags & (PA_CPU_X86_SSE | PA_CPU_X86_SSE2)) { + pa_volume_func_init_sse (flags); + pa_remap_func_init_sse (flags); + pa_convert_func_init_sse (flags); + } + +#endif /* defined (__i386__) || defined (__amd64__) */ +} diff --git a/src/pulsecore/cpu-x86.h b/src/pulsecore/cpu-x86.h new file mode 100644 index 000000000..b40eb5ce1 --- /dev/null +++ b/src/pulsecore/cpu-x86.h @@ -0,0 +1,71 @@ +#ifndef foocpux86hfoo +#define foocpux86hfoo + +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 + +typedef enum pa_cpu_x86_flag { + PA_CPU_X86_MMX = (1 << 0), + PA_CPU_X86_MMXEXT = (1 << 1), + PA_CPU_X86_SSE = (1 << 2), + PA_CPU_X86_SSE2 = (1 << 3), + PA_CPU_X86_SSE3 = (1 << 4), + PA_CPU_X86_SSSE3 = (1 << 5), + PA_CPU_X86_SSE4_1 = (1 << 6), + PA_CPU_X86_SSE4_2 = (1 << 7), + PA_CPU_X86_3DNOW = (1 << 8), + PA_CPU_X86_3DNOWEXT = (1 << 9) +} pa_cpu_x86_flag_t; + +void pa_cpu_init_x86 (void); + + +#if defined (__i386__) +typedef int32_t pa_reg_x86; +#define PA_REG_a "eax" +#define PA_REG_b "ebx" +#define PA_REG_c "ecx" +#define PA_REG_d "edx" +#define PA_REG_D "edi" +#define PA_REG_S "esi" +#elif defined (__amd64__) +typedef int64_t pa_reg_x86; +#define PA_REG_a "rax" +#define PA_REG_b "rbx" +#define PA_REG_c "rcx" +#define PA_REG_d "rdx" +#define PA_REG_D "rdi" +#define PA_REG_S "rsi" +#endif + +/* some optimized functions */ +void pa_volume_func_init_mmx(pa_cpu_x86_flag_t flags); +void pa_volume_func_init_sse(pa_cpu_x86_flag_t flags); + +void pa_remap_func_init_mmx(pa_cpu_x86_flag_t flags); +void pa_remap_func_init_sse(pa_cpu_x86_flag_t flags); + +void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags); + +#endif /* foocpux86hfoo */ diff --git a/src/pulsecore/database-simple.c b/src/pulsecore/database-simple.c new file mode 100644 index 000000000..1f4caf717 --- /dev/null +++ b/src/pulsecore/database-simple.c @@ -0,0 +1,510 @@ +/*** + This file is part of PulseAudio. + + Copyright 2009 Nokia Corporation + Contact: Maemo Multimedia + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "database.h" + + +typedef struct simple_data { + char *filename; + char *tmp_filename; + pa_hashmap *map; + pa_bool_t read_only; +} simple_data; + +typedef struct entry { + pa_datum key; + pa_datum data; +} entry; + +void pa_datum_free(pa_datum *d) { + pa_assert(d); + + pa_xfree(d->data); + d->data = NULL; + d->size = 0; +} + +static int compare_func(const void *a, const void *b) { + const pa_datum *aa, *bb; + + aa = (const pa_datum*)a; + bb = (const pa_datum*)b; + + if (aa->size != bb->size) + return aa->size > bb->size ? 1 : -1; + + return memcmp(aa->data, bb->data, aa->size); +} + +/* pa_idxset_string_hash_func modified for our use */ +static unsigned hash_func(const void *p) { + const pa_datum *d; + unsigned hash = 0; + const char *c; + unsigned i; + + d = (const pa_datum*)p; + c = d->data; + + for (i = 0; i < d->size; i++) { + hash = 31 * hash + (unsigned) *c; + c++; + } + + return hash; +} + +static entry* new_entry(const pa_datum *key, const pa_datum *data) { + entry *e; + + pa_assert(key); + pa_assert(data); + + e = pa_xnew0(entry, 1); + e->key.data = key->size > 0 ? pa_xmemdup(key->data, key->size) : NULL; + e->key.size = key->size; + e->data.data = data->size > 0 ? pa_xmemdup(data->data, data->size) : NULL; + e->data.size = data->size; + return e; +} + +static void free_entry(entry *e) { + if (e) { + if (e->key.data) + pa_xfree(e->key.data); + if (e->data.data) + pa_xfree(e->data.data); + pa_xfree(e); + } +} + +static int read_uint(FILE *f, uint32_t *res) { + size_t items = 0; + uint8_t values[4]; + uint32_t tmp; + int i; + + items = fread(&values, sizeof(values), sizeof(uint8_t), f); + + if (feof(f)) /* EOF */ + return 0; + + if (ferror(f)) + return -1; + + for (i = 0; i < 4; ++i) { + tmp = values[i]; + *res += (tmp << (i*8)); + } + + return items; +} + +static int read_data(FILE *f, void **data, ssize_t *length) { + size_t items = 0; + uint32_t data_len = 0; + + pa_assert(f); + + *data = NULL; + *length = 0; + + if ((items = read_uint(f, &data_len)) <= 0) + return -1; + + if (data_len > 0) { + *data = pa_xmalloc0(data_len); + items = fread(*data, data_len, 1, f); + + if (feof(f)) /* EOF */ + goto reset; + + if (ferror(f)) + goto reset; + + *length = data_len; + + } else { /* no data? */ + return -1; + } + + return 0; + +reset: + pa_xfree(*data); + *data = NULL; + *length = 0; + return -1; +} + +static int fill_data(simple_data *db, FILE *f) { + pa_datum key; + pa_datum data; + void *d = NULL; + ssize_t l = 0; + pa_bool_t append = FALSE; + enum { FIELD_KEY = 0, FIELD_DATA } field = FIELD_KEY; + + pa_assert(db); + pa_assert(db->map); + + errno = 0; + + key.size = 0; + key.data = NULL; + + while (!read_data(f, &d, &l)) { + + switch (field) { + case FIELD_KEY: + key.data = d; + key.size = l; + field = FIELD_DATA; + break; + case FIELD_DATA: + data.data = d; + data.size = l; + append = TRUE; + break; + } + + if (append) { + entry *e = pa_xnew0(entry, 1); + e->key.data = key.data; + e->key.size = key.size; + e->data.data = data.data; + e->data.size = data.size; + pa_hashmap_put(db->map, &e->key, e); + append = FALSE; + field = FIELD_KEY; + } + } + + if (ferror(f)) { + pa_log_warn("read error. %s", pa_cstrerror(errno)); + pa_database_clear((pa_database*)db); + } + + if (field == FIELD_DATA && d) + pa_xfree(d); + + return pa_hashmap_size(db->map); +} + +pa_database* pa_database_open(const char *fn, pa_bool_t for_write) { + FILE *f; + char *path; + simple_data *db; + + pa_assert(fn); + + path = pa_sprintf_malloc("%s."CANONICAL_HOST".simple", fn); + errno = 0; + + f = fopen(path, "r"); + + if (f || errno == ENOENT) { /* file not found is ok */ + db = pa_xnew0(simple_data, 1); + db->map = pa_hashmap_new(hash_func, compare_func); + db->filename = pa_xstrdup(path); + db->tmp_filename = pa_sprintf_malloc(".%s.tmp", db->filename); + db->read_only = !for_write; + + if (f) { + fill_data(db, f); + fclose(f); + } + } else { + if (errno == 0) + errno = EIO; + db = NULL; + } + + pa_xfree(path); + + return (pa_database*) db; +} + +void pa_database_close(pa_database *database) { + simple_data *db = (simple_data*)database; + pa_assert(db); + + pa_database_sync(database); + pa_database_clear(database); + pa_xfree(db->filename); + pa_xfree(db->tmp_filename); + pa_hashmap_free(db->map, NULL, NULL); + pa_xfree(db); +} + +pa_datum* pa_database_get(pa_database *database, const pa_datum *key, pa_datum* data) { + simple_data *db = (simple_data*)database; + entry *e; + + pa_assert(db); + pa_assert(key); + pa_assert(data); + + e = pa_hashmap_get(db->map, key); + + if (!e) + return NULL; + + data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL; + data->size = e->data.size; + + return data; +} + +int pa_database_set(pa_database *database, const pa_datum *key, const pa_datum* data, pa_bool_t overwrite) { + simple_data *db = (simple_data*)database; + entry *e; + int ret = 0; + + pa_assert(db); + pa_assert(key); + pa_assert(data); + + if (db->read_only) + return -1; + + e = new_entry(key, data); + + if (pa_hashmap_put(db->map, &e->key, e) < 0) { + /* entry with same key exists in hashmap */ + entry *r; + if (overwrite) { + r = pa_hashmap_remove(db->map, key); + pa_hashmap_put(db->map, &e->key, e); + } else { + /* wont't overwrite, so clean new entry */ + r = e; + ret = -1; + } + + free_entry(r); + } + + return ret; +} + +int pa_database_unset(pa_database *database, const pa_datum *key) { + simple_data *db = (simple_data*)database; + entry *e; + + pa_assert(db); + pa_assert(key); + + e = pa_hashmap_remove(db->map, key); + if (!e) + return -1; + + free_entry(e); + + return 0; +} + +int pa_database_clear(pa_database *database) { + simple_data *db = (simple_data*)database; + entry *e; + + pa_assert(db); + + while ((e = pa_hashmap_steal_first(db->map))) + free_entry(e); + + return 0; +} + +signed pa_database_size(pa_database *database) { + simple_data *db = (simple_data*)database; + pa_assert(db); + + return (signed) pa_hashmap_size(db->map); +} + +pa_datum* pa_database_first(pa_database *database, pa_datum *key, pa_datum *data) { + simple_data *db = (simple_data*)database; + entry *e; + + pa_assert(db); + pa_assert(key); + + e = pa_hashmap_first(db->map); + + if (!e) + return NULL; + + key->data = e->key.size > 0 ? pa_xmemdup(e->key.data, e->key.size) : NULL; + key->size = e->key.size; + + if (data) { + data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL; + data->size = e->data.size; + } + + return key; +} + +pa_datum* pa_database_next(pa_database *database, const pa_datum *key, pa_datum *next, pa_datum *data) { + simple_data *db = (simple_data*)database; + entry *e; + entry *search; + void *state; + pa_bool_t pick_now; + + pa_assert(db); + pa_assert(next); + + if (!key) + return pa_database_first(database, next, data); + + search = pa_hashmap_get(db->map, key); + + state = NULL; + pick_now = FALSE; + + while ((e = pa_hashmap_iterate(db->map, &state, NULL))) { + if (pick_now) + break; + + if (search == e) + pick_now = TRUE; + } + + if (!pick_now || !e) + return NULL; + + next->data = e->key.size > 0 ? pa_xmemdup(e->key.data, e->key.size) : NULL; + next->size = e->key.size; + + if (data) { + data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL; + data->size = e->data.size; + } + + return next; +} + +static int write_uint(FILE *f, const uint32_t num) { + size_t items; + uint8_t values[4]; + int i; + errno = 0; + + for (i = 0; i < 4; i++) + values[i] = (num >> (i*8)) & 0xFF; + + items = fwrite(&values, sizeof(values), sizeof(uint8_t), f); + + if (ferror(f)) + return -1; + + return items; +} + +static int write_data(FILE *f, void *data, const size_t length) { + size_t items; + uint32_t len; + + len = length; + if ((items = write_uint(f, len)) <= 0) + return -1; + + items = fwrite(data, length, 1, f); + + if (ferror(f) || items != 1) + return -1; + + return 0; +} + +static int write_entry(FILE *f, const entry *e) { + pa_assert(f); + pa_assert(e); + + if (write_data(f, e->key.data, e->key.size) < 0) + return -1; + if (write_data(f, e->data.data, e->data.size) < 0) + return -1; + + return 0; +} + +int pa_database_sync(pa_database *database) { + simple_data *db = (simple_data*)database; + FILE *f; + void *state; + entry *e; + + pa_assert(db); + + if (db->read_only) + return 0; + + errno = 0; + + f = fopen(db->tmp_filename, "w"); + + if (!f) + goto fail; + + state = NULL; + while((e = pa_hashmap_iterate(db->map, &state, NULL))) { + if (write_entry(f, e) < 0) { + pa_log_warn("error while writing to file. %s", pa_cstrerror(errno)); + goto fail; + } + } + + fclose(f); + f = NULL; + + if (rename(db->tmp_filename, db->filename) < 0) { + pa_log_warn("error while renaming file. %s", pa_cstrerror(errno)); + goto fail; + } + + return 0; + +fail: + if (f) + fclose(f); + return -1; +} diff --git a/src/pulsecore/flist.c b/src/pulsecore/flist.c index 6fb944f9c..7e5ee244c 100644 --- a/src/pulsecore/flist.c +++ b/src/pulsecore/flist.c @@ -130,15 +130,22 @@ void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb) { } int pa_flist_push(pa_flist*l, void *p) { - unsigned idx, n, len; + unsigned idx, n; pa_atomic_ptr_t*cells; +#ifdef PROFILE + unsigned len; +#endif pa_assert(l); pa_assert(p); cells = PA_FLIST_CELLS(l); - n = len = l->size + N_EXTRA_SCAN - (unsigned) pa_atomic_load(&l->length); + n = l->size + N_EXTRA_SCAN - (unsigned) pa_atomic_load(&l->length); + +#ifdef PROFILE + len = n; +#endif _Y; idx = reduce(l, (unsigned) pa_atomic_load(&l->write_idx)); @@ -171,14 +178,21 @@ int pa_flist_push(pa_flist*l, void *p) { } void* pa_flist_pop(pa_flist*l) { - unsigned idx, len, n; + unsigned idx, n; pa_atomic_ptr_t *cells; +#ifdef PROFILE + unsigned len; +#endif pa_assert(l); cells = PA_FLIST_CELLS(l); - n = len = (unsigned) pa_atomic_load(&l->length) + N_EXTRA_SCAN; + n = (unsigned) pa_atomic_load(&l->length) + N_EXTRA_SCAN; + +#ifdef PROFILE + len = n; +#endif _Y; idx = reduce(l, (unsigned) pa_atomic_load(&l->read_idx)); diff --git a/src/pulsecore/hook-list.c b/src/pulsecore/hook-list.c index a00116d1f..d9b9917d4 100644 --- a/src/pulsecore/hook-list.c +++ b/src/pulsecore/hook-list.c @@ -97,7 +97,7 @@ pa_hook_result_t pa_hook_fire(pa_hook *hook, void *data) { hook->n_firing ++; - for (slot = hook->slots; slot; slot = slot->next) { + PA_LLIST_FOREACH(slot, hook->slots) { if (slot->dead) continue; diff --git a/src/pulsecore/llist.h b/src/pulsecore/llist.h index 58b51c680..27f174a9e 100644 --- a/src/pulsecore/llist.h +++ b/src/pulsecore/llist.h @@ -107,4 +107,7 @@ #define PA_LLIST_FOREACH(i,head) \ for (i = (head); i; i = i->next) +#define PA_LLIST_FOREACH_SAFE(i,n,head) \ + for (i = (head); i && ((n = i->next), 1); i = n) + #endif diff --git a/src/pulsecore/lock-autospawn.c b/src/pulsecore/lock-autospawn.c index 4436974d3..c0df79383 100644 --- a/src/pulsecore/lock-autospawn.c +++ b/src/pulsecore/lock-autospawn.c @@ -55,10 +55,16 @@ static pa_mutex *mutex; static unsigned n_ref = 0; static int lock_fd = -1; static pa_mutex *lock_fd_mutex = NULL; -static pa_bool_t taken = FALSE; -static pa_thread *thread; +static pa_thread *thread = NULL; static int pipe_fd[2] = { -1, -1 }; +static enum { + STATE_IDLE, + STATE_OWNING, + STATE_TAKEN, + STATE_FAILED +} state = STATE_IDLE; + static void destroy_mutex(void) PA_GCC_DESTRUCTOR; static int ref(void) { @@ -67,15 +73,16 @@ static int ref(void) { pa_assert(pipe_fd[0] >= 0); pa_assert(pipe_fd[1] >= 0); + pa_assert(lock_fd_mutex); n_ref++; return 0; } - pa_assert(lock_fd < 0); pa_assert(!lock_fd_mutex); - pa_assert(!taken); + pa_assert(state == STATE_IDLE); + pa_assert(lock_fd < 0); pa_assert(!thread); pa_assert(pipe_fd[0] < 0); pa_assert(pipe_fd[1] < 0); @@ -83,14 +90,14 @@ static int ref(void) { if (pipe(pipe_fd) < 0) return -1; - lock_fd_mutex = pa_mutex_new(FALSE, FALSE); - pa_make_fd_cloexec(pipe_fd[0]); pa_make_fd_cloexec(pipe_fd[1]); pa_make_fd_nonblock(pipe_fd[1]); pa_make_fd_nonblock(pipe_fd[0]); + lock_fd_mutex = pa_mutex_new(FALSE, FALSE); + n_ref = 1; return 0; } @@ -107,15 +114,18 @@ static void unref(pa_bool_t after_fork) { if (n_ref > 0) return; - pa_assert(!taken); - if (thread) { pa_thread_free(thread); thread = NULL; } pa_mutex_lock(lock_fd_mutex); - if (lock_fd >= 0) { + + pa_assert(state != STATE_TAKEN); + + if (state == STATE_OWNING) { + + pa_assert(lock_fd >= 0); if (after_fork) pa_close(lock_fd); @@ -127,10 +137,12 @@ static void unref(pa_bool_t after_fork) { pa_unlock_lockfile(lf, lock_fd); pa_xfree(lf); - - lock_fd = -1; } } + + lock_fd = -1; + state = STATE_IDLE; + pa_mutex_unlock(lock_fd_mutex); pa_mutex_free(lock_fd_mutex); @@ -205,15 +217,24 @@ static void thread_func(void *u) { if (!(lf = pa_runtime_path(AUTOSPAWN_LOCK))) { pa_log_warn(_("Cannot access autospawn lock.")); - goto finish; + goto fail; } if ((fd = pa_lock_lockfile(lf)) < 0) - goto finish; + goto fail; pa_mutex_lock(lock_fd_mutex); - pa_assert(lock_fd < 0); + pa_assert(state == STATE_IDLE); lock_fd = fd; + state = STATE_OWNING; + pa_mutex_unlock(lock_fd_mutex); + + goto finish; + +fail: + pa_mutex_lock(lock_fd_mutex); + pa_assert(state == STATE_IDLE); + state = STATE_FAILED; pa_mutex_unlock(lock_fd_mutex); finish: @@ -238,12 +259,10 @@ static void create_mutex(void) { } static void destroy_mutex(void) { - if (mutex) pa_mutex_free(mutex); } - int pa_autospawn_lock_init(void) { int ret = -1; @@ -273,13 +292,18 @@ int pa_autospawn_lock_acquire(pa_bool_t block) { empty_pipe(); - if (lock_fd >= 0 && !taken) { - taken = TRUE; + if (state == STATE_OWNING) { + state = STATE_TAKEN; ret = 1; break; } - if (lock_fd < 0) + if (state == STATE_FAILED) { + ret = -1; + break; + } + + if (state == STATE_IDLE) if (start_thread() < 0) break; @@ -310,8 +334,8 @@ void pa_autospawn_lock_release(void) { pa_mutex_lock(mutex); pa_assert(n_ref >= 1); - pa_assert(taken); - taken = FALSE; + pa_assert(state == STATE_TAKEN); + state = STATE_OWNING; ping(); diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h index cf6625108..bffcc2642 100644 --- a/src/pulsecore/macro.h +++ b/src/pulsecore/macro.h @@ -59,39 +59,42 @@ #endif /* Rounds down */ -static inline void* pa_align_ptr(const void *p) { - return (void*) (((size_t) p) & ~(sizeof(void*)-1)); +static inline void* PA_ALIGN_PTR(const void *p) { + return (void*) (((size_t) p) & ~(sizeof(void*) - 1)); } -#define PA_ALIGN_PTR(x) (pa_align_ptr(x)) /* Rounds up */ -static inline size_t pa_align(size_t l) { - return (((l + sizeof(void*) - 1) / sizeof(void*)) * sizeof(void*)); +static inline size_t PA_ALIGN(size_t l) { + return ((l + sizeof(void*) - 1) & ~(sizeof(void*) - 1)); } -#define PA_ALIGN(x) (pa_align(x)) /* Rounds down */ -static inline void* pa_page_align_ptr(const void *p) { - return (void*) (((size_t) p) & ~(PA_PAGE_SIZE-1)); +static inline void* PA_PAGE_ALIGN_PTR(const void *p) { + return (void*) (((size_t) p) & ~(PA_PAGE_SIZE - 1)); } -#define PA_PAGE_ALIGN_PTR(x) (pa_page_align_ptr(x)) /* Rounds up */ -static inline size_t pa_page_align(size_t l) { - return ((l + PA_PAGE_SIZE - 1) / PA_PAGE_SIZE) * PA_PAGE_SIZE; +static inline size_t PA_PAGE_ALIGN(size_t l) { + return (l + PA_PAGE_SIZE - 1) & ~(PA_PAGE_SIZE - 1); } -#define PA_PAGE_ALIGN(x) (pa_page_align(x)) #define PA_ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0])) -/* The users of PA_MIN and PA_MAX should be aware that these macros on - * non-GCC executed code with side effects twice. It is thus - * considered misuse to use code with side effects as arguments to MIN - * and MAX. */ +#if defined(__GNUC__) + #define PA_DECLARE_ALIGNED(n,t,v) t v __attribute__ ((aligned (n))) +#else + #define PA_DECLARE_ALIGNED(n,t,v) t v +#endif + +/* The users of PA_MIN and PA_MAX, PA_CLAMP, PA_ROUND_UP should be + * aware that these macros on non-GCC executed code with side effects + * twice. It is thus considered misuse to use code with side effects + * as arguments to MIN and MAX. */ #ifdef __GNUC__ #define PA_MAX(a,b) \ - __extension__ ({ typeof(a) _a = (a); \ + __extension__ ({ \ + typeof(a) _a = (a); \ typeof(b) _b = (b); \ _a > _b ? _a : _b; \ }) @@ -101,7 +104,8 @@ static inline size_t pa_page_align(size_t l) { #ifdef __GNUC__ #define PA_MIN(a,b) \ - __extension__ ({ typeof(a) _a = (a); \ + __extension__ ({ \ + typeof(a) _a = (a); \ typeof(b) _b = (b); \ _a < _b ? _a : _b; \ }) @@ -111,7 +115,8 @@ static inline size_t pa_page_align(size_t l) { #ifdef __GNUC__ #define PA_CLAMP(x, low, high) \ - __extension__ ({ typeof(x) _x = (x); \ + __extension__ ({ \ + typeof(x) _x = (x); \ typeof(low) _low = (low); \ typeof(high) _high = (high); \ ((_x > _high) ? _high : ((_x < _low) ? _low : _x)); \ @@ -122,7 +127,8 @@ static inline size_t pa_page_align(size_t l) { #ifdef __GNUC__ #define PA_CLAMP_UNLIKELY(x, low, high) \ - __extension__ ({ typeof(x) _x = (x); \ + __extension__ ({ \ + typeof(x) _x = (x); \ typeof(low) _low = (low); \ typeof(high) _high = (high); \ (PA_UNLIKELY(_x > _high) ? _high : (PA_UNLIKELY(_x < _low) ? _low : _x)); \ @@ -135,6 +141,39 @@ static inline size_t pa_page_align(size_t l) { * make sense: we cannot know if it is more likely that the values is * lower or greater than the boundaries.*/ +#ifdef __GNUC__ +#define PA_ROUND_UP(a, b) \ + __extension__ ({ \ + typeof(a) _a = (a); \ + typeof(b) _b = (b); \ + ((_a + _b - 1) / _b) * _b; \ + }) +#else +#define PA_ROUND_UP(a, b) ((((a) + (b) - 1) / (b)) * (b)) +#endif + +#ifdef __GNUC__ +#define PA_ROUND_DOWN(a, b) \ + __extension__ ({ \ + typeof(a) _a = (a); \ + typeof(b) _b = (b); \ + (_a / _b) * _b; \ + }) +#else +#define PA_ROUND_DOWN(a, b) (((a) / (b)) * (b)) +#endif + +#ifdef __GNUC__ +#define PA_CLIP_SUB(a, b) \ + __extension__ ({ \ + typeof(a) _a = (a); \ + typeof(b) _b = (b); \ + _a > _b ? _a - _b : 0; \ + }) +#else +#define PA_CLIP_SUB(a, b) ((a) > (b) ? (a) - (b) : 0) +#endif + /* This type is not intended to be used in exported APIs! Use classic "int" there! */ #ifdef HAVE_STD_BOOL typedef _Bool pa_bool_t; diff --git a/src/pulsecore/memblock.c b/src/pulsecore/memblock.c index 2c3f98a5f..0e40d12b7 100644 --- a/src/pulsecore/memblock.c +++ b/src/pulsecore/memblock.c @@ -96,6 +96,7 @@ struct pa_memimport_segment { unsigned n_blocks; }; +/* A collection of multiple segments */ struct pa_memimport { pa_mutex *mutex; @@ -257,7 +258,8 @@ static struct mempool_slot* mempool_allocate_slot(pa_mempool *p) { slot = (struct mempool_slot*) ((uint8_t*) p->memory.ptr + (p->block_size * (size_t) idx)); if (!slot) { - pa_log_debug("Pool full"); + if (pa_log_ratelimit()) + pa_log_debug("Pool full"); pa_atomic_inc(&p->stat.n_pool_full); return NULL; } @@ -514,9 +516,9 @@ static void memblock_free(pa_memblock *b) { pa_mutex_lock(import->mutex); - pa_hashmap_remove( - import->blocks, - PA_UINT32_TO_PTR(b->per_type.imported.id)); + pa_assert_se(pa_hashmap_remove( + import->blocks, + PA_UINT32_TO_PTR(b->per_type.imported.id))); pa_assert(segment->n_blocks >= 1); if (-- segment->n_blocks <= 0) @@ -677,9 +679,9 @@ static void memblock_replace_import(pa_memblock *b) { pa_mutex_lock(import->mutex); - pa_hashmap_remove( - import->blocks, - PA_UINT32_TO_PTR(b->per_type.imported.id)); + pa_assert_se(pa_hashmap_remove( + import->blocks, + PA_UINT32_TO_PTR(b->per_type.imported.id))); memblock_make_local(b); @@ -692,7 +694,7 @@ static void memblock_replace_import(pa_memblock *b) { pa_mempool* pa_mempool_new(pa_bool_t shared, size_t size) { pa_mempool *p; - char t1[64], t2[64]; + char t1[PA_BYTES_SNPRINT_MAX], t2[PA_BYTES_SNPRINT_MAX]; p = pa_xnew(pa_mempool, 1); @@ -960,6 +962,11 @@ pa_memblock* pa_memimport_get(pa_memimport *i, uint32_t block_id, uint32_t shm_i pa_mutex_lock(i->mutex); + if ((b = pa_hashmap_get(i->blocks, PA_UINT32_TO_PTR(block_id)))) { + pa_memblock_ref(b); + goto finish; + } + if (pa_hashmap_size(i->blocks) >= PA_MEMIMPORT_SLOTS_MAX) goto finish; @@ -989,12 +996,11 @@ pa_memblock* pa_memimport_get(pa_memimport *i, uint32_t block_id, uint32_t shm_i seg->n_blocks++; + stat_add(b); + finish: pa_mutex_unlock(i->mutex); - if (b) - stat_add(b); - return b; } diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c index 77f9efc9e..32758be32 100644 --- a/src/pulsecore/memblockq.c +++ b/src/pulsecore/memblockq.c @@ -692,6 +692,12 @@ size_t pa_memblockq_get_minreq(pa_memblockq *bq) { return bq->minreq; } +size_t pa_memblockq_get_maxrewind(pa_memblockq *bq) { + pa_assert(bq); + + return bq->maxrewind; +} + int64_t pa_memblockq_get_read_index(pa_memblockq *bq) { pa_assert(bq); diff --git a/src/pulsecore/memblockq.h b/src/pulsecore/memblockq.h index 146d261b7..587c364b1 100644 --- a/src/pulsecore/memblockq.h +++ b/src/pulsecore/memblockq.h @@ -141,6 +141,9 @@ size_t pa_memblockq_get_prebuf(pa_memblockq *bq); /* Returns the minimal request value */ size_t pa_memblockq_get_minreq(pa_memblockq *bq); +/* Returns the maximal rewind value */ +size_t pa_memblockq_get_maxrewind(pa_memblockq *bq); + /* Return the base unit in bytes */ size_t pa_memblockq_get_base(pa_memblockq *bq); diff --git a/src/pulsecore/memtrap.c b/src/pulsecore/memtrap.c index 7d9174505..373872c1c 100644 --- a/src/pulsecore/memtrap.c +++ b/src/pulsecore/memtrap.c @@ -65,7 +65,7 @@ pa_bool_t pa_memtrap_is_good(pa_memtrap *m) { } static void sigsafe_error(const char *s) { - write(STDERR_FILENO, s, strlen(s)); + (void) write(STDERR_FILENO, s, strlen(s)); } static void signal_handler(int sig, siginfo_t* si, void *data) { @@ -200,13 +200,13 @@ pa_memtrap *pa_memtrap_update(pa_memtrap *m, const void *start, size_t size) { goto unlock; memtrap_unlink(m, j); - j = pa_aupdate_write_swap(aupdate); + pa_aupdate_write_swap(aupdate); m->start = (void*) start; m->size = size; pa_atomic_store(&m->bad, 0); - j = pa_aupdate_write_swap(aupdate); + pa_assert_se(pa_aupdate_write_swap(aupdate) == j); memtrap_link(m, j); unlock: diff --git a/src/pulsecore/msgobject.c b/src/pulsecore/msgobject.c index 6a2a612d1..075a28c59 100644 --- a/src/pulsecore/msgobject.c +++ b/src/pulsecore/msgobject.c @@ -26,22 +26,22 @@ #include "msgobject.h" -PA_DEFINE_CHECK_TYPE(pa_msgobject, pa_object); +PA_DEFINE_PUBLIC_CLASS(pa_msgobject, pa_object); -pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) { +pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_name)) { pa_msgobject *o; pa_assert(size > sizeof(pa_msgobject)); - pa_assert(type_name); + pa_assert(type_id); if (!check_type) check_type = pa_msgobject_check_type; - pa_assert(check_type(type_name)); - pa_assert(check_type("pa_object")); - pa_assert(check_type("pa_msgobject")); + pa_assert(check_type(type_id)); + pa_assert(check_type(pa_object_type_id)); + pa_assert(check_type(pa_msgobject_type_id)); - o = PA_MSGOBJECT(pa_object_new_internal(size, type_name, check_type)); + o = PA_MSGOBJECT(pa_object_new_internal(size, type_id, check_type)); o->process_msg = NULL; return o; } diff --git a/src/pulsecore/msgobject.h b/src/pulsecore/msgobject.h index a35a23b57..ee0ec1ed1 100644 --- a/src/pulsecore/msgobject.h +++ b/src/pulsecore/msgobject.h @@ -38,15 +38,13 @@ struct pa_msgobject { int (*process_msg)(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk); }; -pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)); +pa_msgobject *pa_msgobject_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_name)); -int pa_msgobject_check_type(const char *type); - -#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), #type, type##_check_type)) +#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), type##_type_id, type##_check_type)) #define pa_msgobject_free ((void (*) (pa_msgobject* o)) pa_object_free) #define PA_MSGOBJECT(o) pa_msgobject_cast(o) -PA_DECLARE_CLASS(pa_msgobject); +PA_DECLARE_PUBLIC_CLASS(pa_msgobject); #endif diff --git a/src/pulsecore/namereg.c b/src/pulsecore/namereg.c index 9df2f583a..377557779 100644 --- a/src/pulsecore/namereg.c +++ b/src/pulsecore/namereg.c @@ -57,6 +57,8 @@ static pa_bool_t is_valid_char(char c) { pa_bool_t pa_namereg_is_valid_name(const char *name) { const char *c; + pa_assert(name); + if (*name == 0) return FALSE; @@ -70,6 +72,25 @@ pa_bool_t pa_namereg_is_valid_name(const char *name) { return TRUE; } +pa_bool_t pa_namereg_is_valid_name_or_wildcard(const char *name, pa_namereg_type_t type) { + + pa_assert(name); + + if (pa_namereg_is_valid_name(name)) + return TRUE; + + if (type == PA_NAMEREG_SINK && + pa_streq(name, "@DEFAULT_SINK@")) + return TRUE; + + if (type == PA_NAMEREG_SOURCE && + (pa_streq(name, "@DEFAULT_SOURCE@") || + pa_streq(name, "@DEFAULT_MONITOR@"))) + return TRUE; + + return FALSE; +} + char* pa_namereg_make_valid_name(const char *name) { const char *a; char *b, *n; @@ -191,7 +212,6 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type) { if ((s = pa_namereg_get(c, NULL, PA_NAMEREG_SINK))) return s->monitor_source; - } if (!name) @@ -223,6 +243,9 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type) { pa_sink* pa_namereg_set_default_sink(pa_core*c, pa_sink *s) { pa_assert(c); + if (s && !PA_SINK_IS_LINKED(pa_sink_get_state(s))) + return NULL; + if (c->default_sink != s) { c->default_sink = s; pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX); @@ -234,6 +257,9 @@ pa_sink* pa_namereg_set_default_sink(pa_core*c, pa_sink *s) { pa_source* pa_namereg_set_default_source(pa_core*c, pa_source *s) { pa_assert(c); + if (s && !PA_SOURCE_IS_LINKED(pa_source_get_state(s))) + return NULL; + if (c->default_source != s) { c->default_source = s; pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX); @@ -243,34 +269,57 @@ pa_source* pa_namereg_set_default_source(pa_core*c, pa_source *s) { } pa_sink *pa_namereg_get_default_sink(pa_core *c) { - pa_sink *s; + pa_sink *s, *best = NULL; + uint32_t idx; pa_assert(c); - if (c->default_sink) + if (c->default_sink && PA_SINK_IS_LINKED(pa_sink_get_state(c->default_sink))) return c->default_sink; - if ((s = pa_idxset_first(c->sinks, NULL))) - return pa_namereg_set_default_sink(c, s); + PA_IDXSET_FOREACH(s, c->sinks, idx) + if (PA_SINK_IS_LINKED(pa_sink_get_state(s))) + if (!best || s->priority > best->priority) + best = s; + + if (best) + return pa_namereg_set_default_sink(c, best); return NULL; } pa_source *pa_namereg_get_default_source(pa_core *c) { - pa_source *s; + pa_source *s, *best = NULL; uint32_t idx; pa_assert(c); - if (c->default_source) + if (c->default_source && PA_SOURCE_IS_LINKED(pa_source_get_state(c->default_source))) return c->default_source; - for (s = PA_SOURCE(pa_idxset_first(c->sources, &idx)); s; s = PA_SOURCE(pa_idxset_next(c->sources, &idx))) - if (!s->monitor_of) - return pa_namereg_set_default_source(c, s); + /* First, try to find one that isn't a monitor */ + PA_IDXSET_FOREACH(s, c->sources, idx) + if (!s->monitor_of && PA_SOURCE_IS_LINKED(pa_source_get_state(s))) + if (!best || + s->priority > best->priority) + best = s; - if ((s = pa_idxset_first(c->sources, NULL))) - return pa_namereg_set_default_source(c, s); + if (best) + return pa_namereg_set_default_source(c, best); + + /* Then, fallback to a monitor */ + PA_IDXSET_FOREACH(s, c->sources, idx) + if (PA_SOURCE_IS_LINKED(pa_source_get_state(s))) + if (!best || + s->priority > best->priority || + (s->priority == best->priority && + s->monitor_of && + best->monitor_of && + s->monitor_of->priority > best->monitor_of->priority)) + best = s; + + if (best) + return pa_namereg_set_default_source(c, best); return NULL; } diff --git a/src/pulsecore/namereg.h b/src/pulsecore/namereg.h index 38fae6f58..b5a976d7c 100644 --- a/src/pulsecore/namereg.h +++ b/src/pulsecore/namereg.h @@ -45,6 +45,7 @@ pa_sink *pa_namereg_get_default_sink(pa_core *c); pa_source *pa_namereg_get_default_source(pa_core *c); pa_bool_t pa_namereg_is_valid_name(const char *name); +pa_bool_t pa_namereg_is_valid_name_or_wildcard(const char *name, pa_namereg_type_t type); char* pa_namereg_make_valid_name(const char *name); #endif diff --git a/src/pulsecore/object.c b/src/pulsecore/object.c index f3ead9c50..099d50d9c 100644 --- a/src/pulsecore/object.c +++ b/src/pulsecore/object.c @@ -28,21 +28,23 @@ #include "object.h" -pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) { +const char pa_object_type_id[] = "pa_object"; + +pa_object *pa_object_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_id)) { pa_object *o; pa_assert(size > sizeof(pa_object)); - pa_assert(type_name); + pa_assert(type_id); if (!check_type) check_type = pa_object_check_type; - pa_assert(check_type(type_name)); - pa_assert(check_type("pa_object")); + pa_assert(check_type(type_id)); + pa_assert(check_type(pa_object_type_id)); o = pa_xmalloc(size); PA_REFCNT_INIT(o); - o->type_name = type_name; + o->type_id = type_id; o->free = pa_object_free; o->check_type = check_type; @@ -65,8 +67,8 @@ void pa_object_unref(pa_object *o) { } } -int pa_object_check_type(const char *type_name) { - pa_assert(type_name); +pa_bool_t pa_object_check_type(const char *type_id) { + pa_assert(type_id); - return pa_streq(type_name, "pa_object"); + return type_id == pa_object_type_id; } diff --git a/src/pulsecore/object.h b/src/pulsecore/object.h index 43e79327d..4c120cd57 100644 --- a/src/pulsecore/object.h +++ b/src/pulsecore/object.h @@ -34,21 +34,23 @@ typedef struct pa_object pa_object; struct pa_object { PA_REFCNT_DECLARE; - const char *type_name; + const char *type_id; void (*free)(pa_object *o); - int (*check_type)(const char *type_name); + pa_bool_t (*check_type)(const char *type_name); }; -pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)); -#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), #type, type##_check_type) +pa_object *pa_object_new_internal(size_t size, const char *type_id, pa_bool_t (*check_type)(const char *type_id)); +#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), type##_type_id, type##_check_type) #define pa_object_free ((void (*) (pa_object* _obj)) pa_xfree) -int pa_object_check_type(const char *type); +pa_bool_t pa_object_check_type(const char *type_id); -static inline int pa_object_isinstance(void *o) { +extern const char pa_object_type_id[]; + +static inline pa_bool_t pa_object_isinstance(void *o) { pa_object *obj = (pa_object*) o; - return obj ? obj->check_type("pa_object") : 0; + return obj ? obj->check_type(pa_object_type_id) : TRUE; } pa_object *pa_object_ref(pa_object *o); @@ -60,7 +62,7 @@ static inline int pa_object_refcnt(pa_object *o) { static inline pa_object* pa_object_cast(void *o) { pa_object *obj = (pa_object*) o; - pa_assert(!obj || obj->check_type("pa_object")); + pa_assert(!obj || obj->check_type(pa_object_type_id)); return obj; } @@ -68,10 +70,10 @@ static inline pa_object* pa_object_cast(void *o) { #define PA_OBJECT(o) pa_object_cast(o) -#define PA_DECLARE_CLASS(c) \ - static inline int c##_isinstance(void *o) { \ +#define PA_DECLARE_CLASS_COMMON(c) \ + static inline pa_bool_t c##_isinstance(void *o) { \ pa_object *obj = (pa_object*) o; \ - return obj ? obj->check_type(#c) : 1; \ + return obj ? obj->check_type(c##_type_id) : TRUE; \ } \ static inline c* c##_cast(void *o) { \ pa_assert(c##_isinstance(o)); \ @@ -91,12 +93,27 @@ static inline pa_object* pa_object_cast(void *o) { } \ struct __stupid_useless_struct_to_allow_trailing_semicolon -#define PA_DEFINE_CHECK_TYPE(c, parent) \ - int c##_check_type(const char *type) { \ - pa_assert(type); \ - if (strcmp(type, #c) == 0) \ - return 1; \ - return parent##_check_type(type); \ +#define PA_DECLARE_PUBLIC_CLASS(c) \ + extern const char c##_type_id[]; \ + PA_DECLARE_CLASS_COMMON(c); \ + pa_bool_t c##_check_type(const char *type_id) + +#define PA_DEFINE_PUBLIC_CLASS(c, parent) \ + const char c##_type_id[] = #c; \ + pa_bool_t c##_check_type(const char *type_id) { \ + if (type_id == c##_type_id) \ + return TRUE; \ + return parent##_check_type(type_id); \ + } \ + struct __stupid_useless_struct_to_allow_trailing_semicolon + +#define PA_DEFINE_PRIVATE_CLASS(c, parent) \ + static const char c##_type_id[] = #c; \ + PA_DECLARE_CLASS_COMMON(c); \ + static pa_bool_t c##_check_type(const char *type_id) { \ + if (type_id == c##_type_id) \ + return TRUE; \ + return parent##_check_type(type_id); \ } \ struct __stupid_useless_struct_to_allow_trailing_semicolon diff --git a/src/pulsecore/pdispatch.c b/src/pulsecore/pdispatch.c index fc8ce76f4..f15466ce0 100644 --- a/src/pulsecore/pdispatch.c +++ b/src/pulsecore/pdispatch.c @@ -169,7 +169,7 @@ static const char *command_names[PA_COMMAND_MAX] = { /* Supported since protocol v14 (0.9.12) */ [PA_COMMAND_EXTENSION] = "EXTENSION", - + /* Supported since protocol v15 (0.9.15) */ [PA_COMMAND_GET_CARD_INFO] = "GET_CARD_INFO", [PA_COMMAND_GET_CARD_INFO_LIST] = "GET_CARD_INFO_LIST", [PA_COMMAND_SET_CARD_PROFILE] = "SET_CARD_PROFILE", @@ -180,7 +180,11 @@ static const char *command_names[PA_COMMAND_MAX] = { /* SERVER->CLIENT */ [PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED] = "PLAYBACK_BUFFER_ATTR_CHANGED", - [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = "RECORD_BUFFER_ATTR_CHANGED" + [PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED] = "RECORD_BUFFER_ATTR_CHANGED", + + /* Supported since protocol v16 (0.9.16) */ + [PA_COMMAND_SET_SINK_PORT] = "SET_SINK_PORT", + [PA_COMMAND_SET_SOURCE_PORT] = "SET_SOURCE_PORT" }; #endif @@ -203,10 +207,10 @@ struct pa_pdispatch { const pa_pdispatch_cb_t *callback_table; unsigned n_commands; PA_LLIST_HEAD(struct reply_info, replies); - pa_pdispatch_drain_callback drain_callback; + pa_pdispatch_drain_cb_t drain_callback; void *drain_userdata; const pa_creds *creds; - pa_bool_t use_rtclock:1; + pa_bool_t use_rtclock; }; static void reply_info_free(struct reply_info *r) { @@ -225,19 +229,16 @@ static void reply_info_free(struct reply_info *r) { pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *mainloop, pa_bool_t use_rtclock, const pa_pdispatch_cb_t *table, unsigned entries) { pa_pdispatch *pd; - pa_assert(mainloop); + pa_assert(mainloop); pa_assert((entries && table) || (!entries && !table)); - pd = pa_xnew(pa_pdispatch, 1); + pd = pa_xnew0(pa_pdispatch, 1); PA_REFCNT_INIT(pd); pd->mainloop = mainloop; pd->callback_table = table; pd->n_commands = entries; PA_LLIST_HEAD_INIT(struct reply_info, pd->replies); - pd->drain_callback = NULL; - pd->drain_userdata = NULL; - pd->creds = NULL; pd->use_rtclock = use_rtclock; return pd; @@ -317,7 +318,7 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet*packet, const pa_creds *creds, if (command == PA_COMMAND_ERROR || command == PA_COMMAND_REPLY) { struct reply_info *r; - for (r = pd->replies; r; r = r->next) + PA_LLIST_FOREACH(r, pd->replies) if (r->tag == tag) break; @@ -325,9 +326,9 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet*packet, const pa_creds *creds, run_action(pd, r, command, ts); } else if (pd->callback_table && (command < pd->n_commands) && pd->callback_table[command]) { - const pa_pdispatch_cb_t *c = pd->callback_table+command; + const pa_pdispatch_cb_t *cb = pd->callback_table+command; - (*c)(pd, command, tag, ts, userdata); + (*cb)(pd, command, tag, ts, userdata); } else { pa_log("Received unsupported command %u", command); goto finish; @@ -375,7 +376,9 @@ void pa_pdispatch_register_reply(pa_pdispatch *pd, uint32_t tag, int timeout, pa r->free_cb = free_cb; r->tag = tag; - pa_assert_se(r->time_event = pd->mainloop->time_new(pd->mainloop, pa_timeval_rtstore(&tv, pa_rtclock_now() + timeout * PA_USEC_PER_SEC, pd->use_rtclock), timeout_callback, r)); + pa_assert_se(r->time_event = pd->mainloop->time_new(pd->mainloop, + pa_timeval_rtstore(&tv, pa_rtclock_now() + timeout * PA_USEC_PER_SEC, pd->use_rtclock), + timeout_callback, r)); PA_LLIST_PREPEND(struct reply_info, pd->replies, r); } @@ -387,7 +390,7 @@ int pa_pdispatch_is_pending(pa_pdispatch *pd) { return !!pd->replies; } -void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, void (*cb)(pa_pdispatch *pd, void *userdata), void *userdata) { +void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, pa_pdispatch_drain_cb_t cb, void *userdata) { pa_assert(pd); pa_assert(PA_REFCNT_VALUE(pd) >= 1); pa_assert(!cb || pa_pdispatch_is_pending(pd)); @@ -402,12 +405,9 @@ void pa_pdispatch_unregister_reply(pa_pdispatch *pd, void *userdata) { pa_assert(pd); pa_assert(PA_REFCNT_VALUE(pd) >= 1); - for (r = pd->replies; r; r = n) { - n = r->next; - + PA_LLIST_FOREACH_SAFE(r, n, pd->replies) if (r->userdata == userdata) reply_info_free(r); - } } void pa_pdispatch_unref(pa_pdispatch *pd) { diff --git a/src/pulsecore/pdispatch.h b/src/pulsecore/pdispatch.h index dae475af5..c5431c2ec 100644 --- a/src/pulsecore/pdispatch.h +++ b/src/pulsecore/pdispatch.h @@ -35,9 +35,9 @@ typedef struct pa_pdispatch pa_pdispatch; typedef void (*pa_pdispatch_cb_t)(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata); -typedef void (*pa_pdispatch_drain_callback)(pa_pdispatch *pd, void *userdata); +typedef void (*pa_pdispatch_drain_cb_t)(pa_pdispatch *pd, void *userdata); -pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *m, pa_bool_t use_rtclock, const pa_pdispatch_cb_t*table, unsigned entries); +pa_pdispatch* pa_pdispatch_new(pa_mainloop_api *m, pa_bool_t use_rtclock, const pa_pdispatch_cb_t *table, unsigned entries); void pa_pdispatch_unref(pa_pdispatch *pd); pa_pdispatch* pa_pdispatch_ref(pa_pdispatch *pd); @@ -47,7 +47,7 @@ void pa_pdispatch_register_reply(pa_pdispatch *pd, uint32_t tag, int timeout, pa int pa_pdispatch_is_pending(pa_pdispatch *pd); -void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, pa_pdispatch_drain_callback callback, void *userdata); +void pa_pdispatch_set_drain_callback(pa_pdispatch *pd, pa_pdispatch_drain_cb_t callback, void *userdata); /* Remove all reply slots with the give userdata parameter */ void pa_pdispatch_unregister_reply(pa_pdispatch *pd, void *userdata); diff --git a/src/pulsecore/pid.c b/src/pulsecore/pid.c index 008784629..996946c28 100644 --- a/src/pulsecore/pid.c +++ b/src/pulsecore/pid.c @@ -81,7 +81,7 @@ static pid_t read_pid(const char *fn, int fd) { } static int open_pid_file(const char *fn, int mode) { - int fd = -1; + int fd; pa_assert(fn); @@ -123,8 +123,6 @@ static int open_pid_file(const char *fn, int mode) { fd = -1; goto fail; } - - fd = -1; } return fd; diff --git a/src/pulsecore/play-memblockq.c b/src/pulsecore/play-memblockq.c index fceb2ca14..f528c496f 100644 --- a/src/pulsecore/play-memblockq.c +++ b/src/pulsecore/play-memblockq.c @@ -47,9 +47,8 @@ enum { MEMBLOCKQ_STREAM_MESSAGE_UNLINK, }; -PA_DECLARE_CLASS(memblockq_stream); +PA_DEFINE_PRIVATE_CLASS(memblockq_stream, pa_msgobject); #define MEMBLOCKQ_STREAM(o) (memblockq_stream_cast(o)) -static PA_DEFINE_CHECK_TYPE(memblockq_stream, pa_msgobject); static void memblockq_stream_unlink(memblockq_stream *u) { pa_assert(u); @@ -200,7 +199,7 @@ pa_sink_input* pa_memblockq_sink_input_new( pa_sink_input_new_data_set_volume(&data, volume); pa_proplist_update(data.proplist, PA_UPDATE_REPLACE, p); - pa_sink_input_new(&u->sink_input, sink->core, &data, 0); + pa_sink_input_new(&u->sink_input, sink->core, &data); pa_sink_input_new_data_done(&data); if (!u->sink_input) diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c index d9769bc7c..23864bcbf 100644 --- a/src/pulsecore/proplist-util.c +++ b/src/pulsecore/proplist-util.c @@ -186,10 +186,12 @@ void pa_init_proplist(pa_proplist *p) { } if (!pa_proplist_contains(p, PA_PROP_APPLICATION_PROCESS_BINARY)) { - char t[PATH_MAX]; - if (pa_get_binary_name(t, sizeof(t))) { + char *t; + + if ((t = pa_get_binary_name_malloc())) { char *c = pa_utf8_filter(t); pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_BINARY, c); + pa_xfree(t); pa_xfree(c); } } diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c index f64552aa4..2326eb3a7 100644 --- a/src/pulsecore/protocol-esound.c +++ b/src/pulsecore/protocol-esound.c @@ -120,9 +120,8 @@ typedef struct connection { pa_time_event *auth_timeout_event; } connection; -PA_DECLARE_CLASS(connection); +PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject); #define CONNECTION(o) (connection_cast(o)) -static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject); struct pa_esound_protocol { PA_REFCNT_DECLARE; @@ -430,7 +429,7 @@ static int esd_proto_stream_play(connection *c, esd_proto_t request, const void sdata.sink = sink; pa_sink_input_new_data_set_sample_spec(&sdata, &ss); - pa_sink_input_new(&c->sink_input, c->protocol->core, &sdata, 0); + pa_sink_input_new(&c->sink_input, c->protocol->core, &sdata); pa_sink_input_new_data_done(&sdata); CHECK_VALIDITY(c->sink_input, "Failed to create sink input."); @@ -526,7 +525,7 @@ static int esd_proto_stream_record(connection *c, esd_proto_t request, const voi sdata.source = source; pa_source_output_new_data_set_sample_spec(&sdata, &ss); - pa_source_output_new(&c->source_output, c->protocol->core, &sdata, 0); + pa_source_output_new(&c->source_output, c->protocol->core, &sdata); pa_source_output_new_data_done(&sdata); CHECK_VALIDITY(c->source_output, "Failed to create source output."); @@ -772,7 +771,6 @@ static int esd_proto_stream_pan(connection *c, esd_proto_t request, const void * memcpy(&rvolume, data, sizeof(uint32_t)); rvolume = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, rvolume); - data = (const char*)data + sizeof(uint32_t); if ((conn = pa_idxset_get_by_index(c->protocol->connections, idx)) && conn->sink_input) { pa_cvolume volume; @@ -810,7 +808,6 @@ static int esd_proto_sample_pan(connection *c, esd_proto_t request, const void * memcpy(&rvolume, data, sizeof(uint32_t)); rvolume = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, rvolume); - data = (const char*)data + sizeof(uint32_t); volume.values[0] = (lvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE; volume.values[1] = (rvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE; @@ -1124,7 +1121,7 @@ static int do_read(connection *c) { ssize_t r; size_t l; void *p; - size_t space; + size_t space = 0; pa_assert(c->input_memblockq); diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c index 5220cc918..c09e53484 100644 --- a/src/pulsecore/protocol-http.c +++ b/src/pulsecore/protocol-http.c @@ -533,7 +533,7 @@ static void handle_listen_prefix(struct connection *c, const char *source_name) pa_source_output_new_data_set_sample_spec(&data, &ss); pa_source_output_new_data_set_channel_map(&data, &cm); - pa_source_output_new(&c->source_output, c->protocol->core, &data, 0); + pa_source_output_new(&c->source_output, c->protocol->core, &data); pa_source_output_new_data_done(&data); if (!c->source_output) { diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index 96184bd28..d06dd4ebe 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -98,17 +98,15 @@ typedef struct record_stream { pa_usec_t current_source_latency; } record_stream; -PA_DECLARE_CLASS(record_stream); #define RECORD_STREAM(o) (record_stream_cast(o)) -static PA_DEFINE_CHECK_TYPE(record_stream, pa_msgobject); +PA_DEFINE_PRIVATE_CLASS(record_stream, pa_msgobject); typedef struct output_stream { pa_msgobject parent; } output_stream; -PA_DECLARE_CLASS(output_stream); #define OUTPUT_STREAM(o) (output_stream_cast(o)) -static PA_DEFINE_CHECK_TYPE(output_stream, pa_msgobject); +PA_DEFINE_PRIVATE_CLASS(output_stream, pa_msgobject); typedef struct playback_stream { output_stream parent; @@ -138,9 +136,8 @@ typedef struct playback_stream { uint64_t playing_for, underrun_for; } playback_stream; -PA_DECLARE_CLASS(playback_stream); #define PLAYBACK_STREAM(o) (playback_stream_cast(o)) -static PA_DEFINE_CHECK_TYPE(playback_stream, output_stream); +PA_DEFINE_PRIVATE_CLASS(playback_stream, output_stream); typedef struct upload_stream { output_stream parent; @@ -156,9 +153,8 @@ typedef struct upload_stream { pa_proplist *proplist; } upload_stream; -PA_DECLARE_CLASS(upload_stream); #define UPLOAD_STREAM(o) (upload_stream_cast(o)) -static PA_DEFINE_CHECK_TYPE(upload_stream, output_stream); +PA_DEFINE_PRIVATE_CLASS(upload_stream, output_stream); struct pa_native_connection { pa_msgobject parent; @@ -176,9 +172,8 @@ struct pa_native_connection { pa_time_event *auth_timeout_event; }; -PA_DECLARE_CLASS(pa_native_connection); #define PA_NATIVE_CONNECTION(o) (pa_native_connection_cast(o)) -static PA_DEFINE_CHECK_TYPE(pa_native_connection, pa_msgobject); +PA_DEFINE_PRIVATE_CLASS(pa_native_connection, pa_msgobject); struct pa_native_protocol { PA_REFCNT_DECLARE; @@ -633,7 +628,6 @@ static record_stream* record_stream_new( record_stream *s; pa_source_output *source_output = NULL; - size_t base; pa_source_output_new_data data; pa_assert(c); @@ -653,8 +647,9 @@ static record_stream* record_stream_new( pa_source_output_new_data_set_channel_map(&data, map); if (peak_detect) data.resample_method = PA_RESAMPLER_PEAKS; + data.flags = flags; - *ret = -pa_source_output_new(&source_output, c->protocol->core, &data, flags); + *ret = -pa_source_output_new(&source_output, c->protocol->core, &data); pa_source_output_new_data_done(&data); @@ -686,7 +681,7 @@ static record_stream* record_stream_new( 0, s->buffer_attr.maxlength, 0, - base = pa_frame_size(&source_output->sample_spec), + pa_frame_size(&source_output->sample_spec), 1, 0, 0, @@ -762,6 +757,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, return -1; switch (code) { + case PLAYBACK_STREAM_MESSAGE_REQUEST_DATA: { pa_tagstruct *t; int l = 0; @@ -830,24 +826,26 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, pa_pstream_send_simple_ack(s->connection->pstream, PA_PTR_TO_UINT(userdata)); break; - case PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH: { - pa_tagstruct *t; + case PLAYBACK_STREAM_MESSAGE_UPDATE_TLENGTH: s->buffer_attr.tlength = (uint32_t) offset; - t = pa_tagstruct_new(NULL, 0); - pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED); - pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ - pa_tagstruct_putu32(t, s->index); - pa_tagstruct_putu32(t, s->buffer_attr.maxlength); - pa_tagstruct_putu32(t, s->buffer_attr.tlength); - pa_tagstruct_putu32(t, s->buffer_attr.prebuf); - pa_tagstruct_putu32(t, s->buffer_attr.minreq); - pa_tagstruct_put_usec(t, s->configured_sink_latency); - pa_pstream_send_tagstruct(s->connection->pstream, t); + if (s->connection->version >= 15) { + pa_tagstruct *t; + + t = pa_tagstruct_new(NULL, 0); + pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED); + pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ + pa_tagstruct_putu32(t, s->index); + pa_tagstruct_putu32(t, s->buffer_attr.maxlength); + pa_tagstruct_putu32(t, s->buffer_attr.tlength); + pa_tagstruct_putu32(t, s->buffer_attr.prebuf); + pa_tagstruct_putu32(t, s->buffer_attr.minreq); + pa_tagstruct_put_usec(t, s->configured_sink_latency); + pa_pstream_send_tagstruct(s->connection->pstream, t); + } break; - } } return 0; @@ -1054,8 +1052,9 @@ static playback_stream* playback_stream_new( if (muted_set) pa_sink_input_new_data_set_muted(&data, muted); data.sync_base = ssync ? ssync->sink_input : NULL; + data.flags = flags; - *ret = -pa_sink_input_new(&sink_input, c->protocol->core, &data, flags); + *ret = -pa_sink_input_new(&sink_input, c->protocol->core, &data); pa_sink_input_new_data_done(&data); @@ -1130,6 +1129,12 @@ static void playback_stream_request_bytes(playback_stream *s) { m = pa_memblockq_pop_missing(s->memblockq); + /* pa_log("request_bytes(%lu) (tlength=%lu minreq=%lu length=%lu)", */ + /* (unsigned long) m, */ + /* pa_memblockq_get_tlength(s->memblockq), */ + /* pa_memblockq_get_minreq(s->memblockq), */ + /* pa_memblockq_get_length(s->memblockq)); */ + if (m <= 0) return; @@ -1143,7 +1148,6 @@ static void playback_stream_request_bytes(playback_stream *s) { pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_REQUEST_DATA, NULL, 0, NULL, NULL); } - /* Called from main context */ static void playback_stream_send_killed(playback_stream *p) { pa_tagstruct *t; @@ -1288,7 +1292,8 @@ static void handle_seek(playback_stream *s, int64_t indexw) { pa_log_debug("Requesting rewind due to end of underrun."); pa_sink_input_request_rewind(s->sink_input, - (size_t) (s->sink_input->thread_info.underrun_for == (size_t) -1 ? 0 : s->sink_input->thread_info.underrun_for), + (size_t) (s->sink_input->thread_info.underrun_for == (uint64_t) -1 ? 0 : + s->sink_input->thread_info.underrun_for), FALSE, TRUE, FALSE); } @@ -1345,7 +1350,9 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int /* pa_log("sink input post: %lu %lli", (unsigned long) chunk->length, (long long) windex); */ if (pa_memblockq_push_align(s->memblockq, chunk) < 0) { - pa_log_warn("Failed to push data into queue"); + + if (pa_log_ratelimit()) + pa_log_warn("Failed to push data into queue"); pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_OVERFLOW, NULL, 0, NULL, NULL); pa_memblockq_seek(s->memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE, TRUE); } @@ -1617,6 +1624,9 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) { s = PLAYBACK_STREAM(i->userdata); playback_stream_assert_ref(s); + if (!dest) + return; + fix_playback_buffer_attr(s); pa_memblockq_apply_attr(s->memblockq, &s->buffer_attr); pa_memblockq_get_attr(s->memblockq, &s->buffer_attr); @@ -1752,6 +1762,9 @@ static void source_output_moving_cb(pa_source_output *o, pa_source *dest) { s = RECORD_STREAM(o->userdata); record_stream_assert_ref(s); + if (!dest) + return; + fix_record_buffer_attr_pre(s); pa_memblockq_set_maxlength(s->memblockq, s->buffer_attr.maxlength); pa_memblockq_get_attr(s->memblockq, &s->buffer_attr); @@ -1856,7 +1869,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name(sink_name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name_or_wildcard(sink_name, PA_NAMEREG_SINK), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, sink_index == PA_INVALID_INDEX || !sink_name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !sink_name || sink_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, pa_channel_map_valid(&map), tag, PA_ERR_INVALID); @@ -1951,7 +1964,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u (no_move ? PA_SINK_INPUT_DONT_MOVE : 0) | (variable_rate ? PA_SINK_INPUT_VARIABLE_RATE : 0) | (dont_inhibit_auto_suspend ? PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) | - (fail_on_suspend ? PA_SINK_INPUT_FAIL_ON_SUSPEND : 0); + (fail_on_suspend ? PA_SINK_INPUT_NO_CREATE_ON_SUSPEND|PA_SINK_INPUT_KILL_ON_SUSPEND : 0); /* Only since protocol version 15 there's a seperate muted_set * flag. For older versions we synthesize it here */ @@ -2105,7 +2118,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !source_name || pa_namereg_is_valid_name(source_name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !source_name || pa_namereg_is_valid_name_or_wildcard(source_name, PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, source_index == PA_INVALID_INDEX || !source_name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !source_name || source_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, pa_sample_spec_valid(&ss), tag, PA_ERR_INVALID); @@ -2207,7 +2220,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin (no_move ? PA_SOURCE_OUTPUT_DONT_MOVE : 0) | (variable_rate ? PA_SOURCE_OUTPUT_VARIABLE_RATE : 0) | (dont_inhibit_auto_suspend ? PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) | - (fail_on_suspend ? PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND : 0); + (fail_on_suspend ? PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND|PA_SOURCE_OUTPUT_KILL_ON_SUSPEND : 0); s = record_stream_new(c, source, &ss, &map, peak_detect, &attr, flags, p, adjust_latency, direct_on_input, early_requests, &ret); pa_proplist_free(p); @@ -2262,6 +2275,8 @@ static void command_exit(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_ta ret = pa_core_exit(c->protocol->core, FALSE, 0); CHECK_VALIDITY(c->pstream, ret >= 0, tag, PA_ERR_ACCESS); + pa_log_debug("Client %s asks us to terminate.", pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY))); + pa_pstream_send_simple_ack(c->pstream, tag); /* nonsense */ } @@ -2451,7 +2466,7 @@ static void command_lookup(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_ } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, name && pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, name && pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_LOOKUP_SINK ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); if (command == PA_COMMAND_LOOKUP_SINK) { pa_sink *sink; @@ -2550,7 +2565,7 @@ static void command_get_playback_latency(pa_pdispatch *pd, uint32_t command, uin reply = reply_new(tag); pa_tagstruct_put_usec(reply, s->current_sink_latency + - pa_bytes_to_usec(s->render_memblockq_length, &s->sink_input->sample_spec)); + pa_bytes_to_usec(s->render_memblockq_length, &s->sink_input->sink->sample_spec)); pa_tagstruct_put_usec(reply, 0); pa_tagstruct_put_boolean(reply, s->playing_for > 0 && @@ -2722,7 +2737,7 @@ static void command_play_sample(pa_pdispatch *pd, uint32_t command, uint32_t tag return; } - CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name(sink_name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !sink_name || pa_namereg_is_valid_name_or_wildcard(sink_name, PA_NAMEREG_SINK), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, sink_index == PA_INVALID_INDEX || !sink_name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !sink_name || sink_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, name && pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); @@ -2826,7 +2841,7 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin PA_TAG_SAMPLE_SPEC, &fixed_ss, PA_TAG_CHANNEL_MAP, &sink->channel_map, PA_TAG_U32, sink->module ? sink->module->index : PA_INVALID_INDEX, - PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE, FALSE), + PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE), PA_TAG_BOOLEAN, pa_sink_get_mute(sink, FALSE), PA_TAG_U32, sink->monitor_source ? sink->monitor_source->index : PA_INVALID_INDEX, PA_TAG_STRING, sink->monitor_source ? sink->monitor_source->name : NULL, @@ -3096,7 +3111,12 @@ static void command_get_info(pa_pdispatch *pd, uint32_t command, uint32_t tag, p } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !name || + (command == PA_COMMAND_GET_SINK_INFO && + pa_namereg_is_valid_name_or_wildcard(name, PA_NAMEREG_SINK)) || + (command == PA_COMMAND_GET_SOURCE_INFO && + pa_namereg_is_valid_name_or_wildcard(name, PA_NAMEREG_SOURCE)) || + pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID); @@ -3323,6 +3343,7 @@ static void command_set_volume( pa_source *source = NULL; pa_sink_input *si = NULL; const char *name = NULL; + const char *client_name; pa_native_connection_assert_ref(c); pa_assert(t); @@ -3337,7 +3358,7 @@ static void command_set_volume( } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_VOLUME ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID); @@ -3369,12 +3390,26 @@ static void command_set_volume( CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY); - if (sink) - pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE, TRUE); - else if (source) + client_name = pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY)); + + if (sink) { + CHECK_VALIDITY(c->pstream, volume.channels == 1 || pa_cvolume_compatible(&volume, &sink->sample_spec), tag, PA_ERR_INVALID); + + pa_log_debug("Client %s changes volume of sink %s.", client_name, sink->name); + pa_sink_set_volume(sink, &volume, TRUE, TRUE); + } else if (source) { + CHECK_VALIDITY(c->pstream, volume.channels == 1 || pa_cvolume_compatible(&volume, &source->sample_spec), tag, PA_ERR_INVALID); + + pa_log_debug("Client %s changes volume of source %s.", client_name, source->name); pa_source_set_volume(source, &volume, TRUE); - else if (si) + } else if (si) { + CHECK_VALIDITY(c->pstream, volume.channels == 1 || pa_cvolume_compatible(&volume, &si->sample_spec), tag, PA_ERR_INVALID); + + pa_log_debug("Client %s changes volume of sink input %s.", + client_name, + pa_strnull(pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME))); pa_sink_input_set_volume(si, &volume, TRUE, TRUE); + } pa_pstream_send_simple_ack(c->pstream, tag); } @@ -3392,7 +3427,7 @@ static void command_set_mute( pa_sink *sink = NULL; pa_source *source = NULL; pa_sink_input *si = NULL; - const char *name = NULL; + const char *name = NULL, *client_name; pa_native_connection_assert_ref(c); pa_assert(t); @@ -3407,7 +3442,7 @@ static void command_set_mute( } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_MUTE ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID); @@ -3415,7 +3450,6 @@ static void command_set_mute( switch (command) { case PA_COMMAND_SET_SINK_MUTE: - if (idx != PA_INVALID_INDEX) sink = pa_idxset_get_by_index(c->protocol->core->sinks, idx); else @@ -3441,12 +3475,20 @@ static void command_set_mute( CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY); - if (sink) + client_name = pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY)); + + if (sink) { + pa_log_debug("Client %s changes mute of sink %s.", client_name, sink->name); pa_sink_set_mute(sink, mute, TRUE); - else if (source) + } else if (source) { + pa_log_debug("Client %s changes mute of source %s.", client_name, source->name); pa_source_set_mute(source, mute, TRUE); - else if (si) + } else if (si) { + pa_log_debug("Client %s changes mute of sink input %s.", + client_name, + pa_strnull(pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME))); pa_sink_input_set_mute(si, mute, TRUE); + } pa_pstream_send_simple_ack(c->pstream, tag); } @@ -4065,7 +4107,7 @@ static void command_move_stream(pa_pdispatch *pd, uint32_t command, uint32_t tag CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX, tag, PA_ERR_INVALID); - CHECK_VALIDITY(c->pstream, !name_device || pa_namereg_is_valid_name(name_device), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !name_device || pa_namereg_is_valid_name_or_wildcard(name_device, command == PA_COMMAND_MOVE_SINK_INPUT ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx_device != PA_INVALID_INDEX || name_device, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx_device == PA_INVALID_INDEX || !name_device, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !name_device || idx_device == PA_INVALID_INDEX, tag, PA_ERR_INVALID); @@ -4129,7 +4171,7 @@ static void command_suspend(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name) || *name == 0, tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SUSPEND_SINK ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE) || *name == 0, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID); @@ -4289,7 +4331,7 @@ static void command_set_sink_or_source_port(pa_pdispatch *pd, uint32_t command, } CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name(name), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_PORT ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID); CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID); @@ -4824,3 +4866,9 @@ pa_pstream* pa_native_connection_get_pstream(pa_native_connection *c) { return c->pstream; } + +pa_client* pa_native_connection_get_client(pa_native_connection *c) { + pa_native_connection_assert_ref(c); + + return c->client; +} diff --git a/src/pulsecore/protocol-native.h b/src/pulsecore/protocol-native.h index 8a8d601ce..971262742 100644 --- a/src/pulsecore/protocol-native.h +++ b/src/pulsecore/protocol-native.h @@ -47,7 +47,6 @@ typedef struct pa_native_options { char *auth_group; pa_ip_acl *auth_ip_acl; pa_auth_cookie *auth_cookie; - } pa_native_options; typedef enum pa_native_hook { @@ -80,6 +79,7 @@ int pa_native_protocol_install_ext(pa_native_protocol *p, pa_module *m, pa_nativ void pa_native_protocol_remove_ext(pa_native_protocol *p, pa_module *m); pa_pstream* pa_native_connection_get_pstream(pa_native_connection *c); +pa_client* pa_native_connection_get_client(pa_native_connection *c); pa_native_options* pa_native_options_new(void); pa_native_options* pa_native_options_ref(pa_native_options *o); diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c index 776d74b63..a9f738967 100644 --- a/src/pulsecore/protocol-simple.c +++ b/src/pulsecore/protocol-simple.c @@ -69,9 +69,8 @@ typedef struct connection { } playback; } connection; -PA_DECLARE_CLASS(connection); +PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject); #define CONNECTION(o) (connection_cast(o)) -static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject); struct pa_simple_protocol { PA_REFCNT_DECLARE; @@ -155,7 +154,7 @@ static int do_read(connection *c) { ssize_t r; size_t l; void *p; - size_t space; + size_t space = 0; connection_assert_ref(c); @@ -542,7 +541,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp pa_proplist_update(data.proplist, PA_UPDATE_MERGE, c->client->proplist); pa_sink_input_new_data_set_sample_spec(&data, &o->sample_spec); - pa_sink_input_new(&c->sink_input, p->core, &data, 0); + pa_sink_input_new(&c->sink_input, p->core, &data); pa_sink_input_new_data_done(&data); if (!c->sink_input) { @@ -594,7 +593,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp pa_proplist_update(data.proplist, PA_UPDATE_MERGE, c->client->proplist); pa_source_output_new_data_set_sample_spec(&data, &o->sample_spec); - pa_source_output_new(&c->source_output, p->core, &data, 0); + pa_source_output_new(&c->source_output, p->core, &data); pa_source_output_new_data_done(&data); if (!c->source_output) { @@ -628,8 +627,7 @@ void pa_simple_protocol_connect(pa_simple_protocol *p, pa_iochannel *io, pa_simp return; fail: - if (c) - connection_unlink(c); + connection_unlink(c); } void pa_simple_protocol_disconnect(pa_simple_protocol *p, pa_module *m) { diff --git a/src/pulsecore/ratelimit.h b/src/pulsecore/ratelimit.h index ec3b5a38a..9857a291b 100644 --- a/src/pulsecore/ratelimit.h +++ b/src/pulsecore/ratelimit.h @@ -26,21 +26,31 @@ #include typedef struct pa_ratelimit { - const pa_usec_t interval; - const unsigned burst; + pa_usec_t interval; + unsigned burst; unsigned n_printed, n_missed; pa_usec_t begin; } pa_ratelimit; #define PA_DEFINE_RATELIMIT(_name, _interval, _burst) \ pa_ratelimit _name = { \ - .interval = _interval, \ - .burst = _burst, \ + .interval = (_interval), \ + .burst = (_burst), \ .n_printed = 0, \ .n_missed = 0, \ .begin = 0 \ } +#define PA_INIT_RATELIMIT(v, _interval, _burst) \ + do { \ + pa_ratelimit *r = &(v); \ + r->interval = (_interval); \ + r->burst = (_burst); \ + r->n_printed = 0; \ + r->n_missed = 0; \ + r->begin = 0; \ + } while (FALSE); + pa_bool_t pa_ratelimit_test(pa_ratelimit *r); #endif diff --git a/src/pulsecore/remap.c b/src/pulsecore/remap.c new file mode 100644 index 000000000..a0fc85b96 --- /dev/null +++ b/src/pulsecore/remap.c @@ -0,0 +1,204 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include + +#include +#include +#include + +#include "remap.h" + +static void remap_mono_to_stereo_c (pa_remap_t *m, void *dst, const void *src, unsigned n) { + unsigned i; + + switch (*m->format) { + case PA_SAMPLE_FLOAT32NE: + { + float *d, *s; + + d = (float *) dst; + s = (float *) src; + + for (i = n >> 2; i; i--) { + d[0] = d[1] = s[0]; + d[2] = d[3] = s[1]; + d[4] = d[5] = s[2]; + d[6] = d[7] = s[3]; + s += 4; + d += 8; + } + for (i = n & 3; i; i--) { + d[0] = d[1] = s[0]; + s++; + d += 2; + } + break; + } + case PA_SAMPLE_S16NE: + { + int16_t *d, *s; + + d = (int16_t *) dst; + s = (int16_t *) src; + + for (i = n >> 2; i; i--) { + d[0] = d[1] = s[0]; + d[2] = d[3] = s[1]; + d[4] = d[5] = s[2]; + d[6] = d[7] = s[3]; + s += 4; + d += 8; + } + for (i = n & 3; i; i--) { + d[0] = d[1] = s[0]; + s++; + d += 2; + } + break; + } + default: + pa_assert_not_reached(); + } +} + +static void remap_channels_matrix_c (pa_remap_t *m, void *dst, const void *src, unsigned n) { + unsigned oc, ic, i; + unsigned n_ic, n_oc; + + n_ic = m->i_ss->channels; + n_oc = m->o_ss->channels; + + switch (*m->format) { + case PA_SAMPLE_FLOAT32NE: + { + float *d, *s; + + memset(dst, 0, n * sizeof (float) * n_oc); + + for (oc = 0; oc < n_oc; oc++) { + + for (ic = 0; ic < n_ic; ic++) { + float vol; + + vol = m->map_table_f[oc][ic]; + + if (vol <= 0.0) + continue; + + d = (float *)dst + oc; + s = (float *)src + ic; + + if (vol >= 1.0) { + for (i = n; i > 0; i--, s += n_ic, d += n_oc) + *d += *s; + } else { + for (i = n; i > 0; i--, s += n_ic, d += n_oc) + *d += *s * vol; + } + } + } + + break; + } + case PA_SAMPLE_S16NE: + { + int16_t *d, *s; + + memset(dst, 0, n * sizeof (int16_t) * n_oc); + + for (oc = 0; oc < n_oc; oc++) { + + for (ic = 0; ic < n_ic; ic++) { + int32_t vol; + + vol = m->map_table_i[oc][ic]; + + if (vol <= 0) + continue; + + d = (int16_t *)dst + oc; + s = (int16_t *)src + ic; + + if (vol >= 0x10000) { + for (i = n; i > 0; i--, s += n_ic, d += n_oc) + *d += *s; + } else { + for (i = n; i > 0; i--, s += n_ic, d += n_oc) + *d += (int16_t) (((int32_t)*s * vol) >> 16); + } + } + } + break; + } + default: + pa_assert_not_reached(); + } +} + +/* set the function that will execute the remapping based on the matrices */ +static void init_remap_c (pa_remap_t *m) { + unsigned n_oc, n_ic; + + n_oc = m->o_ss->channels; + n_ic = m->i_ss->channels; + + /* find some common channel remappings, fall back to full matrix operation. */ + if (n_ic == 1 && n_oc == 2 && + m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) { + m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_c; + pa_log_info("Using mono to stereo remapping"); + } else { + m->do_remap = (pa_do_remap_func_t) remap_channels_matrix_c; + pa_log_info("Using generic matrix remapping"); + } +} + + +/* default C implementation */ +static pa_init_remap_func_t remap_func = init_remap_c; + +void pa_init_remap (pa_remap_t *m) { + pa_assert (remap_func); + + m->do_remap = NULL; + + /* call the installed remap init function */ + remap_func (m); + + if (m->do_remap == NULL) { + /* nothing was installed, fallback to C version */ + init_remap_c (m); + } +} + +pa_init_remap_func_t pa_get_init_remap_func(void) { + return remap_func; +} + +void pa_set_init_remap_func(pa_init_remap_func_t func) { + remap_func = func; +} diff --git a/src/pulsecore/remap.h b/src/pulsecore/remap.h new file mode 100644 index 000000000..32a67cddf --- /dev/null +++ b/src/pulsecore/remap.h @@ -0,0 +1,48 @@ +#ifndef fooremapfoo +#define fooremapfoo + +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 + +typedef struct pa_remap pa_remap_t; + +typedef void (*pa_do_remap_func_t) (pa_remap_t *m, void *d, const void *s, unsigned n); + +struct pa_remap { + pa_sample_format_t *format; + pa_sample_spec *i_ss, *o_ss; + float map_table_f[PA_CHANNELS_MAX][PA_CHANNELS_MAX]; + int32_t map_table_i[PA_CHANNELS_MAX][PA_CHANNELS_MAX]; + pa_do_remap_func_t do_remap; +}; + +void pa_init_remap (pa_remap_t *m); + +/* custom installation of init functions */ +typedef void (*pa_init_remap_func_t) (pa_remap_t *m); + +pa_init_remap_func_t pa_get_init_remap_func(void); +void pa_set_init_remap_func(pa_init_remap_func_t func); + +#endif /* fooremapfoo */ diff --git a/src/pulsecore/remap_mmx.c b/src/pulsecore/remap_mmx.c new file mode 100644 index 000000000..d358a58b6 --- /dev/null +++ b/src/pulsecore/remap_mmx.c @@ -0,0 +1,161 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include + +#include +#include +#include + +#include "cpu-x86.h" +#include "remap.h" + +#define LOAD_SAMPLES \ + " movq (%1), %%mm0 \n\t" \ + " movq 8(%1), %%mm2 \n\t" \ + " movq 16(%1), %%mm4 \n\t" \ + " movq 24(%1), %%mm6 \n\t" \ + " movq %%mm0, %%mm1 \n\t" \ + " movq %%mm2, %%mm3 \n\t" \ + " movq %%mm4, %%mm5 \n\t" \ + " movq %%mm6, %%mm7 \n\t" + +#define UNPACK_SAMPLES(s) \ + " punpckl"#s" %%mm0, %%mm0 \n\t" \ + " punpckh"#s" %%mm1, %%mm1 \n\t" \ + " punpckl"#s" %%mm2, %%mm2 \n\t" \ + " punpckh"#s" %%mm3, %%mm3 \n\t" \ + " punpckl"#s" %%mm4, %%mm4 \n\t" \ + " punpckh"#s" %%mm5, %%mm5 \n\t" \ + " punpckl"#s" %%mm6, %%mm6 \n\t" \ + " punpckh"#s" %%mm7, %%mm7 \n\t" + +#define STORE_SAMPLES \ + " movq %%mm0, (%0) \n\t" \ + " movq %%mm1, 8(%0) \n\t" \ + " movq %%mm2, 16(%0) \n\t" \ + " movq %%mm3, 24(%0) \n\t" \ + " movq %%mm4, 32(%0) \n\t" \ + " movq %%mm5, 40(%0) \n\t" \ + " movq %%mm6, 48(%0) \n\t" \ + " movq %%mm7, 56(%0) \n\t" \ + " add $32, %1 \n\t" \ + " add $64, %0 \n\t" + +#define HANDLE_SINGLE_dq() \ + " movd (%1), %%mm0 \n\t" \ + " punpckldq %%mm0, %%mm0 \n\t" \ + " movq %%mm0, (%0) \n\t" \ + " add $4, %1 \n\t" \ + " add $8, %0 \n\t" + +#define HANDLE_SINGLE_wd() \ + " movw (%1), %w3 \n\t" \ + " movd %3, %%mm0 \n\t" \ + " punpcklwd %%mm0, %%mm0 \n\t" \ + " movd %%mm0, (%0) \n\t" \ + " add $2, %1 \n\t" \ + " add $4, %0 \n\t" + +#define MONO_TO_STEREO(s,shift,mask) \ + " mov %4, %2 \n\t" \ + " sar $"#shift", %2 \n\t" \ + " cmp $0, %2 \n\t" \ + " je 2f \n\t" \ + "1: \n\t" \ + LOAD_SAMPLES \ + UNPACK_SAMPLES(s) \ + STORE_SAMPLES \ + " dec %2 \n\t" \ + " jne 1b \n\t" \ + "2: \n\t" \ + " mov %4, %2 \n\t" \ + " and $"#mask", %2 \n\t" \ + " je 4f \n\t" \ + "3: \n\t" \ + HANDLE_SINGLE_##s() \ + " dec %2 \n\t" \ + " jne 3b \n\t" \ + "4: \n\t" \ + " emms \n\t" + +#if defined (__i386__) || defined (__amd64__) +static void remap_mono_to_stereo_mmx (pa_remap_t *m, void *dst, const void *src, unsigned n) { + pa_reg_x86 temp, temp2; + + switch (*m->format) { + case PA_SAMPLE_FLOAT32NE: + { + __asm__ __volatile__ ( + MONO_TO_STEREO(dq,3,7) /* do doubles to quads */ + : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2) + : "r" ((pa_reg_x86)n) + : "cc" + ); + break; + } + case PA_SAMPLE_S16NE: + { + __asm__ __volatile__ ( + MONO_TO_STEREO(wd,4,15) /* do words to doubles */ + : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2) + : "r" ((pa_reg_x86)n) + : "cc" + ); + break; + } + default: + pa_assert_not_reached(); + } +} + +/* set the function that will execute the remapping based on the matrices */ +static void init_remap_mmx (pa_remap_t *m) { + unsigned n_oc, n_ic; + + n_oc = m->o_ss->channels; + n_ic = m->i_ss->channels; + + /* find some common channel remappings, fall back to full matrix operation. */ + if (n_ic == 1 && n_oc == 2 && + m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) { + m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_mmx; + pa_log_info("Using MMX mono to stereo remapping"); + } +} +#endif /* defined (__i386__) || defined (__amd64__) */ + +void pa_remap_func_init_mmx (pa_cpu_x86_flag_t flags) { +#if defined (__i386__) || defined (__amd64__) + + if (flags & PA_CPU_X86_MMX) { + pa_log_info("Initialising MMX optimized remappers."); + + pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_mmx); + } + +#endif /* defined (__i386__) || defined (__amd64__) */ +} diff --git a/src/pulsecore/remap_sse.c b/src/pulsecore/remap_sse.c new file mode 100644 index 000000000..0ccf3161d --- /dev/null +++ b/src/pulsecore/remap_sse.c @@ -0,0 +1,159 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include + +#include +#include +#include + +#include "cpu-x86.h" +#include "remap.h" + +#define LOAD_SAMPLES \ + " movdqu (%1), %%xmm0 \n\t" \ + " movdqu 16(%1), %%xmm2 \n\t" \ + " movdqu 32(%1), %%xmm4 \n\t" \ + " movdqu 48(%1), %%xmm6 \n\t" \ + " movdqa %%xmm0, %%xmm1 \n\t" \ + " movdqa %%xmm2, %%xmm3 \n\t" \ + " movdqa %%xmm4, %%xmm5 \n\t" \ + " movdqa %%xmm6, %%xmm7 \n\t" + +#define UNPACK_SAMPLES(s) \ + " punpckl"#s" %%xmm0, %%xmm0 \n\t" \ + " punpckh"#s" %%xmm1, %%xmm1 \n\t" \ + " punpckl"#s" %%xmm2, %%xmm2 \n\t" \ + " punpckh"#s" %%xmm3, %%xmm3 \n\t" \ + " punpckl"#s" %%xmm4, %%xmm4 \n\t" \ + " punpckh"#s" %%xmm5, %%xmm5 \n\t" \ + " punpckl"#s" %%xmm6, %%xmm6 \n\t" \ + " punpckh"#s" %%xmm7, %%xmm7 \n\t" + +#define STORE_SAMPLES \ + " movdqu %%xmm0, (%0) \n\t" \ + " movdqu %%xmm1, 16(%0) \n\t" \ + " movdqu %%xmm2, 32(%0) \n\t" \ + " movdqu %%xmm3, 48(%0) \n\t" \ + " movdqu %%xmm4, 64(%0) \n\t" \ + " movdqu %%xmm5, 80(%0) \n\t" \ + " movdqu %%xmm6, 96(%0) \n\t" \ + " movdqu %%xmm7, 112(%0) \n\t" \ + " add $64, %1 \n\t" \ + " add $128, %0 \n\t" + +#define HANDLE_SINGLE_dq() \ + " movd (%1), %%xmm0 \n\t" \ + " punpckldq %%xmm0, %%xmm0 \n\t" \ + " movq %%xmm0, (%0) \n\t" \ + " add $4, %1 \n\t" \ + " add $8, %0 \n\t" + +#define HANDLE_SINGLE_wd() \ + " movw (%1), %w3 \n\t" \ + " movd %3, %%xmm0 \n\t" \ + " punpcklwd %%xmm0, %%xmm0 \n\t" \ + " movd %%xmm0, (%0) \n\t" \ + " add $2, %1 \n\t" \ + " add $4, %0 \n\t" + +#define MONO_TO_STEREO(s,shift,mask) \ + " mov %4, %2 \n\t" \ + " sar $"#shift", %2 \n\t" \ + " cmp $0, %2 \n\t" \ + " je 2f \n\t" \ + "1: \n\t" \ + LOAD_SAMPLES \ + UNPACK_SAMPLES(s) \ + STORE_SAMPLES \ + " dec %2 \n\t" \ + " jne 1b \n\t" \ + "2: \n\t" \ + " mov %4, %2 \n\t" \ + " and $"#mask", %2 \n\t" \ + " je 4f \n\t" \ + "3: \n\t" \ + HANDLE_SINGLE_##s() \ + " dec %2 \n\t" \ + " jne 3b \n\t" \ + "4: \n\t" + +#if defined (__i386__) || defined (__amd64__) +static void remap_mono_to_stereo_sse2 (pa_remap_t *m, void *dst, const void *src, unsigned n) { + pa_reg_x86 temp, temp2; + + switch (*m->format) { + case PA_SAMPLE_FLOAT32NE: + { + __asm__ __volatile__ ( + MONO_TO_STEREO(dq, 4, 15) /* do doubles to quads */ + : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2) + : "r" ((pa_reg_x86)n) + : "cc" + ); + break; + } + case PA_SAMPLE_S16NE: + { + __asm__ __volatile__ ( + MONO_TO_STEREO(wd, 5, 31) /* do words to doubles */ + : "+r" (dst), "+r" (src), "=&r" (temp), "=&r" (temp2) + : "r" ((pa_reg_x86)n) + : "cc" + ); + break; + } + default: + pa_assert_not_reached(); + } +} + +/* set the function that will execute the remapping based on the matrices */ +static void init_remap_sse2 (pa_remap_t *m) { + unsigned n_oc, n_ic; + + n_oc = m->o_ss->channels; + n_ic = m->i_ss->channels; + + /* find some common channel remappings, fall back to full matrix operation. */ + if (n_ic == 1 && n_oc == 2 && + m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) { + m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_sse2; + pa_log_info("Using SSE mono to stereo remapping"); + } +} +#endif /* defined (__i386__) || defined (__amd64__) */ + +void pa_remap_func_init_sse (pa_cpu_x86_flag_t flags) { +#if defined (__i386__) || defined (__amd64__) + + if (flags & PA_CPU_X86_SSE2) { + pa_log_info("Initialising SSE2 optimized remappers."); + pa_set_init_remap_func ((pa_init_remap_func_t) init_remap_sse2); + } + +#endif /* defined (__i386__) || defined (__amd64__) */ +} diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c index 17fb8480a..bed5a20df 100644 --- a/src/pulsecore/resampler.c +++ b/src/pulsecore/resampler.c @@ -31,9 +31,6 @@ #include -#include -#include - #include #include #include @@ -43,6 +40,7 @@ #include "ffmpeg/avcodec.h" #include "resampler.h" +#include "remap.h" /* Number of samples of extra space we allow the resamplers to return */ #define EXTRA_FRAMES 128 @@ -64,7 +62,7 @@ struct pa_resampler { pa_convert_func_t to_work_format_func; pa_convert_func_t from_work_format_func; - float map_table[PA_CHANNELS_MAX][PA_CHANNELS_MAX]; + pa_remap_t remap; pa_bool_t map_required; void (*impl_free)(pa_resampler *r); @@ -214,6 +212,11 @@ pa_resampler* pa_resampler_new( r->i_ss = *a; r->o_ss = *b; + /* set up the remap structure */ + r->remap.i_ss = &r->i_ss; + r->remap.o_ss = &r->o_ss; + r->remap.format = &r->work_format; + if (am) r->i_cm = *am; else if (!pa_channel_map_init_auto(&r->i_cm, r->i_ss.channels, PA_CHANNEL_MAP_DEFAULT)) @@ -296,8 +299,7 @@ pa_resampler* pa_resampler_new( return r; fail: - if (r) - pa_xfree(r); + pa_xfree(r); return NULL; } @@ -347,13 +349,17 @@ void pa_resampler_set_output_rate(pa_resampler *r, uint32_t rate) { size_t pa_resampler_request(pa_resampler *r, size_t out_length) { pa_assert(r); - return (((out_length / r->o_fz)*r->i_ss.rate)/r->o_ss.rate) * r->i_fz; + /* Let's round up here */ + + return (((((out_length + r->o_fz-1) / r->o_fz) * r->i_ss.rate) + r->o_ss.rate-1) / r->o_ss.rate) * r->i_fz; } size_t pa_resampler_result(pa_resampler *r, size_t in_length) { pa_assert(r); - return (((in_length / r->i_fz)*r->o_ss.rate)/r->i_ss.rate) * r->o_fz; + /* Let's round up here */ + + return (((((in_length + r->i_fz-1) / r->i_fz) * r->o_ss.rate) + r->i_ss.rate-1) / r->i_ss.rate) * r->o_fz; } size_t pa_resampler_max_block_size(pa_resampler *r) { @@ -576,32 +582,41 @@ static int front_rear_side(pa_channel_position_t p) { static void calc_map_table(pa_resampler *r) { unsigned oc, ic; + unsigned n_oc, n_ic; pa_bool_t ic_connected[PA_CHANNELS_MAX]; pa_bool_t remix; pa_strbuf *s; char *t; + pa_remap_t *m; pa_assert(r); if (!(r->map_required = (r->i_ss.channels != r->o_ss.channels || (!(r->flags & PA_RESAMPLER_NO_REMAP) && !pa_channel_map_equal(&r->i_cm, &r->o_cm))))) return; - memset(r->map_table, 0, sizeof(r->map_table)); + m = &r->remap; + + n_oc = r->o_ss.channels; + n_ic = r->i_ss.channels; + + memset(m->map_table_f, 0, sizeof(m->map_table_f)); + memset(m->map_table_i, 0, sizeof(m->map_table_i)); + memset(ic_connected, 0, sizeof(ic_connected)); remix = (r->flags & (PA_RESAMPLER_NO_REMAP|PA_RESAMPLER_NO_REMIX)) == 0; - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { pa_bool_t oc_connected = FALSE; pa_channel_position_t b = r->o_cm.map[oc]; - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { pa_channel_position_t a = r->i_cm.map[ic]; if (r->flags & PA_RESAMPLER_NO_REMAP) { /* We shall not do any remapping. Hence, just check by index */ if (ic == oc) - r->map_table[oc][ic] = 1.0; + m->map_table_f[oc][ic] = 1.0; continue; } @@ -610,7 +625,7 @@ static void calc_map_table(pa_resampler *r) { /* We shall not do any remixing. Hence, just check by name */ if (a == b) - r->map_table[oc][ic] = 1.0; + m->map_table_f[oc][ic] = 1.0; continue; } @@ -685,7 +700,7 @@ static void calc_map_table(pa_resampler *r) { */ if (a == b || a == PA_CHANNEL_POSITION_MONO || b == PA_CHANNEL_POSITION_MONO) { - r->map_table[oc][ic] = 1.0; + m->map_table_f[oc][ic] = 1.0; oc_connected = TRUE; ic_connected[ic] = TRUE; @@ -703,14 +718,14 @@ static void calc_map_table(pa_resampler *r) { /* We are not connected and on the left side, let's * average all left side input channels. */ - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_left(r->i_cm.map[ic])) n++; if (n > 0) - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_left(r->i_cm.map[ic])) { - r->map_table[oc][ic] = 1.0f / (float) n; + m->map_table_f[oc][ic] = 1.0f / (float) n; ic_connected[ic] = TRUE; } @@ -724,14 +739,14 @@ static void calc_map_table(pa_resampler *r) { /* We are not connected and on the right side, let's * average all right side input channels. */ - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_right(r->i_cm.map[ic])) n++; if (n > 0) - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_right(r->i_cm.map[ic])) { - r->map_table[oc][ic] = 1.0f / (float) n; + m->map_table_f[oc][ic] = 1.0f / (float) n; ic_connected[ic] = TRUE; } @@ -745,14 +760,14 @@ static void calc_map_table(pa_resampler *r) { /* We are not connected and at the center. Let's * average all center input channels. */ - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_center(r->i_cm.map[ic])) n++; if (n > 0) { - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_center(r->i_cm.map[ic])) { - r->map_table[oc][ic] = 1.0f / (float) n; + m->map_table_f[oc][ic] = 1.0f / (float) n; ic_connected[ic] = TRUE; } } else { @@ -762,14 +777,14 @@ static void calc_map_table(pa_resampler *r) { n = 0; - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_left(r->i_cm.map[ic]) || on_right(r->i_cm.map[ic])) n++; if (n > 0) - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) if (on_left(r->i_cm.map[ic]) || on_right(r->i_cm.map[ic])) { - r->map_table[oc][ic] = 1.0f / (float) n; + m->map_table_f[oc][ic] = 1.0f / (float) n; ic_connected[ic] = TRUE; } @@ -783,12 +798,12 @@ static void calc_map_table(pa_resampler *r) { /* We are not connected and an LFE. Let's average all * channels for LFE. */ - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (!(r->flags & PA_RESAMPLER_NO_LFE)) - r->map_table[oc][ic] = 1.0f / (float) r->i_ss.channels; + m->map_table_f[oc][ic] = 1.0f / (float) n_ic; else - r->map_table[oc][ic] = 0; + m->map_table_f[oc][ic] = 0; /* Please note that a channel connected to LFE * doesn't really count as connected. */ @@ -804,7 +819,7 @@ static void calc_map_table(pa_resampler *r) { ic_unconnected_center = 0, ic_unconnected_lfe = 0; - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { pa_channel_position_t a = r->i_cm.map[ic]; if (ic_connected[ic]) @@ -827,20 +842,20 @@ static void calc_map_table(pa_resampler *r) { * the left side by .9 and add in our averaged unconnected * channels multplied by .1 */ - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { if (!on_left(r->o_cm.map[oc])) continue; - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (ic_connected[ic]) { - r->map_table[oc][ic] *= .9f; + m->map_table_f[oc][ic] *= .9f; continue; } if (on_left(r->i_cm.map[ic])) - r->map_table[oc][ic] = .1f / (float) ic_unconnected_left; + m->map_table_f[oc][ic] = .1f / (float) ic_unconnected_left; } } } @@ -852,20 +867,20 @@ static void calc_map_table(pa_resampler *r) { * the right side by .9 and add in our averaged unconnected * channels multplied by .1 */ - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { if (!on_right(r->o_cm.map[oc])) continue; - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (ic_connected[ic]) { - r->map_table[oc][ic] *= .9f; + m->map_table_f[oc][ic] *= .9f; continue; } if (on_right(r->i_cm.map[ic])) - r->map_table[oc][ic] = .1f / (float) ic_unconnected_right; + m->map_table_f[oc][ic] = .1f / (float) ic_unconnected_right; } } } @@ -878,20 +893,20 @@ static void calc_map_table(pa_resampler *r) { * the center side by .9 and add in our averaged unconnected * channels multplied by .1 */ - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { if (!on_center(r->o_cm.map[oc])) continue; - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (ic_connected[ic]) { - r->map_table[oc][ic] *= .9f; + m->map_table_f[oc][ic] *= .9f; continue; } if (on_center(r->i_cm.map[ic])) { - r->map_table[oc][ic] = .1f / (float) ic_unconnected_center; + m->map_table_f[oc][ic] = .1f / (float) ic_unconnected_center; mixed_in = TRUE; } } @@ -909,7 +924,7 @@ static void calc_map_table(pa_resampler *r) { it into left and right. Using .375 and 0.75 as factors. */ - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (ic_connected[ic]) continue; @@ -917,7 +932,7 @@ static void calc_map_table(pa_resampler *r) { if (!on_center(r->i_cm.map[ic])) continue; - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc])) continue; @@ -928,7 +943,7 @@ static void calc_map_table(pa_resampler *r) { } } - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc])) continue; @@ -938,7 +953,7 @@ static void calc_map_table(pa_resampler *r) { } } - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc])) continue; @@ -946,10 +961,10 @@ static void calc_map_table(pa_resampler *r) { if (ncenter[oc] <= 0) continue; - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (ic_connected[ic]) { - r->map_table[oc][ic] *= .75f; + m->map_table_f[oc][ic] *= .75f; continue; } @@ -957,7 +972,7 @@ static void calc_map_table(pa_resampler *r) { continue; if (!found_frs[ic] || front_rear_side(r->i_cm.map[ic]) == front_rear_side(r->o_cm.map[oc])) - r->map_table[oc][ic] = .375f / (float) ncenter[oc]; + m->map_table_f[oc][ic] = .375f / (float) ncenter[oc]; } } } @@ -968,40 +983,46 @@ static void calc_map_table(pa_resampler *r) { /* OK, so there is an unconnected LFE channel. Let's mix * it into all channels, with factor 0.375 */ - for (ic = 0; ic < r->i_ss.channels; ic++) { + for (ic = 0; ic < n_ic; ic++) { if (!on_lfe(r->i_cm.map[ic])) continue; - for (oc = 0; oc < r->o_ss.channels; oc++) - r->map_table[oc][ic] = 0.375f / (float) ic_unconnected_lfe; + for (oc = 0; oc < n_oc; oc++) + m->map_table_f[oc][ic] = 0.375f / (float) ic_unconnected_lfe; } } } - + /* make an 16:16 int version of the matrix */ + for (oc = 0; oc < n_oc; oc++) + for (ic = 0; ic < n_ic; ic++) + m->map_table_i[oc][ic] = (int32_t) (m->map_table_f[oc][ic] * 0x10000); s = pa_strbuf_new(); pa_strbuf_printf(s, " "); - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) pa_strbuf_printf(s, " I%02u ", ic); pa_strbuf_puts(s, "\n +"); - for (ic = 0; ic < r->i_ss.channels; ic++) + for (ic = 0; ic < n_ic; ic++) pa_strbuf_printf(s, "------"); pa_strbuf_puts(s, "\n"); - for (oc = 0; oc < r->o_ss.channels; oc++) { + for (oc = 0; oc < n_oc; oc++) { pa_strbuf_printf(s, "O%02u |", oc); - for (ic = 0; ic < r->i_ss.channels; ic++) - pa_strbuf_printf(s, " %1.3f", r->map_table[oc][ic]); + for (ic = 0; ic < n_ic; ic++) + pa_strbuf_printf(s, " %1.3f", m->map_table_f[oc][ic]); pa_strbuf_puts(s, "\n"); } pa_log_debug("Channel matrix:\n%s", t = pa_strbuf_tostring_free(s)); pa_xfree(t); + + /* initialize the remapping function */ + pa_init_remap (m); } static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input) { @@ -1041,41 +1062,10 @@ static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input) return &r->buf1; } -static void vectoradd_s16_with_fraction( - int16_t *d, int dstr, - const int16_t *s1, int sstr1, - const int16_t *s2, int sstr2, - int n, - float s3, float s4) { - - int32_t i3, i4; - - i3 = (int32_t) (s3 * 0x10000); - i4 = (int32_t) (s4 * 0x10000); - - for (; n > 0; n--) { - int32_t a, b; - - a = *s1; - b = *s2; - - a = (a * i3) / 0x10000; - b = (b * i4) / 0x10000; - - *d = (int16_t) (a + b); - - s1 = (const int16_t*) ((const uint8_t*) s1 + sstr1); - s2 = (const int16_t*) ((const uint8_t*) s2 + sstr2); - d = (int16_t*) ((uint8_t*) d + dstr); - - } -} - static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) { unsigned in_n_samples, out_n_samples, n_frames; - int i_skip, o_skip; - unsigned oc; void *src, *dst; + pa_remap_t *remap; pa_assert(r); pa_assert(input); @@ -1104,76 +1094,14 @@ static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) { src = ((uint8_t*) pa_memblock_acquire(input->memblock) + input->index); dst = pa_memblock_acquire(r->buf2.memblock); - memset(dst, 0, r->buf2.length); + remap = &r->remap; - o_skip = (int) (r->w_sz * r->o_ss.channels); - i_skip = (int) (r->w_sz * r->i_ss.channels); - - switch (r->work_format) { - case PA_SAMPLE_FLOAT32NE: - - for (oc = 0; oc < r->o_ss.channels; oc++) { - unsigned ic; - static const float one = 1.0; - - for (ic = 0; ic < r->i_ss.channels; ic++) { - - if (r->map_table[oc][ic] <= 0.0) - continue; - - oil_vectoradd_f32( - (float*) dst + oc, o_skip, - (float*) dst + oc, o_skip, - (float*) src + ic, i_skip, - (int) n_frames, - &one, &r->map_table[oc][ic]); - } - } - - break; - - case PA_SAMPLE_S16NE: - - for (oc = 0; oc < r->o_ss.channels; oc++) { - unsigned ic; - - for (ic = 0; ic < r->i_ss.channels; ic++) { - - if (r->map_table[oc][ic] <= 0.0) - continue; - - if (r->map_table[oc][ic] >= 1.0) { - static const int16_t one = 1; - - oil_vectoradd_s16( - (int16_t*) dst + oc, o_skip, - (int16_t*) dst + oc, o_skip, - (int16_t*) src + ic, i_skip, - (int) n_frames, - &one, &one); - - } else - - vectoradd_s16_with_fraction( - (int16_t*) dst + oc, o_skip, - (int16_t*) dst + oc, o_skip, - (int16_t*) src + ic, i_skip, - (int) n_frames, - 1.0f, r->map_table[oc][ic]); - } - } - - break; - - default: - pa_assert_not_reached(); - } + pa_assert (remap->do_remap); + remap->do_remap (remap, dst, src, n_frames); pa_memblock_release(input->memblock); pa_memblock_release(r->buf2.memblock); - r->buf2.length = out_n_samples * r->w_sz; - return &r->buf2; } @@ -1465,7 +1393,7 @@ static void trivial_resample(pa_resampler *r, const pa_memchunk *input, unsigned pa_assert(o_index * fz < pa_memblock_get_length(output->memblock)); - oil_memcpy((uint8_t*) dst + fz * o_index, + memcpy((uint8_t*) dst + fz * o_index, (uint8_t*) src + fz * j, (int) fz); } diff --git a/src/pulsecore/rtpoll.c b/src/pulsecore/rtpoll.c index 42708a8a2..666cbc984 100644 --- a/src/pulsecore/rtpoll.c +++ b/src/pulsecore/rtpoll.c @@ -63,6 +63,7 @@ struct pa_rtpoll { pa_bool_t running:1; pa_bool_t rebuild_needed:1; pa_bool_t quit:1; + pa_bool_t timer_elapsed:1; #ifdef DEBUG_TIMING pa_usec_t timestamp; @@ -94,26 +95,14 @@ PA_STATIC_FLIST_DECLARE(items, 0, pa_xfree); pa_rtpoll *pa_rtpoll_new(void) { pa_rtpoll *p; - p = pa_xnew(pa_rtpoll, 1); + p = pa_xnew0(pa_rtpoll, 1); p->n_pollfd_alloc = 32; p->pollfd = pa_xnew(struct pollfd, p->n_pollfd_alloc); p->pollfd2 = pa_xnew(struct pollfd, p->n_pollfd_alloc); - p->n_pollfd_used = 0; - - pa_zero(p->next_elapse); - p->timer_enabled = FALSE; - - p->running = FALSE; - p->scan_for_dead = FALSE; - p->rebuild_needed = FALSE; - p->quit = FALSE; - - PA_LLIST_HEAD_INIT(pa_rtpoll_item, p->items); #ifdef DEBUG_TIMING p->timestamp = pa_rtclock_now(); - p->slept = p->awake = 0; #endif return p; @@ -229,6 +218,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) { pa_assert(!p->running); p->running = TRUE; + p->timer_elapsed = FALSE; /* First, let's do some work */ for (i = p->items; i && i->priority < PA_RTPOLL_NEVER; i = i->next) { @@ -286,7 +276,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) { if (p->rebuild_needed) rtpoll_rebuild(p); - memset(&timeout, 0, sizeof(timeout)); + pa_zero(timeout); /* Calculate timeout */ if (wait_op && !p->quit && p->timer_enabled) { @@ -314,9 +304,11 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) { r = ppoll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? &ts : NULL, NULL); } #else - r = poll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1); + r = poll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1); #endif + p->timer_elapsed = r == 0; + #ifdef DEBUG_TIMING { pa_usec_t now = pa_rtclock_now(); @@ -628,3 +620,9 @@ void pa_rtpoll_quit(pa_rtpoll *p) { p->quit = TRUE; } + +pa_bool_t pa_rtpoll_timer_elapsed(pa_rtpoll *p) { + pa_assert(p); + + return p->timer_elapsed; +} diff --git a/src/pulsecore/rtpoll.h b/src/pulsecore/rtpoll.h index d2d69cade..b2a87fca6 100644 --- a/src/pulsecore/rtpoll.h +++ b/src/pulsecore/rtpoll.h @@ -73,6 +73,10 @@ void pa_rtpoll_set_timer_absolute(pa_rtpoll *p, pa_usec_t usec); void pa_rtpoll_set_timer_relative(pa_rtpoll *p, pa_usec_t usec); void pa_rtpoll_set_timer_disabled(pa_rtpoll *p); +/* Return TRUE when the elapsed timer was the reason for + * the last pa_rtpoll_run() invocation to finish */ +pa_bool_t pa_rtpoll_timer_elapsed(pa_rtpoll *p); + /* A new fd wakeup item for pa_rtpoll */ pa_rtpoll_item *pa_rtpoll_item_new(pa_rtpoll *p, pa_rtpoll_priority_t prio, unsigned n_fds); void pa_rtpoll_item_free(pa_rtpoll_item *i); diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c index 5b8ccf596..a26dc876a 100644 --- a/src/pulsecore/sample-util.c +++ b/src/pulsecore/sample-util.c @@ -30,9 +30,6 @@ #include #include -#include -#include - #include #include @@ -106,29 +103,41 @@ void* pa_silence_memory(void *p, size_t length, const pa_sample_spec *spec) { return p; } +#define VOLUME_PADDING 32 + static void calc_linear_integer_volume(int32_t linear[], const pa_cvolume *volume) { - unsigned channel; + unsigned channel, nchannels, padding; pa_assert(linear); pa_assert(volume); - for (channel = 0; channel < volume->channels; channel++) + nchannels = volume->channels; + + for (channel = 0; channel < nchannels; channel++) linear[channel] = (int32_t) lrint(pa_sw_volume_to_linear(volume->values[channel]) * 0x10000); + + for (padding = 0; padding < VOLUME_PADDING; padding++, channel++) + linear[channel] = linear[padding]; } static void calc_linear_float_volume(float linear[], const pa_cvolume *volume) { - unsigned channel; + unsigned channel, nchannels, padding; pa_assert(linear); pa_assert(volume); - for (channel = 0; channel < volume->channels; channel++) + nchannels = volume->channels; + + for (channel = 0; channel < nchannels; channel++) linear[channel] = (float) pa_sw_volume_to_linear(volume->values[channel]); + + for (padding = 0; padding < VOLUME_PADDING; padding++, channel++) + linear[channel] = linear[padding]; } static void calc_linear_integer_stream_volumes(pa_mix_info streams[], unsigned nstreams, const pa_cvolume *volume, const pa_sample_spec *spec) { unsigned k, channel; - float linear[PA_CHANNELS_MAX]; + float linear[PA_CHANNELS_MAX + VOLUME_PADDING]; pa_assert(streams); pa_assert(spec); @@ -147,7 +156,7 @@ static void calc_linear_integer_stream_volumes(pa_mix_info streams[], unsigned n static void calc_linear_float_stream_volumes(pa_mix_info streams[], unsigned nstreams, const pa_cvolume *volume, const pa_sample_spec *spec) { unsigned k, channel; - float linear[PA_CHANNELS_MAX]; + float linear[PA_CHANNELS_MAX + VOLUME_PADDING]; pa_assert(streams); pa_assert(spec); @@ -690,6 +699,28 @@ size_t pa_mix( return length; } +typedef union { + float f; + uint32_t i; +} volume_val; + +typedef void (*pa_calc_volume_func_t) (void *volumes, const pa_cvolume *volume); + +static const pa_calc_volume_func_t calc_volume_table[] = { + [PA_SAMPLE_U8] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_ALAW] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_ULAW] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S16LE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S16BE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_FLOAT32LE] = (pa_calc_volume_func_t) calc_linear_float_volume, + [PA_SAMPLE_FLOAT32BE] = (pa_calc_volume_func_t) calc_linear_float_volume, + [PA_SAMPLE_S32LE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S32BE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S24LE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S24BE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S24_32LE] = (pa_calc_volume_func_t) calc_linear_integer_volume, + [PA_SAMPLE_S24_32BE] = (pa_calc_volume_func_t) calc_linear_integer_volume +}; void pa_volume_memchunk( pa_memchunk*c, @@ -697,6 +728,8 @@ void pa_volume_memchunk( const pa_cvolume *volume) { void *ptr; + volume_val linear[PA_CHANNELS_MAX + VOLUME_PADDING]; + pa_do_volume_func_t do_volume; pa_assert(c); pa_assert(spec); @@ -714,337 +747,19 @@ void pa_volume_memchunk( return; } + if (spec->format < 0 || spec->format > PA_SAMPLE_MAX) { + pa_log_warn(" Unable to change volume of format %s.", pa_sample_format_to_string(spec->format)); + return; + } + + do_volume = pa_get_volume_func (spec->format); + pa_assert(do_volume); + + calc_volume_table[spec->format] ((void *)linear, volume); + ptr = (uint8_t*) pa_memblock_acquire(c->memblock) + c->index; - switch (spec->format) { - - case PA_SAMPLE_S16NE: { - int16_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (int16_t*) ptr + c->length/sizeof(int16_t); - - for (channel = 0, d = ptr; d < e; d++) { - int32_t t, hi, lo; - - /* Multiplying the 32bit volume factor with the 16bit - * sample might result in an 48bit value. We want to - * do without 64 bit integers and hence do the - * multiplication independantly for the HI and LO part - * of the volume. */ - - hi = linear[channel] >> 16; - lo = linear[channel] & 0xFFFF; - - t = (int32_t)(*d); - t = ((t * lo) >> 16) + (t * hi); - t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); - *d = (int16_t) t; - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - - break; - } - - case PA_SAMPLE_S16RE: { - int16_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (int16_t*) ptr + c->length/sizeof(int16_t); - - for (channel = 0, d = ptr; d < e; d++) { - int32_t t, hi, lo; - - hi = linear[channel] >> 16; - lo = linear[channel] & 0xFFFF; - - t = (int32_t) PA_INT16_SWAP(*d); - t = ((t * lo) >> 16) + (t * hi); - t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); - *d = PA_INT16_SWAP((int16_t) t); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - - break; - } - - case PA_SAMPLE_S32NE: { - int32_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (int32_t*) ptr + c->length/sizeof(int32_t); - - for (channel = 0, d = ptr; d < e; d++) { - int64_t t; - - t = (int64_t)(*d); - t = (t * linear[channel]) >> 16; - t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); - *d = (int32_t) t; - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_S32RE: { - int32_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (int32_t*) ptr + c->length/sizeof(int32_t); - - for (channel = 0, d = ptr; d < e; d++) { - int64_t t; - - t = (int64_t) PA_INT32_SWAP(*d); - t = (t * linear[channel]) >> 16; - t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); - *d = PA_INT32_SWAP((int32_t) t); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_S24NE: { - uint8_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint8_t*) ptr + c->length; - - for (channel = 0, d = ptr; d < e; d += 3) { - int64_t t; - - t = (int64_t)((int32_t) (PA_READ24NE(d) << 8)); - t = (t * linear[channel]) >> 16; - t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); - PA_WRITE24NE(d, ((uint32_t) (int32_t) t) >> 8); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_S24RE: { - uint8_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint8_t*) ptr + c->length; - - for (channel = 0, d = ptr; d < e; d += 3) { - int64_t t; - - t = (int64_t)((int32_t) (PA_READ24RE(d) << 8)); - t = (t * linear[channel]) >> 16; - t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); - PA_WRITE24RE(d, ((uint32_t) (int32_t) t) >> 8); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_S24_32NE: { - uint32_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint32_t*) ptr + c->length/sizeof(uint32_t); - - for (channel = 0, d = ptr; d < e; d++) { - int64_t t; - - t = (int64_t) ((int32_t) (*d << 8)); - t = (t * linear[channel]) >> 16; - t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); - *d = ((uint32_t) ((int32_t) t)) >> 8; - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_S24_32RE: { - uint32_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint32_t*) ptr + c->length/sizeof(uint32_t); - - for (channel = 0, d = ptr; d < e; d++) { - int64_t t; - - t = (int64_t) ((int32_t) (PA_UINT32_SWAP(*d) << 8)); - t = (t * linear[channel]) >> 16; - t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); - *d = PA_UINT32_SWAP(((uint32_t) ((int32_t) t)) >> 8); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_U8: { - uint8_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint8_t*) ptr + c->length; - - for (channel = 0, d = ptr; d < e; d++) { - int32_t t, hi, lo; - - hi = linear[channel] >> 16; - lo = linear[channel] & 0xFFFF; - - t = (int32_t) *d - 0x80; - t = ((t * lo) >> 16) + (t * hi); - t = PA_CLAMP_UNLIKELY(t, -0x80, 0x7F); - *d = (uint8_t) (t + 0x80); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_ULAW: { - uint8_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint8_t*) ptr + c->length; - - for (channel = 0, d = ptr; d < e; d++) { - int32_t t, hi, lo; - - hi = linear[channel] >> 16; - lo = linear[channel] & 0xFFFF; - - t = (int32_t) st_ulaw2linear16(*d); - t = ((t * lo) >> 16) + (t * hi); - t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); - *d = (uint8_t) st_14linear2ulaw((int16_t) t >> 2); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_ALAW: { - uint8_t *d, *e; - unsigned channel; - int32_t linear[PA_CHANNELS_MAX]; - - calc_linear_integer_volume(linear, volume); - - e = (uint8_t*) ptr + c->length; - - for (channel = 0, d = ptr; d < e; d++) { - int32_t t, hi, lo; - - hi = linear[channel] >> 16; - lo = linear[channel] & 0xFFFF; - - t = (int32_t) st_alaw2linear16(*d); - t = ((t * lo) >> 16) + (t * hi); - t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); - *d = (uint8_t) st_13linear2alaw((int16_t) t >> 3); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - break; - } - - case PA_SAMPLE_FLOAT32NE: { - float *d; - int skip; - unsigned n; - unsigned channel; - - d = ptr; - skip = (int) (spec->channels * sizeof(float)); - n = (unsigned) (c->length/sizeof(float)/spec->channels); - - for (channel = 0; channel < spec->channels; channel ++) { - float v, *t; - - if (PA_UNLIKELY(volume->values[channel] == PA_VOLUME_NORM)) - continue; - - v = (float) pa_sw_volume_to_linear(volume->values[channel]); - t = d + channel; - oil_scalarmult_f32(t, skip, t, skip, &v, (int) n); - } - break; - } - - case PA_SAMPLE_FLOAT32RE: { - float *d, *e; - unsigned channel; - float linear[PA_CHANNELS_MAX]; - - calc_linear_float_volume(linear, volume); - - e = (float*) ptr + c->length/sizeof(float); - - for (channel = 0, d = ptr; d < e; d++) { - float t; - - t = PA_FLOAT32_SWAP(*d); - t *= linear[channel]; - *d = PA_FLOAT32_SWAP(t); - - if (PA_UNLIKELY(++channel >= spec->channels)) - channel = 0; - } - - break; - } - - - default: - pa_log_warn(" Unable to change volume of format %s.", pa_sample_format_to_string(spec->format)); - /* If we cannot change the volume, we just don't do it */ - } + do_volume (ptr, (void *)linear, spec->channels, c->length); pa_memblock_release(c->memblock); } @@ -1090,7 +805,7 @@ void pa_interleave(const void *src[], unsigned channels, void *dst, size_t ss, u d = (uint8_t*) dst + c * ss; for (j = 0; j < n; j ++) { - oil_memcpy(d, s, (int) ss); + memcpy(d, s, (int) ss); s = (uint8_t*) s + ss; d = (uint8_t*) d + fs; } @@ -1118,7 +833,7 @@ void pa_deinterleave(const void *src, void *dst[], unsigned channels, size_t ss, d = dst[c]; for (j = 0; j < n; j ++) { - oil_memcpy(d, s, (int) ss); + memcpy(d, s, (int) ss); s = (uint8_t*) s + fs; d = (uint8_t*) d + ss; } @@ -1227,10 +942,15 @@ void pa_sample_clamp(pa_sample_format_t format, void *dst, size_t dstr, const vo s = src; d = dst; if (format == PA_SAMPLE_FLOAT32NE) { + for (; n > 0; n--) { + float f; - float minus_one = -1.0, plus_one = 1.0; - oil_clip_f32(d, (int) dstr, s, (int) sstr, (int) n, &minus_one, &plus_one); + f = *s; + *d = PA_CLAMP_UNLIKELY(f, -1.0f, 1.0f); + s = (const float*) ((const uint8_t*) s + sstr); + d = (float*) ((uint8_t*) d + dstr); + } } else { pa_assert(format == PA_SAMPLE_FLOAT32RE); @@ -1336,3 +1056,13 @@ void pa_memchunk_sine(pa_memchunk *c, pa_mempool *pool, unsigned rate, unsigned calc_sine(p, c->length, freq * l / rate); pa_memblock_release(c->memblock); } + +size_t pa_convert_size(size_t size, const pa_sample_spec *from, const pa_sample_spec *to) { + pa_usec_t usec; + + pa_assert(from); + pa_assert(to); + + usec = pa_bytes_to_usec_round_up(size, from); + return pa_usec_to_bytes_round_up(usec, to); +} diff --git a/src/pulsecore/sample-util.h b/src/pulsecore/sample-util.h index 6a306c11a..d0235d608 100644 --- a/src/pulsecore/sample-util.h +++ b/src/pulsecore/sample-util.h @@ -86,6 +86,13 @@ void pa_memchunk_dump_to_file(pa_memchunk *c, const char *fn); void pa_memchunk_sine(pa_memchunk *c, pa_mempool *pool, unsigned rate, unsigned freq); +typedef void (*pa_do_volume_func_t) (void *samples, void *volumes, unsigned channels, unsigned length); + +pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f); +void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func); + +size_t pa_convert_size(size_t size, const pa_sample_spec *from, const pa_sample_spec *to); + #define PA_CHANNEL_POSITION_MASK_LEFT \ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT) \ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_LEFT) \ diff --git a/src/pulsecore/sconv-s16le.c b/src/pulsecore/sconv-s16le.c index 43b8cb3eb..0fefdf1c2 100644 --- a/src/pulsecore/sconv-s16le.c +++ b/src/pulsecore/sconv-s16le.c @@ -28,8 +28,6 @@ #include #include -#include - #include #include #include @@ -86,17 +84,13 @@ void pa_sconv_s16le_to_float32ne(unsigned n, const int16_t *a, float *b) { pa_assert(b); #if SWAP_WORDS == 1 - for (; n > 0; n--) { int16_t s = *(a++); *(b++) = ((float) INT16_FROM(s))/(float) 0x7FFF; } - #else -{ - static const double add = 0, factor = 1.0/0x7FFF; - oil_scaleconv_f32_s16(b, a, (int) n, &add, &factor); -} + for (; n > 0; n--) + *(b++) = ((float) (*(a++)))/(float) 0x7FFF; #endif } @@ -105,17 +99,13 @@ void pa_sconv_s32le_to_float32ne(unsigned n, const int32_t *a, float *b) { pa_assert(b); #if SWAP_WORDS == 1 - for (; n > 0; n--) { int32_t s = *(a++); *(b++) = (float) (((double) INT32_FROM(s))/0x7FFFFFFF); } - #else -{ - static const double add = 0, factor = 1.0/0x7FFFFFFF; - oil_scaleconv_f32_s32(b, a, (int) n, &add, &factor); -} + for (; n > 0; n--) + *(b++) = (float) (((double) (*(a++)))/0x7FFFFFFF); #endif } @@ -124,7 +114,6 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) { pa_assert(b); #if SWAP_WORDS == 1 - for (; n > 0; n--) { int16_t s; float v = *(a++); @@ -133,12 +122,13 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) { s = (int16_t) lrintf(v * 0x7FFF); *(b++) = INT16_TO(s); } - #else -{ - static const double add = 0, factor = 0x7FFF; - oil_scaleconv_s16_f32(b, a, (int) n, &add, &factor); -} + for (; n > 0; n--) { + float v = *(a++); + + v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.f); + *(b++) = (int16_t) lrintf(v * 0x7FFF); + } #endif } @@ -147,7 +137,6 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) { pa_assert(b); #if SWAP_WORDS == 1 - for (; n > 0; n--) { int32_t s; float v = *(a++); @@ -156,12 +145,13 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) { s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF); *(b++) = INT32_TO(s); } - #else -{ - static const double add = 0, factor = 0x7FFFFFFF; - oil_scaleconv_s32_f32(b, a, (int) n, &add, &factor); -} + for (; n > 0; n--) { + float v = *(a++); + + v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.0f); + *(b++) = (int32_t) lrint((double) v * (double) 0x7FFFFFFF); + } #endif } diff --git a/src/pulsecore/sconv.c b/src/pulsecore/sconv.c index d89f42831..301f08b4a 100644 --- a/src/pulsecore/sconv.c +++ b/src/pulsecore/sconv.c @@ -27,9 +27,6 @@ #include #include -#include -#include - #include #include @@ -41,32 +38,31 @@ /* u8 */ static void u8_to_float32ne(unsigned n, const uint8_t *a, float *b) { - static const double add = -1, factor = 1.0/128.0; - pa_assert(a); pa_assert(b); - oil_scaleconv_f32_u8(b, a, (int) n, &add, &factor); + for (; n > 0; n--, a++, b++) + *b = (*a * 1.0/128.0) - 1.0; } static void u8_from_float32ne(unsigned n, const float *a, uint8_t *b) { - static const double add = 128, factor = 127.0; - pa_assert(a); pa_assert(b); - oil_scaleconv_u8_f32(b, a, (int) n, &add, &factor); + for (; n > 0; n--, a++, b++) { + float v; + v = (*a * 127.0) + 128.0; + v = PA_CLAMP_UNLIKELY (v, 0.0, 255.0); + *b = rint (v); + } } static void u8_to_s16ne(unsigned n, const uint8_t *a, int16_t *b) { - static const int16_t add = -0x80, factor = 0x100; - pa_assert(a); pa_assert(b); - oil_conv_s16_u8(b, 2, a, 1, (int) n); - oil_scalaradd_s16(b, 2, b, 2, &add, (int) n); - oil_scalarmult_s16(b, 2, b, 2, &factor, (int) n); + for (; n > 0; n--, a++, b++) + *b = (((int16_t)*a) - 128) << 8; } static void u8_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) { @@ -84,7 +80,7 @@ static void float32ne_to_float32ne(unsigned n, const float *a, float *b) { pa_assert(a); pa_assert(b); - oil_memcpy(b, a, (int) (sizeof(float) * n)); + memcpy(b, a, (int) (sizeof(float) * n)); } static void float32re_to_float32ne(unsigned n, const float *a, float *b) { @@ -101,7 +97,7 @@ static void s16ne_to_s16ne(unsigned n, const int16_t *a, int16_t *b) { pa_assert(a); pa_assert(b); - oil_memcpy(b, a, (int) (sizeof(int16_t) * n)); + memcpy(b, a, (int) (sizeof(int16_t) * n)); } static void s16re_to_s16ne(unsigned n, const int16_t *a, int16_t *b) { @@ -188,98 +184,130 @@ static void alaw_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) { *b = st_13linear2alaw(*a >> 3); } -pa_convert_func_t pa_get_convert_to_float32ne_function(pa_sample_format_t f) { +static pa_convert_func_t to_float32ne_table[] = { + [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_float32ne, + [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_float32ne, + [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_float32ne, + [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_to_float32ne, + [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_to_float32ne, + [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_float32ne, + [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_float32ne, + [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_float32ne, + [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_float32ne, + [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_float32ne, + [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_float32ne, + [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne, + [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne, +}; - static const pa_convert_func_t table[] = { - [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_float32ne, - [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_float32ne, - [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_float32ne, - [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_to_float32ne, - [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_to_float32ne, - [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_float32ne, - [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_float32ne, - [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_float32ne, - [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_float32ne, - [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_float32ne, - [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_float32ne, - [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne, - [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne, - }; +pa_convert_func_t pa_get_convert_to_float32ne_function(pa_sample_format_t f) { pa_assert(f >= 0); pa_assert(f < PA_SAMPLE_MAX); - return table[f]; + return to_float32ne_table[f]; } +void pa_set_convert_to_float32ne_function(pa_sample_format_t f, pa_convert_func_t func) { + + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + to_float32ne_table[f] = func; +} + +static pa_convert_func_t from_float32ne_table[] = { + [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_float32ne, + [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_from_float32ne, + [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_from_float32ne, + [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_float32ne, + [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_float32ne, + [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_float32ne, + [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_float32ne, + [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_float32ne, + [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_float32ne, + [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne, + [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne, + [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_float32ne, + [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_float32ne +}; + pa_convert_func_t pa_get_convert_from_float32ne_function(pa_sample_format_t f) { - static const pa_convert_func_t table[] = { - [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_float32ne, - [PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_from_float32ne, - [PA_SAMPLE_S16BE] = (pa_convert_func_t) pa_sconv_s16be_from_float32ne, - [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_float32ne, - [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_float32ne, - [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_float32ne, - [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_float32ne, - [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_float32ne, - [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_float32ne, - [PA_SAMPLE_FLOAT32NE] = (pa_convert_func_t) float32ne_to_float32ne, - [PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_to_float32ne, - [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_float32ne, - [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_float32ne - }; + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + return from_float32ne_table[f]; +} + +void pa_set_convert_from_float32ne_function(pa_sample_format_t f, pa_convert_func_t func) { pa_assert(f >= 0); pa_assert(f < PA_SAMPLE_MAX); - return table[f]; + from_float32ne_table[f] = func; } +static pa_convert_func_t to_s16ne_table[] = { + [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_s16ne, + [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne, + [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne, + [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_to_s16ne, + [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_to_s16ne, + [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_s16ne, + [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_s16ne, + [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_s16ne, + [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_s16ne, + [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_s16ne, + [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_s16ne, + [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_s16ne, + [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_s16ne +}; + pa_convert_func_t pa_get_convert_to_s16ne_function(pa_sample_format_t f) { - static const pa_convert_func_t table[] = { - [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_s16ne, - [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne, - [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne, - [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_to_s16ne, - [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_to_s16ne, - [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_to_s16ne, - [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_to_s16ne, - [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_to_s16ne, - [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_to_s16ne, - [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_to_s16ne, - [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_to_s16ne, - [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_s16ne, - [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_s16ne - }; + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + return to_s16ne_table[f]; +} + +void pa_set_convert_to_s16ne_function(pa_sample_format_t f, pa_convert_func_t func) { pa_assert(f >= 0); pa_assert(f < PA_SAMPLE_MAX); - return table[f]; + to_s16ne_table[f] = func; } +static pa_convert_func_t from_s16ne_table[] = { + [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_s16ne, + [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne, + [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne, + [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_from_s16ne, + [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_from_s16ne, + [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_s16ne, + [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_s16ne, + [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_s16ne, + [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_s16ne, + [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_s16ne, + [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_s16ne, + [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_s16ne, + [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_s16ne, +}; + pa_convert_func_t pa_get_convert_from_s16ne_function(pa_sample_format_t f) { - static const pa_convert_func_t table[] = { - [PA_SAMPLE_U8] = (pa_convert_func_t) u8_from_s16ne, - [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne, - [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne, - [PA_SAMPLE_FLOAT32BE] = (pa_convert_func_t) pa_sconv_float32be_from_s16ne, - [PA_SAMPLE_FLOAT32LE] = (pa_convert_func_t) pa_sconv_float32le_from_s16ne, - [PA_SAMPLE_S32BE] = (pa_convert_func_t) pa_sconv_s32be_from_s16ne, - [PA_SAMPLE_S32LE] = (pa_convert_func_t) pa_sconv_s32le_from_s16ne, - [PA_SAMPLE_S24BE] = (pa_convert_func_t) pa_sconv_s24be_from_s16ne, - [PA_SAMPLE_S24LE] = (pa_convert_func_t) pa_sconv_s24le_from_s16ne, - [PA_SAMPLE_S24_32BE] = (pa_convert_func_t) pa_sconv_s24_32be_from_s16ne, - [PA_SAMPLE_S24_32LE] = (pa_convert_func_t) pa_sconv_s24_32le_from_s16ne, - [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_from_s16ne, - [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_from_s16ne, - }; + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + return from_s16ne_table[f]; +} + +void pa_set_convert_from_s16ne_function(pa_sample_format_t f, pa_convert_func_t func) { pa_assert(f >= 0); pa_assert(f < PA_SAMPLE_MAX); - return table[f]; + from_s16ne_table[f] = func; } diff --git a/src/pulsecore/sconv.h b/src/pulsecore/sconv.h index b00a16a49..cd937559a 100644 --- a/src/pulsecore/sconv.h +++ b/src/pulsecore/sconv.h @@ -33,4 +33,10 @@ pa_convert_func_t pa_get_convert_from_float32ne_function(pa_sample_format_t f) P pa_convert_func_t pa_get_convert_to_s16ne_function(pa_sample_format_t f) PA_GCC_PURE; pa_convert_func_t pa_get_convert_from_s16ne_function(pa_sample_format_t f) PA_GCC_PURE; +void pa_set_convert_to_float32ne_function(pa_sample_format_t f, pa_convert_func_t func); +void pa_set_convert_from_float32ne_function(pa_sample_format_t f, pa_convert_func_t func); + +void pa_set_convert_to_s16ne_function(pa_sample_format_t f, pa_convert_func_t func); +void pa_set_convert_from_s16ne_function(pa_sample_format_t f, pa_convert_func_t func); + #endif diff --git a/src/pulsecore/sconv_sse.c b/src/pulsecore/sconv_sse.c new file mode 100644 index 000000000..3737af2a6 --- /dev/null +++ b/src/pulsecore/sconv_sse.c @@ -0,0 +1,235 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2006 Pierre Ossman for Cendio AB + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include +#include + +#include "endianmacros.h" + +#include "cpu-x86.h" +#include "sconv.h" + +#if defined (__i386__) || defined (__amd64__) + +static const PA_DECLARE_ALIGNED (16, float, one[4]) = { 1.0, 1.0, 1.0, 1.0 }; +static const PA_DECLARE_ALIGNED (16, float, mone[4]) = { -1.0, -1.0, -1.0, -1.0 }; +static const PA_DECLARE_ALIGNED (16, float, scale[4]) = { 0x7fff, 0x7fff, 0x7fff, 0x7fff }; + +static void pa_sconv_s16le_from_f32ne_sse(unsigned n, const float *a, int16_t *b) { + pa_reg_x86 temp, i; + + __asm__ __volatile__ ( + " movaps %5, %%xmm5 \n\t" + " movaps %6, %%xmm6 \n\t" + " movaps %7, %%xmm7 \n\t" + " xor %0, %0 \n\t" + + " mov %4, %1 \n\t" + " sar $3, %1 \n\t" /* 8 floats at a time */ + " cmp $0, %1 \n\t" + " je 2f \n\t" + + "1: \n\t" + " movups (%2, %0, 2), %%xmm0 \n\t" /* read 8 floats */ + " movups 16(%2, %0, 2), %%xmm2 \n\t" + " minps %%xmm5, %%xmm0 \n\t" /* clamp to 1.0 */ + " minps %%xmm5, %%xmm2 \n\t" + " maxps %%xmm6, %%xmm0 \n\t" /* clamp to -1.0 */ + " maxps %%xmm6, %%xmm2 \n\t" + " mulps %%xmm7, %%xmm0 \n\t" /* *= 0x7fff */ + " mulps %%xmm7, %%xmm2 \n\t" + + " cvtps2pi %%xmm0, %%mm0 \n\t" /* low part to int */ + " cvtps2pi %%xmm2, %%mm2 \n\t" + " movhlps %%xmm0, %%xmm0 \n\t" /* bring high part in position */ + " movhlps %%xmm2, %%xmm2 \n\t" + " cvtps2pi %%xmm0, %%mm1 \n\t" /* high part to int */ + " cvtps2pi %%xmm2, %%mm3 \n\t" + + " packssdw %%mm1, %%mm0 \n\t" /* pack parts */ + " packssdw %%mm3, %%mm2 \n\t" + " movq %%mm0, (%3, %0) \n\t" + " movq %%mm2, 8(%3, %0) \n\t" + + " add $16, %0 \n\t" + " dec %1 \n\t" + " jne 1b \n\t" + + "2: \n\t" + " mov %4, %1 \n\t" /* prepare for leftovers */ + " and $7, %1 \n\t" + " je 4f \n\t" + + "3: \n\t" + " movss (%2, %0, 2), %%xmm0 \n\t" + " minss %%xmm5, %%xmm0 \n\t" + " maxss %%xmm6, %%xmm0 \n\t" + " mulss %%xmm7, %%xmm0 \n\t" + " cvtss2si %%xmm0, %4 \n\t" + " movw %w4, (%3, %0) \n\t" + " add $2, %0 \n\t" + " dec %1 \n\t" + " jne 3b \n\t" + + "4: \n\t" + " emms \n\t" + + : "=&r" (i), "=&r" (temp) + : "r" (a), "r" (b), "r" ((pa_reg_x86)n), "m" (*one), "m" (*mone), "m" (*scale) + : "cc", "memory" + ); +} + +static void pa_sconv_s16le_from_f32ne_sse2(unsigned n, const float *a, int16_t *b) { + pa_reg_x86 temp, i; + + __asm__ __volatile__ ( + " movaps %5, %%xmm5 \n\t" + " movaps %6, %%xmm6 \n\t" + " movaps %7, %%xmm7 \n\t" + " xor %0, %0 \n\t" + + " mov %4, %1 \n\t" + " sar $3, %1 \n\t" /* 8 floats at a time */ + " cmp $0, %1 \n\t" + " je 2f \n\t" + + "1: \n\t" + " movups (%2, %0, 2), %%xmm0 \n\t" /* read 8 floats */ + " movups 16(%2, %0, 2), %%xmm2 \n\t" + " minps %%xmm5, %%xmm0 \n\t" /* clamp to 1.0 */ + " minps %%xmm5, %%xmm2 \n\t" + " maxps %%xmm6, %%xmm0 \n\t" /* clamp to -1.0 */ + " maxps %%xmm6, %%xmm2 \n\t" + " mulps %%xmm7, %%xmm0 \n\t" /* *= 0x7fff */ + " mulps %%xmm7, %%xmm2 \n\t" + + " cvtps2dq %%xmm0, %%xmm0 \n\t" + " cvtps2dq %%xmm2, %%xmm2 \n\t" + + " packssdw %%xmm2, %%xmm0 \n\t" + " movdqu %%xmm0, (%3, %0) \n\t" + + " add $16, %0 \n\t" + " dec %1 \n\t" + " jne 1b \n\t" + + "2: \n\t" + " mov %4, %1 \n\t" /* prepare for leftovers */ + " and $7, %1 \n\t" + " je 4f \n\t" + + "3: \n\t" + " movss (%2, %0, 2), %%xmm0 \n\t" + " minss %%xmm5, %%xmm0 \n\t" + " maxss %%xmm6, %%xmm0 \n\t" + " mulss %%xmm7, %%xmm0 \n\t" + " cvtss2si %%xmm0, %4 \n\t" + " movw %w4, (%3, %0) \n\t" + " add $2, %0 \n\t" + " dec %1 \n\t" + " jne 3b \n\t" + + "4: \n\t" + + : "=&r" (i), "=&r" (temp) + : "r" (a), "r" (b), "r" ((pa_reg_x86)n), "m" (*one), "m" (*mone), "m" (*scale) + : "cc", "memory" + ); +} + +#undef RUN_TEST + +#ifdef RUN_TEST +#define SAMPLES 1019 +#define TIMES 1000 + +static void run_test (void) { + int16_t samples[SAMPLES]; + int16_t samples_ref[SAMPLES]; + float floats[SAMPLES]; + int i; + pa_usec_t start, stop; + pa_convert_func_t func; + + printf ("checking SSE %zd\n", sizeof (samples)); + + memset (samples_ref, 0, sizeof (samples_ref)); + memset (samples, 0, sizeof (samples)); + + for (i = 0; i < SAMPLES; i++) { + floats[i] = (rand()/(RAND_MAX+2.2)) - 1.1; + } + + func = pa_get_convert_from_float32ne_function (PA_SAMPLE_S16LE); + func (SAMPLES, floats, samples_ref); + pa_sconv_s16le_from_f32ne_sse2 (SAMPLES, floats, samples); + + for (i = 0; i < SAMPLES; i++) { + if (samples[i] != samples_ref[i]) { + printf ("%d: %04x != %04x (%f)\n", i, samples[i], samples_ref[i], + floats[i]); + } + } + + start = pa_rtclock_now(); + for (i = 0; i < TIMES; i++) { + pa_sconv_s16le_from_f32ne_sse2 (SAMPLES, floats, samples); + } + stop = pa_rtclock_now(); + pa_log_info("SSE: %llu usec.", (long long unsigned int)(stop - start)); + + start = pa_rtclock_now(); + for (i = 0; i < TIMES; i++) { + func (SAMPLES, floats, samples_ref); + } + stop = pa_rtclock_now(); + pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start)); +} +#endif +#endif /* defined (__i386__) || defined (__amd64__) */ + + +void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags) { +#if defined (__i386__) || defined (__amd64__) + +#ifdef RUN_TEST + run_test (); +#endif + + if (flags & PA_CPU_X86_SSE2) { + pa_log_info("Initialising SSE2 optimized conversions."); + pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2); + } else { + pa_log_info("Initialising SSE optimized conversions."); + pa_set_convert_from_float32ne_function (PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse); + } + +#endif /* defined (__i386__) || defined (__amd64__) */ +} diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c index 6e4284269..fbf777a46 100644 --- a/src/pulsecore/shm.c +++ b/src/pulsecore/shm.c @@ -60,7 +60,8 @@ #define MADV_REMOVE 9 #endif -#define MAX_SHM_SIZE (PA_ALIGN(1024*1024*64)) +/* 1 GiB at max */ +#define MAX_SHM_SIZE (PA_ALIGN(1024*1024*1024)) #ifdef __linux__ /* On Linux we know that the shared memory blocks are files in diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index a5f963512..744c47ffb 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -44,14 +44,15 @@ #define MEMBLOCKQ_MAXLENGTH (32*1024*1024) #define CONVERT_BUFFER_LENGTH (PA_PAGE_SIZE) -static PA_DEFINE_CHECK_TYPE(pa_sink_input, pa_msgobject); +PA_DEFINE_PUBLIC_CLASS(pa_sink_input, pa_msgobject); static void sink_input_free(pa_object *o); +static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v); pa_sink_input_new_data* pa_sink_input_new_data_init(pa_sink_input_new_data *data) { pa_assert(data); - memset(data, 0, sizeof(*data)); + pa_zero(*data); data->resample_method = PA_RESAMPLER_INVALID; data->proplist = pa_proplist_new(); @@ -91,6 +92,18 @@ void pa_sink_input_new_data_apply_volume_factor(pa_sink_input_new_data *data, co } } +void pa_sink_input_new_data_apply_volume_factor_sink(pa_sink_input_new_data *data, const pa_cvolume *volume_factor) { + pa_assert(data); + pa_assert(volume_factor); + + if (data->volume_factor_sink_is_set) + pa_sw_cvolume_multiply(&data->volume_factor_sink, &data->volume_factor_sink, volume_factor); + else { + data->volume_factor_sink_is_set = TRUE; + data->volume_factor_sink = *volume_factor; + } +} + void pa_sink_input_new_data_set_muted(pa_sink_input_new_data *data, pa_bool_t mute) { pa_assert(data); @@ -114,6 +127,7 @@ static void reset_callbacks(pa_sink_input *i) { i->update_max_request = NULL; i->update_sink_requested_latency = NULL; i->update_sink_latency_range = NULL; + i->update_sink_fixed_latency = NULL; i->attach = NULL; i->detach = NULL; i->suspend = NULL; @@ -124,14 +138,15 @@ static void reset_callbacks(pa_sink_input *i) { i->state_change = NULL; i->may_move_to = NULL; i->send_event = NULL; + i->volume_changed = NULL; + i->mute_changed = NULL; } /* Called from main context */ int pa_sink_input_new( pa_sink_input **_i, pa_core *core, - pa_sink_input_new_data *data, - pa_sink_input_flags_t flags) { + pa_sink_input_new_data *data) { pa_sink_input *i; pa_resampler *resampler = NULL; @@ -142,6 +157,7 @@ int pa_sink_input_new( pa_assert(_i); pa_assert(core); pa_assert(data); + pa_assert_ctl_context(); if (data->client) pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->client->proplist); @@ -172,7 +188,6 @@ int pa_sink_input_new( pa_channel_map_init_extend(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT); } - pa_return_val_if_fail(pa_channel_map_valid(&data->channel_map), -PA_ERR_INVALID); pa_return_val_if_fail(pa_channel_map_compatible(&data->channel_map, &data->sample_spec), -PA_ERR_INVALID); if (!data->volume_is_set) { @@ -181,27 +196,30 @@ int pa_sink_input_new( data->save_volume = FALSE; } - pa_return_val_if_fail(pa_cvolume_valid(&data->volume), -PA_ERR_INVALID); pa_return_val_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec), -PA_ERR_INVALID); if (!data->volume_factor_is_set) pa_cvolume_reset(&data->volume_factor, data->sample_spec.channels); - pa_return_val_if_fail(pa_cvolume_valid(&data->volume_factor), -PA_ERR_INVALID); pa_return_val_if_fail(pa_cvolume_compatible(&data->volume_factor, &data->sample_spec), -PA_ERR_INVALID); + if (!data->volume_factor_sink_is_set) + pa_cvolume_reset(&data->volume_factor_sink, data->sink->sample_spec.channels); + + pa_return_val_if_fail(pa_cvolume_compatible(&data->volume_factor_sink, &data->sink->sample_spec), -PA_ERR_INVALID); + if (!data->muted_is_set) data->muted = FALSE; - if (flags & PA_SINK_INPUT_FIX_FORMAT) + if (data->flags & PA_SINK_INPUT_FIX_FORMAT) data->sample_spec.format = data->sink->sample_spec.format; - if (flags & PA_SINK_INPUT_FIX_RATE) + if (data->flags & PA_SINK_INPUT_FIX_RATE) data->sample_spec.rate = data->sink->sample_spec.rate; original_cm = data->channel_map; - if (flags & PA_SINK_INPUT_FIX_CHANNELS) { + if (data->flags & PA_SINK_INPUT_FIX_CHANNELS) { data->sample_spec.channels = data->sink->sample_spec.channels; data->channel_map = data->sink->channel_map; } @@ -220,7 +238,7 @@ int pa_sink_input_new( if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], data)) < 0) return r; - if ((flags & PA_SINK_INPUT_FAIL_ON_SUSPEND) && + if ((data->flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND) && pa_sink_get_state(data->sink) == PA_SINK_SUSPENDED) { pa_log_warn("Failed to create sink input: sink is suspended."); return -PA_ERR_BADSTATE; @@ -231,7 +249,7 @@ int pa_sink_input_new( return -PA_ERR_TOOLARGE; } - if ((flags & PA_SINK_INPUT_VARIABLE_RATE) || + if ((data->flags & PA_SINK_INPUT_VARIABLE_RATE) || !pa_sample_spec_equal(&data->sample_spec, &data->sink->sample_spec) || !pa_channel_map_equal(&data->channel_map, &data->sink->channel_map)) { @@ -240,9 +258,9 @@ int pa_sink_input_new( &data->sample_spec, &data->channel_map, &data->sink->sample_spec, &data->sink->channel_map, data->resample_method, - ((flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) | - ((flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) | - (core->disable_remixing || (flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) | + ((data->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) | + ((data->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) | + (core->disable_remixing || (data->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) | (core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) { pa_log_warn("Unsupported resampling operation."); return -PA_ERR_NOTSUPPORTED; @@ -255,7 +273,7 @@ int pa_sink_input_new( i->core = core; i->state = PA_SINK_INPUT_INIT; - i->flags = flags; + i->flags = data->flags; i->proplist = pa_proplist_copy(data->proplist); i->driver = pa_xstrdup(pa_path_get_filename(data->driver)); i->module = data->module; @@ -268,18 +286,21 @@ int pa_sink_input_new( i->channel_map = data->channel_map; if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !data->volume_is_absolute) { + pa_cvolume remapped; + /* When the 'absolute' bool is not set then we'll treat the volume * as relative to the sink volume even in flat volume mode */ - - pa_cvolume v = data->sink->reference_volume; - pa_cvolume_remap(&v, &data->sink->channel_map, &data->channel_map); - pa_sw_cvolume_multiply(&i->virtual_volume, &data->volume, &v); + remapped = data->sink->reference_volume; + pa_cvolume_remap(&remapped, &data->sink->channel_map, &data->channel_map); + pa_sw_cvolume_multiply(&i->volume, &data->volume, &remapped); } else - i->virtual_volume = data->volume; + i->volume = data->volume; i->volume_factor = data->volume_factor; - pa_cvolume_init(&i->soft_volume); - memset(i->relative_volume, 0, sizeof(i->relative_volume)); + i->volume_factor_sink = data->volume_factor_sink; + i->real_ratio = i->reference_ratio = data->volume; + pa_cvolume_reset(&i->soft_volume, i->sample_spec.channels); + pa_cvolume_reset(&i->real_ratio, i->sample_spec.channels); i->save_volume = data->save_volume; i->save_sink = data->save_sink; i->save_muted = data->save_muted; @@ -348,6 +369,7 @@ int pa_sink_input_new( /* Called from main context */ static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) { pa_assert(i); + pa_assert_ctl_context(); if (!i->sink) return; @@ -362,6 +384,7 @@ static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) { static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state) { pa_sink_input *ssync; pa_assert(i); + pa_assert_ctl_context(); if (state == PA_SINK_INPUT_DRAINED) state = PA_SINK_INPUT_RUNNING; @@ -400,7 +423,9 @@ static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state) void pa_sink_input_unlink(pa_sink_input *i) { pa_bool_t linked; pa_source_output *o, *p = NULL; + pa_assert(i); + pa_assert_ctl_context(); /* See pa_sink_unlink() for a couple of comments how this function * works */ @@ -439,11 +464,8 @@ void pa_sink_input_unlink(pa_sink_input *i) { if (linked && i->sink) { /* We might need to update the sink's volume if we are in flat volume mode. */ - if (i->sink->flags & PA_SINK_FLAT_VOLUME) { - pa_cvolume new_volume; - pa_sink_update_flat_volume(i->sink, &new_volume); - pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE); - } + if (i->sink->flags & PA_SINK_FLAT_VOLUME) + pa_sink_set_volume(i->sink, NULL, FALSE, FALSE); if (i->sink->asyncmsgq) pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_REMOVE_INPUT, i, 0, NULL) == 0); @@ -471,6 +493,7 @@ static void sink_input_free(pa_object *o) { pa_sink_input* i = PA_SINK_INPUT(o); pa_assert(i); + pa_assert_ctl_context(); pa_assert(pa_sink_input_refcnt(i) == 0); if (PA_SINK_INPUT_IS_LINKED(i->state)) @@ -478,7 +501,10 @@ static void sink_input_free(pa_object *o) { pa_log_info("Freeing input %u \"%s\"", i->index, pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME))); - pa_assert(!i->thread_info.attached); + /* Side note: this function must be able to destruct properly any + * kind of sink input in any state, even those which are + * "half-moved" or are connected to sinks that have no asyncmsgq + * and are hence half-destructed themselves! */ if (i->thread_info.render_memblockq) pa_memblockq_free(i->thread_info.render_memblockq); @@ -502,7 +528,9 @@ static void sink_input_free(pa_object *o) { /* Called from main context */ void pa_sink_input_put(pa_sink_input *i) { pa_sink_input_state_t state; + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(i->state == PA_SINK_INPUT_INIT); @@ -517,12 +545,10 @@ void pa_sink_input_put(pa_sink_input *i) { i->state = state; /* We might need to update the sink's volume if we are in flat volume mode. */ - if (i->sink->flags & PA_SINK_FLAT_VOLUME) { - pa_cvolume new_volume; - pa_sink_update_flat_volume(i->sink, &new_volume); - pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE); - } else - pa_sink_input_set_relative_volume(i, &i->virtual_volume); + if (i->sink->flags & PA_SINK_FLAT_VOLUME) + pa_sink_set_volume(i->sink, NULL, FALSE, i->save_volume); + else + set_real_ratio(i, &i->volume); i->thread_info.soft_volume = i->soft_volume; i->thread_info.muted = i->muted; @@ -538,6 +564,7 @@ void pa_sink_input_put(pa_sink_input *i) { /* Called from main context */ void pa_sink_input_kill(pa_sink_input*i) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); i->kill(i); @@ -548,6 +575,7 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency) { pa_usec_t r[2] = { 0, 0 }; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_GET_LATENCY, r, 0, NULL) == 0); @@ -563,12 +591,13 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency) { /* Called from thread context */ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, pa_memchunk *chunk, pa_cvolume *volume) { - pa_bool_t do_volume_adj_here; + pa_bool_t do_volume_adj_here, need_volume_factor_sink; pa_bool_t volume_is_norm; size_t block_size_max_sink, block_size_max_sink_input; size_t ilength; pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state)); pa_assert(pa_frame_aligned(slength, &i->sink->sample_spec)); pa_assert(chunk); @@ -610,6 +639,7 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p do_volume_adj_here = !pa_channel_map_equal(&i->channel_map, &i->sink->channel_map); volume_is_norm = pa_cvolume_is_norm(&i->thread_info.soft_volume) && !i->thread_info.muted; + need_volume_factor_sink = !pa_cvolume_is_norm(&i->volume_factor_sink); while (!pa_memblockq_is_readable(i->thread_info.render_memblockq)) { pa_memchunk tchunk; @@ -641,6 +671,7 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p while (tchunk.length > 0) { pa_memchunk wchunk; + pa_bool_t nvfs = need_volume_factor_sink; wchunk = tchunk; pa_memblock_ref(wchunk.memblock); @@ -652,18 +683,41 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p if (do_volume_adj_here && !volume_is_norm) { pa_memchunk_make_writable(&wchunk, 0); - if (i->thread_info.muted) + if (i->thread_info.muted) { pa_silence_memchunk(&wchunk, &i->thread_info.sample_spec); - else + nvfs = FALSE; + + } else if (!i->thread_info.resampler && nvfs) { + pa_cvolume v; + + /* If we don't need a resampler we can merge the + * post and the pre volume adjustment into one */ + + pa_sw_cvolume_multiply(&v, &i->thread_info.soft_volume, &i->volume_factor_sink); + pa_volume_memchunk(&wchunk, &i->thread_info.sample_spec, &v); + nvfs = FALSE; + + } else pa_volume_memchunk(&wchunk, &i->thread_info.sample_spec, &i->thread_info.soft_volume); } - if (!i->thread_info.resampler) + if (!i->thread_info.resampler) { + + if (nvfs) { + pa_memchunk_make_writable(&wchunk, 0); + pa_volume_memchunk(&wchunk, &i->sink->sample_spec, &i->volume_factor_sink); + } + pa_memblockq_push_align(i->thread_info.render_memblockq, &wchunk); - else { + } else { pa_memchunk rchunk; pa_resampler_run(i->thread_info.resampler, &wchunk, &rchunk); + if (nvfs) { + pa_memchunk_make_writable(&rchunk, 0); + pa_volume_memchunk(&rchunk, &i->sink->sample_spec, &i->volume_factor_sink); + } + /* pa_log_debug("pushing %lu", (unsigned long) rchunk.length); */ if (rchunk.memblock) { @@ -706,8 +760,9 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p /* Called from thread context */ void pa_sink_input_drop(pa_sink_input *i, size_t nbytes /* in sink sample spec */) { - pa_sink_input_assert_ref(i); + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state)); pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec)); pa_assert(nbytes > 0); @@ -721,8 +776,9 @@ void pa_sink_input_drop(pa_sink_input *i, size_t nbytes /* in sink sample spec * void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sample spec */) { size_t lbq; pa_bool_t called = FALSE; - pa_sink_input_assert_ref(i); + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state)); pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec)); @@ -789,9 +845,29 @@ void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sam i->thread_info.dont_rewind_render = FALSE; } +/* Called from thread context */ +size_t pa_sink_input_get_max_rewind(pa_sink_input *i) { + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + + return i->thread_info.resampler ? pa_resampler_request(i->thread_info.resampler, i->sink->thread_info.max_rewind) : i->sink->thread_info.max_rewind; +} + +/* Called from thread context */ +size_t pa_sink_input_get_max_request(pa_sink_input *i) { + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); + + /* We're not verifying the status here, to allow this to be called + * in the state change handler between _INIT and _RUNNING */ + + return i->thread_info.resampler ? pa_resampler_request(i->thread_info.resampler, i->sink->thread_info.max_request) : i->sink->thread_info.max_request; +} + /* Called from thread context */ void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) { pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state)); pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec)); @@ -804,6 +880,7 @@ void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the /* Called from thread context */ void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) { pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state)); pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec)); @@ -814,15 +891,16 @@ void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the /* Called from thread context */ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa_usec_t usec) { pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY)) - usec = i->sink->fixed_latency; + usec = i->sink->thread_info.fixed_latency; if (usec != (pa_usec_t) -1) usec = PA_CLAMP(usec, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency); i->thread_info.requested_sink_latency = usec; - pa_sink_invalidate_requested_latency(i->sink); + pa_sink_invalidate_requested_latency(i->sink, TRUE); return usec; } @@ -830,6 +908,7 @@ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa /* Called from main context */ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) { pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0); @@ -841,7 +920,7 @@ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec) if (i->sink) { if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY)) - usec = i->sink->fixed_latency; + usec = pa_sink_get_fixed_latency(i->sink); if (usec != (pa_usec_t) -1) { pa_usec_t min_latency, max_latency; @@ -858,6 +937,7 @@ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec) /* Called from main context */ pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) { pa_usec_t usec = 0; @@ -871,122 +951,102 @@ pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) { return i->thread_info.requested_sink_latency; } +/* Called from main context */ +static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v) { + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); + pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); + pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec)); + + /* This basically calculates: + * + * i->real_ratio := v + * i->soft_volume := i->real_ratio * i->volume_factor */ + + if (v) + i->real_ratio = *v; + else + pa_cvolume_reset(&i->real_ratio, i->sample_spec.channels); + + pa_sw_cvolume_multiply(&i->soft_volume, &i->real_ratio, &i->volume_factor); + /* We don't copy the data to the thread_info data. That's left for someone else to do */ +} + /* Called from main context */ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute) { pa_cvolume v; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_assert(volume); pa_assert(pa_cvolume_valid(volume)); - pa_assert(pa_cvolume_compatible(volume, &i->sample_spec)); + pa_assert(volume->channels == 1 || pa_cvolume_compatible(volume, &i->sample_spec)); if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) { v = i->sink->reference_volume; pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map); - volume = pa_sw_cvolume_multiply(&v, &v, volume); + + if (pa_cvolume_compatible(volume, &i->sample_spec)) + volume = pa_sw_cvolume_multiply(&v, &v, volume); + else + volume = pa_sw_cvolume_multiply_scalar(&v, &v, pa_cvolume_max(volume)); + } else { + + if (!pa_cvolume_compatible(volume, &i->sample_spec)) { + v = i->volume; + volume = pa_cvolume_scale(&v, pa_cvolume_max(volume)); + } } - if (pa_cvolume_equal(volume, &i->virtual_volume)) + if (pa_cvolume_equal(volume, &i->volume)) { + i->save_volume = i->save_volume || save; return; + } - i->virtual_volume = *volume; + i->volume = *volume; i->save_volume = save; - if (i->sink->flags & PA_SINK_FLAT_VOLUME) { - pa_cvolume new_volume; - + if (i->sink->flags & PA_SINK_FLAT_VOLUME) /* We are in flat volume mode, so let's update all sink input * volumes and update the flat volume of the sink */ - pa_sink_update_flat_volume(i->sink, &new_volume); - pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE, FALSE); - - } else { + pa_sink_set_volume(i->sink, NULL, TRUE, save); + else { /* OK, we are in normal volume mode. The volume only affects * ourselves */ - pa_sink_input_set_relative_volume(i, volume); - - /* Hooks have the ability to play games with i->soft_volume */ - pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i); + set_real_ratio(i, volume); /* Copy the new soft_volume to the thread_info struct */ pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0); } - /* The virtual volume changed, let's tell people so */ + /* The volume changed, let's tell people so */ + if (i->volume_changed) + i->volume_changed(i); + pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index); } /* Called from main context */ pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); - if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) { - pa_cvolume v = i->sink->reference_volume; - pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map); - pa_sw_cvolume_divide(volume, &i->virtual_volume, &v); - } else - *volume = i->virtual_volume; + if (absolute || !(i->sink->flags & PA_SINK_FLAT_VOLUME)) + *volume = i->volume; + else + *volume = i->reference_ratio; return volume; } -/* Called from main context */ -pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v) { - unsigned c; - - pa_sink_input_assert_ref(i); - pa_assert(v); - pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); - - /* This always returns the relative volume. Converts the float - * version into a pa_cvolume */ - - v->channels = i->sample_spec.channels; - - for (c = 0; c < v->channels; c++) - v->values[c] = pa_sw_volume_from_linear(i->relative_volume[c]); - - return v; -} - -/* Called from main context */ -void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) { - unsigned c; - pa_cvolume _v; - - pa_sink_input_assert_ref(i); - pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); - pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec)); - - if (!v) - v = pa_cvolume_reset(&_v, i->sample_spec.channels); - - /* This basically calculates: - * - * i->relative_volume := v - * i->soft_volume := i->relative_volume * i->volume_factor */ - - i->soft_volume.channels = i->sample_spec.channels; - - for (c = 0; c < i->sample_spec.channels; c++) { - i->relative_volume[c] = pa_sw_volume_to_linear(v->values[c]); - - i->soft_volume.values[c] = pa_sw_volume_from_linear( - i->relative_volume[c] * - pa_sw_volume_to_linear(i->volume_factor.values[c])); - } - - /* We don't copy the data to the thread_info data. That's left for someone else to do */ -} - /* Called from main context */ void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) { - pa_assert(i); pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); if (!i->muted == !mute) @@ -996,12 +1056,18 @@ void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) { i->save_muted = save; pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE, NULL, 0, NULL) == 0); + + /* The mute status changed, let's tell people so */ + if (i->mute_changed) + i->mute_changed(i); + pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index); } /* Called from main context */ pa_bool_t pa_sink_input_get_mute(pa_sink_input *i) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); return i->muted; @@ -1010,6 +1076,7 @@ pa_bool_t pa_sink_input_get_mute(pa_sink_input *i) { /* Called from main thread */ void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_proplist *p) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); if (p) pa_proplist_update(i->proplist, mode, p); @@ -1023,6 +1090,7 @@ void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_p /* Called from main context */ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); sink_input_set_state(i, b ? PA_SINK_INPUT_CORKED : PA_SINK_INPUT_RUNNING); @@ -1031,6 +1099,7 @@ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b) { /* Called from main context */ int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_return_val_if_fail(i->thread_info.resampler, -PA_ERR_BADSTATE); @@ -1049,13 +1118,14 @@ int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate) { void pa_sink_input_set_name(pa_sink_input *i, const char *name) { const char *old; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); if (!name && !pa_proplist_contains(i->proplist, PA_PROP_MEDIA_NAME)) return; old = pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME); - if (old && name && !strcmp(old, name)) + if (old && name && pa_streq(old, name)) return; if (name) @@ -1072,6 +1142,7 @@ void pa_sink_input_set_name(pa_sink_input *i, const char *name) { /* Called from main context */ pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); return i->actual_resample_method; } @@ -1079,6 +1150,7 @@ pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) { /* Called from main context */ pa_bool_t pa_sink_input_may_move(pa_sink_input *i) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); if (i->flags & PA_SINK_INPUT_DONT_MOVE) @@ -1095,6 +1167,7 @@ pa_bool_t pa_sink_input_may_move(pa_sink_input *i) { /* Called from main context */ pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_sink_assert_ref(dest); @@ -1119,10 +1192,10 @@ pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest) { /* Called from main context */ int pa_sink_input_start_move(pa_sink_input *i) { pa_source_output *o, *p = NULL; - pa_sink *origin; int r; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_assert(i->sink); @@ -1132,8 +1205,6 @@ int pa_sink_input_start_move(pa_sink_input *i) { if ((r = pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_START], i)) < 0) return r; - origin = i->sink; - /* Kill directly connected outputs */ while ((o = pa_idxset_first(i->direct_outputs, NULL))) { pa_assert(o != p); @@ -1147,24 +1218,15 @@ int pa_sink_input_start_move(pa_sink_input *i) { if (pa_sink_input_get_state(i) == PA_SINK_INPUT_CORKED) pa_assert_se(i->sink->n_corked-- >= 1); - if (i->sink->flags & PA_SINK_FLAT_VOLUME) { - pa_cvolume new_volume; - - /* Make the virtual volume relative */ - pa_sink_input_get_relative_volume(i, &i->virtual_volume); - - /* And reset the the relative volume */ - pa_sink_input_set_relative_volume(i, NULL); - + if (i->sink->flags & PA_SINK_FLAT_VOLUME) /* We might need to update the sink's volume if we are in flat * volume mode. */ - pa_sink_update_flat_volume(i->sink, &new_volume); - pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE); - } + pa_sink_set_volume(i->sink, NULL, FALSE, FALSE); pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_START_MOVE, i, 0, NULL) == 0); pa_sink_update_status(i->sink); + pa_cvolume_remap(&i->volume_factor_sink, &i->sink->channel_map, &i->channel_map); i->sink = NULL; pa_sink_input_unref(i); @@ -1177,6 +1239,7 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { pa_resampler *new_resampler; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_assert(!i->sink); pa_sink_assert_ref(dest); @@ -1218,6 +1281,8 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { i->save_sink = save; pa_idxset_put(dest->inputs, pa_sink_input_ref(i), NULL); + pa_cvolume_remap(&i->volume_factor_sink, &i->channel_map, &i->sink->channel_map); + if (pa_sink_input_get_state(i) == PA_SINK_INPUT_CORKED) i->sink->n_corked++; @@ -1243,16 +1308,15 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { pa_sink_update_status(dest); if (i->sink->flags & PA_SINK_FLAT_VOLUME) { - pa_cvolume new_volume; + pa_cvolume remapped; - /* Make relative volume absolute again */ - pa_cvolume t = dest->reference_volume; - pa_cvolume_remap(&t, &dest->channel_map, &i->channel_map); - pa_sw_cvolume_multiply(&i->virtual_volume, &i->virtual_volume, &t); + /* Make relative volumes absolute */ + remapped = dest->reference_volume; + pa_cvolume_remap(&remapped, &dest->channel_map, &i->channel_map); + pa_sw_cvolume_multiply(&i->volume, &i->reference_ratio, &remapped); /* We might need to update the sink's volume if we are in flat volume mode. */ - pa_sink_update_flat_volume(i->sink, &new_volume); - pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE); + pa_sink_set_volume(i->sink, NULL, FALSE, i->save_volume); } pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_FINISH_MOVE, i, 0, NULL) == 0); @@ -1261,16 +1325,39 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { /* Notify everyone */ pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FINISH], i); + + if (i->volume_changed) + i->volume_changed(i); + pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index); return 0; } +/* Called from main context */ +void pa_sink_input_fail_move(pa_sink_input *i) { + + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); + pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); + pa_assert(!i->sink); + + /* Check if someone wants this sink input? */ + if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], i) == PA_HOOK_STOP) + return; + + if (i->moving) + i->moving(i, NULL); + + pa_sink_input_kill(i); +} + /* Called from main context */ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { int r; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(PA_SINK_INPUT_IS_LINKED(i->state)); pa_assert(i->sink); pa_sink_assert_ref(dest); @@ -1289,6 +1376,7 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { } if ((r = pa_sink_input_finish_move(i, dest, save)) < 0) { + pa_sink_input_fail_move(i); pa_sink_input_unref(i); return r; } @@ -1301,7 +1389,9 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) { /* Called from IO thread context */ void pa_sink_input_set_state_within_thread(pa_sink_input *i, pa_sink_input_state_t state) { pa_bool_t corking, uncorking; + pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); if (state == i->thread_info.state) return; @@ -1411,6 +1501,7 @@ int pa_sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int64_t /* Called from main thread */ pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); if (i->state == PA_SINK_INPUT_RUNNING || i->state == PA_SINK_INPUT_DRAINED) return pa_atomic_load(&i->thread_info.drained) ? PA_SINK_INPUT_DRAINED : PA_SINK_INPUT_RUNNING; @@ -1421,6 +1512,7 @@ pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i) { /* Called from IO context */ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i) { pa_sink_input_assert_ref(i); + pa_sink_input_assert_io_context(i); if (PA_SINK_INPUT_IS_LINKED(i->thread_info.state)) return pa_memblockq_is_empty(i->thread_info.render_memblockq); @@ -1429,7 +1521,13 @@ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i) { } /* Called from IO context */ -void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sample spec */, pa_bool_t rewrite, pa_bool_t flush, pa_bool_t dont_rewind_render) { +void pa_sink_input_request_rewind( + pa_sink_input *i, + size_t nbytes /* in our sample spec */, + pa_bool_t rewrite, + pa_bool_t flush, + pa_bool_t dont_rewind_render) { + size_t lbq; /* If 'rewrite' is TRUE the sink is rewound as far as requested @@ -1444,18 +1542,20 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam * dont_rewind_render is TRUE then the render memblockq is not * rewound. */ + /* nbytes = 0 means maximum rewind request */ + pa_sink_input_assert_ref(i); - - nbytes = PA_MAX(i->thread_info.rewrite_nbytes, nbytes); - -/* pa_log_debug("request rewrite %lu", (unsigned long) nbytes); */ + pa_sink_input_assert_io_context(i); + pa_assert(rewrite || flush); + pa_assert(!dont_rewind_render || !rewrite); /* We don't take rewind requests while we are corked */ if (i->thread_info.state == PA_SINK_INPUT_CORKED) return; - pa_assert(rewrite || flush); - pa_assert(!dont_rewind_render || !rewrite); + nbytes = PA_MAX(i->thread_info.rewrite_nbytes, nbytes); + + /* pa_log_debug("request rewrite %zu", nbytes); */ /* Calculate how much we can rewind locally without having to * touch the sink */ @@ -1475,6 +1575,7 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam nbytes = pa_resampler_request(i->thread_info.resampler, nbytes); } + /* Remember how much we actually want to rewrite */ if (i->thread_info.rewrite_nbytes != (size_t) -1) { if (rewrite) { /* Make sure to not overwrite over underruns */ @@ -1511,8 +1612,11 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam /* Called from main context */ pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret) { pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(ret); + /* FIXME: Shouldn't access resampler object from main context! */ + pa_silence_memchunk_get( &i->core->silence_cache, i->core->mempool, @@ -1529,6 +1633,7 @@ void pa_sink_input_send_event(pa_sink_input *i, const char *event, pa_proplist * pa_sink_input_send_event_hook_data hook_data; pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); pa_assert(event); if (!i->send_event) diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h index 98144d412..415a801fb 100644 --- a/src/pulsecore/sink-input.h +++ b/src/pulsecore/sink-input.h @@ -42,6 +42,7 @@ typedef enum pa_sink_input_state { PA_SINK_INPUT_RUNNING, /*< The stream is alive and kicking */ PA_SINK_INPUT_CORKED, /*< The stream was corked on user request */ PA_SINK_INPUT_UNLINKED /*< The stream is dead */ + /* FIXME: we need a state for MOVING here */ } pa_sink_input_state_t; static inline pa_bool_t PA_SINK_INPUT_IS_LINKED(pa_sink_input_state_t x) { @@ -58,7 +59,8 @@ typedef enum pa_sink_input_flags { PA_SINK_INPUT_FIX_RATE = 64, PA_SINK_INPUT_FIX_CHANNELS = 128, PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND = 256, - PA_SINK_INPUT_FAIL_ON_SUSPEND = 512 + PA_SINK_INPUT_NO_CREATE_ON_SUSPEND = 512, + PA_SINK_INPUT_KILL_ON_SUSPEND = 1024 } pa_sink_input_flags_t; struct pa_sink_input { @@ -92,10 +94,14 @@ struct pa_sink_input { pa_sink_input *sync_prev, *sync_next; /* Also see http://pulseaudio.org/wiki/InternalVolumes */ - pa_cvolume virtual_volume; /* The volume clients are informed about */ - pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */ - double relative_volume[PA_CHANNELS_MAX]; /* The calculated volume relative to the sink volume as linear factors. */ - pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as relative_volume * volume_factor */ + pa_cvolume volume; /* The volume clients are informed about */ + pa_cvolume reference_ratio; /* The ratio of the stream's volume to the sink's reference volume */ + pa_cvolume real_ratio; /* The ratio of the stream's volume to the sink's real volume */ + pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */ + pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as real_ratio * volume_factor */ + + pa_cvolume volume_factor_sink; /* A second volume factor in format of the sink this stream is connected to */ + pa_bool_t muted:1; /* if TRUE then the source we are connected to and/or the volume @@ -137,6 +143,10 @@ struct pa_sink_input { * from IO context. */ void (*update_sink_latency_range) (pa_sink_input *i); /* may be NULL */ + /* Called whenver the fixed latency of the sink changes, if there + * is one. Called from IO context. */ + void (*update_sink_fixed_latency) (pa_sink_input *i); /* may be NULL */ + /* If non-NULL this function is called when the input is first * connected to a sink or when the rtpoll/asyncmsgq fields * change. You usually don't need to implement this function @@ -159,7 +169,9 @@ struct pa_sink_input { /* If non-NULL called whenever the sink input is moved to a new * sink. Called from main context after the sink input has been * detached from the old sink and before it has been attached to - * the new sink. */ + * the new sink. If dest is NULL the move was executed in two + * phases and the second one failed; the stream will be destroyed + * after this call. */ void (*moving) (pa_sink_input *i, pa_sink *dest); /* may be NULL */ /* Supposed to unlink and destroy this stream. Called from main @@ -182,8 +194,16 @@ struct pa_sink_input { pa_bool_t (*may_move_to) (pa_sink_input *i, pa_sink *s); /* may be NULL */ /* If non-NULL this function is used to dispatch asynchronous - * control events. */ - void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data); + * control events. Called from main context. */ + void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data); /* may be NULL */ + + /* If non-NULL this function is called whenever the sink input + * volume changes. Called from main context */ + void (*volume_changed)(pa_sink_input *i); /* may be NULL */ + + /* If non-NULL this function is called whenever the sink input + * mute status changes. Called from main context */ + void (*mute_changed)(pa_sink_input *i); /* may be NULL */ struct { pa_sink_input_state_t state; @@ -194,7 +214,7 @@ struct pa_sink_input { pa_bool_t attached:1; /* True only between ->attach() and ->detach() calls */ - /* 0: rewrite nothing, (size_t) -1: rewrite everything, otherwise how many bytes to rewrite */ + /* rewrite_nbytes: 0: rewrite nothing, (size_t) -1: rewrite everything, otherwise how many bytes to rewrite */ pa_bool_t rewrite_flush:1, dont_rewind_render:1; size_t rewrite_nbytes; uint64_t underrun_for, playing_for; @@ -217,7 +237,7 @@ struct pa_sink_input { void *userdata; }; -PA_DECLARE_CLASS(pa_sink_input); +PA_DECLARE_PUBLIC_CLASS(pa_sink_input); #define PA_SINK_INPUT(o) pa_sink_input_cast(o) enum { @@ -238,6 +258,8 @@ typedef struct pa_sink_input_send_event_hook_data { } pa_sink_input_send_event_hook_data; typedef struct pa_sink_input_new_data { + pa_sink_input_flags_t flags; + pa_proplist *proplist; const char *driver; @@ -253,13 +275,13 @@ typedef struct pa_sink_input_new_data { pa_sample_spec sample_spec; pa_channel_map channel_map; - pa_cvolume volume, volume_factor; + pa_cvolume volume, volume_factor, volume_factor_sink; pa_bool_t muted:1; pa_bool_t sample_spec_is_set:1; pa_bool_t channel_map_is_set:1; - pa_bool_t volume_is_set:1, volume_factor_is_set:1; + pa_bool_t volume_is_set:1, volume_factor_is_set:1, volume_factor_sink_is_set:1; pa_bool_t muted_is_set:1; pa_bool_t volume_is_absolute:1; @@ -272,6 +294,7 @@ void pa_sink_input_new_data_set_sample_spec(pa_sink_input_new_data *data, const void pa_sink_input_new_data_set_channel_map(pa_sink_input_new_data *data, const pa_channel_map *map); void pa_sink_input_new_data_set_volume(pa_sink_input_new_data *data, const pa_cvolume *volume); void pa_sink_input_new_data_apply_volume_factor(pa_sink_input_new_data *data, const pa_cvolume *volume_factor); +void pa_sink_input_new_data_apply_volume_factor_sink(pa_sink_input_new_data *data, const pa_cvolume *volume_factor); void pa_sink_input_new_data_set_muted(pa_sink_input_new_data *data, pa_bool_t mute); void pa_sink_input_new_data_done(pa_sink_input_new_data *data); @@ -280,8 +303,7 @@ void pa_sink_input_new_data_done(pa_sink_input_new_data *data); int pa_sink_input_new( pa_sink_input **i, pa_core *core, - pa_sink_input_new_data *data, - pa_sink_input_flags_t flags); + pa_sink_input_new_data *data); void pa_sink_input_put(pa_sink_input *i); void pa_sink_input_unlink(pa_sink_input* i); @@ -303,6 +325,10 @@ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b); int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate); +/* This returns the sink's fields converted into out sample type */ +size_t pa_sink_input_get_max_rewind(pa_sink_input *i); +size_t pa_sink_input_get_max_request(pa_sink_input *i); + /* Callable by everyone from main thread*/ /* External code may request disconnection with this function */ @@ -313,8 +339,6 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency); void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute); pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute); -pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v); - void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save); pa_bool_t pa_sink_input_get_mute(pa_sink_input *i); @@ -333,6 +357,7 @@ pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest); /* may thi * new sink */ int pa_sink_input_start_move(pa_sink_input *i); int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save); +void pa_sink_input_fail_move(pa_sink_input *i); pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i); @@ -356,7 +381,7 @@ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i); pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret); -/* To be used by sink.c only */ -void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v); +#define pa_sink_input_assert_io_context(s) \ + pa_assert(pa_thread_mq_get() || !PA_SINK_INPUT_IS_LINKED((s)->state)) #endif diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index d8f3c7d17..bda92fccb 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -52,14 +52,14 @@ #define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC) #define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC) -static PA_DEFINE_CHECK_TYPE(pa_sink, pa_msgobject); +PA_DEFINE_PUBLIC_CLASS(pa_sink, pa_msgobject); static void sink_free(pa_object *s); pa_sink_new_data* pa_sink_new_data_init(pa_sink_new_data *data) { pa_assert(data); - memset(data, 0, sizeof(*data)); + pa_zero(*data); data->proplist = pa_proplist_new(); return data; @@ -177,6 +177,7 @@ pa_sink* pa_sink_new( pa_assert(core); pa_assert(data); pa_assert(data->name); + pa_assert_ctl_context(); s = pa_msgobject_new(pa_sink); @@ -211,7 +212,7 @@ pa_sink* pa_sink_new( pa_cvolume_reset(&data->volume, data->sample_spec.channels); pa_return_null_if_fail(pa_cvolume_valid(&data->volume)); - pa_return_null_if_fail(data->volume.channels == data->sample_spec.channels); + pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec)); if (!data->muted_is_set) data->muted = FALSE; @@ -235,6 +236,7 @@ pa_sink* pa_sink_new( s->core = core; s->state = PA_SINK_INIT; s->flags = flags; + s->priority = 0; s->suspend_cause = 0; s->name = pa_xstrdup(name); s->proplist = pa_proplist_copy(data->proplist); @@ -242,26 +244,25 @@ pa_sink* pa_sink_new( s->module = data->module; s->card = data->card; + s->priority = pa_device_init_priority(s->proplist); + s->sample_spec = data->sample_spec; s->channel_map = data->channel_map; s->inputs = pa_idxset_new(NULL, NULL); s->n_corked = 0; - s->reference_volume = s->virtual_volume = data->volume; + s->reference_volume = s->real_volume = data->volume; pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels); s->base_volume = PA_VOLUME_NORM; s->n_volume_steps = PA_VOLUME_NORM+1; s->muted = data->muted; s->refresh_volume = s->refresh_muted = FALSE; - s->fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY; - reset_callbacks(s); s->userdata = NULL; s->asyncmsgq = NULL; - s->rtpoll = NULL; /* As a minor optimization we just steal the list instead of * copying it here */ @@ -294,6 +295,7 @@ pa_sink* pa_sink_new( &s->sample_spec, 0); + s->thread_info.rtpoll = NULL; s->thread_info.inputs = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); s->thread_info.soft_volume = s->soft_volume; s->thread_info.soft_muted = s->muted; @@ -306,7 +308,9 @@ pa_sink* pa_sink_new( s->thread_info.requested_latency = 0; s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY; s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY; + s->thread_info.fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY; + /* FIXME: This should probably be moved to pa_sink_put() */ pa_assert_se(pa_idxset_put(core->sinks, s, &s->index) >= 0); if (s->card) @@ -348,6 +352,7 @@ pa_sink* pa_sink_new( s->monitor_source->monitor_of = s; pa_source_set_latency_range(s->monitor_source, s->thread_info.min_latency, s->thread_info.max_latency); + pa_source_set_fixed_latency(s->monitor_source, s->thread_info.fixed_latency); pa_source_set_max_rewind(s->monitor_source, s->thread_info.max_rewind); return s; @@ -360,6 +365,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) { pa_sink_state_t original_state; pa_assert(s); + pa_assert_ctl_context(); if (s->state == state) return 0; @@ -396,9 +402,9 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) { /* We're suspending or resuming, tell everyone about it */ - for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) + PA_IDXSET_FOREACH(i, s->inputs, idx) if (s->state == PA_SINK_SUSPENDED && - (i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND)) + (i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND)) pa_sink_input_kill(i); else if (i->suspend) i->suspend(i, state == PA_SINK_SUSPENDED); @@ -413,12 +419,12 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) { /* Called from main context */ void pa_sink_put(pa_sink* s) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(s->state == PA_SINK_INIT); /* The following fields must be initialized properly when calling _put() */ pa_assert(s->asyncmsgq); - pa_assert(s->rtpoll); pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency); /* Generally, flags should be initialized via pa_sink_new(). As a @@ -431,16 +437,21 @@ void pa_sink_put(pa_sink* s) { if ((s->flags & PA_SINK_DECIBEL_VOLUME) && s->core->flat_volumes) s->flags |= PA_SINK_FLAT_VOLUME; + /* We assume that if the sink implementor changed the default + * volume he did so in real_volume, because that is the usual + * place where he is supposed to place his changes. */ + s->reference_volume = s->real_volume; + s->thread_info.soft_volume = s->soft_volume; s->thread_info.soft_muted = s->muted; pa_assert((s->flags & PA_SINK_HW_VOLUME_CTRL) || (s->base_volume == PA_VOLUME_NORM && s->flags & PA_SINK_DECIBEL_VOLUME)); pa_assert(!(s->flags & PA_SINK_DECIBEL_VOLUME) || s->n_volume_steps == PA_VOLUME_NORM+1); - pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->fixed_latency != 0)); + pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0)); pa_assert(!(s->flags & PA_SINK_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_LATENCY)); pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_DYNAMIC_LATENCY)); - pa_assert(s->monitor_source->fixed_latency == s->fixed_latency); + pa_assert(s->monitor_source->thread_info.fixed_latency == s->thread_info.fixed_latency); pa_assert(s->monitor_source->thread_info.min_latency == s->thread_info.min_latency); pa_assert(s->monitor_source->thread_info.max_latency == s->thread_info.max_latency); @@ -458,6 +469,7 @@ void pa_sink_unlink(pa_sink* s) { pa_sink_input *i, *j = NULL; pa_assert(s); + pa_assert_ctl_context(); /* Please note that pa_sink_unlink() does more than simply * reversing pa_sink_put(). It also undoes the registrations @@ -507,6 +519,7 @@ static void sink_free(pa_object *o) { pa_sink_input *i; pa_assert(s); + pa_assert_ctl_context(); pa_assert(pa_sink_refcnt(s) == 0); if (PA_SINK_IS_LINKED(s->state)) @@ -547,9 +560,10 @@ static void sink_free(pa_object *o) { pa_xfree(s); } -/* Called from main context */ +/* Called from main context, and not while the IO thread is active, please */ void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); s->asyncmsgq = q; @@ -557,11 +571,32 @@ void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) { pa_source_set_asyncmsgq(s->monitor_source, q); } -/* Called from main context */ +/* Called from main context, and not while the IO thread is active, please */ +void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value) { + pa_sink_assert_ref(s); + pa_assert_ctl_context(); + + if (mask == 0) + return; + + /* For now, allow only a minimal set of flags to be changed. */ + pa_assert((mask & ~(PA_SINK_DYNAMIC_LATENCY|PA_SINK_LATENCY)) == 0); + + s->flags = (s->flags & ~mask) | (value & mask); + + pa_source_update_flags(s->monitor_source, + ((mask & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) | + ((mask & PA_SINK_DYNAMIC_LATENCY) ? PA_SOURCE_DYNAMIC_LATENCY : 0), + ((value & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) | + ((value & PA_SINK_DYNAMIC_LATENCY) ? PA_SINK_DYNAMIC_LATENCY : 0)); +} + +/* Called from IO context, or before _put() from main context */ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) { pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); - s->rtpoll = p; + s->thread_info.rtpoll = p; if (s->monitor_source) pa_source_set_rtpoll(s->monitor_source, p); @@ -570,6 +605,7 @@ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) { /* Called from main context */ int pa_sink_update_status(pa_sink*s) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); if (s->state == PA_SINK_SUSPENDED) @@ -581,6 +617,7 @@ int pa_sink_update_status(pa_sink*s) { /* Called from main context */ int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); pa_assert(cause != 0); @@ -609,6 +646,7 @@ pa_queue *pa_sink_move_all_start(pa_sink *s, pa_queue *q) { uint32_t idx; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); if (!q) @@ -633,12 +671,13 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) { pa_sink_input *i; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); pa_assert(q); while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) { if (pa_sink_input_finish_move(i, s, save) < 0) - pa_sink_input_kill(i); + pa_sink_input_fail_move(i); pa_sink_input_unref(i); } @@ -649,13 +688,13 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) { /* Called from main context */ void pa_sink_move_all_fail(pa_queue *q) { pa_sink_input *i; + + pa_assert_ctl_context(); pa_assert(q); while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) { - if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], i) == PA_HOOK_OK) { - pa_sink_input_kill(i); - pa_sink_input_unref(i); - } + pa_sink_input_fail_move(i); + pa_sink_input_unref(i); } pa_queue_free(q, NULL, NULL); @@ -665,11 +704,15 @@ void pa_sink_move_all_fail(pa_queue *q) { void pa_sink_process_rewind(pa_sink *s, size_t nbytes) { pa_sink_input *i; void *state = NULL; + pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); /* If nobody requested this and this is actually no real rewind - * then we can short cut this */ + * then we can short cut this. Please note that this means that + * not all rewind requests triggered upstream will always be + * translated in actual requests! */ if (!s->thread_info.rewind_requested && nbytes <= 0) return; @@ -682,7 +725,7 @@ void pa_sink_process_rewind(pa_sink *s, size_t nbytes) { if (nbytes > 0) pa_log_debug("Processing rewind..."); - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) { + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) { pa_sink_input_assert_ref(i); pa_sink_input_process_rewind(i, nbytes); } @@ -700,6 +743,7 @@ static unsigned fill_mix_info(pa_sink *s, size_t *length, pa_mix_info *info, uns size_t mixlength = *length; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(info); while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)) && maxinfo > 0) { @@ -734,18 +778,19 @@ static unsigned fill_mix_info(pa_sink *s, size_t *length, pa_mix_info *info, uns /* Called from IO thread context */ static void inputs_drop(pa_sink *s, pa_mix_info *info, unsigned n, pa_memchunk *result) { pa_sink_input *i; - void *state = NULL; + void *state; unsigned p = 0; unsigned n_unreffed = 0; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(result); pa_assert(result->memblock); pa_assert(result->length > 0); /* We optimize for the case where the order of the inputs has not changed */ - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) { + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) { unsigned j; pa_mix_info* m = NULL; @@ -834,12 +879,11 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) { size_t block_size_max; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); pa_assert(pa_frame_aligned(length, &s->sample_spec)); pa_assert(result); - pa_sink_ref(s); - pa_assert(!s->thread_info.rewind_requested); pa_assert(s->thread_info.rewind_nbytes == 0); @@ -850,6 +894,8 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) { return; } + pa_sink_ref(s); + if (length <= 0) length = pa_frame_align(MIX_BUFFER_LENGTH, &s->sample_spec); @@ -920,14 +966,13 @@ void pa_sink_render_into(pa_sink*s, pa_memchunk *target) { size_t length, block_size_max; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); pa_assert(target); pa_assert(target->memblock); pa_assert(target->length > 0); pa_assert(pa_frame_aligned(target->length, &s->sample_spec)); - pa_sink_ref(s); - pa_assert(!s->thread_info.rewind_requested); pa_assert(s->thread_info.rewind_nbytes == 0); @@ -936,6 +981,8 @@ void pa_sink_render_into(pa_sink*s, pa_memchunk *target) { return; } + pa_sink_ref(s); + length = target->length; block_size_max = pa_mempool_block_size_max(s->core->mempool); if (length > block_size_max) @@ -1003,17 +1050,23 @@ void pa_sink_render_into_full(pa_sink *s, pa_memchunk *target) { size_t l, d; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); pa_assert(target); pa_assert(target->memblock); pa_assert(target->length > 0); pa_assert(pa_frame_aligned(target->length, &s->sample_spec)); - pa_sink_ref(s); - pa_assert(!s->thread_info.rewind_requested); pa_assert(s->thread_info.rewind_nbytes == 0); + if (s->thread_info.state == PA_SINK_SUSPENDED) { + pa_silence_memchunk(target, &s->sample_spec); + return; + } + + pa_sink_ref(s); + l = target->length; d = 0; while (l > 0) { @@ -1032,91 +1085,31 @@ void pa_sink_render_into_full(pa_sink *s, pa_memchunk *target) { /* Called from IO thread context */ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) { - pa_mix_info info[MAX_MIX_CHANNELS]; - size_t length1st = length; - unsigned n; - pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); pa_assert(length > 0); pa_assert(pa_frame_aligned(length, &s->sample_spec)); pa_assert(result); - pa_sink_ref(s); - pa_assert(!s->thread_info.rewind_requested); pa_assert(s->thread_info.rewind_nbytes == 0); - pa_assert(length > 0); + pa_sink_ref(s); - n = fill_mix_info(s, &length1st, info, MAX_MIX_CHANNELS); - - if (n == 0) { - pa_silence_memchunk_get(&s->core->silence_cache, - s->core->mempool, - result, - &s->sample_spec, - length1st); - } else if (n == 1) { - pa_cvolume volume; - - *result = info[0].chunk; - pa_memblock_ref(result->memblock); - - if (result->length > length) - result->length = length; - - pa_sw_cvolume_multiply(&volume, &s->thread_info.soft_volume, &info[0].volume); - - if (s->thread_info.soft_muted || !pa_cvolume_is_norm(&volume)) { - if (s->thread_info.soft_muted || pa_cvolume_is_muted(&volume)) { - pa_memblock_unref(result->memblock); - pa_silence_memchunk_get(&s->core->silence_cache, - s->core->mempool, - result, - &s->sample_spec, - result->length); - } else { - pa_memchunk_make_writable(result, length); - pa_volume_memchunk(result, &s->sample_spec, &volume); - } - } - } else { - void *ptr; - - result->index = 0; - result->memblock = pa_memblock_new(s->core->mempool, length); - - ptr = pa_memblock_acquire(result->memblock); - - result->length = pa_mix(info, n, - (uint8_t*) ptr + result->index, length1st, - &s->sample_spec, - &s->thread_info.soft_volume, - s->thread_info.soft_muted); - - pa_memblock_release(result->memblock); - } - - inputs_drop(s, info, n, result); + pa_sink_render(s, length, result); if (result->length < length) { pa_memchunk chunk; - size_t l, d; + pa_memchunk_make_writable(result, length); - l = length - result->length; - d = result->index + result->length; - while (l > 0) { - chunk = *result; - chunk.index = d; - chunk.length = l; + chunk.memblock = result->memblock; + chunk.index = result->index + result->length; + chunk.length = length - result->length; - pa_sink_render_into(s, &chunk); + pa_sink_render_into_full(s, &chunk); - d += chunk.length; - l -= chunk.length; - } result->length = length; } @@ -1128,6 +1121,7 @@ pa_usec_t pa_sink_get_latency(pa_sink *s) { pa_usec_t usec = 0; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); /* The returned value is supposed to be in the time domain of the sound card! */ @@ -1149,6 +1143,7 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) { pa_msgobject *o; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); /* The returned value is supposed to be in the time domain of the sound card! */ @@ -1161,7 +1156,7 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) { o = PA_MSGOBJECT(s); - /* We probably should make this a proper vtable callback instead of going through process_msg() */ + /* FIXME: We probably should make this a proper vtable callback instead of going through process_msg() */ if (o->process_msg(o, PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0) return -1; @@ -1169,108 +1164,149 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) { return usec; } -static void compute_new_soft_volume(pa_sink_input *i, const pa_cvolume *new_volume) { - unsigned c; +/* Called from main context */ +static void compute_reference_ratios(pa_sink *s) { + uint32_t idx; + pa_sink_input *i; - pa_sink_input_assert_ref(i); - pa_assert(new_volume->channels == i->sample_spec.channels); + pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); + pa_assert(s->flags & PA_SINK_FLAT_VOLUME); - /* - * This basically calculates: - * - * i->relative_volume := i->virtual_volume / new_volume - * i->soft_volume := i->relative_volume * i->volume_factor - */ + PA_IDXSET_FOREACH(i, s->inputs, idx) { + unsigned c; + pa_cvolume remapped; - /* The new sink volume passed in here must already be remapped to - * the sink input's channel map! */ + /* + * Calculates the reference volume from the sink's reference + * volume. This basically calculates: + * + * i->reference_ratio = i->volume / s->reference_volume + */ - i->soft_volume.channels = i->sample_spec.channels; + remapped = s->reference_volume; + pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map); - for (c = 0; c < i->sample_spec.channels; c++) + i->reference_ratio.channels = i->sample_spec.channels; - 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]); + for (c = 0; c < i->sample_spec.channels; 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 update when the sink volume is 0 anyway */ + if (remapped.values[c] <= PA_VOLUME_MUTED) + continue; + + /* Don't update the reference ratio unless necessary */ + if (pa_sw_volume_multiply( + i->reference_ratio.values[c], + remapped.values[c]) == i->volume.values[c]) + continue; + + i->reference_ratio.values[c] = pa_sw_volume_divide( + i->volume.values[c], + remapped.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) { +/* Called from main context */ +static void compute_real_ratios(pa_sink *s) { pa_sink_input *i; uint32_t idx; pa_sink_assert_ref(s); - pa_assert(new_volume); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); pa_assert(s->flags & PA_SINK_FLAT_VOLUME); - /* This is called whenever a sink input volume changes or a sink - * input is added/removed and we might need to fix up the sink - * volume accordingly. Please note that we don't actually update - * the sinks volume here, we only return how it needs to be - * updated. The caller should then call pa_sink_set_volume().*/ + PA_IDXSET_FOREACH(i, s->inputs, idx) { + unsigned c; + pa_cvolume remapped; + + /* + * This basically calculates: + * + * i->real_ratio := i->volume / s->real_volume + * i->soft_volume := i->real_ratio * i->volume_factor + */ + + remapped = s->real_volume; + pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map); + + i->real_ratio.channels = i->sample_spec.channels; + i->soft_volume.channels = i->sample_spec.channels; + + for (c = 0; c < i->sample_spec.channels; c++) { + + if (remapped.values[c] <= PA_VOLUME_MUTED) { + /* We leave i->real_ratio untouched */ + i->soft_volume.values[c] = PA_VOLUME_MUTED; + continue; + } + + /* Don't lose accuracy unless necessary */ + if (pa_sw_volume_multiply( + i->real_ratio.values[c], + remapped.values[c]) != i->volume.values[c]) + + i->real_ratio.values[c] = pa_sw_volume_divide( + i->volume.values[c], + remapped.values[c]); + + i->soft_volume.values[c] = pa_sw_volume_multiply( + i->real_ratio.values[c], + i->volume_factor.values[c]); + } + + /* We don't copy the soft_volume to the thread_info data + * here. That must be done by the caller */ + } +} + +/* Called from main thread */ +static void compute_real_volume(pa_sink *s) { + pa_sink_input *i; + uint32_t idx; + + pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); + pa_assert(s->flags & PA_SINK_FLAT_VOLUME); + + /* This determines the maximum volume of all streams and sets + * s->real_volume accordingly. */ if (pa_idxset_isempty(s->inputs)) { /* In the special case that we have no sink input we leave the * volume unmodified. */ - *new_volume = s->reference_volume; + s->real_volume = s->reference_volume; return; } - pa_cvolume_mute(new_volume, s->channel_map.channels); + pa_cvolume_mute(&s->real_volume, s->channel_map.channels); /* First let's determine the new maximum volume of all inputs * connected to this sink */ - for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) { - unsigned c; - pa_cvolume remapped_volume; + PA_IDXSET_FOREACH(i, s->inputs, idx) { + pa_cvolume remapped; - remapped_volume = i->virtual_volume; - pa_cvolume_remap(&remapped_volume, &i->channel_map, &s->channel_map); - - for (c = 0; c < new_volume->channels; c++) - if (remapped_volume.values[c] > new_volume->values[c]) - new_volume->values[c] = remapped_volume.values[c]; + remapped = i->volume; + pa_cvolume_remap(&remapped, &i->channel_map, &s->channel_map); + pa_cvolume_merge(&s->real_volume, &s->real_volume, &remapped); } - /* Then, let's update the soft volumes of all inputs connected - * to this sink */ - for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) { - pa_cvolume remapped_new_volume; - - remapped_new_volume = *new_volume; - pa_cvolume_remap(&remapped_new_volume, &s->channel_map, &i->channel_map); - compute_new_soft_volume(i, &remapped_new_volume); - - /* We don't copy soft_volume to the thread_info data here - * (i.e. issue PA_SINK_INPUT_MESSAGE_SET_VOLUME) because we - * want the update to be atomically with the sink volume - * update, hence we do it within the pa_sink_set_volume() call - * below */ - } + /* Then, let's update the real ratios/soft volumes of all inputs + * connected to this sink */ + compute_real_ratios(s); } /* Called from main thread */ -void pa_sink_propagate_flat_volume(pa_sink *s) { +static void propagate_reference_volume(pa_sink *s) { pa_sink_input *i; uint32_t idx; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); pa_assert(s->flags & PA_SINK_FLAT_VOLUME); @@ -1278,63 +1314,88 @@ void pa_sink_propagate_flat_volume(pa_sink *s) { * caused by a sink input volume change. We need to fix up the * sink input volumes accordingly */ - for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) { - pa_cvolume sink_volume, new_virtual_volume; - unsigned c; + PA_IDXSET_FOREACH(i, s->inputs, idx) { + pa_cvolume old_volume, remapped; - /* This basically calculates i->virtual_volume := i->relative_volume * s->virtual_volume */ + old_volume = i->volume; - sink_volume = s->virtual_volume; - pa_cvolume_remap(&sink_volume, &s->channel_map, &i->channel_map); + /* This basically calculates: + * + * i->volume := s->reference_volume * i->reference_ratio */ - 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])); + remapped = s->reference_volume; + pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map); + pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio); - new_virtual_volume.channels = i->sample_spec.channels; + /* The volume changed, let's tell people so */ + if (!pa_cvolume_equal(&old_volume, &i->volume)) { - if (!pa_cvolume_equal(&new_virtual_volume, &i->virtual_volume)) { - i->virtual_volume = new_virtual_volume; + if (i->volume_changed) + i->volume_changed(i); - /* 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_bool_t become_reference, pa_bool_t save) { - pa_bool_t virtual_volume_changed; +void pa_sink_set_volume( + pa_sink *s, + const pa_cvolume *volume, + pa_bool_t sendmsg, + pa_bool_t save) { + + pa_cvolume old_reference_volume; + pa_bool_t reference_changed; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); - pa_assert(volume); - pa_assert(pa_cvolume_valid(volume)); - pa_assert(pa_cvolume_compatible(volume, &s->sample_spec)); + pa_assert(!volume || pa_cvolume_valid(volume)); + pa_assert(volume || (s->flags & PA_SINK_FLAT_VOLUME)); + pa_assert(!volume || volume->channels == 1 || pa_cvolume_compatible(volume, &s->sample_spec)); - virtual_volume_changed = !pa_cvolume_equal(volume, &s->virtual_volume); - s->virtual_volume = *volume; - s->save_volume = (!virtual_volume_changed && s->save_volume) || save; + /* As a special exception we accept mono volumes on all sinks -- + * even on those with more complex channel maps */ - if (become_reference) - s->reference_volume = s->virtual_volume; + /* If volume is NULL we synchronize the sink's real and reference + * volumes with the stream volumes. If it is not NULL we update + * the reference_volume with it. */ - /* 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_reference_volume = s->reference_volume; + + if (volume) { + + if (pa_cvolume_compatible(volume, &s->sample_spec)) + s->reference_volume = *volume; + else + pa_cvolume_scale(&s->reference_volume, pa_cvolume_max(volume)); + + if (s->flags & PA_SINK_FLAT_VOLUME) { + /* OK, propagate this volume change back to the inputs */ + propagate_reference_volume(s); + + /* And now recalculate the real volume */ + compute_real_volume(s); + } else + s->real_volume = s->reference_volume; + + } else { + pa_assert(s->flags & PA_SINK_FLAT_VOLUME); + + /* Ok, let's determine the new real volume */ + compute_real_volume(s); + + /* Let's 'push' the reference volume if necessary */ + pa_cvolume_merge(&s->reference_volume, &s->reference_volume, &s->real_volume); + + /* We need to fix the reference ratios of all streams now that + * we changed the reference volume */ + compute_reference_ratios(s); + } + + reference_changed = !pa_cvolume_equal(&old_reference_volume, &s->reference_volume); + s->save_volume = (!reference_changed && s->save_volume) || save; if (s->set_volume) { /* If we have a function set_volume(), then we do not apply a @@ -1347,72 +1408,133 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat } else /* If we have no function set_volume(), then the soft volume * becomes the virtual volume */ - s->soft_volume = s->virtual_volume; + s->soft_volume = s->real_volume; /* This tells the sink that soft and/or virtual volume changed */ if (sendmsg) pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0); - if (virtual_volume_changed) + if (reference_changed) pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } /* Called from main thread. Only to be called by sink implementor */ void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) { pa_sink_assert_ref(s); - pa_assert(volume); + pa_assert_ctl_context(); - s->soft_volume = *volume; + if (!volume) + pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels); + else + s->soft_volume = *volume; if (PA_SINK_IS_LINKED(s->state)) pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0); else - s->thread_info.soft_volume = *volume; + s->thread_info.soft_volume = s->soft_volume; +} + +static void propagate_real_volume(pa_sink *s, const pa_cvolume *old_real_volume) { + pa_sink_input *i; + uint32_t idx; + pa_cvolume old_reference_volume; + + pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); + + /* This is called when the hardware's real volume changes due to + * some external event. We copy the real volume into our + * reference volume and then rebuild the stream volumes based on + * i->real_ratio which should stay fixed. */ + + if (pa_cvolume_equal(old_real_volume, &s->real_volume)) + return; + + old_reference_volume = s->reference_volume; + + /* 1. Make the real volume the reference volume */ + s->reference_volume = s->real_volume; + + if (s->flags & PA_SINK_FLAT_VOLUME) { + + PA_IDXSET_FOREACH(i, s->inputs, idx) { + pa_cvolume old_volume, remapped; + + old_volume = i->volume; + + /* 2. Since the sink's reference and real volumes are equal + * now our ratios should be too. */ + i->reference_ratio = i->real_ratio; + + /* 3. Recalculate the new stream reference volume based on the + * reference ratio and the sink's reference volume. + * + * This basically calculates: + * + * i->volume = s->reference_volume * i->reference_ratio + * + * This is identical to propagate_reference_volume() */ + remapped = s->reference_volume; + pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map); + pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio); + + /* Notify if something changed */ + if (!pa_cvolume_equal(&old_volume, &i->volume)) { + + if (i->volume_changed) + i->volume_changed(i); + + pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index); + } + } + } + + /* Something got changed in the hardware. It probably makes sense + * to save changed hw settings given that hw volume changes not + * triggered by PA are almost certainly done by the user. */ + s->save_volume = TRUE; + + if (!pa_cvolume_equal(&old_reference_volume, &s->reference_volume)) + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } /* Called from main thread */ -const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_bool_t reference) { +const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); if (s->refresh_volume || force_refresh) { - struct pa_cvolume old_virtual_volume = s->virtual_volume; + struct pa_cvolume old_real_volume; + + old_real_volume = s->real_volume; if (s->get_volume) s->get_volume(s); pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0); - 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); - - pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); - } + propagate_real_volume(s, &old_real_volume); } - return reference ? &s->reference_volume : &s->virtual_volume; + return &s->reference_volume; } /* Called from main thread */ -void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume, pa_bool_t save) { +void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_real_volume) { + pa_cvolume old_real_volume; + pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); /* The sink implementor may call this if the volume changed to make sure everyone is notified */ - if (pa_cvolume_equal(&s->virtual_volume, new_volume)) { - s->save_volume = s->save_volume || save; - return; - } - s->reference_volume = s->virtual_volume = *new_volume; - s->save_volume = save; + old_real_volume = s->real_volume; + s->real_volume = *new_real_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); + propagate_real_volume(s, &old_real_volume); } /* Called from main thread */ @@ -1420,6 +1542,7 @@ void pa_sink_set_mute(pa_sink *s, pa_bool_t mute, pa_bool_t save) { pa_bool_t old_muted; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); old_muted = s->muted; @@ -1439,6 +1562,8 @@ void pa_sink_set_mute(pa_sink *s, pa_bool_t mute, pa_bool_t save) { pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); if (s->refresh_muted || force_refresh) { pa_bool_t old_muted = s->muted; @@ -1449,6 +1574,8 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) { pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0); if (old_muted != s->muted) { + s->save_muted = TRUE; + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); /* Make sure the soft mute status stays in sync */ @@ -1460,18 +1587,18 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) { } /* Called from main thread */ -void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save) { +void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SINK_IS_LINKED(s->state)); /* The sink implementor may call this if the volume changed to make sure everyone is notified */ - if (s->muted == new_muted) { - s->save_muted = s->save_muted || save; + if (s->muted == new_muted) return; - } s->muted = new_muted; - s->save_muted = save; + s->save_muted = TRUE; pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } @@ -1479,6 +1606,7 @@ void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save) { /* Called from main thread */ pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (p) pa_proplist_update(s->proplist, mode, p); @@ -1492,16 +1620,18 @@ pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist } /* Called from main thread */ +/* FIXME -- this should be dropped and be merged into pa_sink_update_proplist() */ void pa_sink_set_description(pa_sink *s, const char *description) { const char *old; pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (!description && !pa_proplist_contains(s->proplist, PA_PROP_DEVICE_DESCRIPTION)) return; old = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_DESCRIPTION); - if (old && description && !strcmp(old, description)) + if (old && description && pa_streq(old, description)) return; if (description) @@ -1528,6 +1658,7 @@ unsigned pa_sink_linked_by(pa_sink *s) { unsigned ret; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); ret = pa_idxset_size(s->inputs); @@ -1546,6 +1677,7 @@ unsigned pa_sink_used_by(pa_sink *s) { unsigned ret; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); ret = pa_idxset_size(s->inputs); @@ -1564,6 +1696,7 @@ unsigned pa_sink_check_suspend(pa_sink *s) { uint32_t idx; pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (!PA_SINK_IS_LINKED(s->state)) return 0; @@ -1597,8 +1730,9 @@ static void sync_input_volumes_within_thread(pa_sink *s) { void *state = NULL; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); - while ((i = PA_SINK_INPUT(pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))) { + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) { if (pa_cvolume_equal(&i->thread_info.soft_volume, &i->soft_volume)) continue; @@ -1701,7 +1835,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index))) pa_sink_input_unref(i); - pa_sink_invalidate_requested_latency(s); + pa_sink_invalidate_requested_latency(s, TRUE); pa_sink_request_rewind(s, (size_t) -1); /* In flat volume mode we need to update the volume as @@ -1723,10 +1857,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse size_t sink_nbytes, total_nbytes; /* Get the latency of the sink */ - if (!(s->flags & PA_SINK_LATENCY) || - PA_MSGOBJECT(s)->process_msg(PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0) - usec = 0; - + usec = pa_sink_get_latency_within_thread(s); sink_nbytes = pa_usec_to_bytes(usec, &s->sample_spec); total_nbytes = sink_nbytes + pa_memblockq_get_length(i->thread_info.render_memblockq); @@ -1747,7 +1878,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index))) pa_sink_input_unref(i); - pa_sink_invalidate_requested_latency(s); + pa_sink_invalidate_requested_latency(s, TRUE); pa_log_debug("Requesting rewind due to started move"); pa_sink_request_rewind(s, (size_t) -1); @@ -1785,10 +1916,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse size_t nbytes; /* Get the latency of the sink */ - if (!(s->flags & PA_SINK_LATENCY) || - PA_MSGOBJECT(s)->process_msg(PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0) - usec = 0; - + usec = pa_sink_get_latency_within_thread(s); nbytes = pa_usec_to_bytes(usec, &s->sample_spec); if (nbytes > 0) @@ -1876,6 +2004,9 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse pa_usec_t *usec = userdata; *usec = pa_sink_get_requested_latency_within_thread(s); + /* Yes, that's right, the IO thread will see -1 when no + * explicit requested latency is configured, the main + * thread will see max_latency */ if (*usec == (pa_usec_t) -1) *usec = s->thread_info.max_latency; @@ -1899,6 +2030,16 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse return 0; } + case PA_SINK_MESSAGE_GET_FIXED_LATENCY: + + *((pa_usec_t*) userdata) = s->thread_info.fixed_latency; + return 0; + + case PA_SINK_MESSAGE_SET_FIXED_LATENCY: + + pa_sink_set_fixed_latency_within_thread(s, (pa_usec_t) offset); + return 0; + case PA_SINK_MESSAGE_GET_MAX_REWIND: *((size_t*) userdata) = s->thread_info.max_rewind; @@ -1934,9 +2075,10 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause) int ret = 0; pa_core_assert_ref(c); + pa_assert_ctl_context(); pa_assert(cause != 0); - for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx))) { + PA_IDXSET_FOREACH(sink, c->sinks, idx) { int r; if ((r = pa_sink_suspend(sink, suspend, cause)) < 0) @@ -1949,6 +2091,7 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause) /* Called from main thread */ void pa_sink_detach(pa_sink *s) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_DETACH, NULL, 0, NULL) == 0); @@ -1957,6 +2100,7 @@ void pa_sink_detach(pa_sink *s) { /* Called from main thread */ void pa_sink_attach(pa_sink *s) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_ATTACH, NULL, 0, NULL) == 0); @@ -1968,9 +2112,10 @@ void pa_sink_detach_within_thread(pa_sink *s) { void *state = NULL; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) if (i->detach) i->detach(i); @@ -1984,9 +2129,10 @@ void pa_sink_attach_within_thread(pa_sink *s) { void *state = NULL; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) if (i->attach) i->attach(i); @@ -1997,6 +2143,7 @@ void pa_sink_attach_within_thread(pa_sink *s) { /* Called from IO thread */ void pa_sink_request_rewind(pa_sink*s, size_t nbytes) { pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(PA_SINK_IS_LINKED(s->thread_info.state)); if (s->thread_info.state == PA_SINK_SUSPENDED) @@ -2026,15 +2173,15 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) { pa_usec_t monitor_latency; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); if (!(s->flags & PA_SINK_DYNAMIC_LATENCY)) - return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency); + return PA_CLAMP(s->thread_info.fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency); if (s->thread_info.requested_latency_valid) return s->thread_info.requested_latency; - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) - + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) if (i->thread_info.requested_sink_latency != (pa_usec_t) -1 && (result == (pa_usec_t) -1 || result > i->thread_info.requested_sink_latency)) result = i->thread_info.requested_sink_latency; @@ -2062,6 +2209,7 @@ pa_usec_t pa_sink_get_requested_latency(pa_sink *s) { pa_usec_t usec = 0; pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SINK_IS_LINKED(s->state)); if (s->state == PA_SINK_SUSPENDED) @@ -2077,16 +2225,16 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) { void *state = NULL; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); if (max_rewind == s->thread_info.max_rewind) return; s->thread_info.max_rewind = max_rewind; - if (PA_SINK_IS_LINKED(s->thread_info.state)) { - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) + if (PA_SINK_IS_LINKED(s->thread_info.state)) + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) pa_sink_input_update_max_rewind(i, s->thread_info.max_rewind); - } if (s->monitor_source) pa_source_set_max_rewind_within_thread(s->monitor_source, s->thread_info.max_rewind); @@ -2095,6 +2243,7 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) { /* Called from main thread */ void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (PA_SINK_IS_LINKED(s->state)) pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0); @@ -2107,6 +2256,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) { void *state = NULL; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); if (max_request == s->thread_info.max_request) return; @@ -2116,7 +2266,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) { if (PA_SINK_IS_LINKED(s->thread_info.state)) { pa_sink_input *i; - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) pa_sink_input_update_max_request(i, s->thread_info.max_request); } } @@ -2124,6 +2274,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) { /* Called from main thread */ void pa_sink_set_max_request(pa_sink *s, size_t max_request) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (PA_SINK_IS_LINKED(s->state)) pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REQUEST, NULL, max_request, NULL) == 0); @@ -2132,23 +2283,24 @@ void pa_sink_set_max_request(pa_sink *s, size_t max_request) { } /* Called from IO thread */ -void pa_sink_invalidate_requested_latency(pa_sink *s) { +void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic) { pa_sink_input *i; void *state = NULL; pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); - if (!(s->flags & PA_SINK_DYNAMIC_LATENCY)) + if ((s->flags & PA_SINK_DYNAMIC_LATENCY)) + s->thread_info.requested_latency_valid = FALSE; + else if (dynamic) return; - s->thread_info.requested_latency_valid = FALSE; - if (PA_SINK_IS_LINKED(s->thread_info.state)) { if (s->update_requested_latency) s->update_requested_latency(s); - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) if (i->update_sink_requested_latency) i->update_sink_requested_latency(i); } @@ -2157,6 +2309,7 @@ void pa_sink_invalidate_requested_latency(pa_sink *s) { /* Called from main thread */ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); /* min_latency == 0: no limit * min_latency anything else: specified limit @@ -2191,6 +2344,7 @@ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_ /* Called from main thread */ void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *max_latency) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); pa_assert(min_latency); pa_assert(max_latency); @@ -2209,9 +2363,8 @@ void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *ma /* Called from IO thread */ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) { - void *state = NULL; - pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY); pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY); @@ -2222,27 +2375,36 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, max_latency == ABSOLUTE_MAX_LATENCY) || (s->flags & PA_SINK_DYNAMIC_LATENCY)); + if (s->thread_info.min_latency == min_latency && + s->thread_info.max_latency == max_latency) + return; + s->thread_info.min_latency = min_latency; s->thread_info.max_latency = max_latency; if (PA_SINK_IS_LINKED(s->thread_info.state)) { pa_sink_input *i; + void *state = NULL; - while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL))) + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) if (i->update_sink_latency_range) i->update_sink_latency_range(i); } - pa_sink_invalidate_requested_latency(s); + pa_sink_invalidate_requested_latency(s, FALSE); pa_source_set_latency_range_within_thread(s->monitor_source, min_latency, max_latency); } -/* Called from main thread, before the sink is put */ +/* Called from main thread */ void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) { pa_sink_assert_ref(s); + pa_assert_ctl_context(); - pa_assert(pa_sink_get_state(s) == PA_SINK_INIT); + if (s->flags & PA_SINK_DYNAMIC_LATENCY) { + pa_assert(latency == 0); + return; + } if (latency < ABSOLUTE_MIN_LATENCY) latency = ABSOLUTE_MIN_LATENCY; @@ -2250,14 +2412,69 @@ void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) { if (latency > ABSOLUTE_MAX_LATENCY) latency = ABSOLUTE_MAX_LATENCY; - s->fixed_latency = latency; + if (PA_SINK_IS_LINKED(s->state)) + pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_FIXED_LATENCY, NULL, (int64_t) latency, NULL) == 0); + else + s->thread_info.fixed_latency = latency; + pa_source_set_fixed_latency(s->monitor_source, latency); } +/* Called from main thread */ +pa_usec_t pa_sink_get_fixed_latency(pa_sink *s) { + pa_usec_t latency; + + pa_sink_assert_ref(s); + pa_assert_ctl_context(); + + if (s->flags & PA_SINK_DYNAMIC_LATENCY) + return 0; + + if (PA_SINK_IS_LINKED(s->state)) + pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_FIXED_LATENCY, &latency, 0, NULL) == 0); + else + latency = s->thread_info.fixed_latency; + + return latency; +} + +/* Called from IO thread */ +void pa_sink_set_fixed_latency_within_thread(pa_sink *s, pa_usec_t latency) { + pa_sink_assert_ref(s); + pa_sink_assert_io_context(s); + + if (s->flags & PA_SINK_DYNAMIC_LATENCY) { + pa_assert(latency == 0); + return; + } + + pa_assert(latency >= ABSOLUTE_MIN_LATENCY); + pa_assert(latency <= ABSOLUTE_MAX_LATENCY); + + if (s->thread_info.fixed_latency == latency) + return; + + s->thread_info.fixed_latency = latency; + + if (PA_SINK_IS_LINKED(s->thread_info.state)) { + pa_sink_input *i; + void *state = NULL; + + PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) + if (i->update_sink_fixed_latency) + i->update_sink_fixed_latency(i); + } + + pa_sink_invalidate_requested_latency(s, FALSE); + + pa_source_set_fixed_latency_within_thread(s->monitor_source, latency); +} + /* Called from main context */ size_t pa_sink_get_max_rewind(pa_sink *s) { size_t r; pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (!PA_SINK_IS_LINKED(s->state)) return s->thread_info.max_rewind; @@ -2271,6 +2488,7 @@ size_t pa_sink_get_max_rewind(pa_sink *s) { size_t pa_sink_get_max_request(pa_sink *s) { size_t r; pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (!PA_SINK_IS_LINKED(s->state)) return s->thread_info.max_request; @@ -2284,7 +2502,8 @@ size_t pa_sink_get_max_request(pa_sink *s) { int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) { pa_device_port *port; - pa_assert(s); + pa_sink_assert_ref(s); + pa_assert_ctl_context(); if (!s->set_port) { pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name); @@ -2315,7 +2534,6 @@ int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) { return 0; } -/* Called from main context */ pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) { const char *ff, *c, *t = NULL, *s = "", *profile, *bus; @@ -2430,3 +2648,48 @@ pa_bool_t pa_device_init_intended_roles(pa_proplist *p) { return FALSE; } + +unsigned pa_device_init_priority(pa_proplist *p) { + const char *s; + unsigned priority = 0; + + pa_assert(p); + + if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS))) { + + if (pa_streq(s, "sound")) + priority += 9000; + else if (!pa_streq(s, "modem")) + priority += 1000; + } + + if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR))) { + + if (pa_streq(s, "internal")) + priority += 900; + else if (pa_streq(s, "speaker")) + priority += 500; + else if (pa_streq(s, "headphone")) + priority += 400; + } + + if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_BUS))) { + + if (pa_streq(s, "pci")) + priority += 50; + else if (pa_streq(s, "usb")) + priority += 40; + else if (pa_streq(s, "bluetooth")) + priority += 30; + } + + if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PROFILE_NAME))) { + + if (pa_startswith(s, "analog-")) + priority += 9; + else if (pa_startswith(s, "iec958-")) + priority += 8; + } + + return priority; +} diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h index d16fcc018..ba547fc32 100644 --- a/src/pulsecore/sink.h +++ b/src/pulsecore/sink.h @@ -42,6 +42,7 @@ typedef struct pa_device_port pa_device_port; #include #include #include +#include #define PA_MAX_INPUTS_PER_SINK 32 @@ -89,9 +90,10 @@ struct pa_sink { unsigned n_volume_steps; /* shall be constant */ /* Also see http://pulseaudio.org/wiki/InternalVolumes */ - pa_cvolume virtual_volume; /* The volume clients are informed about */ - pa_cvolume reference_volume; /* The volume taken as refernce base for relative sink input volumes */ + pa_cvolume reference_volume; /* The volume exported and taken as reference base for relative sink input volumes */ + pa_cvolume real_volume; /* The volume that the hardware is configured to */ pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through */ + pa_bool_t muted:1; pa_bool_t refresh_volume:1; @@ -101,15 +103,14 @@ struct pa_sink { pa_bool_t save_muted:1; pa_asyncmsgq *asyncmsgq; - pa_rtpoll *rtpoll; pa_memchunk silence; - pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */ - pa_hashmap *ports; pa_device_port *active_port; + unsigned priority; + /* Called when the main loop requests a state change. Called from * main loop context. If returns -1 the state change will be * inhibited */ @@ -155,9 +156,14 @@ struct pa_sink { pa_sink_state_t state; pa_hashmap *inputs; + pa_rtpoll *rtpoll; + pa_cvolume soft_volume; pa_bool_t soft_muted:1; + /* The requested latency is used for dynamic latency + * sinks. For fixed latency sinks it is always identical to + * the fixed_latency. See below. */ pa_bool_t requested_latency_valid:1; pa_usec_t requested_latency; @@ -173,14 +179,21 @@ struct pa_sink { size_t rewind_nbytes; pa_bool_t rewind_requested; + /* Both dynamic and fixed latencies will be clamped to this + * range. */ pa_usec_t min_latency; /* we won't go below this latency */ pa_usec_t max_latency; /* An upper limit for the latencies */ + + /* 'Fixed' simply means that the latency is exclusively + * decided on by the sink, and the clients have no influence + * in changing it */ + pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */ } thread_info; void *userdata; }; -PA_DECLARE_CLASS(pa_sink); +PA_DECLARE_PUBLIC_CLASS(pa_sink); #define PA_SINK(s) (pa_sink_cast(s)) typedef enum pa_sink_message { @@ -200,6 +213,8 @@ typedef enum pa_sink_message { PA_SINK_MESSAGE_DETACH, PA_SINK_MESSAGE_SET_LATENCY_RANGE, PA_SINK_MESSAGE_GET_LATENCY_RANGE, + PA_SINK_MESSAGE_SET_FIXED_LATENCY, + PA_SINK_MESSAGE_GET_FIXED_LATENCY, PA_SINK_MESSAGE_GET_MAX_REWIND, PA_SINK_MESSAGE_GET_MAX_REQUEST, PA_SINK_MESSAGE_SET_MAX_REWIND, @@ -267,12 +282,15 @@ void pa_sink_detach(pa_sink *s); void pa_sink_attach(pa_sink *s); void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume); -void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume, pa_bool_t save); -void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted, pa_bool_t save); +void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume); +void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted); + +void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value); pa_bool_t pa_device_init_description(pa_proplist *p); pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink); pa_bool_t pa_device_init_intended_roles(pa_proplist *p); +unsigned pa_device_init_priority(pa_proplist *p); /**** May be called by everyone, from main context */ @@ -280,6 +298,7 @@ pa_bool_t pa_device_init_intended_roles(pa_proplist *p); pa_usec_t pa_sink_get_latency(pa_sink *s); pa_usec_t pa_sink_get_requested_latency(pa_sink *s); void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *max_latency); +pa_usec_t pa_sink_get_fixed_latency(pa_sink *s); size_t pa_sink_get_max_rewind(pa_sink *s); size_t pa_sink_get_max_request(pa_sink *s); @@ -288,11 +307,8 @@ int pa_sink_update_status(pa_sink*s); int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause); int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause); -void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume); -void pa_sink_propagate_flat_volume(pa_sink *s); - -void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference, pa_bool_t save); -const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh, pa_bool_t reference); +void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t sendmsg, pa_bool_t save); +const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh); void pa_sink_set_mute(pa_sink *sink, pa_bool_t mute, pa_bool_t save); pa_bool_t pa_sink_get_mute(pa_sink *sink, pa_bool_t force_refresh); @@ -331,16 +347,23 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind); void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request); void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency); +void pa_sink_set_fixed_latency_within_thread(pa_sink *s, pa_usec_t latency); /*** To be called exclusively by sink input drivers, from IO context */ void pa_sink_request_rewind(pa_sink*s, size_t nbytes); -void pa_sink_invalidate_requested_latency(pa_sink *s); +void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic); pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s); pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra); void pa_device_port_free(pa_device_port *p); +/* Verify that we called in IO context (aka 'thread context), or that + * the sink is not yet set up, i.e. the thread not set up yet. See + * pa_assert_io_context() in thread-mq.h for more information. */ +#define pa_sink_assert_io_context(s) \ + pa_assert(pa_thread_mq_get() || !PA_SINK_IS_LINKED((s)->state)) + #endif diff --git a/src/pulsecore/socket-client.c b/src/pulsecore/socket-client.c index 245351578..c9cfdbe36 100644 --- a/src/pulsecore/socket-client.c +++ b/src/pulsecore/socket-client.c @@ -202,8 +202,6 @@ static void connect_io_cb(pa_mainloop_api*m, pa_io_event *e, int fd, pa_io_event } static int do_connect(pa_socket_client *c, const struct sockaddr *sa, socklen_t len) { - int r; - pa_assert(c); pa_assert(PA_REFCNT_VALUE(c) >= 1); pa_assert(sa); @@ -211,7 +209,7 @@ static int do_connect(pa_socket_client *c, const struct sockaddr *sa, socklen_t pa_make_fd_nonblock(c->fd); - if ((r = connect(c->fd, sa, len)) < 0) { + if (connect(c->fd, sa, len) < 0) { #ifdef OS_IS_WIN32 if (WSAGetLastError() != EWOULDBLOCK) { pa_log_debug("connect(): %d", WSAGetLastError()); diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c index 502e5c695..16de49233 100644 --- a/src/pulsecore/sound-file-stream.c +++ b/src/pulsecore/sound-file-stream.c @@ -64,9 +64,8 @@ enum { FILE_STREAM_MESSAGE_UNLINK }; -PA_DECLARE_CLASS(file_stream); +PA_DEFINE_PRIVATE_CLASS(file_stream, pa_msgobject); #define FILE_STREAM(o) (file_stream_cast(o)) -static PA_DEFINE_CHECK_TYPE(file_stream, pa_msgobject); /* Called from main context */ static void file_stream_unlink(file_stream *u) { @@ -312,7 +311,7 @@ int pa_play_file( pa_proplist_sets(data.proplist, PA_PROP_MEDIA_FILENAME, fname); pa_sndfile_init_proplist(u->sndfile, data.proplist); - pa_sink_input_new(&u->sink_input, sink->core, &data, 0); + pa_sink_input_new(&u->sink_input, sink->core, &data); pa_sink_input_new_data_done(&data); if (!u->sink_input) @@ -335,8 +334,7 @@ int pa_play_file( return 0; fail: - if (u) - file_stream_unref(u); + file_stream_unref(u); if (fd >= 0) pa_close(fd); diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index 4ba25ae48..1509807b2 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -41,14 +41,14 @@ #define MEMBLOCKQ_MAXLENGTH (32*1024*1024) -static PA_DEFINE_CHECK_TYPE(pa_source_output, pa_msgobject); +PA_DEFINE_PUBLIC_CLASS(pa_source_output, pa_msgobject); static void source_output_free(pa_object* mo); pa_source_output_new_data* pa_source_output_new_data_init(pa_source_output_new_data *data) { pa_assert(data); - memset(data, 0, sizeof(*data)); + pa_zero(*data); data->resample_method = PA_RESAMPLER_INVALID; data->proplist = pa_proplist_new(); @@ -84,6 +84,7 @@ static void reset_callbacks(pa_source_output *o) { o->update_max_rewind = NULL; o->update_source_requested_latency = NULL; o->update_source_latency_range = NULL; + o->update_source_fixed_latency = NULL; o->attach = NULL; o->detach = NULL; o->suspend = NULL; @@ -100,8 +101,7 @@ static void reset_callbacks(pa_source_output *o) { int pa_source_output_new( pa_source_output**_o, pa_core *core, - pa_source_output_new_data *data, - pa_source_output_flags_t flags) { + pa_source_output_new_data *data) { pa_source_output *o; pa_resampler *resampler = NULL; @@ -111,6 +111,7 @@ int pa_source_output_new( pa_assert(_o); pa_assert(core); pa_assert(data); + pa_assert_ctl_context(); if (data->client) pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->client->proplist); @@ -144,13 +145,13 @@ int pa_source_output_new( pa_return_val_if_fail(pa_channel_map_valid(&data->channel_map), -PA_ERR_INVALID); pa_return_val_if_fail(pa_channel_map_compatible(&data->channel_map, &data->sample_spec), -PA_ERR_INVALID); - if (flags & PA_SOURCE_OUTPUT_FIX_FORMAT) + if (data->flags & PA_SOURCE_OUTPUT_FIX_FORMAT) data->sample_spec.format = data->source->sample_spec.format; - if (flags & PA_SOURCE_OUTPUT_FIX_RATE) + if (data->flags & PA_SOURCE_OUTPUT_FIX_RATE) data->sample_spec.rate = data->source->sample_spec.rate; - if (flags & PA_SOURCE_OUTPUT_FIX_CHANNELS) { + if (data->flags & PA_SOURCE_OUTPUT_FIX_CHANNELS) { data->sample_spec.channels = data->source->sample_spec.channels; data->channel_map = data->source->channel_map; } @@ -166,7 +167,7 @@ int pa_source_output_new( if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE], data)) < 0) return r; - if ((flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND) && + if ((data->flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND) && pa_source_get_state(data->source) == PA_SOURCE_SUSPENDED) { pa_log("Failed to create source output: source is suspended."); return -PA_ERR_BADSTATE; @@ -177,7 +178,7 @@ int pa_source_output_new( return -PA_ERR_TOOLARGE; } - if ((flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) || + if ((data->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) || !pa_sample_spec_equal(&data->sample_spec, &data->source->sample_spec) || !pa_channel_map_equal(&data->channel_map, &data->source->channel_map)) { @@ -186,9 +187,9 @@ int pa_source_output_new( &data->source->sample_spec, &data->source->channel_map, &data->sample_spec, &data->channel_map, data->resample_method, - ((flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) | - ((flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) | - (core->disable_remixing || (flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) | + ((data->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) | + ((data->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) | + (core->disable_remixing || (data->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) | (core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) { pa_log_warn("Unsupported resampling operation."); return -PA_ERR_NOTSUPPORTED; @@ -201,7 +202,7 @@ int pa_source_output_new( o->core = core; o->state = PA_SOURCE_OUTPUT_INIT; - o->flags = flags; + o->flags = data->flags; o->proplist = pa_proplist_copy(data->proplist); o->driver = pa_xstrdup(pa_path_get_filename(data->driver)); o->module = data->module; @@ -262,6 +263,7 @@ int pa_source_output_new( /* Called from main context */ static void update_n_corked(pa_source_output *o, pa_source_output_state_t state) { pa_assert(o); + pa_assert_ctl_context(); if (!o->source) return; @@ -275,6 +277,7 @@ static void update_n_corked(pa_source_output *o, pa_source_output_state_t state) /* Called from main context */ static void source_output_set_state(pa_source_output *o, pa_source_output_state_t state) { pa_assert(o); + pa_assert_ctl_context(); if (o->state == state) return; @@ -294,6 +297,7 @@ static void source_output_set_state(pa_source_output *o, pa_source_output_state_ void pa_source_output_unlink(pa_source_output*o) { pa_bool_t linked; pa_assert(o); + pa_assert_ctl_context(); /* See pa_sink_unlink() for a couple of comments how this function * works */ @@ -346,6 +350,7 @@ static void source_output_free(pa_object* mo) { pa_source_output *o = PA_SOURCE_OUTPUT(mo); pa_assert(o); + pa_assert_ctl_context(); pa_assert(pa_source_output_refcnt(o) == 0); if (PA_SOURCE_OUTPUT_IS_LINKED(o->state)) @@ -353,8 +358,6 @@ static void source_output_free(pa_object* mo) { pa_log_info("Freeing output %u \"%s\"", o->index, pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_MEDIA_NAME))); - pa_assert(!o->thread_info.attached); - if (o->thread_info.delay_memblockq) pa_memblockq_free(o->thread_info.delay_memblockq); @@ -371,7 +374,9 @@ static void source_output_free(pa_object* mo) { /* Called from main context */ void pa_source_output_put(pa_source_output *o) { pa_source_output_state_t state; + pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(o->state == PA_SOURCE_OUTPUT_INIT); @@ -395,6 +400,7 @@ void pa_source_output_put(pa_source_output *o) { /* Called from main context */ void pa_source_output_kill(pa_source_output*o) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); o->kill(o); @@ -405,6 +411,7 @@ pa_usec_t pa_source_output_get_latency(pa_source_output *o, pa_usec_t *source_la pa_usec_t r[2] = { 0, 0 }; pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_GET_LATENCY, r, 0, NULL) == 0); @@ -424,6 +431,7 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) { size_t limit, mbs = 0; pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state)); pa_assert(chunk); pa_assert(pa_frame_aligned(chunk->length, &o->source->sample_spec)); @@ -499,8 +507,9 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) { /* Called from thread context */ void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in source sample spec */) { - pa_source_output_assert_ref(o); + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state)); pa_assert(pa_frame_aligned(nbytes, &o->source->sample_spec)); @@ -525,9 +534,18 @@ void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in so pa_memblockq_rewind(o->thread_info.delay_memblockq, nbytes); } +/* Called from thread context */ +size_t pa_source_output_get_max_rewind(pa_source_output *o) { + pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); + + return o->thread_info.resampler ? pa_resampler_request(o->thread_info.resampler, o->source->thread_info.max_rewind) : o->source->thread_info.max_rewind; +} + /* Called from thread context */ void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* in the source's sample spec */) { pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state)); pa_assert(pa_frame_aligned(nbytes, &o->source->sample_spec)); @@ -538,15 +556,16 @@ void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* i /* Called from thread context */ pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec) { pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY)) - usec = o->source->fixed_latency; + usec = o->source->thread_info.fixed_latency; if (usec != (pa_usec_t) -1) usec = PA_CLAMP(usec, o->source->thread_info.min_latency, o->source->thread_info.max_latency); o->thread_info.requested_source_latency = usec; - pa_source_invalidate_requested_latency(o->source); + pa_source_invalidate_requested_latency(o->source, TRUE); return usec; } @@ -554,6 +573,7 @@ pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output /* Called from main context */ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t usec) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) { pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0); @@ -565,7 +585,7 @@ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t if (o->source) { if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY)) - usec = o->source->fixed_latency; + usec = pa_source_get_fixed_latency(o->source); if (usec != (pa_usec_t) -1) { pa_usec_t min_latency, max_latency; @@ -582,6 +602,7 @@ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t /* Called from main context */ pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) { pa_usec_t usec = 0; @@ -598,6 +619,7 @@ pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) { /* Called from main context */ void pa_source_output_cork(pa_source_output *o, pa_bool_t b) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); source_output_set_state(o, b ? PA_SOURCE_OUTPUT_CORKED : PA_SOURCE_OUTPUT_RUNNING); @@ -606,6 +628,7 @@ void pa_source_output_cork(pa_source_output *o, pa_bool_t b) { /* Called from main context */ int pa_source_output_set_rate(pa_source_output *o, uint32_t rate) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); pa_return_val_if_fail(o->thread_info.resampler, -PA_ERR_BADSTATE); @@ -623,6 +646,7 @@ int pa_source_output_set_rate(pa_source_output *o, uint32_t rate) { /* Called from main context */ void pa_source_output_set_name(pa_source_output *o, const char *name) { const char *old; + pa_assert_ctl_context(); pa_source_output_assert_ref(o); if (!name && !pa_proplist_contains(o->proplist, PA_PROP_MEDIA_NAME)) @@ -647,11 +671,12 @@ void pa_source_output_set_name(pa_source_output *o, const char *name) { /* Called from main thread */ void pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t mode, pa_proplist *p) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); if (p) pa_proplist_update(o->proplist, mode, p); - if (PA_SINK_IS_LINKED(o->state)) { + if (PA_SOURCE_OUTPUT_IS_LINKED(o->state)) { pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_PROPLIST_CHANGED], o); pa_subscription_post(o->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE, o->index); } @@ -660,6 +685,7 @@ void pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t mode /* Called from main context */ pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); return o->actual_resample_method; } @@ -667,6 +693,7 @@ pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) { /* Called from main context */ pa_bool_t pa_source_output_may_move(pa_source_output *o) { pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); if (o->flags & PA_SOURCE_OUTPUT_DONT_MOVE) @@ -708,6 +735,7 @@ int pa_source_output_start_move(pa_source_output *o) { int r; pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); pa_assert(o->source); @@ -739,6 +767,7 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t pa_resampler *new_resampler; pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); pa_assert(!o->source); pa_source_assert_ref(dest); @@ -815,11 +844,30 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t return 0; } +/* Called from main context */ +void pa_source_output_fail_move(pa_source_output *o) { + + pa_source_output_assert_ref(o); + pa_assert_ctl_context(); + pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); + pa_assert(!o->source); + + /* Check if someone wants this source output? */ + if (pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], o) == PA_HOOK_STOP) + return; + + if (o->moving) + o->moving(o, NULL); + + pa_source_output_kill(o); +} + /* Called from main context */ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t save) { int r; pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state)); pa_assert(o->source); pa_source_assert_ref(dest); @@ -838,6 +886,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav } if ((r = pa_source_output_finish_move(o, dest, save)) < 0) { + pa_source_output_fail_move(o); pa_source_output_unref(o); return r; } @@ -850,6 +899,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav /* Called from IO thread context */ void pa_source_output_set_state_within_thread(pa_source_output *o, pa_source_output_state_t state) { pa_source_output_assert_ref(o); + pa_source_output_assert_io_context(o); if (state == o->thread_info.state) return; @@ -906,11 +956,13 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int return -PA_ERR_NOTIMPLEMENTED; } +/* Called from main context */ void pa_source_output_send_event(pa_source_output *o, const char *event, pa_proplist *data) { pa_proplist *pl = NULL; pa_source_output_send_event_hook_data hook_data; pa_source_output_assert_ref(o); + pa_assert_ctl_context(); pa_assert(event); if (!o->send_event) diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h index 9824e160d..273b78fc6 100644 --- a/src/pulsecore/source-output.h +++ b/src/pulsecore/source-output.h @@ -55,7 +55,8 @@ typedef enum pa_source_output_flags { PA_SOURCE_OUTPUT_FIX_RATE = 64, PA_SOURCE_OUTPUT_FIX_CHANNELS = 128, PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND = 256, - PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND = 512 + PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND = 512, + PA_SOURCE_OUTPUT_KILL_ON_SUSPEND = 1024 } pa_source_output_flags_t; struct pa_source_output { @@ -108,6 +109,10 @@ struct pa_source_output { * from IO context. */ void (*update_source_latency_range) (pa_source_output *o); /* may be NULL */ + /* Called whenver the fixed latency of the source changes, if there + * is one. Called from IO context. */ + void (*update_source_fixed_latency) (pa_source_output *i); /* may be NULL */ + /* If non-NULL this function is called when the output is first * connected to a source. Called from IO thread context */ void (*attach) (pa_source_output *o); /* may be NULL */ @@ -127,7 +132,9 @@ struct pa_source_output { /* If non-NULL called whenever the source output is moved to a new * source. Called from main context after the stream was detached * from the old source and before it is attached to the new - * source. */ + * source. If dest is NULL the move was executed in two + * phases and the second one failed; the stream will be destroyed + * after this call. */ void (*moving) (pa_source_output *o, pa_source *dest); /* may be NULL */ /* Supposed to unlink and destroy this stream. Called from main @@ -175,7 +182,7 @@ struct pa_source_output { void *userdata; }; -PA_DECLARE_CLASS(pa_source_output); +PA_DECLARE_PUBLIC_CLASS(pa_source_output); #define PA_SOURCE_OUTPUT(o) pa_source_output_cast(o) enum { @@ -194,6 +201,8 @@ typedef struct pa_source_output_send_event_hook_data { } pa_source_output_send_event_hook_data; typedef struct pa_source_output_new_data { + pa_source_output_flags_t flags; + pa_proplist *proplist; pa_sink_input *direct_on_input; @@ -224,8 +233,7 @@ void pa_source_output_new_data_done(pa_source_output_new_data *data); int pa_source_output_new( pa_source_output**o, pa_core *core, - pa_source_output_new_data *data, - pa_source_output_flags_t flags); + pa_source_output_new_data *data); void pa_source_output_put(pa_source_output *o); void pa_source_output_unlink(pa_source_output*o); @@ -238,6 +246,8 @@ void pa_source_output_cork(pa_source_output *o, pa_bool_t b); int pa_source_output_set_rate(pa_source_output *o, uint32_t rate); +size_t pa_source_output_get_max_rewind(pa_source_output *o); + /* Callable by everyone */ /* External code may request disconnection with this funcion */ @@ -260,6 +270,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav * new source */ int pa_source_output_start_move(pa_source_output *o); int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t save); +void pa_source_output_fail_move(pa_source_output *o); #define pa_source_output_get_state(o) ((o)->state) @@ -277,4 +288,7 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec); +#define pa_source_output_assert_io_context(s) \ + pa_assert(pa_thread_mq_get() || !PA_SOURCE_OUTPUT_IS_LINKED((s)->state)) + #endif diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index 74f38bc59..415c54bc3 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -45,14 +46,14 @@ #define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC) #define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC) -static PA_DEFINE_CHECK_TYPE(pa_source, pa_msgobject); +PA_DEFINE_PUBLIC_CLASS(pa_source, pa_msgobject); static void source_free(pa_object *o); pa_source_new_data* pa_source_new_data_init(pa_source_new_data *data) { pa_assert(data); - memset(data, 0, sizeof(*data)); + pa_zero(*data); data->proplist = pa_proplist_new(); return data; @@ -145,6 +146,7 @@ pa_source* pa_source_new( pa_assert(core); pa_assert(data); pa_assert(data->name); + pa_assert_ctl_context(); s = pa_msgobject_new(pa_source); @@ -179,7 +181,7 @@ pa_source* pa_source_new( pa_cvolume_reset(&data->volume, data->sample_spec.channels); pa_return_null_if_fail(pa_cvolume_valid(&data->volume)); - pa_return_null_if_fail(data->volume.channels == data->sample_spec.channels); + pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec)); if (!data->muted_is_set) data->muted = FALSE; @@ -203,6 +205,7 @@ pa_source* pa_source_new( s->core = core; s->state = PA_SOURCE_INIT; s->flags = flags; + s->priority = 0; s->suspend_cause = 0; s->name = pa_xstrdup(name); s->proplist = pa_proplist_copy(data->proplist); @@ -210,6 +213,8 @@ pa_source* pa_source_new( s->module = data->module; s->card = data->card; + s->priority = pa_device_init_priority(s->proplist); + s->sample_spec = data->sample_spec; s->channel_map = data->channel_map; @@ -217,20 +222,17 @@ pa_source* pa_source_new( s->n_corked = 0; s->monitor_of = NULL; - s->virtual_volume = data->volume; + s->volume = data->volume; pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels); s->base_volume = PA_VOLUME_NORM; s->n_volume_steps = PA_VOLUME_NORM+1; s->muted = data->muted; s->refresh_volume = s->refresh_muted = FALSE; - s->fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY; - reset_callbacks(s); s->userdata = NULL; s->asyncmsgq = NULL; - s->rtpoll = NULL; /* As a minor optimization we just steal the list instead of * copying it here */ @@ -263,6 +265,7 @@ pa_source* pa_source_new( &s->sample_spec, 0); + s->thread_info.rtpoll = NULL; s->thread_info.outputs = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); s->thread_info.soft_volume = s->soft_volume; s->thread_info.soft_muted = s->muted; @@ -272,6 +275,7 @@ pa_source* pa_source_new( s->thread_info.requested_latency = 0; s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY; s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY; + s->thread_info.fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY; pa_assert_se(pa_idxset_put(core->sources, s, &s->index) >= 0); @@ -297,6 +301,7 @@ static int source_set_state(pa_source *s, pa_source_state_t state) { pa_source_state_t original_state; pa_assert(s); + pa_assert_ctl_context(); if (s->state == state) return 0; @@ -333,27 +338,26 @@ static int source_set_state(pa_source *s, pa_source_state_t state) { /* We're suspending or resuming, tell everyone about it */ - for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx))) + PA_IDXSET_FOREACH(o, s->outputs, idx) if (s->state == PA_SOURCE_SUSPENDED && - (o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND)) + (o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND)) pa_source_output_kill(o); else if (o->suspend) o->suspend(o, state == PA_SOURCE_SUSPENDED); } - return 0; } /* Called from main context */ void pa_source_put(pa_source *s) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(s->state == PA_SOURCE_INIT); /* The following fields must be initialized properly when calling _put() */ pa_assert(s->asyncmsgq); - pa_assert(s->rtpoll); pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency); /* Generally, flags should be initialized via pa_source_new(). As @@ -368,7 +372,7 @@ void pa_source_put(pa_source *s) { pa_assert((s->flags & PA_SOURCE_HW_VOLUME_CTRL) || (s->base_volume == PA_VOLUME_NORM && s->flags & PA_SOURCE_DECIBEL_VOLUME)); pa_assert(!(s->flags & PA_SOURCE_DECIBEL_VOLUME) || s->n_volume_steps == PA_VOLUME_NORM+1); - pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->fixed_latency != 0)); + pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0)); pa_assert_se(source_set_state(s, PA_SOURCE_IDLE) == 0); @@ -382,6 +386,7 @@ void pa_source_unlink(pa_source *s) { pa_source_output *o, *j = NULL; pa_assert(s); + pa_assert_ctl_context(); /* See pa_sink_unlink() for a couple of comments how this function * works. */ @@ -423,6 +428,7 @@ static void source_free(pa_object *o) { pa_source *s = PA_SOURCE(o); pa_assert(s); + pa_assert_ctl_context(); pa_assert(pa_source_refcnt(s) == 0); if (PA_SOURCE_IS_LINKED(s->state)) @@ -458,23 +464,40 @@ static void source_free(pa_object *o) { pa_xfree(s); } -/* Called from main context */ +/* Called from main context, and not while the IO thread is active, please */ void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) { pa_source_assert_ref(s); + pa_assert_ctl_context(); s->asyncmsgq = q; } -/* Called from main context */ +/* Called from main context, and not while the IO thread is active, please */ +void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flags_t value) { + pa_source_assert_ref(s); + pa_assert_ctl_context(); + + if (mask == 0) + return; + + /* For now, allow only a minimal set of flags to be changed. */ + pa_assert((mask & ~(PA_SOURCE_DYNAMIC_LATENCY|PA_SOURCE_LATENCY)) == 0); + + s->flags = (s->flags & ~mask) | (value & mask); +} + +/* Called from IO context, or before _put() from main context */ void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p) { pa_source_assert_ref(s); + pa_source_assert_io_context(s); - s->rtpoll = p; + s->thread_info.rtpoll = p; } /* Called from main context */ int pa_source_update_status(pa_source*s) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); if (s->state == PA_SOURCE_SUSPENDED) @@ -486,6 +509,7 @@ int pa_source_update_status(pa_source*s) { /* Called from main context */ int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); pa_assert(cause != 0); @@ -513,6 +537,7 @@ int pa_source_sync_suspend(pa_source *s) { pa_sink_state_t state; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); pa_assert(s->monitor_of); @@ -532,6 +557,7 @@ pa_queue *pa_source_move_all_start(pa_source *s, pa_queue *q) { uint32_t idx; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); if (!q) @@ -556,12 +582,13 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) { pa_source_output *o; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); pa_assert(q); while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) { if (pa_source_output_finish_move(o, s, save) < 0) - pa_source_output_kill(o); + pa_source_output_fail_move(o); pa_source_output_unref(o); } @@ -572,13 +599,13 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) { /* Called from main context */ void pa_source_move_all_fail(pa_queue *q) { pa_source_output *o; + + pa_assert_ctl_context(); pa_assert(q); while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) { - if (pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], o) == PA_HOOK_OK) { - pa_source_output_kill(o); - pa_source_output_unref(o); - } + pa_source_output_fail_move(o); + pa_source_output_unref(o); } pa_queue_free(q, NULL, NULL); @@ -590,17 +617,18 @@ void pa_source_process_rewind(pa_source *s, size_t nbytes) { void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state)); - if (s->thread_info.state == PA_SOURCE_SUSPENDED) - return; - if (nbytes <= 0) return; + if (s->thread_info.state == PA_SOURCE_SUSPENDED) + return; + pa_log_debug("Processing rewind..."); - while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) { + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) { pa_source_output_assert_ref(o); pa_source_output_process_rewind(o, nbytes); } @@ -612,6 +640,7 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) { void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state)); pa_assert(chunk); @@ -651,6 +680,7 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) { /* Called from IO thread context */ void pa_source_post_direct(pa_source*s, pa_source_output *o, const pa_memchunk *chunk) { pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state)); pa_source_output_assert_ref(o); pa_assert(o->thread_info.direct_on_input); @@ -682,6 +712,7 @@ pa_usec_t pa_source_get_latency(pa_source *s) { pa_usec_t usec; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); if (s->state == PA_SOURCE_SUSPENDED) @@ -701,6 +732,7 @@ pa_usec_t pa_source_get_latency_within_thread(pa_source *s) { pa_msgobject *o; pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state)); /* The returned value is supposed to be in the time domain of the sound card! */ @@ -722,77 +754,96 @@ pa_usec_t pa_source_get_latency_within_thread(pa_source *s) { } /* Called from main thread */ -void pa_source_set_volume(pa_source *s, const pa_cvolume *volume, pa_bool_t save) { - pa_cvolume old_virtual_volume; - pa_bool_t virtual_volume_changed; +void pa_source_set_volume( + pa_source *s, + const pa_cvolume *volume, + pa_bool_t save) { + + pa_bool_t real_changed; + pa_cvolume old_volume; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); - pa_assert(volume); pa_assert(pa_cvolume_valid(volume)); - pa_assert(pa_cvolume_compatible(volume, &s->sample_spec)); + pa_assert(volume->channels == 1 || pa_cvolume_compatible(volume, &s->sample_spec)); - old_virtual_volume = s->virtual_volume; - s->virtual_volume = *volume; - virtual_volume_changed = !pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume); - s->save_volume = (!virtual_volume_changed && s->save_volume) || save; + old_volume = s->volume; + + if (pa_cvolume_compatible(volume, &s->sample_spec)) + s->volume = *volume; + else + pa_cvolume_scale(&s->volume, pa_cvolume_max(volume)); + + real_changed = !pa_cvolume_equal(&old_volume, &s->volume); + s->save_volume = (!real_changed && s->save_volume) || save; if (s->set_volume) { pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels); s->set_volume(s); } else - s->soft_volume = s->virtual_volume; + s->soft_volume = s->volume; pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0); - if (virtual_volume_changed) + if (real_changed) pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } /* Called from main thread. Only to be called by source implementor */ void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume) { pa_source_assert_ref(s); - pa_assert(volume); + pa_assert_ctl_context(); + + if (!volume) + pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels); + else + s->soft_volume = *volume; if (PA_SOURCE_IS_LINKED(s->state)) pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0); else - s->thread_info.soft_volume = *volume; + s->thread_info.soft_volume = s->soft_volume; } /* Called from main thread */ const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); if (s->refresh_volume || force_refresh) { - pa_cvolume old_virtual_volume = s->virtual_volume; + pa_cvolume old_volume; + + old_volume = s->volume; if (s->get_volume) s->get_volume(s); pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0); - if (!pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume)) + if (!pa_cvolume_equal(&old_volume, &s->volume)) { + s->save_volume = TRUE; pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); + } } - return &s->virtual_volume; + return &s->volume; } /* Called from main thread */ -void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume, pa_bool_t save) { +void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) { pa_source_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SOURCE_IS_LINKED(s->state)); /* The source implementor may call this if the volume changed to make sure everyone is notified */ - if (pa_cvolume_equal(&s->virtual_volume, new_volume)) { - s->save_volume = s->save_volume || save; + if (pa_cvolume_equal(&s->volume, new_volume)) return; - } - s->virtual_volume = *new_volume; - s->save_volume = save; + s->volume = *new_volume; + s->save_volume = TRUE; pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } @@ -802,6 +853,7 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute, pa_bool_t save) { pa_bool_t old_muted; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); old_muted = s->muted; @@ -820,6 +872,7 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute, pa_bool_t save) { /* Called from main thread */ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); if (s->refresh_muted || force_refresh) { @@ -831,6 +884,8 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) { pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0); if (old_muted != s->muted) { + s->save_muted = TRUE; + pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); /* Make sure the soft mute status stays in sync */ @@ -842,18 +897,18 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) { } /* Called from main thread */ -void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save) { +void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) { pa_source_assert_ref(s); + pa_assert_ctl_context(); + pa_assert(PA_SOURCE_IS_LINKED(s->state)); /* The source implementor may call this if the mute state changed to make sure everyone is notified */ - if (s->muted == new_muted) { - s->save_muted = s->save_muted || save; + if (s->muted == new_muted) return; - } s->muted = new_muted; - s->save_muted = save; + s->save_muted = TRUE; pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index); } @@ -861,6 +916,7 @@ void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save) { /* Called from main thread */ pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) { pa_source_assert_ref(s); + pa_assert_ctl_context(); if (p) pa_proplist_update(s->proplist, mode, p); @@ -874,16 +930,18 @@ pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_prop } /* Called from main thread */ +/* FIXME -- this should be dropped and be merged into pa_source_update_proplist() */ void pa_source_set_description(pa_source *s, const char *description) { const char *old; pa_source_assert_ref(s); + pa_assert_ctl_context(); if (!description && !pa_proplist_contains(s->proplist, PA_PROP_DEVICE_DESCRIPTION)) return; old = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_DESCRIPTION); - if (old && description && !strcmp(old, description)) + if (old && description && pa_streq(old, description)) return; if (description) @@ -901,6 +959,7 @@ void pa_source_set_description(pa_source *s, const char *description) { unsigned pa_source_linked_by(pa_source *s) { pa_source_assert_ref(s); pa_assert(PA_SOURCE_IS_LINKED(s->state)); + pa_assert_ctl_context(); return pa_idxset_size(s->outputs); } @@ -911,6 +970,7 @@ unsigned pa_source_used_by(pa_source *s) { pa_source_assert_ref(s); pa_assert(PA_SOURCE_IS_LINKED(s->state)); + pa_assert_ctl_context(); ret = pa_idxset_size(s->outputs); pa_assert(ret >= s->n_corked); @@ -925,6 +985,7 @@ unsigned pa_source_check_suspend(pa_source *s) { uint32_t idx; pa_source_assert_ref(s); + pa_assert_ctl_context(); if (!PA_SOURCE_IS_LINKED(s->state)) return 0; @@ -1006,7 +1067,7 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_ if (pa_hashmap_remove(s->thread_info.outputs, PA_UINT32_TO_PTR(o->index))) pa_source_output_unref(o); - pa_source_invalidate_requested_latency(s); + pa_source_invalidate_requested_latency(s, TRUE); return 0; } @@ -1086,6 +1147,16 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_ return 0; } + case PA_SOURCE_MESSAGE_GET_FIXED_LATENCY: + + *((pa_usec_t*) userdata) = s->thread_info.fixed_latency; + return 0; + + case PA_SOURCE_MESSAGE_SET_FIXED_LATENCY: + + pa_source_set_fixed_latency_within_thread(s, (pa_usec_t) offset); + return 0; + case PA_SOURCE_MESSAGE_GET_MAX_REWIND: *((size_t*) userdata) = s->thread_info.max_rewind; @@ -1120,6 +1191,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus int ret = 0; pa_core_assert_ref(c); + pa_assert_ctl_context(); pa_assert(cause != 0); for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx))) { @@ -1138,6 +1210,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus /* Called from main thread */ void pa_source_detach(pa_source *s) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_DETACH, NULL, 0, NULL) == 0); @@ -1146,6 +1219,7 @@ void pa_source_detach(pa_source *s) { /* Called from main thread */ void pa_source_attach(pa_source *s) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_ATTACH, NULL, 0, NULL) == 0); @@ -1157,9 +1231,10 @@ void pa_source_detach_within_thread(pa_source *s) { void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state)); - while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) if (o->detach) o->detach(o); } @@ -1170,9 +1245,10 @@ void pa_source_attach_within_thread(pa_source *s) { void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state)); - while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) if (o->attach) o->attach(o); } @@ -1184,15 +1260,15 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) { void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY)) - return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency); + return PA_CLAMP(s->thread_info.fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency); if (s->thread_info.requested_latency_valid) return s->thread_info.requested_latency; - while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) - + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) if (o->thread_info.requested_source_latency != (pa_usec_t) -1 && (result == (pa_usec_t) -1 || result > o->thread_info.requested_source_latency)) result = o->thread_info.requested_source_latency; @@ -1214,6 +1290,7 @@ pa_usec_t pa_source_get_requested_latency(pa_source *s) { pa_usec_t usec = 0; pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(PA_SOURCE_IS_LINKED(s->state)); if (s->state == PA_SOURCE_SUSPENDED) @@ -1230,21 +1307,22 @@ void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind) { void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); if (max_rewind == s->thread_info.max_rewind) return; s->thread_info.max_rewind = max_rewind; - if (PA_SOURCE_IS_LINKED(s->thread_info.state)) { - while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) + if (PA_SOURCE_IS_LINKED(s->thread_info.state)) + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) pa_source_output_update_max_rewind(o, s->thread_info.max_rewind); - } } /* Called from main thread */ void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) { pa_source_assert_ref(s); + pa_assert_ctl_context(); if (PA_SOURCE_IS_LINKED(s->state)) pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0); @@ -1253,17 +1331,18 @@ void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) { } /* Called from IO thread */ -void pa_source_invalidate_requested_latency(pa_source *s) { +void pa_source_invalidate_requested_latency(pa_source *s, pa_bool_t dynamic) { pa_source_output *o; void *state = NULL; pa_source_assert_ref(s); + pa_source_assert_io_context(s); - if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY)) + if ((s->flags & PA_SOURCE_DYNAMIC_LATENCY)) + s->thread_info.requested_latency_valid = FALSE; + else if (dynamic) return; - s->thread_info.requested_latency_valid = FALSE; - if (PA_SOURCE_IS_LINKED(s->thread_info.state)) { if (s->update_requested_latency) @@ -1275,12 +1354,13 @@ void pa_source_invalidate_requested_latency(pa_source *s) { } if (s->monitor_of) - pa_sink_invalidate_requested_latency(s->monitor_of); + pa_sink_invalidate_requested_latency(s->monitor_of, dynamic); } /* Called from main thread */ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) { pa_source_assert_ref(s); + pa_assert_ctl_context(); /* min_latency == 0: no limit * min_latency anything else: specified limit @@ -1315,6 +1395,7 @@ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t /* Called from main thread */ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency) { pa_source_assert_ref(s); + pa_assert_ctl_context(); pa_assert(min_latency); pa_assert(max_latency); @@ -1333,9 +1414,8 @@ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t /* Called from IO thread, and from main thread before pa_source_put() is called */ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) { - void *state = NULL; - pa_source_assert_ref(s); + pa_source_assert_io_context(s); pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY); pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY); @@ -1347,25 +1427,34 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten (s->flags & PA_SOURCE_DYNAMIC_LATENCY) || s->monitor_of); + if (s->thread_info.min_latency == min_latency && + s->thread_info.max_latency == max_latency) + return; + s->thread_info.min_latency = min_latency; s->thread_info.max_latency = max_latency; if (PA_SOURCE_IS_LINKED(s->thread_info.state)) { pa_source_output *o; + void *state = NULL; - while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL))) + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) if (o->update_source_latency_range) o->update_source_latency_range(o); } - pa_source_invalidate_requested_latency(s); + pa_source_invalidate_requested_latency(s, FALSE); } /* Called from main thread, before the source is put */ void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) { pa_source_assert_ref(s); + pa_assert_ctl_context(); - pa_assert(pa_source_get_state(s) == PA_SOURCE_INIT); + if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) { + pa_assert(latency == 0); + return; + } if (latency < ABSOLUTE_MIN_LATENCY) latency = ABSOLUTE_MIN_LATENCY; @@ -1373,12 +1462,64 @@ void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) { if (latency > ABSOLUTE_MAX_LATENCY) latency = ABSOLUTE_MAX_LATENCY; - s->fixed_latency = latency; + if (PA_SOURCE_IS_LINKED(s->state)) + pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_FIXED_LATENCY, NULL, (int64_t) latency, NULL) == 0); + else + s->thread_info.fixed_latency = latency; +} + +/* Called from main thread */ +pa_usec_t pa_source_get_fixed_latency(pa_source *s) { + pa_usec_t latency; + + pa_source_assert_ref(s); + pa_assert_ctl_context(); + + if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) + return 0; + + if (PA_SOURCE_IS_LINKED(s->state)) + pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_FIXED_LATENCY, &latency, 0, NULL) == 0); + else + latency = s->thread_info.fixed_latency; + + return latency; +} + +/* Called from IO thread */ +void pa_source_set_fixed_latency_within_thread(pa_source *s, pa_usec_t latency) { + pa_source_assert_ref(s); + pa_source_assert_io_context(s); + + if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) { + pa_assert(latency == 0); + return; + } + + pa_assert(latency >= ABSOLUTE_MIN_LATENCY); + pa_assert(latency <= ABSOLUTE_MAX_LATENCY); + + if (s->thread_info.fixed_latency == latency) + return; + + s->thread_info.fixed_latency = latency; + + if (PA_SOURCE_IS_LINKED(s->thread_info.state)) { + pa_source_output *o; + void *state = NULL; + + PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state) + if (o->update_source_fixed_latency) + o->update_source_fixed_latency(o); + } + + pa_source_invalidate_requested_latency(s, FALSE); } /* Called from main thread */ size_t pa_source_get_max_rewind(pa_source *s) { size_t r; + pa_assert_ctl_context(); pa_source_assert_ref(s); if (!PA_SOURCE_IS_LINKED(s->state)) @@ -1394,9 +1535,10 @@ int pa_source_set_port(pa_source *s, const char *name, pa_bool_t save) { pa_device_port *port; pa_assert(s); + pa_assert_ctl_context(); if (!s->set_port) { - pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name); + pa_log_debug("set_port() operation not implemented for source %u \"%s\"", s->index, s->name); return -PA_ERR_NOTIMPLEMENTED; } diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h index 7e9fd8b79..e3e56bc45 100644 --- a/src/pulsecore/source.h +++ b/src/pulsecore/source.h @@ -43,6 +43,7 @@ typedef struct pa_source pa_source; #include #include #include +#include #define PA_MAX_OUTPUTS_PER_SOURCE 32 @@ -78,7 +79,7 @@ struct pa_source { pa_volume_t base_volume; /* shall be constant */ unsigned n_volume_steps; /* shall be constant */ - pa_cvolume virtual_volume, soft_volume; + pa_cvolume volume, soft_volume; pa_bool_t muted:1; pa_bool_t refresh_volume:1; @@ -89,15 +90,14 @@ struct pa_source { pa_bool_t save_muted:1; pa_asyncmsgq *asyncmsgq; - pa_rtpoll *rtpoll; pa_memchunk silence; - pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */ - pa_hashmap *ports; pa_device_port *active_port; + unsigned priority; + /* Called when the main loop requests a state change. Called from * main loop context. If returns -1 the state change will be * inhibited */ @@ -139,6 +139,8 @@ struct pa_source { pa_source_state_t state; pa_hashmap *outputs; + pa_rtpoll *rtpoll; + pa_cvolume soft_volume; pa_bool_t soft_muted:1; @@ -151,12 +153,14 @@ struct pa_source { pa_usec_t min_latency; /* we won't go below this latency */ pa_usec_t max_latency; /* An upper limit for the latencies */ - } thread_info; + + pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */ + } thread_info; void *userdata; }; -PA_DECLARE_CLASS(pa_source); +PA_DECLARE_PUBLIC_CLASS(pa_source); #define PA_SOURCE(s) pa_source_cast(s) typedef enum pa_source_message { @@ -173,6 +177,8 @@ typedef enum pa_source_message { PA_SOURCE_MESSAGE_DETACH, PA_SOURCE_MESSAGE_SET_LATENCY_RANGE, PA_SOURCE_MESSAGE_GET_LATENCY_RANGE, + PA_SOURCE_MESSAGE_SET_FIXED_LATENCY, + PA_SOURCE_MESSAGE_GET_FIXED_LATENCY, PA_SOURCE_MESSAGE_GET_MAX_REWIND, PA_SOURCE_MESSAGE_SET_MAX_REWIND, PA_SOURCE_MESSAGE_MAX @@ -237,17 +243,20 @@ void pa_source_detach(pa_source *s); void pa_source_attach(pa_source *s); void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume); -void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume, pa_bool_t save); -void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted, pa_bool_t save); +void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume); +void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted); int pa_source_sync_suspend(pa_source *s); +void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flags_t value); + /*** May be called by everyone, from main context */ /* The returned value is supposed to be in the time domain of the sound card! */ pa_usec_t pa_source_get_latency(pa_source *s); pa_usec_t pa_source_get_requested_latency(pa_source *s); void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency); +pa_usec_t pa_source_get_fixed_latency(pa_source *s); size_t pa_source_get_max_rewind(pa_source *s); @@ -257,6 +266,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus void pa_source_set_volume(pa_source *source, const pa_cvolume *volume, pa_bool_t save); const pa_cvolume *pa_source_get_volume(pa_source *source, pa_bool_t force_refresh); + void pa_source_set_mute(pa_source *source, pa_bool_t mute, pa_bool_t save); pa_bool_t pa_source_get_mute(pa_source *source, pa_bool_t force_refresh); @@ -288,11 +298,16 @@ void pa_source_detach_within_thread(pa_source *s); pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s); void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind); + void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency); +void pa_source_set_fixed_latency_within_thread(pa_source *s, pa_usec_t latency); /*** To be called exclusively by source output drivers, from IO context */ -void pa_source_invalidate_requested_latency(pa_source *s); +void pa_source_invalidate_requested_latency(pa_source *s, pa_bool_t dynamic); pa_usec_t pa_source_get_latency_within_thread(pa_source *s); +#define pa_source_assert_io_context(s) \ + pa_assert(pa_thread_mq_get() || !PA_SOURCE_IS_LINKED((s)->state)) + #endif diff --git a/src/pulsecore/start-child.c b/src/pulsecore/start-child.c index 7774bde62..4a70aea13 100644 --- a/src/pulsecore/start-child.c +++ b/src/pulsecore/start-child.c @@ -68,23 +68,29 @@ int pa_start_child_for_read(const char *name, const char *argv1, pid_t *pid) { } else { /* child */ - pa_reset_priority(); + pa_reset_personality(); pa_assert_se(pa_close(pipe_fds[0]) == 0); - pa_assert_se(dup2(pipe_fds[1], 1) == 1); + pa_assert_se(dup2(pipe_fds[1], STDOUT_FILENO) == STDOUT_FILENO); - if (pipe_fds[1] != 1) + if (pipe_fds[1] != STDOUT_FILENO) pa_assert_se(pa_close(pipe_fds[1]) == 0); - pa_close(0); - pa_assert_se(open("/dev/null", O_RDONLY) == 0); + pa_close(STDIN_FILENO); + pa_assert_se(open("/dev/null", O_RDONLY) == STDIN_FILENO); - pa_close(2); - pa_assert_se(open("/dev/null", O_WRONLY) == 2); + pa_close(STDERR_FILENO); + pa_assert_se(open("/dev/null", O_WRONLY) == STDERR_FILENO); pa_close_all(-1); pa_reset_sigs(-1); pa_unblock_sigs(-1); + pa_reset_priority(); + pa_unset_env_recorded(); + + /* Make sure our children are not influenced by the + * LD_BIND_NOW we set for ourselves. */ + unsetenv("LD_BIND_NOW"); #ifdef PR_SET_PDEATHSIG /* On Linux we can use PR_SET_PDEATHSIG to have the helper diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c new file mode 100644 index 000000000..5bd1448f3 --- /dev/null +++ b/src/pulsecore/svolume_arm.c @@ -0,0 +1,195 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include +#include +#include +#include +#include + +#include "cpu-arm.h" + +#include "sample-util.h" +#include "endianmacros.h" + +#if defined (__arm__) + +#define MOD_INC() \ + " subs r0, r6, %2 \n\t" \ + " addcs r0, %1 \n\t" \ + " movcs r6, r0 \n\t" + +static void +pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + int32_t *ve; + + channels = PA_MAX (4U, channels); + ve = volumes + channels; + + __asm__ __volatile__ ( + " mov r6, %1 \n\t" + " mov %3, %3, LSR #1 \n\t" /* length /= sizeof (int16_t) */ + " tst %3, #1 \n\t" /* check for odd samples */ + " beq 2f \n\t" + + "1: \n\t" + " ldr r0, [r6], #4 \n\t" /* odd samples volumes */ + " ldrh r2, [%0] \n\t" + + " smulwb r0, r0, r2 \n\t" + " ssat r0, #16, r0 \n\t" + + " strh r0, [%0], #2 \n\t" + + MOD_INC() + + "2: \n\t" + " mov %3, %3, LSR #1 \n\t" + " tst %3, #1 \n\t" /* check for odd samples */ + " beq 4f \n\t" + + "3: \n\t" + " ldrd r2, [r6], #8 \n\t" /* 2 samples at a time */ + " ldr r0, [%0] \n\t" + + " smulwt r2, r2, r0 \n\t" + " smulwb r3, r3, r0 \n\t" + + " ssat r2, #16, r2 \n\t" + " ssat r3, #16, r3 \n\t" + + " pkhbt r0, r3, r2, LSL #16 \n\t" + " str r0, [%0], #4 \n\t" + + MOD_INC() + + "4: \n\t" + " movs %3, %3, LSR #1 \n\t" + " beq 6f \n\t" + + "5: \n\t" + " ldrd r2, [r6], #8 \n\t" /* 4 samples at a time */ + " ldrd r4, [r6], #8 \n\t" + " ldrd r0, [%0] \n\t" + + " smulwt r2, r2, r0 \n\t" + " smulwb r3, r3, r0 \n\t" + " smulwt r4, r4, r1 \n\t" + " smulwb r5, r5, r1 \n\t" + + " ssat r2, #16, r2 \n\t" + " ssat r3, #16, r3 \n\t" + " ssat r4, #16, r4 \n\t" + " ssat r5, #16, r5 \n\t" + + " pkhbt r0, r3, r2, LSL #16 \n\t" + " pkhbt r1, r5, r4, LSL #16 \n\t" + " strd r0, [%0], #8 \n\t" + + MOD_INC() + + " subs %3, %3, #1 \n\t" + " bne 5b \n\t" + "6: \n\t" + + : "+r" (samples), "+r" (volumes), "+r" (ve), "+r" (length) + : + : "r6", "r5", "r4", "r3", "r2", "r1", "r0", "cc" + ); +} + +#undef RUN_TEST + +#ifdef RUN_TEST +#define CHANNELS 2 +#define SAMPLES 1023 +#define TIMES 1000 +#define PADDING 16 + +static void run_test (void) { + int16_t samples[SAMPLES]; + int16_t samples_ref[SAMPLES]; + int16_t samples_orig[SAMPLES]; + int32_t volumes[CHANNELS + PADDING]; + int i, j, padding; + pa_do_volume_func_t func; + pa_usec_t start, stop; + + func = pa_get_volume_func (PA_SAMPLE_S16NE); + + printf ("checking ARM %zd\n", sizeof (samples)); + + pa_random (samples, sizeof (samples)); + memcpy (samples_ref, samples, sizeof (samples)); + memcpy (samples_orig, samples, sizeof (samples)); + + for (i = 0; i < CHANNELS; i++) + volumes[i] = rand() >> 1; + for (padding = 0; padding < PADDING; padding++, i++) + volumes[i] = volumes[padding]; + + func (samples_ref, volumes, CHANNELS, sizeof (samples)); + pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples)); + for (i = 0; i < SAMPLES; i++) { + if (samples[i] != samples_ref[i]) { + printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i], + samples_orig[i], volumes[i % CHANNELS]); + } + } + + start = pa_rtclock_now(); + for (j = 0; j < TIMES; j++) { + memcpy (samples, samples_orig, sizeof (samples)); + pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples)); + } + stop = pa_rtclock_now(); + pa_log_info("ARM: %llu usec.", (long long unsigned int) (stop - start)); + + start = pa_rtclock_now(); + for (j = 0; j < TIMES; j++) { + memcpy (samples_ref, samples_orig, sizeof (samples)); + func (samples_ref, volumes, CHANNELS, sizeof (samples)); + } + stop = pa_rtclock_now(); + pa_log_info("ref: %llu usec.", (long long unsigned int) (stop - start)); +} +#endif + +#endif /* defined (__arm__) */ + + +void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) { +#if defined (__arm__) + pa_log_info("Initialising ARM optimized functions."); + +#ifdef RUN_TEST + run_test (); +#endif + + pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_arm); +#endif /* defined (__arm__) */ +} diff --git a/src/pulsecore/svolume_c.c b/src/pulsecore/svolume_c.c new file mode 100644 index 000000000..5fc052b84 --- /dev/null +++ b/src/pulsecore/svolume_c.c @@ -0,0 +1,335 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2006 Pierre Ossman for Cendio AB + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include +#include +#include + +#include "sample-util.h" +#include "endianmacros.h" + +static void +pa_volume_u8_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + for (channel = 0; length; length--) { + int32_t t, hi, lo; + + hi = volumes[channel] >> 16; + lo = volumes[channel] & 0xFFFF; + + t = (int32_t) *samples - 0x80; + t = ((t * lo) >> 16) + (t * hi); + t = PA_CLAMP_UNLIKELY(t, -0x80, 0x7F); + *samples++ = (uint8_t) (t + 0x80); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_alaw_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + for (channel = 0; length; length--) { + int32_t t, hi, lo; + + hi = volumes[channel] >> 16; + lo = volumes[channel] & 0xFFFF; + + t = (int32_t) st_alaw2linear16(*samples); + t = ((t * lo) >> 16) + (t * hi); + t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); + *samples++ = (uint8_t) st_13linear2alaw((int16_t) t >> 3); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_ulaw_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + for (channel = 0; length; length--) { + int32_t t, hi, lo; + + hi = volumes[channel] >> 16; + lo = volumes[channel] & 0xFFFF; + + t = (int32_t) st_ulaw2linear16(*samples); + t = ((t * lo) >> 16) + (t * hi); + t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); + *samples++ = (uint8_t) st_14linear2ulaw((int16_t) t >> 2); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s16ne_c (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (int16_t); + + for (channel = 0; length; length--) { + int32_t t, hi, lo; + + /* Multiplying the 32bit volume factor with the 16bit + * sample might result in an 48bit value. We want to + * do without 64 bit integers and hence do the + * multiplication independantly for the HI and LO part + * of the volume. */ + + hi = volumes[channel] >> 16; + lo = volumes[channel] & 0xFFFF; + + t = (int32_t)(*samples); + t = ((t * lo) >> 16) + (t * hi); + t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); + *samples++ = (int16_t) t; + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s16re_c (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (int16_t); + + for (channel = 0; length; length--) { + int32_t t, hi, lo; + + hi = volumes[channel] >> 16; + lo = volumes[channel] & 0xFFFF; + + t = (int32_t) PA_INT16_SWAP(*samples); + t = ((t * lo) >> 16) + (t * hi); + t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF); + *samples++ = PA_INT16_SWAP((int16_t) t); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_float32ne_c (float *samples, float *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (float); + + for (channel = 0; length; length--) { + *samples++ *= volumes[channel]; + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_float32re_c (float *samples, float *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (float); + + for (channel = 0; length; length--) { + float t; + + t = PA_FLOAT32_SWAP(*samples); + t *= volumes[channel]; + *samples++ = PA_FLOAT32_SWAP(t); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s32ne_c (int32_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (int32_t); + + for (channel = 0; length; length--) { + int64_t t; + + t = (int64_t)(*samples); + t = (t * volumes[channel]) >> 16; + t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); + *samples++ = (int32_t) t; + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s32re_c (int32_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (int32_t); + + for (channel = 0; length; length--) { + int64_t t; + + t = (int64_t) PA_INT32_SWAP(*samples); + t = (t * volumes[channel]) >> 16; + t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); + *samples++ = PA_INT32_SWAP((int32_t) t); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s24ne_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + uint8_t *e; + + e = samples + length; + + for (channel = 0; samples < e; samples += 3) { + int64_t t; + + t = (int64_t)((int32_t) (PA_READ24NE(samples) << 8)); + t = (t * volumes[channel]) >> 16; + t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); + PA_WRITE24NE(samples, ((uint32_t) (int32_t) t) >> 8); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s24re_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + uint8_t *e; + + e = samples + length; + + for (channel = 0; samples < e; samples += 3) { + int64_t t; + + t = (int64_t)((int32_t) (PA_READ24RE(samples) << 8)); + t = (t * volumes[channel]) >> 16; + t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); + PA_WRITE24RE(samples, ((uint32_t) (int32_t) t) >> 8); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s24_32ne_c (uint32_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (uint32_t); + + for (channel = 0; length; length--) { + int64_t t; + + t = (int64_t) ((int32_t) (*samples << 8)); + t = (t * volumes[channel]) >> 16; + t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); + *samples++ = ((uint32_t) ((int32_t) t)) >> 8; + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static void +pa_volume_s24_32re_c (uint32_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + unsigned channel; + + length /= sizeof (uint32_t); + + for (channel = 0; length; length--) { + int64_t t; + + t = (int64_t) ((int32_t) (PA_UINT32_SWAP(*samples) << 8)); + t = (t * volumes[channel]) >> 16; + t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL); + *samples++ = PA_UINT32_SWAP(((uint32_t) ((int32_t) t)) >> 8); + + if (PA_UNLIKELY(++channel >= channels)) + channel = 0; + } +} + +static pa_do_volume_func_t do_volume_table[] = +{ + [PA_SAMPLE_U8] = (pa_do_volume_func_t) pa_volume_u8_c, + [PA_SAMPLE_ALAW] = (pa_do_volume_func_t) pa_volume_alaw_c, + [PA_SAMPLE_ULAW] = (pa_do_volume_func_t) pa_volume_ulaw_c, + [PA_SAMPLE_S16NE] = (pa_do_volume_func_t) pa_volume_s16ne_c, + [PA_SAMPLE_S16RE] = (pa_do_volume_func_t) pa_volume_s16re_c, + [PA_SAMPLE_FLOAT32NE] = (pa_do_volume_func_t) pa_volume_float32ne_c, + [PA_SAMPLE_FLOAT32RE] = (pa_do_volume_func_t) pa_volume_float32re_c, + [PA_SAMPLE_S32NE] = (pa_do_volume_func_t) pa_volume_s32ne_c, + [PA_SAMPLE_S32RE] = (pa_do_volume_func_t) pa_volume_s32re_c, + [PA_SAMPLE_S24NE] = (pa_do_volume_func_t) pa_volume_s24ne_c, + [PA_SAMPLE_S24RE] = (pa_do_volume_func_t) pa_volume_s24re_c, + [PA_SAMPLE_S24_32NE] = (pa_do_volume_func_t) pa_volume_s24_32ne_c, + [PA_SAMPLE_S24_32RE] = (pa_do_volume_func_t) pa_volume_s24_32re_c +}; + +pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f) { + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + return do_volume_table[f]; +} + +void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func) { + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + do_volume_table[f] = func; +} diff --git a/src/pulsecore/svolume_mmx.c b/src/pulsecore/svolume_mmx.c new file mode 100644 index 000000000..74918e78d --- /dev/null +++ b/src/pulsecore/svolume_mmx.c @@ -0,0 +1,316 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include +#include +#include +#include +#include + +#include "cpu-x86.h" + +#include "sample-util.h" +#include "endianmacros.h" + +#if defined (__i386__) || defined (__amd64__) +/* in s: 2 int16_t samples + * in v: 2 int32_t volumes, fixed point 16:16 + * out s: contains scaled and clamped int16_t samples. + * + * We calculate the high 32 bits of a 32x16 multiply which we then + * clamp to 16 bits. The calulcation is: + * + * vl = (v & 0xffff) + * vh = (v >> 16) + * s = ((s * vl) >> 16) + (s * vh); + * + * For the first multiply we have to do a sign correction as we need to + * multiply a signed int with an unsigned int. Hacker's delight 8-3 gives a + * simple formula to correct the sign of the high word after the signed + * multiply. + */ +#define VOLUME_32x16(s,v) /* .. | vh | vl | */ \ + " pxor %%mm4, %%mm4 \n\t" /* .. | 0 | 0 | */ \ + " punpcklwd %%mm4, "#s" \n\t" /* .. | 0 | p0 | */ \ + " pcmpgtw "#v", %%mm4 \n\t" /* .. | 0 | s(vl) | */ \ + " pand "#s", %%mm4 \n\t" /* .. | 0 | (p0) | (vl >> 15) & p */ \ + " movq %%mm6, %%mm5 \n\t" /* .. | ffff | 0 | */ \ + " pand "#v", %%mm5 \n\t" /* .. | vh | 0 | */ \ + " por %%mm5, %%mm4 \n\t" /* .. | vh | (p0) | */ \ + " pmulhw "#s", "#v" \n\t" /* .. | 0 | vl*p0 | */ \ + " paddw %%mm4, "#v" \n\t" /* .. | vh | vl*p0 | vh + sign correct */ \ + " pslld $16, "#s" \n\t" /* .. | p0 | 0 | */ \ + " por %%mm7, "#s" \n\t" /* .. | p0 | 1 | */ \ + " pmaddwd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \ + " packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */ + +/* approximately advances %3 = (%3 + a) % b. This function requires that + * a <= b. */ +#define MOD_ADD(a,b) \ + " add "#a", %3 \n\t" \ + " mov %3, %4 \n\t" \ + " sub "#b", %4 \n\t" \ + " cmovae %4, %3 \n\t" + +/* swap 16 bits */ +#define SWAP_16(s) \ + " movq "#s", %%mm4 \n\t" /* .. | h l | */ \ + " psrlw $8, %%mm4 \n\t" /* .. | 0 h | */ \ + " psllw $8, "#s" \n\t" /* .. | l 0 | */ \ + " por %%mm4, "#s" \n\t" /* .. | l h | */ + +/* swap 2 registers 16 bits for better pairing */ +#define SWAP_16_2(s1,s2) \ + " movq "#s1", %%mm4 \n\t" /* .. | h l | */ \ + " movq "#s2", %%mm5 \n\t" \ + " psrlw $8, %%mm4 \n\t" /* .. | 0 h | */ \ + " psrlw $8, %%mm5 \n\t" \ + " psllw $8, "#s1" \n\t" /* .. | l 0 | */ \ + " psllw $8, "#s2" \n\t" \ + " por %%mm4, "#s1" \n\t" /* .. | l h | */ \ + " por %%mm5, "#s2" \n\t" + +static void +pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + pa_reg_x86 channel, temp; + + /* the max number of samples we process at a time, this is also the max amount + * we overread the volume array, which should have enough padding. */ + channels = PA_MAX (4U, channels); + + __asm__ __volatile__ ( + " xor %3, %3 \n\t" + " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */ + " pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */ + " pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */ + " pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */ + " psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */ + + " test $1, %2 \n\t" /* check for odd samples */ + " je 2f \n\t" + + " movd (%1, %3, 4), %%mm0 \n\t" /* | v0h | v0l | */ + " movw (%0), %w4 \n\t" /* .. | p0 | */ + " movd %4, %%mm1 \n\t" + VOLUME_32x16 (%%mm1, %%mm0) + " movd %%mm0, %4 \n\t" /* .. | p0*v0 | */ + " movw %w4, (%0) \n\t" + " add $2, %0 \n\t" + MOD_ADD ($1, %5) + + "2: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */ + " test $1, %2 \n\t" /* check for odd samples */ + " je 4f \n\t" + + "3: \n\t" /* do samples in groups of 2 */ + " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */ + " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */ + VOLUME_32x16 (%%mm1, %%mm0) + " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */ + " add $4, %0 \n\t" + MOD_ADD ($2, %5) + + "4: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */ + " cmp $0, %2 \n\t" + " je 6f \n\t" + + "5: \n\t" /* do samples in groups of 4 */ + " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */ + " movq 8(%1, %3, 4), %%mm2 \n\t" /* | v3h | v3l | v2h | v2l | */ + " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */ + " movd 4(%0), %%mm3 \n\t" /* .. | p3 | p2 | */ + VOLUME_32x16 (%%mm1, %%mm0) + VOLUME_32x16 (%%mm3, %%mm2) + " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */ + " movd %%mm2, 4(%0) \n\t" /* .. | p3*v3 | p2*v2 | */ + " add $8, %0 \n\t" + MOD_ADD ($4, %5) + " dec %2 \n\t" + " jne 5b \n\t" + + "6: \n\t" + " emms \n\t" + + : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp) + : "r" ((pa_reg_x86)channels) + : "cc" + ); +} + +static void +pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + pa_reg_x86 channel, temp; + + /* the max number of samples we process at a time, this is also the max amount + * we overread the volume array, which should have enough padding. */ + channels = PA_MAX (4U, channels); + + __asm__ __volatile__ ( + " xor %3, %3 \n\t" + " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */ + " pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */ + " pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */ + " pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */ + " psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */ + + " test $1, %2 \n\t" /* check for odd samples */ + " je 2f \n\t" + + " movd (%1, %3, 4), %%mm0 \n\t" /* | v0h | v0l | */ + " movw (%0), %w4 \n\t" /* .. | p0 | */ + " rorw $8, %w4 \n\t" + " movd %4, %%mm1 \n\t" + VOLUME_32x16 (%%mm1, %%mm0) + " movd %%mm0, %4 \n\t" /* .. | p0*v0 | */ + " rorw $8, %w4 \n\t" + " movw %w4, (%0) \n\t" + " add $2, %0 \n\t" + MOD_ADD ($1, %5) + + "2: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */ + " test $1, %2 \n\t" /* check for odd samples */ + " je 4f \n\t" + + "3: \n\t" /* do samples in groups of 2 */ + " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */ + " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */ + SWAP_16 (%%mm1) + VOLUME_32x16 (%%mm1, %%mm0) + SWAP_16 (%%mm0) + " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */ + " add $4, %0 \n\t" + MOD_ADD ($2, %5) + + "4: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */ + " cmp $0, %2 \n\t" + " je 6f \n\t" + + "5: \n\t" /* do samples in groups of 4 */ + " movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */ + " movq 8(%1, %3, 4), %%mm2 \n\t" /* | v3h | v3l | v2h | v2l | */ + " movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */ + " movd 4(%0), %%mm3 \n\t" /* .. | p3 | p2 | */ + SWAP_16_2 (%%mm1, %%mm3) + VOLUME_32x16 (%%mm1, %%mm0) + VOLUME_32x16 (%%mm3, %%mm2) + SWAP_16_2 (%%mm0, %%mm2) + " movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */ + " movd %%mm2, 4(%0) \n\t" /* .. | p3*v3 | p2*v2 | */ + " add $8, %0 \n\t" + MOD_ADD ($4, %5) + " dec %2 \n\t" + " jne 5b \n\t" + + "6: \n\t" + " emms \n\t" + + : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp) + : "r" ((pa_reg_x86)channels) + : "cc" + ); +} + +#undef RUN_TEST + +#ifdef RUN_TEST +#define CHANNELS 2 +#define SAMPLES 1021 +#define TIMES 1000 +#define PADDING 16 + +static void run_test (void) { + int16_t samples[SAMPLES]; + int16_t samples_ref[SAMPLES]; + int16_t samples_orig[SAMPLES]; + int32_t volumes[CHANNELS + PADDING]; + int i, j, padding; + pa_do_volume_func_t func; + pa_usec_t start, stop; + + func = pa_get_volume_func (PA_SAMPLE_S16NE); + + printf ("checking MMX %zd\n", sizeof (samples)); + + pa_random (samples, sizeof (samples)); + memcpy (samples_ref, samples, sizeof (samples)); + memcpy (samples_orig, samples, sizeof (samples)); + + for (i = 0; i < CHANNELS; i++) + volumes[i] = rand() >> 1; + for (padding = 0; padding < PADDING; padding++, i++) + volumes[i] = volumes[padding]; + + func (samples_ref, volumes, CHANNELS, sizeof (samples)); + pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples)); + for (i = 0; i < SAMPLES; i++) { + if (samples[i] != samples_ref[i]) { + printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i], + samples_orig[i], volumes[i % CHANNELS]); + } + } + + start = pa_rtclock_now(); + for (j = 0; j < TIMES; j++) { + memcpy (samples, samples_orig, sizeof (samples)); + pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples)); + } + stop = pa_rtclock_now(); + pa_log_info("MMX: %llu usec.", (long long unsigned int)(stop - start)); + + start = pa_rtclock_now(); + for (j = 0; j < TIMES; j++) { + memcpy (samples_ref, samples_orig, sizeof (samples)); + func (samples_ref, volumes, CHANNELS, sizeof (samples)); + } + stop = pa_rtclock_now(); + pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start)); +} +#endif + +#endif /* defined (__i386__) || defined (__amd64__) */ + + +void pa_volume_func_init_mmx (pa_cpu_x86_flag_t flags) { +#if defined (__i386__) || defined (__amd64__) + +#ifdef RUN_TEST + run_test (); +#endif + + if (flags & PA_CPU_X86_MMX) { + pa_log_info("Initialising MMX optimized functions."); + + pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_mmx); + pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_mmx); + } +#endif /* defined (__i386__) || defined (__amd64__) */ +} diff --git a/src/pulsecore/svolume_sse.c b/src/pulsecore/svolume_sse.c new file mode 100644 index 000000000..bbd73a9b8 --- /dev/null +++ b/src/pulsecore/svolume_sse.c @@ -0,0 +1,317 @@ +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans + + 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 +#endif + +#include +#include +#include +#include +#include + +#include "cpu-x86.h" + +#include "sample-util.h" +#include "endianmacros.h" + +#if defined (__i386__) || defined (__amd64__) + +#define VOLUME_32x16(s,v) /* .. | vh | vl | */ \ + " pxor %%xmm4, %%xmm4 \n\t" /* .. | 0 | 0 | */ \ + " punpcklwd %%xmm4, "#s" \n\t" /* .. | 0 | p0 | */ \ + " pcmpgtw "#s", %%xmm4 \n\t" /* .. | 0 | s(p0) | */ \ + " pand "#v", %%xmm4 \n\t" /* .. | 0 | (vl) | */ \ + " movdqa "#s", %%xmm5 \n\t" \ + " pmulhuw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */ \ + " psubd %%xmm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign correct */ \ + " psrld $16, "#v" \n\t" /* .. | p0 | 0 | */ \ + " pmaddwd %%xmm5, "#v" \n\t" /* .. | p0 * vh | */ \ + " paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \ + " packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */ + +#define MOD_ADD(a,b) \ + " add "#a", %3 \n\t" /* channel += inc */ \ + " mov %3, %4 \n\t" \ + " sub "#b", %4 \n\t" /* tmp = channel - channels */ \ + " cmovae %4, %3 \n\t" /* if (tmp >= 0) channel = tmp */ + +/* swap 16 bits */ +#define SWAP_16(s) \ + " movdqa "#s", %%xmm4 \n\t" /* .. | h l | */ \ + " psrlw $8, %%xmm4 \n\t" /* .. | 0 h | */ \ + " psllw $8, "#s" \n\t" /* .. | l 0 | */ \ + " por %%xmm4, "#s" \n\t" /* .. | l h | */ + +/* swap 2 registers 16 bits for better pairing */ +#define SWAP_16_2(s1,s2) \ + " movdqa "#s1", %%xmm4 \n\t" /* .. | h l | */ \ + " movdqa "#s2", %%xmm5 \n\t" \ + " psrlw $8, %%xmm4 \n\t" /* .. | 0 h | */ \ + " psrlw $8, %%xmm5 \n\t" \ + " psllw $8, "#s1" \n\t" /* .. | l 0 | */ \ + " psllw $8, "#s2" \n\t" \ + " por %%xmm4, "#s1" \n\t" /* .. | l h | */ \ + " por %%xmm5, "#s2" \n\t" + +static void +pa_volume_s16ne_sse2 (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + pa_reg_x86 channel, temp; + + /* the max number of samples we process at a time, this is also the max amount + * we overread the volume array, which should have enough padding. */ + channels = PA_MAX (8U, channels); + + __asm__ __volatile__ ( + " xor %3, %3 \n\t" + " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */ + + " test $1, %2 \n\t" /* check for odd samples */ + " je 2f \n\t" + + " movd (%1, %3, 4), %%xmm0 \n\t" /* | v0h | v0l | */ + " movw (%0), %w4 \n\t" /* .. | p0 | */ + " movd %4, %%xmm1 \n\t" + VOLUME_32x16 (%%xmm1, %%xmm0) + " movd %%xmm0, %4 \n\t" /* .. | p0*v0 | */ + " movw %w4, (%0) \n\t" + " add $2, %0 \n\t" + MOD_ADD ($1, %5) + + "2: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */ + " test $1, %2 \n\t" + " je 4f \n\t" + + "3: \n\t" /* do samples in groups of 2 */ + " movq (%1, %3, 4), %%xmm0 \n\t" /* | v1h | v1l | v0h | v0l | */ + " movd (%0), %%xmm1 \n\t" /* .. | p1 | p0 | */ + VOLUME_32x16 (%%xmm1, %%xmm0) + " movd %%xmm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */ + " add $4, %0 \n\t" + MOD_ADD ($2, %5) + + "4: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */ + " test $1, %2 \n\t" + " je 6f \n\t" + + /* FIXME, we can do aligned access of the volume values if we can guarantee + * that the array is 16 bytes aligned, we probably have to do the odd values + * after this then. */ + "5: \n\t" /* do samples in groups of 4 */ + " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */ + " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */ + VOLUME_32x16 (%%xmm1, %%xmm0) + " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */ + " add $8, %0 \n\t" + MOD_ADD ($4, %5) + + "6: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 8 samples at a time */ + " cmp $0, %2 \n\t" + " je 8f \n\t" + + "7: \n\t" /* do samples in groups of 8 */ + " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */ + " movdqu 16(%1, %3, 4), %%xmm2 \n\t" /* | v7h | v7l .. v4h | v4l | */ + " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */ + " movq 8(%0), %%xmm3 \n\t" /* .. | p7 .. p4 | */ + VOLUME_32x16 (%%xmm1, %%xmm0) + VOLUME_32x16 (%%xmm3, %%xmm2) + " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */ + " movq %%xmm2, 8(%0) \n\t" /* .. | p7*v7 .. p4*v4 | */ + " add $16, %0 \n\t" + MOD_ADD ($8, %5) + " dec %2 \n\t" + " jne 7b \n\t" + "8: \n\t" + + : "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r" (temp) + : "r" ((pa_reg_x86)channels) + : "cc" + ); +} + +static void +pa_volume_s16re_sse2 (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) +{ + pa_reg_x86 channel, temp; + + /* the max number of samples we process at a time, this is also the max amount + * we overread the volume array, which should have enough padding. */ + channels = PA_MAX (8U, channels); + + __asm__ __volatile__ ( + " xor %3, %3 \n\t" + " sar $1, %2 \n\t" /* length /= sizeof (int16_t) */ + + " test $1, %2 \n\t" /* check for odd samples */ + " je 2f \n\t" + + " movd (%1, %3, 4), %%xmm0 \n\t" /* | v0h | v0l | */ + " movw (%0), %w4 \n\t" /* .. | p0 | */ + " rorw $8, %w4 \n\t" + " movd %4, %%xmm1 \n\t" + VOLUME_32x16 (%%xmm1, %%xmm0) + " movd %%xmm0, %4 \n\t" /* .. | p0*v0 | */ + " rorw $8, %w4 \n\t" + " movw %w4, (%0) \n\t" + " add $2, %0 \n\t" + MOD_ADD ($1, %5) + + "2: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */ + " test $1, %2 \n\t" + " je 4f \n\t" + + "3: \n\t" /* do samples in groups of 2 */ + " movq (%1, %3, 4), %%xmm0 \n\t" /* | v1h | v1l | v0h | v0l | */ + " movd (%0), %%xmm1 \n\t" /* .. | p1 | p0 | */ + SWAP_16 (%%xmm1) + VOLUME_32x16 (%%xmm1, %%xmm0) + SWAP_16 (%%xmm0) + " movd %%xmm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */ + " add $4, %0 \n\t" + MOD_ADD ($2, %5) + + "4: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */ + " test $1, %2 \n\t" + " je 6f \n\t" + + /* FIXME, we can do aligned access of the volume values if we can guarantee + * that the array is 16 bytes aligned, we probably have to do the odd values + * after this then. */ + "5: \n\t" /* do samples in groups of 4 */ + " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */ + " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */ + SWAP_16 (%%xmm1) + VOLUME_32x16 (%%xmm1, %%xmm0) + SWAP_16 (%%xmm0) + " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */ + " add $8, %0 \n\t" + MOD_ADD ($4, %5) + + "6: \n\t" + " sar $1, %2 \n\t" /* prepare for processing 8 samples at a time */ + " cmp $0, %2 \n\t" + " je 8f \n\t" + + "7: \n\t" /* do samples in groups of 8 */ + " movdqu (%1, %3, 4), %%xmm0 \n\t" /* | v3h | v3l .. v0h | v0l | */ + " movdqu 16(%1, %3, 4), %%xmm2 \n\t" /* | v7h | v7l .. v4h | v4l | */ + " movq (%0), %%xmm1 \n\t" /* .. | p3 .. p0 | */ + " movq 8(%0), %%xmm3 \n\t" /* .. | p7 .. p4 | */ + SWAP_16_2 (%%xmm1, %%xmm3) + VOLUME_32x16 (%%xmm1, %%xmm0) + VOLUME_32x16 (%%xmm3, %%xmm2) + SWAP_16_2 (%%xmm0, %%xmm2) + " movq %%xmm0, (%0) \n\t" /* .. | p3*v3 .. p0*v0 | */ + " movq %%xmm2, 8(%0) \n\t" /* .. | p7*v7 .. p4*v4 | */ + " add $16, %0 \n\t" + MOD_ADD ($8, %5) + " dec %2 \n\t" + " jne 7b \n\t" + "8: \n\t" + + : "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r" (temp) + : "r" ((pa_reg_x86)channels) + : "cc" + ); +} + +#undef RUN_TEST + +#ifdef RUN_TEST +#define CHANNELS 2 +#define SAMPLES 1021 +#define TIMES 1000 +#define PADDING 16 + +static void run_test (void) { + int16_t samples[SAMPLES]; + int16_t samples_ref[SAMPLES]; + int16_t samples_orig[SAMPLES]; + int32_t volumes[CHANNELS + PADDING]; + int i, j, padding; + pa_do_volume_func_t func; + pa_usec_t start, stop; + + func = pa_get_volume_func (PA_SAMPLE_S16NE); + + printf ("checking SSE %zd\n", sizeof (samples)); + + pa_random (samples, sizeof (samples)); + memcpy (samples_ref, samples, sizeof (samples)); + memcpy (samples_orig, samples, sizeof (samples)); + + for (i = 0; i < CHANNELS; i++) + volumes[i] = rand() >> 1; + for (padding = 0; padding < PADDING; padding++, i++) + volumes[i] = volumes[padding]; + + func (samples_ref, volumes, CHANNELS, sizeof (samples)); + pa_volume_s16ne_sse (samples, volumes, CHANNELS, sizeof (samples)); + for (i = 0; i < SAMPLES; i++) { + if (samples[i] != samples_ref[i]) { + printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i], + samples_orig[i], volumes[i % CHANNELS]); + } + } + + start = pa_rtclock_now(); + for (j = 0; j < TIMES; j++) { + memcpy (samples, samples_orig, sizeof (samples)); + pa_volume_s16ne_sse (samples, volumes, CHANNELS, sizeof (samples)); + } + stop = pa_rtclock_now(); + pa_log_info("SSE: %llu usec.", (long long unsigned int)(stop - start)); + + start = pa_rtclock_now(); + for (j = 0; j < TIMES; j++) { + memcpy (samples_ref, samples_orig, sizeof (samples)); + func (samples_ref, volumes, CHANNELS, sizeof (samples)); + } + stop = pa_rtclock_now(); + pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start)); +} +#endif +#endif /* defined (__i386__) || defined (__amd64__) */ + +void pa_volume_func_init_sse (pa_cpu_x86_flag_t flags) { +#if defined (__i386__) || defined (__amd64__) + +#ifdef RUN_TEST + run_test (); +#endif + + if (flags & PA_CPU_X86_SSE2) { + pa_log_info("Initialising SSE2 optimized functions."); + + pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_sse2); + pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_sse2); + } +#endif /* defined (__i386__) || defined (__amd64__) */ +} diff --git a/src/pulsecore/thread-mq.c b/src/pulsecore/thread-mq.c index 34f92a7e3..73997a743 100644 --- a/src/pulsecore/thread-mq.c +++ b/src/pulsecore/thread-mq.c @@ -59,7 +59,7 @@ static void asyncmsgq_read_cb(pa_mainloop_api*api, pa_io_event* e, int fd, pa_io pa_memchunk chunk; /* Check whether there is a message for us to process */ - while (pa_asyncmsgq_get(aq, &object, &code, &data, &offset, &chunk, 0) == 0) { + while (pa_asyncmsgq_get(aq, &object, &code, &data, &offset, &chunk, 0) >= 0) { int ret; ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk); @@ -104,6 +104,15 @@ void pa_thread_mq_init(pa_thread_mq *q, pa_mainloop_api *mainloop, pa_rtpoll *rt void pa_thread_mq_done(pa_thread_mq *q) { pa_assert(q); + /* Since we are called from main context we can be sure that the + * inq is empty. However, the outq might still contain messages + * for the main loop, which we need to dispatch (e.g. release + * msgs, other stuff). Hence do so if we aren't currently + * dispatching anyway. */ + + if (!pa_asyncmsgq_dispatching(q->outq)) + pa_asyncmsgq_flush(q->outq, TRUE); + q->mainloop->io_free(q->read_event); q->mainloop->io_free(q->write_event); q->read_event = q->write_event = NULL; diff --git a/src/pulsecore/thread-mq.h b/src/pulsecore/thread-mq.h index 3b5e0e780..96839d25f 100644 --- a/src/pulsecore/thread-mq.h +++ b/src/pulsecore/thread-mq.h @@ -45,4 +45,12 @@ void pa_thread_mq_install(pa_thread_mq *q); /* Return the pa_thread_mq object that is set for the current thread */ pa_thread_mq *pa_thread_mq_get(void); +/* Verify that we are in control context (aka 'main context'). */ +#define pa_assert_ctl_context(s) \ + pa_assert(!pa_thread_mq_get()) + +/* Verify that we are in IO context (aka 'thread context'). */ +#define pa_assert_io_context(s) \ + pa_assert(pa_thread_mq_get()) + #endif diff --git a/src/pulsecore/time-smoother.c b/src/pulsecore/time-smoother.c index 9d5a07058..d6c378785 100644 --- a/src/pulsecore/time-smoother.c +++ b/src/pulsecore/time-smoother.c @@ -108,29 +108,11 @@ pa_smoother* pa_smoother_new( s = pa_xnew(pa_smoother, 1); s->adjust_time = adjust_time; s->history_time = history_time; - s->time_offset = 0; + s->min_history = min_history; s->monotonic = monotonic; - - s->px = s->py = 0; - s->dp = 1; - - s->ex = s->ey = s->ry = 0; - s->de = 1; - - s->history_idx = 0; - s->n_history = 0; - - s->last_y = s->last_x = 0; - - s->abc_valid = FALSE; - - s->paused = FALSE; s->smoothing = smoothing; - s->min_history = min_history; - - s->paused = paused; - s->time_offset = s->pause_time = time_offset; + pa_smoother_reset(s, time_offset, paused); return s; } @@ -514,9 +496,26 @@ pa_usec_t pa_smoother_translate(pa_smoother *s, pa_usec_t x, pa_usec_t y_delay) return (pa_usec_t) llrint((double) y_delay / nde); } -void pa_smoother_reset(pa_smoother *s) { +void pa_smoother_reset(pa_smoother *s, pa_usec_t time_offset, pa_bool_t paused) { pa_assert(s); + s->px = s->py = 0; + s->dp = 1; + + s->ex = s->ey = s->ry = 0; + s->de = 1; + + s->history_idx = 0; s->n_history = 0; + + s->last_y = s->last_x = 0; + s->abc_valid = FALSE; + + s->paused = paused; + s->time_offset = s->pause_time = time_offset; + +#ifdef DEBUG_DATA + pa_log_debug("reset()"); +#endif } diff --git a/src/pulsecore/time-smoother.h b/src/pulsecore/time-smoother.h index 5244a7e7a..63d33e48f 100644 --- a/src/pulsecore/time-smoother.h +++ b/src/pulsecore/time-smoother.h @@ -52,7 +52,7 @@ void pa_smoother_set_time_offset(pa_smoother *s, pa_usec_t x_offset); void pa_smoother_pause(pa_smoother *s, pa_usec_t x); void pa_smoother_resume(pa_smoother *s, pa_usec_t x, pa_bool_t abrupt); -void pa_smoother_reset(pa_smoother *s); +void pa_smoother_reset(pa_smoother *s, pa_usec_t time_offset, pa_bool_t paused); void pa_smoother_fix_now(pa_smoother *s); diff --git a/src/pulsecore/usergroup.c b/src/pulsecore/usergroup.c new file mode 100644 index 000000000..71b13bca8 --- /dev/null +++ b/src/pulsecore/usergroup.c @@ -0,0 +1,372 @@ +/*** + This file is part of PulseAudio. + + Copyright 2009 Ted Percival + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#ifdef HAVE_PWD_H +#include +#endif + +#ifdef HAVE_GRP_H +#include +#endif + +#include +#include + +#include "usergroup.h" + +#ifdef HAVE_GRP_H + +/* Returns a suitable starting size for a getgrnam_r() or getgrgid_r() buffer, + plus the size of a struct group. + */ +static size_t starting_getgr_buflen(void) { + size_t full_size; + long n; +#ifdef _SC_GETGR_R_SIZE_MAX + n = sysconf(_SC_GETGR_R_SIZE_MAX); +#else + n = -1; +#endif + if (n <= 0) + n = 512; + + full_size = (size_t) n + sizeof(struct group); + + if (full_size < (size_t) n) /* check for integer overflow */ + return (size_t) n; + + return full_size; +} + +/* Returns a suitable starting size for a getpwnam_r() or getpwuid_r() buffer, + plus the size of a struct passwd. + */ +static size_t starting_getpw_buflen(void) { + long n; + size_t full_size; + +#ifdef _SC_GETPW_R_SIZE_MAX + n = sysconf(_SC_GETPW_R_SIZE_MAX); +#else + n = -1; +#endif + if (n <= 0) + n = 512; + + full_size = (size_t) n + sizeof(struct passwd); + + if (full_size < (size_t) n) /* check for integer overflow */ + return (size_t) n; + + return full_size; +} + +/* Given a memory allocation (*bufptr) and its length (*buflenptr), + double the size of the allocation, updating the given buffer and length + arguments. This function should be used in conjunction with the pa_*alloc + and pa_xfree functions. + + Unlike realloc(), this function does *not* retain the original buffer's + contents. + + Returns 0 on success, nonzero on error. The error cause is indicated by + errno. + */ +static int expand_buffer_trashcontents(void **bufptr, size_t *buflenptr) { + size_t newlen; + + if (!bufptr || !*bufptr || !buflenptr) { + errno = EINVAL; + return -1; + } + + newlen = *buflenptr * 2; + + if (newlen < *buflenptr) { + errno = EOVERFLOW; + return -1; + } + + /* Don't bother retaining memory contents; free & alloc anew */ + pa_xfree(*bufptr); + + *bufptr = pa_xmalloc(newlen); + *buflenptr = newlen; + + return 0; +} + +#ifdef HAVE_GETGRGID_R +/* Thread-safe getgrgid() replacement. + Returned value should be freed using pa_getgrgid_free() when the caller is + finished with the returned group data. + + API is the same as getgrgid(), errors are indicated by a NULL return; + consult errno for the error cause (zero it before calling). + */ +struct group *pa_getgrgid_malloc(gid_t gid) { + size_t buflen, getgr_buflen; + int err; + void *buf; + void *getgr_buf; + struct group *result = NULL; + + buflen = starting_getgr_buflen(); + buf = pa_xmalloc(buflen); + + getgr_buflen = buflen - sizeof(struct group); + getgr_buf = (char *)buf + sizeof(struct group); + + while ((err = getgrgid_r(gid, (struct group *)buf, getgr_buf, + getgr_buflen, &result)) == ERANGE) + { + if (expand_buffer_trashcontents(&buf, &buflen)) + break; + + getgr_buflen = buflen - sizeof(struct group); + getgr_buf = (char *)buf + sizeof(struct group); + } + + if (err || !result) { + result = NULL; + if (buf) { + pa_xfree(buf); + buf = NULL; + } + } + + pa_assert(result == buf || result == NULL); + + return result; +} + +void pa_getgrgid_free(struct group *grp) { + pa_xfree(grp); +} + +#else /* !HAVE_GETGRGID_R */ + +struct group *pa_getgrgid_malloc(gid_t gid) { + return getgrgid(gid); +} + +void pa_getgrgid_free(struct group *grp) { + /* nothing */ + return; +} + +#endif /* !HAVE_GETGRGID_R */ + +#ifdef HAVE_GETGRNAM_R +/* Thread-safe getgrnam() function. + Returned value should be freed using pa_getgrnam_free() when the caller is + finished with the returned group data. + + API is the same as getgrnam(), errors are indicated by a NULL return; + consult errno for the error cause (zero it before calling). + */ +struct group *pa_getgrnam_malloc(const char *name) { + size_t buflen, getgr_buflen; + int err; + void *buf; + void *getgr_buf; + struct group *result = NULL; + + buflen = starting_getgr_buflen(); + buf = pa_xmalloc(buflen); + + getgr_buflen = buflen - sizeof(struct group); + getgr_buf = (char *)buf + sizeof(struct group); + + while ((err = getgrnam_r(name, (struct group *)buf, getgr_buf, + getgr_buflen, &result)) == ERANGE) + { + if (expand_buffer_trashcontents(&buf, &buflen)) + break; + + getgr_buflen = buflen - sizeof(struct group); + getgr_buf = (char *)buf + sizeof(struct group); + } + + if (err || !result) { + result = NULL; + if (buf) { + pa_xfree(buf); + buf = NULL; + } + } + + pa_assert(result == buf || result == NULL); + + return result; +} + +void pa_getgrnam_free(struct group *group) { + pa_xfree(group); +} + +#else /* !HAVE_GETGRNAM_R */ + +struct group *pa_getgrnam_malloc(const char *name) { + return getgrnam(name); +} + +void pa_getgrnam_free(struct group *group) { + /* nothing */ + return; +} + +#endif /* HAVE_GETGRNAM_R */ + +#endif /* HAVE_GRP_H */ + +#ifdef HAVE_PWD_H + +#ifdef HAVE_GETPWNAM_R +/* Thread-safe getpwnam() function. + Returned value should be freed using pa_getpwnam_free() when the caller is + finished with the returned passwd data. + + API is the same as getpwnam(), errors are indicated by a NULL return; + consult errno for the error cause (zero it before calling). + */ +struct passwd *pa_getpwnam_malloc(const char *name) { + size_t buflen, getpw_buflen; + int err; + void *buf; + void *getpw_buf; + struct passwd *result = NULL; + + buflen = starting_getpw_buflen(); + buf = pa_xmalloc(buflen); + + getpw_buflen = buflen - sizeof(struct passwd); + getpw_buf = (char *)buf + sizeof(struct passwd); + + while ((err = getpwnam_r(name, (struct passwd *)buf, getpw_buf, + getpw_buflen, &result)) == ERANGE) + { + if (expand_buffer_trashcontents(&buf, &buflen)) + break; + + getpw_buflen = buflen - sizeof(struct passwd); + getpw_buf = (char *)buf + sizeof(struct passwd); + } + + if (err || !result) { + result = NULL; + if (buf) { + pa_xfree(buf); + buf = NULL; + } + } + + pa_assert(result == buf || result == NULL); + + return result; +} + +void pa_getpwnam_free(struct passwd *passwd) { + pa_xfree(passwd); +} + +#else /* !HAVE_GETPWNAM_R */ + +struct passwd *pa_getpwnam_malloc(const char *name) { + return getpwnam(name); +} + +void pa_getpwnam_free(struct passwd *passwd) { + /* nothing */ + return; +} + +#endif /* !HAVE_GETPWNAM_R */ + +#ifdef HAVE_GETPWUID_R +/* Thread-safe getpwuid() function. + Returned value should be freed using pa_getpwuid_free() when the caller is + finished with the returned group data. + + API is the same as getpwuid(), errors are indicated by a NULL return; + consult errno for the error cause (zero it before calling). + */ +struct passwd *pa_getpwuid_malloc(uid_t uid) { + size_t buflen, getpw_buflen; + int err; + void *buf; + void *getpw_buf; + struct passwd *result = NULL; + + buflen = starting_getpw_buflen(); + buf = pa_xmalloc(buflen); + + getpw_buflen = buflen - sizeof(struct passwd); + getpw_buf = (char *)buf + sizeof(struct passwd); + + while ((err = getpwuid_r(uid, (struct passwd *)buf, getpw_buf, + getpw_buflen, &result)) == ERANGE) + { + if (expand_buffer_trashcontents(&buf, &buflen)) + break; + + getpw_buflen = buflen - sizeof(struct passwd); + getpw_buf = (char *)buf + sizeof(struct passwd); + } + + if (err || !result) { + result = NULL; + if (buf) { + pa_xfree(buf); + buf = NULL; + } + } + + pa_assert(result == buf || result == NULL); + + return result; +} + +void pa_getpwuid_free(struct passwd *passwd) { + pa_xfree(passwd); +} + +#else /* !HAVE_GETPWUID_R */ + +struct passwd *pa_getpwuid_malloc(uid_t uid) { + return getpwuid(uid); +} + +void pa_getpwuid_free(struct passwd *passwd) { + /* nothing */ + return; +} + +#endif /* !HAVE_GETPWUID_R */ + +#endif /* HAVE_PWD_H */ diff --git a/src/pulsecore/usergroup.h b/src/pulsecore/usergroup.h new file mode 100644 index 000000000..1c0916385 --- /dev/null +++ b/src/pulsecore/usergroup.h @@ -0,0 +1,51 @@ +#ifndef foousergrouphfoo +#define foousergrouphfoo + +/*** + This file is part of PulseAudio. + + Copyright 2009 Ted Percival + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#include + +#ifndef PACKAGE +#error "Please include config.h before including this file!" +#endif + +#ifdef HAVE_GRP_H + +struct group *pa_getgrgid_malloc(gid_t gid); +void pa_getgrgid_free(struct group *grp); + +struct group *pa_getgrnam_malloc(const char *name); +void pa_getgrnam_free(struct group *group); + +#endif /* HAVE_GRP_H */ + +#ifdef HAVE_PWD_H + +struct passwd *pa_getpwuid_malloc(uid_t uid); +void pa_getpwuid_free(struct passwd *passwd); + +struct passwd *pa_getpwnam_malloc(const char *name); +void pa_getpwnam_free(struct passwd *passwd); + +#endif /* HAVE_PWD_H */ + +#endif /* foousergrouphfoo */ diff --git a/src/pulsecore/vector.h b/src/pulsecore/vector.h index 924e3cb86..9de3b8cdb 100644 --- a/src/pulsecore/vector.h +++ b/src/pulsecore/vector.h @@ -23,7 +23,8 @@ #include /* First, define HAVE_VECTOR if we have the gcc vector extensions at all */ -#if defined(__SSE2__) || defined(__ALTIVEC__) +#if defined(__SSE2__) + /* || defined(__ALTIVEC__)*/ #define HAVE_VECTOR diff --git a/src/tests/envelope-test.c b/src/tests/envelope-test.c index 3af3044ee..9382040b5 100644 --- a/src/tests/envelope-test.c +++ b/src/tests/envelope-test.c @@ -34,8 +34,6 @@ #include #include -#include - const pa_envelope_def ramp_down = { .n_points = 2, .points_x = { 100*PA_USEC_PER_MSEC, 300*PA_USEC_PER_MSEC }, @@ -202,7 +200,6 @@ int main(int argc, char *argv[]) { .values = { PA_VOLUME_NORM, PA_VOLUME_NORM/2 } }; - oil_init(); pa_log_set_level(PA_LOG_DEBUG); pa_assert_se(pool = pa_mempool_new(FALSE, 0)); diff --git a/src/tests/get-binary-name-test.c b/src/tests/get-binary-name-test.c index a34e38fd1..e49f2eff4 100644 --- a/src/tests/get-binary-name-test.c +++ b/src/tests/get-binary-name-test.c @@ -23,12 +23,33 @@ #include #include +#include #include +#include int main(int argc, char *argv[]) { - char exename[PATH_MAX]; + char *exename; + size_t allocated = 128; + + for (;;) { + exename = pa_xmalloc(allocated); + + if (!pa_get_binary_name(exename, allocated)) { + printf("failed to read binary name\n"); + pa_xfree(exename); + break; + } + + if (strlen(exename) < allocated - 1) { + printf("%s\n", exename); + pa_xfree(exename); + break; + } + + pa_xfree(exename); + allocated *= 2; + } - printf("%s\n", pa_get_binary_name(exename, sizeof(exename))); return 0; } diff --git a/src/tests/interpol-test.c b/src/tests/interpol-test.c index 0c906d3e4..007555c35 100644 --- a/src/tests/interpol-test.c +++ b/src/tests/interpol-test.c @@ -43,20 +43,37 @@ static pa_context *context = NULL; static pa_stream *stream = NULL; static pa_mainloop_api *mainloop_api = NULL; static pa_bool_t playback = TRUE; +static pa_usec_t latency = 0; static void stream_write_cb(pa_stream *p, size_t nbytes, void *userdata) { /* Just some silence */ - pa_assert_se(pa_stream_write(p, pa_xmalloc0(nbytes), nbytes, pa_xfree, 0, PA_SEEK_RELATIVE) == 0); + + for (;;) { + void *data; + + pa_assert_se((nbytes = pa_stream_writable_size(p)) != (size_t) -1); + + if (nbytes <= 0) + break; + + pa_assert_se(pa_stream_begin_write(p, &data, &nbytes) == 0); + pa_memzero(data, nbytes); + pa_assert_se(pa_stream_write(p, data, nbytes, NULL, 0, PA_SEEK_RELATIVE) == 0); + } } static void stream_read_cb(pa_stream *p, size_t nbytes, void *userdata) { - /* We don't care, just drop the data */ + /* We don't care about the data, just drop it */ - while (pa_stream_readable_size(p) > 0) { - const void *d; - size_t b; + for (;;) { + const void *data; - pa_assert_se(pa_stream_peek(p, &d, &b) == 0); + pa_assert_se((nbytes = pa_stream_readable_size(p)) != (size_t) -1); + + if (nbytes <= 0) + break; + + pa_assert_se(pa_stream_peek(p, &data, &nbytes) == 0); pa_assert_se(pa_stream_drop(p) == 0); } } @@ -82,27 +99,36 @@ static void context_state_callback(pa_context *c, void *userdata) { case PA_CONTEXT_READY: { pa_stream_flags_t flags = PA_STREAM_AUTO_TIMING_UPDATE; - + pa_buffer_attr attr; static const pa_sample_spec ss = { .format = PA_SAMPLE_S16LE, .rate = 44100, .channels = 2 }; + pa_zero(attr); + attr.maxlength = (uint32_t) -1; + attr.tlength = latency > 0 ? (uint32_t) pa_usec_to_bytes(latency, &ss) : (uint32_t) -1; + attr.prebuf = (uint32_t) -1; + attr.minreq = (uint32_t) -1; + attr.fragsize = (uint32_t) -1; + #ifdef INTERPOLATE flags |= PA_STREAM_INTERPOLATE_TIMING; #endif + if (latency > 0) + flags |= PA_STREAM_ADJUST_LATENCY; + fprintf(stderr, "Connection established.\n"); - stream = pa_stream_new(c, "interpol-test", &ss, NULL); - assert(stream); + pa_assert_se(stream = pa_stream_new(c, "interpol-test", &ss, NULL)); if (playback) { - pa_assert_se(pa_stream_connect_playback(stream, NULL, NULL, flags, NULL, NULL) == 0); + pa_assert_se(pa_stream_connect_playback(stream, NULL, &attr, flags, NULL, NULL) == 0); pa_stream_set_write_callback(stream, stream_write_cb, NULL); } else { - pa_assert_se(pa_stream_connect_record(stream, NULL, NULL, flags) == 0); + pa_assert_se(pa_stream_connect_record(stream, NULL, &attr, flags) == 0); pa_stream_set_read_callback(stream, stream_read_cb, NULL); } @@ -123,7 +149,7 @@ static void context_state_callback(pa_context *c, void *userdata) { int main(int argc, char *argv[]) { pa_threaded_mainloop* m = NULL; - int k, r; + int k; struct timeval start, last_info = { 0, 0 }; pa_usec_t old_t = 0, old_rtc = 0; #ifdef CORK @@ -134,24 +160,22 @@ int main(int argc, char *argv[]) { playback = argc <= 1 || !pa_streq(argv[1], "-r"); + latency = + (argc >= 2 && !pa_streq(argv[1], "-r")) ? atoi(argv[1]) : + (argc >= 3 ? atoi(argv[2]) : 0); + /* Set up a new main loop */ - m = pa_threaded_mainloop_new(); - assert(m); - - mainloop_api = pa_threaded_mainloop_get_api(m); - - context = pa_context_new(mainloop_api, argv[0]); - assert(context); + pa_assert_se(m = pa_threaded_mainloop_new()); + pa_assert_se(mainloop_api = pa_threaded_mainloop_get_api(m)); + pa_assert_se(context = pa_context_new(mainloop_api, argv[0])); pa_context_set_state_callback(context, context_state_callback, NULL); - r = pa_context_connect(context, NULL, 0, NULL); - assert(r >= 0); + pa_assert_se(pa_context_connect(context, NULL, 0, NULL) >= 0); pa_gettimeofday(&start); - r = pa_threaded_mainloop_start(m); - assert(r >= 0); + pa_assert_se(pa_threaded_mainloop_start(m) >= 0); /* #ifdef CORK */ for (k = 0; k < 20000; k++) @@ -160,7 +184,7 @@ int main(int argc, char *argv[]) { /* #endif */ { pa_bool_t success = FALSE, changed = FALSE; - pa_usec_t t, rtc; + pa_usec_t t, rtc, d; struct timeval now, tv; pa_bool_t playing = FALSE; @@ -169,7 +193,8 @@ int main(int argc, char *argv[]) { if (stream) { const pa_timing_info *info; - if (pa_stream_get_time(stream, &t) >= 0) + if (pa_stream_get_time(stream, &t) >= 0 && + pa_stream_get_latency(stream, &d, NULL) >= 0) success = TRUE; if ((info = pa_stream_get_timing_info(stream))) { @@ -191,14 +216,16 @@ int main(int argc, char *argv[]) { pa_bool_t cork_now; #endif rtc = pa_timeval_diff(&now, &start); - printf("%i\t%llu\t%llu\t%llu\t%llu\t%lli\t%u\t%u\n", k, + printf("%i\t%llu\t%llu\t%llu\t%llu\t%lli\t%u\t%u\t%llu\t%llu\n", k, (unsigned long long) rtc, (unsigned long long) t, (unsigned long long) (rtc-old_rtc), (unsigned long long) (t-old_t), (signed long long) rtc - (signed long long) t, changed, - playing); + playing, + (unsigned long long) latency, + (unsigned long long) d); fflush(stdout); old_t = t; diff --git a/src/tests/mix-test.c b/src/tests/mix-test.c index c7a30d673..457c4acd4 100644 --- a/src/tests/mix-test.c +++ b/src/tests/mix-test.c @@ -32,8 +32,6 @@ #include #include -#include - static float swap_float(float a) { uint32_t *b = (uint32_t*) &a; *b = PA_UINT32_SWAP(*b); @@ -69,6 +67,8 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) { break; } + case PA_SAMPLE_S24_32NE: + case PA_SAMPLE_S24_32RE: case PA_SAMPLE_S32NE: case PA_SAMPLE_S32RE: { uint32_t *u = d; @@ -83,8 +83,10 @@ static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) { case PA_SAMPLE_S24RE: { uint8_t *u = d; - for (i = 0; i < chunk->length / pa_frame_size(ss); i++) - printf("0x%02x%02x%02xx ", *(u++), *(u++), *(u++)); + for (i = 0; i < chunk->length / pa_frame_size(ss); i++) { + printf("0x%02x%02x%02xx ", *u, *(u+1), *(u+2)); + u += 3; + } break; } @@ -123,66 +125,72 @@ static pa_memblock* generate_block(pa_mempool *pool, const pa_sample_spec *ss) { case PA_SAMPLE_U8: case PA_SAMPLE_ULAW: case PA_SAMPLE_ALAW: { - static const uint8_t u8_samples[] = - { 0x00, 0xFF, 0x7F, 0x80, 0x9f, - 0x3f, 0x01, 0xF0, 0x20, 0x21 }; + static const uint8_t u8_samples[] = { + 0x00, 0xFF, 0x7F, 0x80, 0x9f, + 0x3f, 0x01, 0xF0, 0x20, 0x21 + }; - memcpy(d, &u8_samples[0], sizeof(u8_samples)); + memcpy(d, u8_samples, sizeof(u8_samples)); break; } case PA_SAMPLE_S16NE: case PA_SAMPLE_S16RE: { - static const uint16_t u16_samples[] = - { 0x0000, 0xFFFF, 0x7FFF, 0x8000, 0x9fff, - 0x3fff, 0x0001, 0xF000, 0x0020, 0x0021 }; + static const uint16_t u16_samples[] = { + 0x0000, 0xFFFF, 0x7FFF, 0x8000, 0x9fff, + 0x3fff, 0x0001, 0xF000, 0x0020, 0x0021 + }; - memcpy(d, &u16_samples[0], sizeof(u16_samples)); + memcpy(d, u16_samples, sizeof(u16_samples)); break; } + case PA_SAMPLE_S24_32NE: + case PA_SAMPLE_S24_32RE: case PA_SAMPLE_S32NE: case PA_SAMPLE_S32RE: { - static const uint32_t u32_samples[] = - { 0x00000001, 0xFFFF0002, 0x7FFF0003, 0x80000004, 0x9fff0005, - 0x3fff0006, 0x00010007, 0xF0000008, 0x00200009, 0x0021000A }; + static const uint32_t u32_samples[] = { + 0x00000001, 0xFFFF0002, 0x7FFF0003, 0x80000004, 0x9fff0005, + 0x3fff0006, 0x00010007, 0xF0000008, 0x00200009, 0x0021000A + }; - memcpy(d, &u32_samples[0], sizeof(u32_samples)); + memcpy(d, u32_samples, sizeof(u32_samples)); break; } case PA_SAMPLE_S24NE: case PA_SAMPLE_S24RE: { - /* Need to be on a byte array because they are not aligned */ - static const uint8_t u24_samples[] = - { 0x00, 0x00, 0x01, - 0xFF, 0xFF, 0x02, - 0x7F, 0xFF, 0x03, - 0x80, 0x00, 0x04, - 0x9f, 0xff, 0x05, - 0x3f, 0xff, 0x06, - 0x01, 0x00, 0x07, - 0xF0, 0x00, 0x08, - 0x20, 0x00, 0x09, - 0x21, 0x00, 0x0A }; + /* Need to be on a byte array because they are not aligned */ + static const uint8_t u24_samples[] = { + 0x00, 0x00, 0x01, + 0xFF, 0xFF, 0x02, + 0x7F, 0xFF, 0x03, + 0x80, 0x00, 0x04, + 0x9f, 0xff, 0x05, + 0x3f, 0xff, 0x06, + 0x01, 0x00, 0x07, + 0xF0, 0x00, 0x08, + 0x20, 0x00, 0x09, + 0x21, 0x00, 0x0A + }; - memcpy(d, &u24_samples[0], sizeof(u24_samples)); + memcpy(d, u24_samples, sizeof(u24_samples)); break; } case PA_SAMPLE_FLOAT32NE: case PA_SAMPLE_FLOAT32RE: { float *u = d; - static const float float_samples[] = - { 0.0f, -1.0f, 1.0f, 4711.0f, 0.222f, - 0.33f, -.3f, 99.0f, -0.555f, -.123f }; + static const float float_samples[] = { + 0.0f, -1.0f, 1.0f, 4711.0f, 0.222f, + 0.33f, -.3f, 99.0f, -0.555f, -.123f + }; if (ss->format == PA_SAMPLE_FLOAT32RE) { for (i = 0; i < 10; i++) u[i] = swap_float(float_samples[i]); - } else { - memcpy(d, &float_samples[0], sizeof(float_samples)); - } + } else + memcpy(d, float_samples, sizeof(float_samples)); break; } @@ -201,7 +209,6 @@ int main(int argc, char *argv[]) { pa_sample_spec a; pa_cvolume v; - oil_init(); pa_log_set_level(PA_LOG_DEBUG); pa_assert_se(pool = pa_mempool_new(FALSE, 0)); diff --git a/src/tests/remix-test.c b/src/tests/remix-test.c index 9d110d6b5..4990bf932 100644 --- a/src/tests/remix-test.c +++ b/src/tests/remix-test.c @@ -32,8 +32,6 @@ #include #include -#include - int main(int argc, char *argv[]) { static const pa_channel_map maps[] = { @@ -55,7 +53,6 @@ int main(int argc, char *argv[]) { unsigned i, j; pa_mempool *pool; - oil_init(); pa_log_set_level(PA_LOG_DEBUG); pa_assert_se(pool = pa_mempool_new(FALSE, 0)); diff --git a/src/tests/resampler-test.c b/src/tests/resampler-test.c index 7236265a7..82198b5ee 100644 --- a/src/tests/resampler-test.c +++ b/src/tests/resampler-test.c @@ -32,8 +32,6 @@ #include #include -#include - static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) { void *d; unsigned i; @@ -248,7 +246,6 @@ int main(int argc, char *argv[]) { pa_sample_spec a, b; pa_cvolume v; - oil_init(); pa_log_set_level(PA_LOG_DEBUG); pa_assert_se(pool = pa_mempool_new(FALSE, 0)); diff --git a/src/tests/stripnul.c b/src/tests/stripnul.c index 1d8c4938f..d677ad202 100644 --- a/src/tests/stripnul.c +++ b/src/tests/stripnul.c @@ -31,7 +31,7 @@ int main(int argc, char *argv[]) { FILE *i, *o; size_t granularity; - pa_bool_t found; + pa_bool_t found = FALSE; uint8_t *zero; pa_assert_se(argc >= 2); diff --git a/src/tests/usergroup-test.c b/src/tests/usergroup-test.c new file mode 100644 index 000000000..a48b016d2 --- /dev/null +++ b/src/tests/usergroup-test.c @@ -0,0 +1,161 @@ +/*** + This file is part of PulseAudio. + + Copyright 2009 Ted Percival + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +static int load_reference_structs(struct group **gr, struct passwd **pw) { + setpwent(); + *pw = getpwent(); + endpwent(); + + setgrent(); + *gr = getgrent(); + endgrent(); + + return (*gr && *pw) ? 0 : 1; +} + +static int compare_group(const struct group *a, const struct group *b) { + char **amem, **bmem; + + if (strcmp(a->gr_name, b->gr_name)) { + fprintf(stderr, "Group name mismatch: [%s] [%s]\n", + a->gr_name, b->gr_name); + return 1; + } + + if (strcmp(a->gr_passwd, b->gr_passwd)) { + fprintf(stderr, "Group password mismatch: [%s] [%s]\n", + a->gr_passwd, b->gr_passwd); + return 1; + } + + if (a->gr_gid != b->gr_gid) { + fprintf(stderr, "Gid mismatch: [%lu] [%lu]\n", + (unsigned long) a->gr_gid, (unsigned long) b->gr_gid); + return 1; + } + + /* XXX: Assuming the group ordering is identical. */ + for (amem = a->gr_mem, bmem = b->gr_mem; *amem && *bmem; ++amem, ++bmem) { + if (strcmp(*amem, *bmem)) { + fprintf(stderr, "Group member mismatch: [%s] [%s]\n", + *amem, *bmem); + return 1; + } + } + + if (*amem || *bmem) { + fprintf(stderr, "Mismatched group count\n"); + return 1; + } + + return 0; +} + +static int compare_passwd(const struct passwd *a, const struct passwd *b) { + if (strcmp(a->pw_name, b->pw_name)) { + fprintf(stderr, "pw_name mismatch: [%s] [%s]\n", a->pw_name, b->pw_name); + return 1; + } + + if (strcmp(a->pw_passwd, b->pw_passwd)) { + fprintf(stderr, "pw_passwd mismatch: [%s] [%s]\n", a->pw_passwd, b->pw_passwd); + return 1; + } + + if (a->pw_uid != b->pw_uid) { + fprintf(stderr, "pw_uid mismatch: [%lu] [%lu]\n", + (unsigned long) a->pw_uid, (unsigned long) b->pw_uid); + return 1; + } + + if (a->pw_gid != b->pw_gid) { + fprintf(stderr, "pw_gid mismatch: [%lu] [%lu]\n", + (unsigned long) a->pw_gid, (unsigned long) b->pw_gid); + return 1; + } + + if (strcmp(a->pw_gecos, b->pw_gecos)) { + fprintf(stderr, "pw_gecos mismatch: [%s] [%s]\n", a->pw_gecos, b->pw_gecos); + return 1; + } + + if (strcmp(a->pw_dir, b->pw_dir)) { + fprintf(stderr, "pw_dir mismatch: [%s] [%s]\n", a->pw_dir, b->pw_dir); + return 1; + } + + if (strcmp(a->pw_shell, b->pw_shell)) { + fprintf(stderr, "pw_shell mismatch: [%s] [%s]\n", a->pw_shell, b->pw_shell); + return 1; + } + + return 0; +} + +int main(int argc, char *argv[]) { + struct group *gr; + struct passwd *pw; + int err; + struct group *reference_group = NULL; + struct passwd *reference_passwd = NULL; + + err = load_reference_structs(&reference_group, &reference_passwd); + if (err) + return 77; + + errno = 0; + gr = pa_getgrgid_malloc(reference_group->gr_gid); + if (compare_group(reference_group, gr)) + return 1; + pa_getgrgid_free(gr); + + errno = 0; + gr = pa_getgrnam_malloc(reference_group->gr_name); + if (compare_group(reference_group, gr)) + return 1; + pa_getgrnam_free(gr); + + errno = 0; + pw = pa_getpwuid_malloc(reference_passwd->pw_uid); + if (compare_passwd(reference_passwd, pw)) + return 1; + pa_getpwuid_free(pw); + + errno = 0; + pw = pa_getpwnam_malloc(reference_passwd->pw_name); + if (compare_passwd(reference_passwd, pw)) + return 1; + pa_getpwnam_free(pw); + + return 0; +} diff --git a/src/tests/voltest.c b/src/tests/voltest.c index 2dcfa53cd..551f7ecd6 100644 --- a/src/tests/voltest.c +++ b/src/tests/voltest.c @@ -1,13 +1,40 @@ +/*** + This file is part of PulseAudio. + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include +#include + int main(int argc, char *argv[]) { pa_volume_t v; pa_cvolume cv; float b; pa_channel_map map; + pa_volume_t md = 0; + unsigned mdn = 0; printf("Attenuation of sample 1 against 32767: %g dB\n", 20.0*log10(1.0/32767.0)); printf("Smallest possible attenutation > 0 applied to 32767: %li\n", lrint(32767.0*pa_sw_volume_to_linear(1))); @@ -60,5 +87,48 @@ int main(int argc, char *argv[]) { printf("After: volume: [%s]; balance: %2.1f (intended: %2.1f) %s\n", pa_cvolume_snprint(s, sizeof(s), &r), k, b, k < b-.05 || k > b+.5 ? "MISMATCH" : ""); } + for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 51) { + + double l = pa_sw_volume_to_linear(v); + pa_volume_t k = pa_sw_volume_from_linear(l); + double db = pa_sw_volume_to_dB(v); + pa_volume_t r = pa_sw_volume_from_dB(db); + pa_volume_t w; + + pa_assert(k == v); + pa_assert(r == v); + + for (w = PA_VOLUME_MUTED; w < PA_VOLUME_NORM*2; w += 37) { + + double t = pa_sw_volume_to_linear(w); + double db2 = pa_sw_volume_to_dB(w); + pa_volume_t p, p1, p2; + double q, qq; + + p = pa_sw_volume_multiply(v, w); + qq = db + db2; + p2 = pa_sw_volume_from_dB(qq); + q = l*t; + p1 = pa_sw_volume_from_linear(q); + + if (p2 > p && p2 - p > md) + md = p2 - p; + if (p2 < p && p - p2 > md) + md = p - p2; + if (p1 > p && p1 - p > md) + md = p1 - p; + if (p1 < p && p - p1 > md) + md = p - p1; + + if (p1 != p || p2 != p) + mdn++; + } + } + + printf("max deviation: %lu n=%lu\n", (unsigned long) md, (unsigned long) mdn); + + pa_assert(md <= 1); + pa_assert(mdn <= 251); + return 0; } diff --git a/src/utils/pacat.c b/src/utils/pacat.c index f00a32eb9..781bfa330 100644 --- a/src/utils/pacat.c +++ b/src/utils/pacat.c @@ -105,12 +105,12 @@ static void context_drain_complete(pa_context*c, void *userdata) { static void stream_drain_complete(pa_stream*s, int success, void *userdata) { if (!success) { - pa_log(_("Failed to drain stream: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("Failed to drain stream: %s"), pa_strerror(pa_context_errno(context))); quit(1); } if (verbose) - pa_log(_("Playback stream drained.\n")); + pa_log(_("Playback stream drained.")); pa_stream_disconnect(stream); pa_stream_unref(stream); @@ -120,7 +120,7 @@ static void stream_drain_complete(pa_stream*s, int success, void *userdata) { pa_context_disconnect(context); else { if (verbose) - pa_log(_("Draining connection to server.\n")); + pa_log(_("Draining connection to server.")); } } @@ -133,7 +133,7 @@ static void start_drain(void) { pa_stream_set_write_callback(stream, NULL, NULL); if (!(o = pa_stream_drain(stream, stream_drain_complete, NULL))) { - pa_log(_("pa_stream_drain(): %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("pa_stream_drain(): %s"), pa_strerror(pa_context_errno(context))); quit(1); return; } @@ -156,7 +156,7 @@ static void do_stream_write(size_t length) { l = buffer_length; if (pa_stream_write(stream, (uint8_t*) buffer + buffer_index, l, NULL, 0, PA_SEEK_RELATIVE) < 0) { - pa_log(_("pa_stream_write() failed: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("pa_stream_write() failed: %s"), pa_strerror(pa_context_errno(context))); quit(1); return; } @@ -193,7 +193,11 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) { pa_assert(sndfile); - data = pa_xmalloc(length); + if (pa_stream_begin_write(s, &data, &length) < 0) { + pa_log(_("pa_stream_begin_write() failed: %s"), pa_strerror(pa_context_errno(context))); + quit(1); + return; + } if (readf_function) { size_t k = pa_frame_size(&sample_spec); @@ -205,9 +209,9 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) { bytes = sf_read_raw(sndfile, data, (sf_count_t) length); if (bytes > 0) - pa_stream_write(s, data, (size_t) bytes, pa_xfree, 0, PA_SEEK_RELATIVE); + pa_stream_write(s, data, (size_t) bytes, NULL, 0, PA_SEEK_RELATIVE); else - pa_xfree(data); + pa_stream_cancel_write(s); if (bytes < (sf_count_t) length) start_drain(); @@ -226,12 +230,11 @@ static void stream_read_callback(pa_stream *s, size_t length, void *userdata) { if (stdio_event) mainloop_api->io_enable(stdio_event, PA_IO_EVENT_OUTPUT); - while (pa_stream_readable_size(s) > 0) { const void *data; if (pa_stream_peek(s, &data, &length) < 0) { - pa_log(_("pa_stream_peek() failed: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("pa_stream_peek() failed: %s"), pa_strerror(pa_context_errno(context))); quit(1); return; } @@ -249,6 +252,7 @@ static void stream_read_callback(pa_stream *s, size_t length, void *userdata) { buffer_length = length; buffer_index = 0; } + pa_stream_drop(s); } @@ -260,7 +264,7 @@ static void stream_read_callback(pa_stream *s, size_t length, void *userdata) { const void *data; if (pa_stream_peek(s, &data, &length) < 0) { - pa_log(_("pa_stream_peek() failed: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("pa_stream_peek() failed: %s"), pa_strerror(pa_context_errno(context))); quit(1); return; } @@ -300,25 +304,25 @@ static void stream_state_callback(pa_stream *s, void *userdata) { const pa_buffer_attr *a; char cmt[PA_CHANNEL_MAP_SNPRINT_MAX], sst[PA_SAMPLE_SPEC_SNPRINT_MAX]; - pa_log(_("Stream successfully created.\n")); + pa_log(_("Stream successfully created.")); if (!(a = pa_stream_get_buffer_attr(s))) - pa_log(_("pa_stream_get_buffer_attr() failed: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s)))); + pa_log(_("pa_stream_get_buffer_attr() failed: %s"), pa_strerror(pa_context_errno(pa_stream_get_context(s)))); else { if (mode == PLAYBACK) - pa_log(_("Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u\n"), a->maxlength, a->tlength, a->prebuf, a->minreq); + pa_log(_("Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"), a->maxlength, a->tlength, a->prebuf, a->minreq); else { pa_assert(mode == RECORD); - pa_log(_("Buffer metrics: maxlength=%u, fragsize=%u\n"), a->maxlength, a->fragsize); + pa_log(_("Buffer metrics: maxlength=%u, fragsize=%u"), a->maxlength, a->fragsize); } } - pa_log(_("Using sample spec '%s', channel map '%s'.\n"), + pa_log(_("Using sample spec '%s', channel map '%s'."), pa_sample_spec_snprint(sst, sizeof(sst), pa_stream_get_sample_spec(s)), pa_channel_map_snprint(cmt, sizeof(cmt), pa_stream_get_channel_map(s))); - pa_log(_("Connected to device %s (%u, %ssuspended).\n"), + pa_log(_("Connected to device %s (%u, %ssuspended)."), pa_stream_get_device_name(s), pa_stream_get_device_index(s), pa_stream_is_suspended(s) ? "" : "not "); @@ -328,7 +332,7 @@ static void stream_state_callback(pa_stream *s, void *userdata) { case PA_STREAM_FAILED: default: - pa_log(_("Stream error: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s)))); + pa_log(_("Stream error: %s"), pa_strerror(pa_context_errno(pa_stream_get_context(s)))); quit(1); } } @@ -338,9 +342,9 @@ static void stream_suspended_callback(pa_stream *s, void *userdata) { if (verbose) { if (pa_stream_is_suspended(s)) - pa_log(_("Stream device suspended.%s \n"), CLEAR_LINE); + pa_log(_("Stream device suspended.%s"), CLEAR_LINE); else - pa_log(_("Stream device resumed.%s \n"), CLEAR_LINE); + pa_log(_("Stream device resumed.%s"), CLEAR_LINE); } } @@ -348,35 +352,35 @@ static void stream_underflow_callback(pa_stream *s, void *userdata) { pa_assert(s); if (verbose) - pa_log(_("Stream underrun.%s \n"), CLEAR_LINE); + pa_log(_("Stream underrun.%s"), CLEAR_LINE); } static void stream_overflow_callback(pa_stream *s, void *userdata) { pa_assert(s); if (verbose) - pa_log(_("Stream overrun.%s \n"), CLEAR_LINE); + pa_log(_("Stream overrun.%s"), CLEAR_LINE); } static void stream_started_callback(pa_stream *s, void *userdata) { pa_assert(s); if (verbose) - pa_log(_("Stream started.%s \n"), CLEAR_LINE); + pa_log(_("Stream started.%s"), CLEAR_LINE); } static void stream_moved_callback(pa_stream *s, void *userdata) { pa_assert(s); if (verbose) - pa_log(_("Stream moved to device %s (%u, %ssuspended).%s \n"), pa_stream_get_device_name(s), pa_stream_get_device_index(s), pa_stream_is_suspended(s) ? "" : _("not "), CLEAR_LINE); + pa_log(_("Stream moved to device %s (%u, %ssuspended).%s"), pa_stream_get_device_name(s), pa_stream_get_device_index(s), pa_stream_is_suspended(s) ? "" : _("not "), CLEAR_LINE); } static void stream_buffer_attr_callback(pa_stream *s, void *userdata) { pa_assert(s); if (verbose) - pa_log(_("Stream buffer attributes changed.%s \n"), CLEAR_LINE); + pa_log(_("Stream buffer attributes changed.%s"), CLEAR_LINE); } static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *pl, void *userdata) { @@ -387,7 +391,7 @@ static void stream_event_callback(pa_stream *s, const char *name, pa_proplist *p pa_assert(pl); t = pa_proplist_to_string_sep(pl, ", "); - pa_log("Got event '%s', properties '%s'\n", name, t); + pa_log("Got event '%s', properties '%s'", name, t); pa_xfree(t); } @@ -402,17 +406,16 @@ static void context_state_callback(pa_context *c, void *userdata) { break; case PA_CONTEXT_READY: { - int r; pa_buffer_attr buffer_attr; pa_assert(c); pa_assert(!stream); if (verbose) - pa_log(_("Connection established.%s \n"), CLEAR_LINE); + pa_log(_("Connection established.%s"), CLEAR_LINE); if (!(stream = pa_stream_new_with_proplist(c, NULL, &sample_spec, &channel_map, proplist))) { - pa_log(_("pa_stream_new() failed: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("pa_stream_new() failed: %s"), pa_strerror(pa_context_errno(c))); goto fail; } @@ -439,14 +442,14 @@ static void context_state_callback(pa_context *c, void *userdata) { if (mode == PLAYBACK) { pa_cvolume cv; - if ((r = pa_stream_connect_playback(stream, device, latency > 0 ? &buffer_attr : NULL, flags, volume_is_set ? pa_cvolume_set(&cv, sample_spec.channels, volume) : NULL, NULL)) < 0) { - pa_log(_("pa_stream_connect_playback() failed: %s\n"), pa_strerror(pa_context_errno(c))); + if (pa_stream_connect_playback(stream, device, latency > 0 ? &buffer_attr : NULL, flags, volume_is_set ? pa_cvolume_set(&cv, sample_spec.channels, volume) : NULL, NULL) < 0) { + pa_log(_("pa_stream_connect_playback() failed: %s"), pa_strerror(pa_context_errno(c))); goto fail; } } else { - if ((r = pa_stream_connect_record(stream, device, latency > 0 ? &buffer_attr : NULL, flags)) < 0) { - pa_log(_("pa_stream_connect_record() failed: %s\n"), pa_strerror(pa_context_errno(c))); + if (pa_stream_connect_record(stream, device, latency > 0 ? &buffer_attr : NULL, flags) < 0) { + pa_log(_("pa_stream_connect_record() failed: %s"), pa_strerror(pa_context_errno(c))); goto fail; } } @@ -460,7 +463,7 @@ static void context_state_callback(pa_context *c, void *userdata) { case PA_CONTEXT_FAILED: default: - pa_log(_("Connection failure: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Connection failure: %s"), pa_strerror(pa_context_errno(c))); goto fail; } @@ -493,12 +496,12 @@ static void stdin_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_even if ((r = read(fd, buffer, l)) <= 0) { if (r == 0) { if (verbose) - pa_log(_("Got EOF.\n")); + pa_log(_("Got EOF.")); start_drain(); } else { - pa_log(_("read() failed: %s\n"), strerror(errno)); + pa_log(_("read() failed: %s"), strerror(errno)); quit(1); } @@ -530,7 +533,7 @@ static void stdout_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_eve pa_assert(buffer_length); if ((r = write(fd, (uint8_t*) buffer+buffer_index, buffer_length)) <= 0) { - pa_log(_("write() failed: %s\n"), strerror(errno)); + pa_log(_("write() failed: %s"), strerror(errno)); quit(1); mainloop_api->io_free(stdio_event); @@ -551,7 +554,7 @@ static void stdout_callback(pa_mainloop_api*a, pa_io_event *e, int fd, pa_io_eve /* UNIX signal to quit recieved */ static void exit_signal_callback(pa_mainloop_api*m, pa_signal_event *e, int sig, void *userdata) { if (verbose) - pa_log(_("Got signal, exiting.\n")); + pa_log(_("Got signal, exiting.")); quit(0); } @@ -565,14 +568,15 @@ static void stream_update_timing_callback(pa_stream *s, int success, void *userd if (!success || pa_stream_get_time(s, &usec) < 0 || pa_stream_get_latency(s, &l, &negative) < 0) { - pa_log(_("Failed to get latency: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("Failed to get latency: %s"), pa_strerror(pa_context_errno(context))); quit(1); return; } - pa_log(_("Time: %0.3f sec; Latency: %0.0f usec. \r"), + fprintf(stderr, _("Time: %0.3f sec; Latency: %0.0f usec."), (float) usec / 1000000, (float) l * (negative?-1.0f:1.0f)); + fprintf(stderr, " \r"); } /* Someone requested that the latency is shown */ @@ -588,7 +592,7 @@ static void time_event_callback(pa_mainloop_api *m, pa_time_event *e, const stru if (stream && pa_stream_get_state(stream) == PA_STREAM_READY) { pa_operation *o; if (!(o = pa_stream_update_timing_info(stream, stream_update_timing_callback, NULL))) - pa_log(_("pa_stream_update_timing_info() failed: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("pa_stream_update_timing_info() failed: %s"), pa_strerror(pa_context_errno(context))); else pa_operation_unref(o); } @@ -753,7 +757,7 @@ int main(int argc, char *argv[]) { if (!(t = pa_locale_to_utf8(optarg)) || pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, t) < 0) { - pa_log(_("Invalid client name '%s'\n"), t ? t : optarg); + pa_log(_("Invalid client name '%s'"), t ? t : optarg); pa_xfree(t); goto quit; } @@ -764,12 +768,11 @@ int main(int argc, char *argv[]) { case ARG_STREAM_NAME: { char *t; - t = pa_locale_to_utf8(optarg); if (!(t = pa_locale_to_utf8(optarg)) || pa_proplist_sets(proplist, PA_PROP_MEDIA_NAME, t) < 0) { - pa_log(_("Invalid stream name '%s'\n"), t ? t : optarg); + pa_log(_("Invalid stream name '%s'"), t ? t : optarg); pa_xfree(t); goto quit; } @@ -806,7 +809,7 @@ int main(int argc, char *argv[]) { case ARG_CHANNELMAP: if (!pa_channel_map_parse(&channel_map, optarg)) { - pa_log(_("Invalid channel map '%s'\n"), optarg); + pa_log(_("Invalid channel map '%s'"), optarg); goto quit; } @@ -835,14 +838,14 @@ int main(int argc, char *argv[]) { case ARG_LATENCY: if (((latency = (size_t) atoi(optarg))) <= 0) { - pa_log(_("Invalid latency specification '%s'\n"), optarg); + pa_log(_("Invalid latency specification '%s'"), optarg); goto quit; } break; case ARG_PROCESS_TIME: if (((process_time = (size_t) atoi(optarg))) <= 0) { - pa_log(_("Invalid process time specification '%s'\n"), optarg); + pa_log(_("Invalid process time specification '%s'"), optarg); goto quit; } break; @@ -854,7 +857,7 @@ int main(int argc, char *argv[]) { pa_proplist_setp(proplist, t) < 0) { pa_xfree(t); - pa_log(_("Invalid property '%s'\n"), optarg); + pa_log(_("Invalid property '%s'"), optarg); goto quit; } @@ -890,7 +893,7 @@ int main(int argc, char *argv[]) { } if (!pa_sample_spec_valid(&sample_spec)) { - pa_log(_("Invalid sample specification\n")); + pa_log(_("Invalid sample specification")); goto quit; } @@ -900,19 +903,19 @@ int main(int argc, char *argv[]) { filename = argv[optind]; if ((fd = open(argv[optind], mode == PLAYBACK ? O_RDONLY : O_WRONLY|O_TRUNC|O_CREAT, 0666)) < 0) { - pa_log(_("open(): %s\n"), strerror(errno)); + pa_log(_("open(): %s"), strerror(errno)); goto quit; } if (dup2(fd, mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO) < 0) { - pa_log(_("dup2(): %s\n"), strerror(errno)); + pa_log(_("dup2(): %s"), strerror(errno)); goto quit; } pa_close(fd); } else if (optind+1 <= argc) { - pa_log(_("Too many arguments.\n")); + pa_log(_("Too many arguments.")); goto quit; } @@ -923,7 +926,7 @@ int main(int argc, char *argv[]) { if (mode == RECORD) { /* This might patch up the sample spec */ if (pa_sndfile_write_sample_spec(&sfi, &sample_spec) < 0) { - pa_log(_("Failed to generate sample specification for file.\n")); + pa_log(_("Failed to generate sample specification for file.")); goto quit; } @@ -943,16 +946,16 @@ int main(int argc, char *argv[]) { if (!(sndfile = sf_open_fd(mode == RECORD ? STDOUT_FILENO : STDIN_FILENO, mode == RECORD ? SFM_WRITE : SFM_READ, &sfi, 0))) { - pa_log(_("Failed to open audio file.\n")); + pa_log(_("Failed to open audio file.")); goto quit; } if (mode == PLAYBACK) { if (sample_spec_set) - pa_log(_("Warning: specified sample specification will be overwritten with specification from file.\n")); + pa_log(_("Warning: specified sample specification will be overwritten with specification from file.")); if (pa_sndfile_read_sample_spec(sndfile, &sample_spec) < 0) { - pa_log(_("Failed to determine sample specification from file.\n")); + pa_log(_("Failed to determine sample specification from file.")); goto quit; } sample_spec_set = TRUE; @@ -961,7 +964,7 @@ int main(int argc, char *argv[]) { /* Allow the user to overwrite the channel map on the command line */ if (pa_sndfile_read_channel_map(sndfile, &channel_map) < 0) { if (sample_spec.channels > 2) - pa_log(_("Warning: Failed to determine channel map from file.\n")); + pa_log(_("Warning: Failed to determine channel map from file.")); } else channel_map_set = TRUE; } @@ -972,7 +975,7 @@ int main(int argc, char *argv[]) { pa_channel_map_init_extend(&channel_map, sample_spec.channels, PA_CHANNEL_MAP_DEFAULT); if (!pa_channel_map_compatible(&channel_map, &sample_spec)) { - pa_log(_("Channel map doesn't match sample specification\n")); + pa_log(_("Channel map doesn't match sample specification")); goto quit; } @@ -983,7 +986,7 @@ int main(int argc, char *argv[]) { readf_function = pa_sndfile_readf_function(&sample_spec); else { if (pa_sndfile_write_channel_map(sndfile, &channel_map) < 0) - pa_log(_("Warning: failed to write channel map to file.\n")); + pa_log(_("Warning: failed to write channel map to file.")); writef_function = pa_sndfile_writef_function(&sample_spec); } @@ -998,7 +1001,7 @@ int main(int argc, char *argv[]) { if (verbose) { char tss[PA_SAMPLE_SPEC_SNPRINT_MAX], tcm[PA_CHANNEL_MAP_SNPRINT_MAX]; - pa_log(_("Opening a %s stream with sample specification '%s' and channel map '%s'.\n"), + pa_log(_("Opening a %s stream with sample specification '%s' and channel map '%s'."), mode == RECORD ? _("recording") : _("playback"), pa_sample_spec_snprint(tss, sizeof(tss), &sample_spec), pa_channel_map_snprint(tcm, sizeof(tcm), &channel_map)); @@ -1025,7 +1028,7 @@ int main(int argc, char *argv[]) { /* Set up a new main loop */ if (!(m = pa_mainloop_new())) { - pa_log(_("pa_mainloop_new() failed.\n")); + pa_log(_("pa_mainloop_new() failed.")); goto quit; } @@ -1044,14 +1047,14 @@ int main(int argc, char *argv[]) { mode == PLAYBACK ? STDIN_FILENO : STDOUT_FILENO, mode == PLAYBACK ? PA_IO_EVENT_INPUT : PA_IO_EVENT_OUTPUT, mode == PLAYBACK ? stdin_callback : stdout_callback, NULL))) { - pa_log(_("io_new() failed.\n")); + pa_log(_("io_new() failed.")); goto quit; } } /* Create a new connection context */ if (!(context = pa_context_new_with_proplist(mainloop_api, NULL, proplist))) { - pa_log(_("pa_context_new() failed.\n")); + pa_log(_("pa_context_new() failed.")); goto quit; } @@ -1059,20 +1062,20 @@ int main(int argc, char *argv[]) { /* Connect the context */ if (pa_context_connect(context, server, 0, NULL) < 0) { - pa_log(_("pa_context_connect() failed: %s\n"), pa_strerror(pa_context_errno(context))); + pa_log(_("pa_context_connect() failed: %s"), pa_strerror(pa_context_errno(context))); goto quit; } if (verbose) { if (!(time_event = pa_context_rttime_new(context, pa_rtclock_now() + TIME_EVENT_USEC, time_event_callback, NULL))) { - pa_log(_("pa_context_rttime_new() failed.\n")); + pa_log(_("pa_context_rttime_new() failed.")); goto quit; } } /* Run the main loop */ if (pa_mainloop_run(m, &ret) < 0) { - pa_log(_("pa_mainloop_run() failed.\n")); + pa_log(_("pa_mainloop_run() failed.")); goto quit; } diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c index ac60a0bcd..5ef57e3b5 100644 --- a/src/utils/pacmd.c +++ b/src/utils/pacmd.c @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include #include @@ -45,6 +45,13 @@ int main(int argc, char*argv[]) { + enum { + WATCH_STDIN, + WATCH_STDOUT, + WATCH_SOCKET, + N_WATCH + }; + pid_t pid ; int fd = -1; int ret = 1, i; @@ -53,6 +60,7 @@ int main(int argc, char*argv[]) { size_t ibuf_index, ibuf_length, obuf_index, obuf_length; char *cli; pa_bool_t ibuf_eof, obuf_eof, ibuf_closed, obuf_closed; + struct pollfd pollfd[N_WATCH]; setlocale(LC_ALL, ""); bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR); @@ -108,7 +116,7 @@ int main(int argc, char*argv[]) { size_t k; k = PA_MIN(sizeof(ibuf) - ibuf_length, strlen(argv[i])); - memcpy(ibuf + ibuf_length, argv[1], k); + memcpy(ibuf + ibuf_length, argv[i], k); ibuf_length += k; if (ibuf_length < sizeof(ibuf)) { @@ -120,38 +128,45 @@ int main(int argc, char*argv[]) { ibuf_eof = TRUE; } - for (;;) { - fd_set ifds, ofds; + pa_zero(pollfd); + pollfd[WATCH_STDIN].fd = STDIN_FILENO; + pollfd[WATCH_STDOUT].fd = STDOUT_FILENO; + pollfd[WATCH_SOCKET].fd = fd; + + for (;;) { if (ibuf_eof && obuf_eof && ibuf_length <= 0 && obuf_length <= 0) break; - FD_ZERO(&ifds); - FD_ZERO(&ofds); + pollfd[WATCH_STDIN].events = pollfd[WATCH_STDOUT].events = pollfd[WATCH_SOCKET].events = 0; if (obuf_length > 0) - FD_SET(1, &ofds); + pollfd[WATCH_STDOUT].events |= POLLOUT; else if (!obuf_eof) - FD_SET(fd, &ifds); + pollfd[WATCH_SOCKET].events |= POLLIN; if (ibuf_length > 0) - FD_SET(fd, &ofds); + pollfd[WATCH_SOCKET].events |= POLLOUT; else if (!ibuf_eof) - FD_SET(0, &ifds); + pollfd[WATCH_STDIN].events |= POLLIN; - if (select(FD_SETSIZE, &ifds, &ofds, NULL, NULL) < 0) { - pa_log(_("select(): %s"), strerror(errno)); + if (poll(pollfd, N_WATCH, -1) < 0) { + + if (errno == EINTR) + continue; + + pa_log(_("poll(): %s"), strerror(errno)); goto fail; } - if (FD_ISSET(0, &ifds)) { + if (pollfd[WATCH_STDIN].revents & POLLIN) { ssize_t r; pa_assert(!ibuf_length); - if ((r = pa_read(0, ibuf, sizeof(ibuf), NULL)) <= 0) { + if ((r = pa_read(STDIN_FILENO, ibuf, sizeof(ibuf), NULL)) <= 0) { if (r < 0) { pa_log(_("read(): %s"), strerror(errno)); goto fail; @@ -164,7 +179,7 @@ int main(int argc, char*argv[]) { } } - if (FD_ISSET(fd, &ifds)) { + if (pollfd[WATCH_SOCKET].revents & POLLIN) { ssize_t r; pa_assert(!obuf_length); @@ -181,21 +196,26 @@ int main(int argc, char*argv[]) { } } - if (FD_ISSET(1, &ofds)) { + if (pollfd[WATCH_STDOUT].revents & POLLHUP) { + obuf_eof = TRUE; + obuf_length = 0; + } else if (pollfd[WATCH_STDOUT].revents & POLLOUT) { ssize_t r; pa_assert(obuf_length); - if ((r = pa_write(1, obuf + obuf_index, obuf_length, NULL)) < 0) { + if ((r = pa_write(STDOUT_FILENO, obuf + obuf_index, obuf_length, NULL)) < 0) { pa_log(_("write(): %s"), strerror(errno)); goto fail; } obuf_length -= (size_t) r; obuf_index += obuf_index; - } - if (FD_ISSET(fd, &ofds)) { + if (pollfd[WATCH_SOCKET].revents & POLLHUP) { + ibuf_eof = TRUE; + ibuf_length = 0; + } if (pollfd[WATCH_SOCKET].revents & POLLOUT) { ssize_t r; pa_assert(ibuf_length); @@ -209,14 +229,14 @@ int main(int argc, char*argv[]) { } if (ibuf_length <= 0 && ibuf_eof && !ibuf_closed) { - pa_close(0); + pa_close(STDIN_FILENO); shutdown(fd, SHUT_WR); ibuf_closed = TRUE; } if (obuf_length <= 0 && obuf_eof && !obuf_closed) { shutdown(fd, SHUT_RD); - pa_close(1); + pa_close(STDOUT_FILENO); obuf_closed = TRUE; } } diff --git a/src/utils/pactl.c b/src/utils/pactl.c index c8c3a4378..141ab5b16 100644 --- a/src/utils/pactl.c +++ b/src/utils/pactl.c @@ -50,7 +50,6 @@ static pa_context *context = NULL; static pa_mainloop_api *mainloop_api = NULL; static char - *device = NULL, *sample_name = NULL, *sink_name = NULL, *source_name = NULL, @@ -66,6 +65,8 @@ static uint32_t static uint32_t module_index; static pa_bool_t suspend; +static pa_bool_t mute; +static pa_volume_t volume; static pa_proplist *proplist = NULL; @@ -74,7 +75,6 @@ static pa_stream *sample_stream = NULL; static pa_sample_spec sample_spec; static pa_channel_map channel_map; static size_t sample_length = 0; - static int actions = 1; static pa_bool_t nl = FALSE; @@ -95,7 +95,13 @@ static enum { SUSPEND_SOURCE, SET_CARD_PROFILE, SET_SINK_PORT, - SET_SOURCE_PORT + SET_SOURCE_PORT, + SET_SINK_VOLUME, + SET_SOURCE_VOLUME, + SET_SINK_INPUT_VOLUME, + SET_SINK_MUTE, + SET_SOURCE_MUTE, + SET_SINK_INPUT_MUTE } action = NONE; static void quit(int ret) { @@ -109,6 +115,7 @@ static void context_drain_complete(pa_context *c, void *userdata) { static void drain(void) { pa_operation *o; + if (!(o = pa_context_drain(context, context_drain_complete, NULL))) pa_context_disconnect(context); else @@ -123,9 +130,9 @@ static void complete_action(void) { } static void stat_callback(pa_context *c, const pa_stat_info *i, void *userdata) { - char s[128]; + char s[PA_BYTES_SNPRINT_MAX]; if (!i) { - pa_log(_("Failed to get statistics: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get statistics: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -146,7 +153,7 @@ static void get_server_info_callback(pa_context *c, const pa_server_info *i, voi char ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; if (!i) { - pa_log(_("Failed to get server information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get server information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -195,7 +202,7 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_ char *pl; if (is_last < 0) { - pa_log(_("Failed to get sink information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get sink information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -287,7 +294,7 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int char *pl; if (is_last < 0) { - pa_log(_("Failed to get source information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get source information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -365,7 +372,7 @@ static void get_module_info_callback(pa_context *c, const pa_module_info *i, int char *pl; if (is_last < 0) { - pa_log(_("Failed to get module information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get module information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -402,7 +409,7 @@ static void get_client_info_callback(pa_context *c, const pa_client_info *i, int char *pl; if (is_last < 0) { - pa_log(_("Failed to get client information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get client information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -437,7 +444,7 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_ char *pl; if (is_last < 0) { - pa_log(_("Failed to get card information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get card information: %s"), pa_strerror(pa_context_errno(c))); complete_action(); return; } @@ -486,7 +493,7 @@ static void get_sink_input_info_callback(pa_context *c, const pa_sink_input_info char *pl; if (is_last < 0) { - pa_log(_("Failed to get sink input information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get sink input information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -544,7 +551,7 @@ static void get_source_output_info_callback(pa_context *c, const pa_source_outpu char *pl; if (is_last < 0) { - pa_log(_("Failed to get source output information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get source output information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -591,11 +598,11 @@ static void get_source_output_info_callback(pa_context *c, const pa_source_outpu } static void get_sample_info_callback(pa_context *c, const pa_sample_info *i, int is_last, void *userdata) { - char t[32], s[PA_SAMPLE_SPEC_SNPRINT_MAX], cv[PA_CVOLUME_SNPRINT_MAX], cvdb[PA_SW_CVOLUME_SNPRINT_DB_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; + char t[PA_BYTES_SNPRINT_MAX], s[PA_SAMPLE_SPEC_SNPRINT_MAX], cv[PA_CVOLUME_SNPRINT_MAX], cvdb[PA_SW_CVOLUME_SNPRINT_DB_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX]; char *pl; if (is_last < 0) { - pa_log(_("Failed to get sample information: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failed to get sample information: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -643,7 +650,7 @@ static void get_sample_info_callback(pa_context *c, const pa_sample_info *i, int static void simple_callback(pa_context *c, int success, void *userdata) { if (!success) { - pa_log(_("Failure: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failure: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -653,7 +660,7 @@ static void simple_callback(pa_context *c, int success, void *userdata) { static void index_callback(pa_context *c, uint32_t idx, void *userdata) { if (idx == PA_INVALID_INDEX) { - pa_log(_("Failure: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Failure: %s"), pa_strerror(pa_context_errno(c))); quit(1); return; } @@ -677,7 +684,7 @@ static void stream_state_callback(pa_stream *s, void *userdata) { case PA_STREAM_FAILED: default: - pa_log(_("Failed to upload sample: %s\n"), pa_strerror(pa_context_errno(pa_stream_get_context(s)))); + pa_log(_("Failed to upload sample: %s"), pa_strerror(pa_context_errno(pa_stream_get_context(s)))); quit(1); } } @@ -694,7 +701,7 @@ static void stream_write_callback(pa_stream *s, size_t length, void *userdata) { if ((sf_readf_float(sndfile, d, l)) != l) { pa_xfree(d); - pa_log(_("Premature end of file\n")); + pa_log(_("Premature end of file")); quit(1); return; } @@ -726,7 +733,7 @@ static void context_state_callback(pa_context *c, void *userdata) { break; case PLAY_SAMPLE: - pa_operation_unref(pa_context_play_sample(c, sample_name, device, PA_VOLUME_NORM, simple_callback, NULL)); + pa_operation_unref(pa_context_play_sample(c, sample_name, sink_name, PA_VOLUME_NORM, simple_callback, NULL)); break; case REMOVE_SAMPLE: @@ -800,6 +807,42 @@ static void context_state_callback(pa_context *c, void *userdata) { pa_operation_unref(pa_context_set_source_port_by_name(c, source_name, port_name, simple_callback, NULL)); break; + case SET_SINK_MUTE: + pa_operation_unref(pa_context_set_sink_mute_by_name(c, sink_name, mute, simple_callback, NULL)); + break; + + case SET_SOURCE_MUTE: + pa_operation_unref(pa_context_set_source_mute_by_name(c, source_name, mute, simple_callback, NULL)); + break; + + case SET_SINK_INPUT_MUTE: + pa_operation_unref(pa_context_set_sink_input_mute(c, sink_input_idx, mute, simple_callback, NULL)); + break; + + case SET_SINK_VOLUME: { + pa_cvolume v; + + pa_cvolume_set(&v, 1, volume); + pa_operation_unref(pa_context_set_sink_volume_by_name(c, sink_name, &v, simple_callback, NULL)); + break; + } + + case SET_SOURCE_VOLUME: { + pa_cvolume v; + + pa_cvolume_set(&v, 1, volume); + pa_operation_unref(pa_context_set_source_volume_by_name(c, source_name, &v, simple_callback, NULL)); + break; + } + + case SET_SINK_INPUT_VOLUME: { + pa_cvolume v; + + pa_cvolume_set(&v, 1, volume); + pa_operation_unref(pa_context_set_sink_input_volume(c, sink_input_idx, &v, simple_callback, NULL)); + break; + } + default: pa_assert_not_reached(); } @@ -811,13 +854,13 @@ static void context_state_callback(pa_context *c, void *userdata) { case PA_CONTEXT_FAILED: default: - pa_log(_("Connection failure: %s\n"), pa_strerror(pa_context_errno(c))); + pa_log(_("Connection failure: %s"), pa_strerror(pa_context_errno(c))); quit(1); } } static void exit_signal_callback(pa_mainloop_api *m, pa_signal_event *e, int sig, void *userdata) { - pa_log(_("Got SIGINT, exiting.\n")); + pa_log(_("Got SIGINT, exiting.")); quit(0); } @@ -829,20 +872,30 @@ static void help(const char *argv0) { "%s [options] upload-sample FILENAME [NAME]\n" "%s [options] play-sample NAME [SINK]\n" "%s [options] remove-sample NAME\n" - "%s [options] move-sink-input ID SINK\n" - "%s [options] move-source-output ID SOURCE\n" + "%s [options] move-sink-input SINKINPUT SINK\n" + "%s [options] move-source-output SOURCEOUTPUT SOURCE\n" "%s [options] load-module NAME [ARGS ...]\n" - "%s [options] unload-module ID\n" - "%s [options] suspend-sink [SINK] 1|0\n" - "%s [options] suspend-source [SOURCE] 1|0\n" - "%s [options] set-card-profile [CARD] [PROFILE] \n" - "%s [options] set-sink-port [SINK] [PORT] \n" - "%s [options] set-source-port [SOURCE] [PORT] \n\n" + "%s [options] unload-module MODULE\n" + "%s [options] suspend-sink SINK 1|0\n" + "%s [options] suspend-source SOURCE 1|0\n" + "%s [options] set-card-profile CARD PROFILE\n" + "%s [options] set-sink-port SINK PORT\n" + "%s [options] set-source-port SOURCE PORT\n" + "%s [options] set-sink-volume SINK VOLUME\n" + "%s [options] set-source-volume SOURCE VOLUME\n" + "%s [options] set-sink-input-volume SINKINPUT VOLUME\n" + "%s [options] set-sink-mute SINK 1|0\n" + "%s [options] set-source-mute SOURCE 1|0\n" + "%s [options] set-sink-input-mute SINKINPUT 1|0\n\n" " -h, --help Show this help\n" " --version Show version\n\n" " -s, --server=SERVER The name of the server to connect to\n" " -n, --client-name=NAME How to call this client on the server\n"), - argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0, argv0); + argv0, argv0, argv0, argv0, argv0, + argv0, argv0, argv0, argv0, argv0, + argv0, argv0, argv0, argv0, argv0, + argv0, argv0, argv0, argv0, argv0, + argv0); } enum { @@ -897,7 +950,7 @@ int main(int argc, char *argv[]) { if (!(t = pa_locale_to_utf8(optarg)) || pa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, t) < 0) { - pa_log(_("Invalid client name '%s'\n"), t ? t : optarg); + pa_log(_("Invalid client name '%s'"), t ? t : optarg); pa_xfree(t); goto quit; } @@ -923,7 +976,7 @@ int main(int argc, char *argv[]) { action = UPLOAD_SAMPLE; if (optind+1 >= argc) { - pa_log(_("Please specify a sample file to load\n")); + pa_log(_("Please specify a sample file to load")); goto quit; } @@ -936,19 +989,19 @@ int main(int argc, char *argv[]) { pa_zero(sfi); if (!(sndfile = sf_open(argv[optind+1], SFM_READ, &sfi))) { - pa_log(_("Failed to open sound file.\n")); + pa_log(_("Failed to open sound file.")); goto quit; } if (pa_sndfile_read_sample_spec(sndfile, &sample_spec) < 0) { - pa_log(_("Failed to determine sample specification from file.\n")); + pa_log(_("Failed to determine sample specification from file.")); goto quit; } sample_spec.format = PA_SAMPLE_FLOAT32; if (pa_sndfile_read_channel_map(sndfile, &channel_map) < 0) { if (sample_spec.channels > 2) - pa_log(_("Warning: Failed to determine sample specification from file.\n")); + pa_log(_("Warning: Failed to determine sample specification from file.")); pa_channel_map_init_extend(&channel_map, sample_spec.channels, PA_CHANNEL_MAP_DEFAULT); } @@ -958,19 +1011,19 @@ int main(int argc, char *argv[]) { } else if (pa_streq(argv[optind], "play-sample")) { action = PLAY_SAMPLE; if (argc != optind+2 && argc != optind+3) { - pa_log(_("You have to specify a sample name to play\n")); + pa_log(_("You have to specify a sample name to play")); goto quit; } sample_name = pa_xstrdup(argv[optind+1]); if (optind+2 < argc) - device = pa_xstrdup(argv[optind+2]); + sink_name = pa_xstrdup(argv[optind+2]); } else if (pa_streq(argv[optind], "remove-sample")) { action = REMOVE_SAMPLE; if (argc != optind+2) { - pa_log(_("You have to specify a sample name to remove\n")); + pa_log(_("You have to specify a sample name to remove")); goto quit; } @@ -979,7 +1032,7 @@ int main(int argc, char *argv[]) { } else if (pa_streq(argv[optind], "move-sink-input")) { action = MOVE_SINK_INPUT; if (argc != optind+3) { - pa_log(_("You have to specify a sink input index and a sink\n")); + pa_log(_("You have to specify a sink input index and a sink")); goto quit; } @@ -989,7 +1042,7 @@ int main(int argc, char *argv[]) { } else if (pa_streq(argv[optind], "move-source-output")) { action = MOVE_SOURCE_OUTPUT; if (argc != optind+3) { - pa_log(_("You have to specify a source output index and a source\n")); + pa_log(_("You have to specify a source output index and a source")); goto quit; } @@ -1004,7 +1057,7 @@ int main(int argc, char *argv[]) { action = LOAD_MODULE; if (argc <= optind+1) { - pa_log(_("You have to specify a module name and arguments.\n")); + pa_log(_("You have to specify a module name and arguments.")); goto quit; } @@ -1024,7 +1077,7 @@ int main(int argc, char *argv[]) { action = UNLOAD_MODULE; if (argc != optind+2) { - pa_log(_("You have to specify a module index\n")); + pa_log(_("You have to specify a module index")); goto quit; } @@ -1034,7 +1087,7 @@ int main(int argc, char *argv[]) { action = SUSPEND_SINK; if (argc > optind+3 || optind+1 >= argc) { - pa_log(_("You may not specify more than one sink. You have to specify a boolean value.\n")); + pa_log(_("You may not specify more than one sink. You have to specify a boolean value.")); goto quit; } @@ -1047,7 +1100,7 @@ int main(int argc, char *argv[]) { action = SUSPEND_SOURCE; if (argc > optind+3 || optind+1 >= argc) { - pa_log(_("You may not specify more than one source. You have to specify a boolean value.\n")); + pa_log(_("You may not specify more than one source. You have to specify a boolean value.")); goto quit; } @@ -1059,7 +1112,7 @@ int main(int argc, char *argv[]) { action = SET_CARD_PROFILE; if (argc != optind+3) { - pa_log(_("You have to specify a card name/index and a profile name\n")); + pa_log(_("You have to specify a card name/index and a profile name")); goto quit; } @@ -1070,7 +1123,7 @@ int main(int argc, char *argv[]) { action = SET_SINK_PORT; if (argc != optind+3) { - pa_log(_("You have to specify a sink name/index and a port name\n")); + pa_log(_("You have to specify a sink name/index and a port name")); goto quit; } @@ -1081,13 +1134,123 @@ int main(int argc, char *argv[]) { action = SET_SOURCE_PORT; if (argc != optind+3) { - pa_log(_("You have to specify a source name/index and a port name\n")); + pa_log(_("You have to specify a source name/index and a port name")); goto quit; } source_name = pa_xstrdup(argv[optind+1]); port_name = pa_xstrdup(argv[optind+2]); + } else if (pa_streq(argv[optind], "set-sink-volume")) { + uint32_t v; + action = SET_SINK_VOLUME; + + if (argc != optind+3) { + pa_log(_("You have to specify a sink name/index and a volume")); + goto quit; + } + + if (pa_atou(argv[optind+2], &v) < 0) { + pa_log(_("Invalid volume specification")); + goto quit; + } + + sink_name = pa_xstrdup(argv[optind+1]); + volume = (pa_volume_t) v; + + } else if (pa_streq(argv[optind], "set-source-volume")) { + uint32_t v; + action = SET_SOURCE_VOLUME; + + if (argc != optind+3) { + pa_log(_("You have to specify a source name/index and a volume")); + goto quit; + } + + if (pa_atou(argv[optind+2], &v) < 0) { + pa_log(_("Invalid volume specification")); + goto quit; + } + + source_name = pa_xstrdup(argv[optind+1]); + volume = (pa_volume_t) v; + + } else if (pa_streq(argv[optind], "set-sink-input-volume")) { + uint32_t v; + action = SET_SINK_INPUT_VOLUME; + + if (argc != optind+3) { + pa_log(_("You have to specify a sink input index and a volume")); + goto quit; + } + + if (pa_atou(argv[optind+1], &sink_input_idx) < 0) { + pa_log(_("Invalid sink input index")); + goto quit; + } + + if (pa_atou(argv[optind+2], &v) < 0) { + pa_log(_("Invalid volume specification")); + goto quit; + } + + volume = (pa_volume_t) v; + + } else if (pa_streq(argv[optind], "set-sink-mute")) { + int b; + action = SET_SINK_MUTE; + + if (argc != optind+3) { + pa_log(_("You have to specify a sink name/index and a mute boolean")); + goto quit; + } + + if ((b = pa_parse_boolean(argv[optind+2])) < 0) { + pa_log(_("Invalid volume specification")); + goto quit; + } + + sink_name = pa_xstrdup(argv[optind+1]); + mute = b; + + } else if (pa_streq(argv[optind], "set-source-mute")) { + int b; + action = SET_SOURCE_MUTE; + + if (argc != optind+3) { + pa_log(_("You have to specify a source name/index and a mute boolean")); + goto quit; + } + + if ((b = pa_parse_boolean(argv[optind+2])) < 0) { + pa_log(_("Invalid volume specification")); + goto quit; + } + + source_name = pa_xstrdup(argv[optind+1]); + mute = b; + + } else if (pa_streq(argv[optind], "set-sink-input-mute")) { + int b; + action = SET_SINK_INPUT_MUTE; + + if (argc != optind+3) { + pa_log(_("You have to specify a sink input index and a mute boolean")); + goto quit; + } + + if (pa_atou(argv[optind+1], &sink_input_idx) < 0) { + pa_log(_("Invalid sink input index specification")); + goto quit; + } + + if ((b = pa_parse_boolean(argv[optind+2])) < 0) { + pa_log(_("Invalid volume specification")); + goto quit; + } + + mute = b; + } else if (pa_streq(argv[optind], "help")) { help(bn); ret = 0; @@ -1096,12 +1259,12 @@ int main(int argc, char *argv[]) { } if (action == NONE) { - pa_log(_("No valid command specified.\n")); + pa_log(_("No valid command specified.")); goto quit; } if (!(m = pa_mainloop_new())) { - pa_log(_("pa_mainloop_new() failed.\n")); + pa_log(_("pa_mainloop_new() failed.")); goto quit; } @@ -1113,7 +1276,7 @@ int main(int argc, char *argv[]) { pa_disable_sigpipe(); if (!(context = pa_context_new_with_proplist(mainloop_api, NULL, proplist))) { - pa_log(_("pa_context_new() failed.\n")); + pa_log(_("pa_context_new() failed.")); goto quit; } @@ -1124,7 +1287,7 @@ int main(int argc, char *argv[]) { } if (pa_mainloop_run(m, &ret) < 0) { - pa_log(_("pa_mainloop_run() failed.\n")); + pa_log(_("pa_mainloop_run() failed.")); goto quit; } @@ -1141,7 +1304,6 @@ quit: } pa_xfree(server); - pa_xfree(device); pa_xfree(sample_name); pa_xfree(sink_name); pa_xfree(source_name); diff --git a/src/utils/padsp.c b/src/utils/padsp.c index dfa5aac20..41bfd741e 100644 --- a/src/utils/padsp.c +++ b/src/utils/padsp.c @@ -53,6 +53,7 @@ #include #include #include +#include /* On some systems SIOCINQ isn't defined, but FIONREAD is just an alias */ #if !defined(SIOCINQ) && defined(FIONREAD) @@ -459,15 +460,16 @@ static void reset_params(fd_info *i) { } static const char *client_name(char *buf, size_t n) { - char p[PATH_MAX]; + char *p; const char *e; if ((e = getenv("PADSP_CLIENT_NAME"))) return e; - if (pa_get_binary_name(p, sizeof(p))) + if ((p = pa_get_binary_name_malloc())) { snprintf(buf, n, "OSS Emulation[%s]", p); - else + pa_xfree(p); + } else snprintf(buf, n, "OSS"); return buf; @@ -1819,7 +1821,7 @@ fail: pa_threaded_mainloop_unlock(i->mainloop); - return 0; + return r; } static int dsp_trigger(fd_info *i) { @@ -1862,7 +1864,7 @@ fail: pa_threaded_mainloop_unlock(i->mainloop); - return 0; + return r; } static int dsp_cork(fd_info *i, pa_stream *s, int b) { @@ -1900,7 +1902,7 @@ fail: pa_threaded_mainloop_unlock(i->mainloop); - return 0; + return r; } static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) {