Merge branch 'master' of git://0pointer.de/pulseaudio into dbus-work

Conflicts:
	src/Makefile.am
This commit is contained in:
Tanu Kaskinen 2009-08-24 14:43:11 +03:00
commit 2f3fc2f1d6
100 changed files with 4986 additions and 2224 deletions

View file

@ -47,9 +47,9 @@ case $(uname) in
esac esac
if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
echo "Activating pre-commit hook." cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
cp -pv .git/hooks/pre-commit.sample .git/hooks/pre-commit chmod +x .git/hooks/pre-commit && \
chmod -v +x .git/hooks/pre-commit echo "Activated pre-commit hook."
fi fi
if [ -f .tarball-version ]; then if [ -f .tarball-version ]; then

View file

@ -940,12 +940,6 @@ AC_SUBST(AVAHI_LIBS)
AC_SUBST(HAVE_AVAHI) AC_SUBST(HAVE_AVAHI)
AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1]) 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) #### ### JACK (optional) ####
AC_ARG_ENABLE([jack], AC_ARG_ENABLE([jack],

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n" "Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-08 12:35+0530\n" "PO-Revision-Date: 2009-04-08 12:35+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n" "Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
"Language-Team: Assamese <fedora-trans-as@redhat.com>\n" "Language-Team: Assamese <fedora-trans-as@redhat.com>\n"
@ -16,7 +16,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n" "X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -70,11 +70,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "আভ্যন্তৰীণ অ'ডিঅ'" msgstr "আভ্যন্তৰীণ অ'ডিঅ'"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "মোডেম" msgstr "মোডেম"
@ -322,11 +322,16 @@ msgid "Using state directory %s."
msgstr "অৱস্থাসূচক পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।" msgstr "অৱস্থাসূচক পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।"
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "ৰান-টাইম পঞ্জিকা %s ব্যৱহাৰ কৰা হৈছে ।"
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "প্ৰণালী মোডত চলিছে: %s" msgstr "প্ৰণালী মোডত চলিছে: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -336,15 +341,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ব্যৰ্থ ।" msgstr "pa_pid_file_create() ব্যৰ্থ ।"
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "নতুন high-resolution timers পোৱা হয়! অভিনন্দন!" msgstr "নতুন high-resolution timers পোৱা হয়! অভিনন্দন!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -352,28 +357,28 @@ msgstr ""
"শ্ৰীমান, আপোনাৰ কাৰ্ণেল পূৰণি! high-resolution timer সক্ৰিয় থকা Linux ক আজি " "শ্ৰীমান, আপোনাৰ কাৰ্ণেল পূৰণি! high-resolution timer সক্ৰিয় থকা Linux ক আজি "
"উপদেশ দিয়া হয়!" "উপদেশ দিয়া হয়!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() ব্যৰ্থ ।" msgstr "pa_core_new() ব্যৰ্থ ।"
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "ডেমন আৰম্ভ কৰিবলৈ ব্যৰ্থ ।" msgstr "ডেমন আৰম্ভ কৰিবলৈ ব্যৰ্থ ।"
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
"তুলি লোৱা মডিউল নোহোৱাকে ডেমন আৰম্ভ কৰা হৈছে, কোনো কাম সঞ্চালন কৰা সম্ভৱ নহয় ।" "তুলি লোৱা মডিউল নোহোৱাকে ডেমন আৰম্ভ কৰা হৈছে, কোনো কাম সঞ্চালন কৰা সম্ভৱ নহয় ।"
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "ডেমন আৰম্ভ কৰা সম্পূৰ্ণ ।" msgstr "ডেমন আৰম্ভ কৰা সম্পূৰ্ণ ।"
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "ডেমন বন্ধ কৰাৰ প্ৰক্ৰিয়া আৰম্ভ কৰা হৈছে ।" msgstr "ডেমন বন্ধ কৰাৰ প্ৰক্ৰিয়া আৰম্ভ কৰা হৈছে ।"
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "ডেমন বন্ধ কৰা হৈছে ।" msgstr "ডেমন বন্ধ কৰা হৈছে ।"
@ -630,72 +635,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "পাথ: %s\n" msgstr "পাথ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ লক্ষ্য '%s' বৈধ নহয় ।" msgstr "[%s:%u] লগ লক্ষ্য '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগৰ স্তৰ '%s' বৈধ নহয় ।" msgstr "[%s:%u] লগৰ স্তৰ '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] resample পদ্ধতি '%s' বৈধ নহয় ।" msgstr "[%s:%u] resample পদ্ধতি '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।" msgstr "[%s:%u] rlimit '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] এই স্থাপত্যত rlimit সমৰ্থিত নহয় ।" msgstr "[%s:%u] এই স্থাপত্যত rlimit সমৰ্থিত নহয় ।"
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] চানেকিৰ বিন্যাস '%s' বৈধ নহয় ।" msgstr "[%s:%u] চানেকিৰ বিন্যাস '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] চানেকিৰ মাত্ৰা '%s' বৈধ নহয় ।" msgstr "[%s:%u] চানেকিৰ মাত্ৰা '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়" msgstr "[%s:%u] চানেকিৰ চেনেল '%s' বৈধ নহয়"
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।" msgstr "[%s:%u] চেনেল মেপ '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশৰ সংখ্যা '%s' বৈধ নহয় ।" msgstr "[%s:%u] অংশৰ সংখ্যা '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।" msgstr "[%s:%u] অংশৰ মাপ '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice স্তৰ '%s' বৈধ নহয় ।" msgstr "[%s:%u] nice স্তৰ '%s' বৈধ নহয় ।"
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "বিন্যাস নথিপত্ৰ খুলিবলৈ ব্যৰ্থ: %s" msgstr "বিন্যাস নথিপত্ৰ খুলিবলৈ ব্যৰ্থ: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -703,7 +708,7 @@ msgstr ""
"নিৰ্ধাৰিত অবিকল্পিত চেনেল মেপত নিৰ্ধাৰিত অবিকল্পিত চেনেলৰ সংখ্যাতকে বেলেগ সংখ্যক " "নিৰ্ধাৰিত অবিকল্পিত চেনেল মেপত নিৰ্ধাৰিত অবিকল্পিত চেনেলৰ সংখ্যাতকে বেলেগ সংখ্যক "
"চেনেল আছে ।" "চেনেল আছে ।"
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### চিহ্নিত বিন্যাস নথিপত্ৰৰ পৰা পঢ়া হ'ব: %s ###\n" msgstr "### চিহ্নিত বিন্যাস নথিপত্ৰৰ পৰা পঢ়া হ'ব: %s ###\n"
@ -925,7 +930,7 @@ msgstr "ওপৰত পিছত বাওঁফালে"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "ওপৰত পিছত সোঁফালে" msgstr "ওপৰত পিছত সোঁফালে"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1055,27 +1060,27 @@ msgstr "অনুপস্থিত বাস্তবায়ন"
msgid "Client forked" msgid "Client forked"
msgstr "গ্ৰাহক ফৰ্ক কৰা হৈছে" msgstr "গ্ৰাহক ফৰ্ক কৰা হৈছে"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2227,7 +2232,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn লক প্ৰয়োগ কৰিবলৈ ব্যৰ্থ ।" msgstr "autospawn লক প্ৰয়োগ কৰিবলৈ ব্যৰ্থ ।"
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2243,7 +2248,7 @@ msgstr ""
"POLLOUT নিৰ্ধাৰিত হোৱাৰি পিছতো আমি উথিলো -- কিন্তু তাৰ পিছৰ snd_pcm_avail() এ " "POLLOUT নিৰ্ধাৰিত হোৱাৰি পিছতো আমি উথিলো -- কিন্তু তাৰ পিছৰ snd_pcm_avail() এ "
"দিলে বা অন্য এটা মান < min_avail." "দিলে বা অন্য এটা মান < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n" "Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-08 16:21+0530\n" "PO-Revision-Date: 2009-04-08 16:21+0530\n"
"Last-Translator: Runa Bhattacharjee <runab@fedoraproject.org>\n" "Last-Translator: Runa Bhattacharjee <runab@fedoraproject.org>\n"
"Language-Team: Bengali INDIA <fedora-trans-bn_in@redhat.com>\n" "Language-Team: Bengali INDIA <fedora-trans-bn_in@redhat.com>\n"
@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n" "X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -71,11 +71,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "অভ্যন্তরীণ অডিও" msgstr "অভ্যন্তরীণ অডিও"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "মোডেম" msgstr "মোডেম"
@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "অবস্থাসূচক ডিরেক্টরি %s ব্যবহার করা হচ্ছে।" msgstr "অবস্থাসূচক ডিরেক্টরি %s ব্যবহার করা হচ্ছে।"
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "রান-টাইম ডিরেক্টরি %s ব্যবহার করা হচ্ছে।"
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "সিস্টেম মোডে চলছে: %s" msgstr "সিস্টেম মোডে চলছে: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -340,42 +345,42 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ব্যর্থ।" msgstr "pa_pid_file_create() ব্যর্থ।"
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার উপলব্ধ রয়েছে! পরীক্ষা করে দেখুন!" msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার উপলব্ধ রয়েছে! পরীক্ষা করে দেখুন!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার সহ Linux সক্রিয় করা বাঞ্ছনীয়!" msgstr "উচ্চ-রেসোলিউশনের নতুন টাইমার সহ Linux সক্রিয় করা বাঞ্ছনীয়!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() ব্যর্থ।" msgstr "pa_core_new() ব্যর্থ।"
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "ডেমন আরম্ভ করতে ব্যর্থ।" msgstr "ডেমন আরম্ভ করতে ব্যর্থ।"
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
"লোড করা মডিউল বিনা ডেমন আরম্ভ করা হয়েছে এবং কোনো কর্ম সঞ্চালন করা সম্ভব নয়।" "লোড করা মডিউল বিনা ডেমন আরম্ভ করা হয়েছে এবং কোনো কর্ম সঞ্চালন করা সম্ভব নয়।"
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "ডেমন আরম্ভ করা হয়েছে।" msgstr "ডেমন আরম্ভ করা হয়েছে।"
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "ডেমন বন্ধ করার প্রক্রিয়া আরম্ভ করা হয়েছে।" msgstr "ডেমন বন্ধ করার প্রক্রিয়া আরম্ভ করা হয়েছে।"
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "ডেমন বন্ধ করা হয়েছে।" msgstr "ডেমন বন্ধ করা হয়েছে।"
@ -641,72 +646,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "পাথ: %s\n" msgstr "পাথ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] লগ টার্গেট '%s' বৈধ নয়।" msgstr "[%s:%u] লগ টার্গেট '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] লগের স্তর '%s' বৈধ নয়।" msgstr "[%s:%u] লগের স্তর '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।" msgstr "[%s:%u] রি-স্যাম্পেল পদ্ধতি '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit '%s' বৈধ নয়।" msgstr "[%s:%u] rlimit '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] এই প্ল্যাটফর্মে rlimit সমর্থিত নয়।" msgstr "[%s:%u] এই প্ল্যাটফর্মে rlimit সমর্থিত নয়।"
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] স্যাম্পেলের বিন্যাস '%s' বৈধ নয়।" msgstr "[%s:%u] স্যাম্পেলের বিন্যাস '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] স্যাম্পেলের মাত্রা '%s' বৈধ নয়।" msgstr "[%s:%u] স্যাম্পেলের মাত্রা '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] স্যাম্পেলের চ্যানেল '%s' বৈধ নয়" msgstr "[%s:%u] স্যাম্পেলের চ্যানেল '%s' বৈধ নয়"
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] চ্যানেল ম্যাপ '%s' বৈধ নয়।" msgstr "[%s:%u] চ্যানেল ম্যাপ '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] অংশ সংখ্যা '%s' বৈধ নয়।" msgstr "[%s:%u] অংশ সংখ্যা '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।" msgstr "[%s:%u] অংশের মাপ '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice স্তর '%s' বৈধ নয়।" msgstr "[%s:%u] nice স্তর '%s' বৈধ নয়।"
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "কনফিগারেশন ফাইল খুলতে ব্যর্থ: %s" msgstr "কনফিগারেশন ফাইল খুলতে ব্যর্থ: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -714,7 +719,7 @@ msgstr ""
"ডিফল্ট চ্যানেল ম্যাপের মধ্যে অন্তর্ভুক্ত চ্যানেলের সংখ্যা ও চ্যানেলের ডিফল্ট সংখ্যার মধ্যে " "ডিফল্ট চ্যানেল ম্যাপের মধ্যে অন্তর্ভুক্ত চ্যানেলের সংখ্যা ও চ্যানেলের ডিফল্ট সংখ্যার মধ্যে "
"গরমিল।" "গরমিল।"
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### চিহ্নিত কনফিগারেশন ফাইল থেকে পড়া হবে: %s ###\n" msgstr "### চিহ্নিত কনফিগারেশন ফাইল থেকে পড়া হবে: %s ###\n"
@ -936,7 +941,7 @@ msgstr "উপরে পিছনে বাঁদিকে"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "উপরে পিছনে ডানদিকে" msgstr "উপরে পিছনে ডানদিকে"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1066,27 +1071,27 @@ msgstr "অনুপস্থিত বাস্তবায়ন"
msgid "Client forked" msgid "Client forked"
msgstr "ক্লায়েন্ট ফর্ক করা হয়েছে" msgstr "ক্লায়েন্ট ফর্ক করা হয়েছে"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f গিবিবাইট" msgstr "%0.1f গিবিবাইট"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f মিবিবাইট" msgstr "%0.1f মিবিবাইট"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f কিবিবাইট" msgstr "%0.1f কিবিবাইট"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u বাইট" msgstr "%u বাইট"
@ -2239,7 +2244,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn লক প্রয়োগ করতে ব্যর্থ।" msgstr "autospawn লক প্রয়োগ করতে ব্যর্থ।"
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2256,7 +2261,7 @@ msgstr ""
"POLLOUT set দ্বারা চেতাবনী সৃষ্টি হয়েছে -- পরবর্তী snd_pcm_avail() থেকে 0 অথবা < " "POLLOUT set দ্বারা চেতাবনী সৃষ্টি হয়েছে -- পরবর্তী snd_pcm_avail() থেকে 0 অথবা < "
"min_avail-র থেকে কম অন্য একটি মান প্রাপ্ত হয়েছে।" "min_avail-র থেকে কম অন্য একটি মান প্রাপ্ত হয়েছে।"
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -23,7 +23,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-07-18 11:40+0100\n" "PO-Revision-Date: 2009-07-18 11:40+0100\n"
"Last-Translator: Tomàs Bigordà <t0mynoker@gmail.com>\n" "Last-Translator: Tomàs Bigordà <t0mynoker@gmail.com>\n"
"Language-Team: Catalan <fedora@softcatala.net>\n" "Language-Team: Catalan <fedora@softcatala.net>\n"
@ -31,7 +31,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -93,11 +93,11 @@ msgstr ""
"pulgin=<nom del connector ladspa> label=<etiqueta del connector ladspa> " "pulgin=<nom del connector ladspa> label=<etiqueta del connector ladspa> "
"control=<llista separada per comes dels valors de control d'entrada>" "control=<llista separada per comes dels valors de control d'entrada>"
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Audio intern" msgstr "Audio intern"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Mòdem" msgstr "Mòdem"
@ -353,11 +353,16 @@ msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s." msgstr "S'està utilitzant el directori d'estat %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "S'està utilitzant el directori d'execució %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s" msgstr "S'està executant en mode sistema: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -373,15 +378,15 @@ msgstr ""
"Si us plau, llegiu http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per " "Si us plau, llegiu http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per "
"a una explicació de per què el mode sistema sol ser una mala idea." "a una explicació de per què el mode sistema sol ser una mala idea."
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()." msgstr "S'ha produït un error en pa_pid_file_create()."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Estan disponibles els temporitzadors frescos d'alta resolució." msgstr "Estan disponibles els temporitzadors frescos d'alta resolució."
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -389,27 +394,27 @@ msgstr ""
"Es recomana la utilització d'un nucli amb els temporitzadors d'alta " "Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats." "resolució habilitats."
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()." msgstr "S'ha produït un error en pa_core_new()."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni." msgstr "S'ha produït un error en inicialitzar el dimoni."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà." msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni." msgstr "S'ha completat la inicialització del dimoni."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni." msgstr "S'ha iniciat l'aturada del dimoni."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni." msgstr "S'ha aturat el dimoni."
@ -679,72 +684,72 @@ msgstr "Advertència d'obsolescència: %s\n"
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Ruta: %s\n" msgstr "Ruta: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destí de registre incorrecte '%s'" msgstr "[%s:%u] Destí de registre incorrecte '%s'"
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de registre incorrecte '%s'." msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'." msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'." msgstr "[%s:%u] rlimit incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit no disponible en aquesta plataforma." msgstr "[%s:%u] rlimit no disponible en aquesta plataforma."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'." msgstr "[%s:%u] Format de mostra incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'." msgstr "[%s:%u] Velocitat de mostreig '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'." msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canals incorrecte '%s'." msgstr "[%s:%u] Mapa de canals incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'." msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'." msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'." msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s" msgstr "Error en obrir el fitxer de configuració: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -752,7 +757,7 @@ msgstr ""
"El mapa de canals especificat per omissió té un número de canals diferent " "El mapa de canals especificat per omissió té un número de canals diferent "
"del número de canals especificat per omissió." "del número de canals especificat per omissió."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n" msgstr "### Lectura del fitxer de configuració: %s ###\n"
@ -974,7 +979,7 @@ msgstr "Superior posterior esquerra"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Superior posterior dreta" msgstr "Superior posterior dreta"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1104,27 +1109,27 @@ msgstr "Manca la implementació"
msgid "Client forked" msgid "Client forked"
msgstr "Client bifurcat" msgstr "Client bifurcat"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GB" msgstr "%0.1f GB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MB" msgstr "%0.1f MB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KB" msgstr "%0.1f KB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2299,7 +2304,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "No s'ha pogut accedir al bloqueig d'autospawn." msgstr "No s'ha pogut accedir al bloqueig d'autospawn."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2316,7 +2321,7 @@ msgstr ""
"Ens han aixecat amb POLLOUT activat -- tanmateix una crida posterior a " "Ens han aixecat amb POLLOUT activat -- tanmateix una crida posterior a "
"snd_pcm_avail() ha retornat 0 o un altre valor < min_avail." "snd_pcm_avail() ha retornat 0 o un altre valor < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n" "Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-08-17 01:58+0200\n" "PO-Revision-Date: 2009-08-17 01:58+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n" "Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
@ -77,11 +77,11 @@ msgstr ""
"modulu ladspa> label=<popisek zásuvného modulu ladspa> control=<čárkou " "modulu ladspa> label=<popisek zásuvného modulu ladspa> control=<čárkou "
"oddělený seznam hodnot ovládání vstupu>" "oddělený seznam hodnot ovládání vstupu>"
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Vnitřní zvukový systém" msgstr "Vnitřní zvukový systém"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -329,11 +329,16 @@ msgid "Using state directory %s."
msgstr "Používán stavový adresář %s." msgstr "Používán stavový adresář %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Používán běhový adresář %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Běží v systémovém režimu: %s" msgstr "Běží v systémovém režimu: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -349,16 +354,16 @@ msgstr ""
"Vysvětlení, proč je systémový režim obvykle velmi špatný nápad, si můžete " "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." "přečíst na http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode."
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo." msgstr "pa_pid_file_create() selhalo."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "" msgstr ""
"Jsou dostupné výtečné časovače o vysokém rozlišení. Tak s chutí do toho!" "Jsou dostupné výtečné časovače o vysokém rozlišení. Tak s chutí do toho!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -366,27 +371,27 @@ msgstr ""
"Sorry, vole, kernel error! Tip šéfkuchaře na dnešní den zní: Linux se " "Sorry, vole, kernel error! Tip šéfkuchaře na dnešní den zní: Linux se "
"zapnutými časovači o vysokém rozlišení." "zapnutými časovači o vysokém rozlišení."
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo." msgstr "pa_core_new() selhalo."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Selhalo spuštění démona." msgstr "Selhalo spuštění démona."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." 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." msgstr "Spuštění démona bez jakýchkoliv nahraných modulů, běh bude odmítnut."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Spuštění démona dokončeno." msgstr "Spuštění démona dokončeno."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Vypínání démona spuštěno." msgstr "Vypínání démona spuštěno."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Démon ukončen." msgstr "Démon ukončen."
@ -647,72 +652,72 @@ msgstr "VAROVÁNÍ ZASTARALOSTI: %s\n"
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Cesta: %s\n" msgstr "Cesta: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovací cíl \"%s\"." msgstr "[%s:%u] Neplatný protokolovací cíl \"%s\"."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovací úroveň \"%s\"." msgstr "[%s:%u] Neplatná protokolovací úroveň \"%s\"."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda převzorkování \"%s\"." msgstr "[%s:%u] Neplatná metoda převzorkování \"%s\"."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"." msgstr "[%s:%u] Neplatné rlimit \"%s\"."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit na této platformě není podporováno." 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 #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovací formát \"%s\"." msgstr "[%s:%u] Neplatný vzorkovací formát \"%s\"."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovací frekvence \"%s\"." msgstr "[%s:%u] Neplatná vzorkovací frekvence \"%s\"."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"." msgstr "[%s:%u] Neplatné vzorkovací kanály \"%s\"."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"." msgstr "[%s:%u] Neplatná mapa kanálů \"%s\"."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný počet fragmentů \"%s\"." msgstr "[%s:%u] Neplatný počet fragmentů \"%s\"."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"." msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveň nice \"%s\"." msgstr "[%s:%u] Neplatná úroveň nice \"%s\"."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Nezdařilo se otevřít konfigurační soubor: %s" msgstr "Nezdařilo se otevřít konfigurační soubor: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -720,7 +725,7 @@ msgstr ""
"Zadaná výchozí mapa kanálů obsahuje odlišný počet kanálů než je zadaný " "Zadaná výchozí mapa kanálů obsahuje odlišný počet kanálů než je zadaný "
"výchozí počet kanálů." "výchozí počet kanálů."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Čtení z konfiguračního souboru: %s ###\n" msgstr "### Čtení z konfiguračního souboru: %s ###\n"
@ -942,7 +947,7 @@ msgstr "Horní zadní levý"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Horní zadní pravý" msgstr "Horní zadní pravý"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1072,27 +1077,27 @@ msgstr "Scházející implementace"
msgid "Client forked" msgid "Client forked"
msgstr "Klient rozvětven" msgstr "Klient rozvětven"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2227,7 +2232,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Nelze přistoupit k zámku automatického spouštění." msgstr "Nelze přistoupit k zámku automatického spouštění."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2244,7 +2249,7 @@ msgstr ""
"Probudilo nás nastavení POLLOUT - nicméně následné snd_pcm_avail() vrátilo 0 " "Probudilo nás nastavení POLLOUT - nicméně následné snd_pcm_avail() vrátilo 0 "
"či jinou hodnotu < min_avail." "či jinou hodnotu < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-18 12:43+0100\n" "PO-Revision-Date: 2009-04-18 12:43+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n" "Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n" "Language-Team: German <fedora-trans-de@redhat.com>\n"
@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n" "X-Poedit-Language: German\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -76,11 +76,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Internes Audio" msgstr "Internes Audio"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -328,11 +328,16 @@ msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s." msgstr "Nutze Zustands-Verzeichnis %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s" msgstr "Laufe im System-Modus: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -342,41 +347,41 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen." msgstr "pa_pid_file_create() fehlgeschlagen."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!" msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!" msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen." msgstr "pa_core_new() fehlgeschlagen."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren." msgstr "Konnte Daemon nicht initialisieren."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen." msgstr "Daemon verweigert Ausführung, da keine Module geladen."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen." msgstr "Start des Daemons abgeschlossen."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet." msgstr "Herunterfahren des Daemon gestartet."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Daemon beendet." msgstr "Daemon beendet."
@ -630,72 +635,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Pfad: %s\n" msgstr "Pfad: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'." msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'." msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'." msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'." msgstr "[%s:%u] Ungültiges rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt." msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges 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 #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige 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 #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'." msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'." msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'." msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgröße '%s'." msgstr "[%s:%u] Ungültige Fragmentgröße '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'." msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s" msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -703,7 +708,7 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen " "Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl." "als die angegebene Standard-Kanal-Anzahl."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n" msgstr "### Lese von Konfigurationsdatei: %s ###\n"
@ -925,7 +930,7 @@ msgstr "Oben Hinten Links"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Oben Hinten Rechts" msgstr "Oben Hinten Rechts"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1055,27 +1060,27 @@ msgstr "Fehlende Implementation"
msgid "Client forked" msgid "Client forked"
msgstr "Client geteilt" msgstr "Client geteilt"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GB" msgstr "%0.1f GB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MB" msgstr "%0.1f MB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KB" msgstr "%0.1f KB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2217,7 +2222,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre." msgstr "Fehler beim Zugriff auf Autostart -Sperre."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2228,7 +2233,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-18 12:55+0100\n" "PO-Revision-Date: 2009-04-18 12:55+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n" "Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de@redhat.com>\n" "Language-Team: German <fedora-trans-de@redhat.com>\n"
@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swiss German\n" "X-Poedit-Language: Swiss German\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -75,11 +75,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Internes Audio" msgstr "Internes Audio"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -330,11 +330,16 @@ msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s." msgstr "Nutze Zustands-Verzeichnis %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s" msgstr "Laufe im System-Modus: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -344,41 +349,41 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen." msgstr "pa_pid_file_create() fehlgeschlagen."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!" msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!" msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen." msgstr "pa_core_new() fehlgeschlagen."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren." msgstr "Konnte Daemon nicht initialisieren."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen." msgstr "Daemon verweigert Ausführung, da keine Module geladen."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen." msgstr "Start des Daemons abgeschlossen."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet." msgstr "Herunterfahren des Daemon gestartet."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Daemon beendet." msgstr "Daemon beendet."
@ -632,72 +637,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Pfad: %s\n" msgstr "Pfad: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'." msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'." msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'." msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'." msgstr "[%s:%u] Ungültiges rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt." msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges 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 #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige 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 #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'." msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'." msgstr "[%s:%u] Ungültige Kanal-Zuordnung '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'." msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'." msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'." msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s" msgstr "Öffnen der Konfigurationsdatei fehlgeschlagen : %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
#, fuzzy #, fuzzy
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
@ -706,7 +711,7 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen " "Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl." "als die angegebene Standard-Kanal-Anzahl."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n" msgstr "### Lese von Konfigurationsdatei: %s ###\n"
@ -928,7 +933,7 @@ msgstr "Oben Hinten Links"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Oben Hinten Rechts" msgstr "Oben Hinten Rechts"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1059,27 +1064,27 @@ msgstr "Fehlende Implementation"
msgid "Client forked" msgid "Client forked"
msgstr "Client geforket" msgstr "Client geforket"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GB" msgstr "%0.1f GB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MB" msgstr "%0.1f MB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KB" msgstr "%0.1f KB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2224,7 +2229,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre." msgstr "Fehler beim Zugriff auf Autostart -Sperre."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2242,7 +2247,7 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < " "von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist." "min_avail ist."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: el\n" "Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n" "PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n" "Last-Translator: Dimitris Glezos <dimitris@glezos.com>\n"
"Language-Team: Greek <fedora-trans-el@redhat.com>\n" "Language-Team: Greek <fedora-trans-el@redhat.com>\n"
@ -16,7 +16,7 @@ msgstr ""
"X-Generator: KAider 0.1\n" "X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -61,11 +61,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "" msgstr ""
@ -312,10 +312,15 @@ msgstr ""
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, c-format #, c-format
msgid "Using modules directory %s."
msgstr ""
#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "" msgstr ""
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -325,15 +330,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "" msgstr ""
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "" msgstr ""
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -341,27 +346,27 @@ msgstr ""
"Δικέ μου, ο πυρήνας σου είναι για τα μπάζα! Η πρόταση του σεφ σήμερα είναι " "Δικέ μου, ο πυρήνας σου είναι για τα μπάζα! Η πρόταση του σεφ σήμερα είναι "
"Linux με ενεργοποιημένα τα high-resolution timers!" "Linux με ενεργοποιημένα τα high-resolution timers!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "" msgstr ""
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "" msgstr ""
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "" msgstr ""
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "" msgstr ""
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "" msgstr ""
@ -547,78 +552,78 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "" msgstr ""
@ -839,7 +844,7 @@ msgstr ""
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "" msgstr ""
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -969,27 +974,27 @@ msgstr ""
msgid "Client forked" msgid "Client forked"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "" msgstr ""
@ -1925,7 +1930,7 @@ msgstr ""
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -1936,7 +1941,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -8,16 +8,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PulseAudio\n" "Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-08-10 14:36-0300\n" "PO-Revision-Date: 2009-08-23 09:50-0300\n"
"Last-Translator: Héctor Daniel Cabrera <h.daniel.cabrera@gmail.com>\n" "Last-Translator: Domingo Becker <domingobecker@gmail.com>\n"
"Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n" "Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Spanish\n" "X-Poedit-Language: Spanish\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
@ -80,11 +80,11 @@ msgstr ""
"complemento ladspa> control=<lista separada por comas de valores de control " "complemento ladspa> control=<lista separada por comas de valores de control "
"de entrada>" "de entrada>"
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Audio Interno" msgstr "Audio Interno"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Módem" msgstr "Módem"
@ -338,10 +338,15 @@ msgstr "Utilizando directorio de estado %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, c-format #, c-format
msgid "Using modules directory %s."
msgstr "Utilizando directorio de módulos %s."
#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s" msgstr "Ejecutándose en modo de sistema: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -358,17 +363,17 @@ msgstr ""
"obtener una explicación acerca de por qué es una mala idea utilizar el modo " "obtener una explicación acerca de por qué es una mala idea utilizar el modo "
"sistema." "sistema."
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()." msgstr "Ha fallado pa_pid_file_create()."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "" msgstr ""
"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon " "¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
"appetit!" "appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -376,29 +381,29 @@ msgstr ""
"¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el " "¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el "
"chef es Linux con cronómetros de alta resolución activados! " "chef es Linux con cronómetros de alta resolución activados! "
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()." msgstr "Falló pa_core_new()."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio." msgstr "Fallo al intentar iniciar el demonio."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a " "El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
"funcionar." "funcionar."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "El demonio se inició completamente." msgstr "El demonio se inició completamente."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio." msgstr "Comienza a apagarse el demonio."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "El demonio se ha apagado." msgstr "El demonio se ha apagado."
@ -665,72 +670,72 @@ msgstr "ADVERTENCIA DE COMPATIBILIDAD: %s\n"
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Ruta: %s\n" msgstr "Ruta: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'." msgstr "[%s:%u] Destino de log inválido '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'." msgstr "[%s:%u] Nivel de log inválido '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%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 #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'." msgstr "[%s:%u] Rlimit inválido '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] Rlimit no soportado en esta plataforma." msgstr "[%s:%u] Rlimit no soportado en esta plataforma."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'." msgstr "[%s:%u] Formato de muestra inválido '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'." msgstr "[%s:%u] Tasa de muestra inválida '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'." msgstr "[%s:%u] Canales de muestra inválidos '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canal inválido '%s'." msgstr "[%s:%u] Mapa de canal inválido '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'." msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%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 #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'." msgstr "[%s:%u] Nivel de nice inválido '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "No se pudo abrir el archivo de configuración: %s" msgstr "No se pudo abrir el archivo de configuración: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -738,15 +743,14 @@ msgstr ""
"El mapa de canal predeterminado especificado tiene un número de canales " "El mapa de canal predeterminado especificado tiene un número de canales "
"distinto al especificado como predeterminado." "distinto al especificado como predeterminado."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n" msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
#: ../src/daemon/caps.c:62 #: ../src/daemon/caps.c:62
#, fuzzy
msgid "Cleaning up privileges." msgid "Cleaning up privileges."
msgstr "Abandonando privilegios de root." msgstr "Abandonando privilegios."
#: ../src/daemon/pulseaudio.desktop.in.h:1 #: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System" msgid "PulseAudio Sound System"
@ -960,7 +964,7 @@ msgstr "Posterior izquierdo superior"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Posterior derecho superior" msgstr "Posterior derecho superior"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1090,27 +1094,27 @@ msgstr "Falta implementación"
msgid "Client forked" msgid "Client forked"
msgstr "Cliente iniciado" msgstr "Cliente iniciado"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2251,9 +2255,9 @@ msgid "Daemon not responding."
msgstr "El demonio no responde." msgstr "El demonio no responde."
#: ../src/utils/pacmd.c:161 #: ../src/utils/pacmd.c:161
#, fuzzy, c-format #, c-format
msgid "poll(): %s" msgid "poll(): %s"
msgstr "fork(): %s" msgstr "poll(): %s"
#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format #, c-format
@ -2269,7 +2273,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "No se puede acceder al candado de autogeneración." msgstr "No se puede acceder al candado de autogeneración."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2286,7 +2290,7 @@ msgstr ""
"Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a " "Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a "
"snd_pcm_avail() devolvió 0 u otro valor < min_avail." "snd_pcm_avail() devolvió 0 u otro valor < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: git trunk\n" "Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-05 16:24+0300\n" "PO-Revision-Date: 2009-04-05 16:24+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n" "Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu@lokalisointi.org>\n" "Language-Team: Finnish <laatu@lokalisointi.org>\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -72,11 +72,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Sisäinen äänentoisto" msgstr "Sisäinen äänentoisto"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modeemi" msgstr "Modeemi"
@ -330,11 +330,16 @@ msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s." msgstr "Käytetään tilahakemistoa %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s" msgstr "Suoritetaan järjestelmätilassa: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -344,15 +349,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() epäonnistui." msgstr "pa_pid_file_create() epäonnistui."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä." msgstr "Korkean tarkkuuden ajastimet käytettävissä."
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -360,29 +365,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin " "Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!" "suositeltava!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() epäonnistui." msgstr "pa_core_new() epäonnistui."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui." msgstr "Taustaprosessin alustus epäonnistui."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
"Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään " "Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään "
"toiminnasta." "toiminnasta."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis." msgstr "Taustaprosessin käynnistys valmis."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty." msgstr "Taustaprosessin sulkeminen käynnistetty."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu." msgstr "Taustaprosessi lopetettu."
@ -653,72 +658,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Polku: %s\n" msgstr "Polku: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde ”%s”." msgstr "[%s:%u] Virheellinen lokikirjoituksen kohde ”%s”."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Virheellinen lokikirjoituksen taso ”%s”." msgstr "[%s:%u] Virheellinen lokikirjoituksen taso ”%s”."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa ”%s”." msgstr "[%s:%u] Virheellinen uudelleennäytteistyksen tapa ”%s”."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Virheellinen rlimit ”%s”." msgstr "[%s:%u] Virheellinen rlimit ”%s”."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla." msgstr "[%s:%u] rlimitiä ei tueta tällä alustalla."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Virheellinen näytemuoto ”%s”." msgstr "[%s:%u] Virheellinen näytemuoto ”%s”."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Virheellinen näytteenottotaajuus ”%s”." msgstr "[%s:%u] Virheellinen näytteenottotaajuus ”%s”."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Virheelliset näytekanavat ”%s”." msgstr "[%s:%u] Virheelliset näytekanavat ”%s”."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Virheellinen kanavakartta ”%s”." msgstr "[%s:%u] Virheellinen kanavakartta ”%s”."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Virheellinen fragmenttimäärä ”%s”." msgstr "[%s:%u] Virheellinen fragmenttimäärä ”%s”."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Virheellinen fragmenttikoko ”%s”." msgstr "[%s:%u] Virheellinen fragmenttikoko ”%s”."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Virheellinen nice-taso ”%s”." msgstr "[%s:%u] Virheellinen nice-taso ”%s”."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s" msgstr "Asetustiedoston avaaminen epäonnistui: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -726,7 +731,7 @@ msgstr ""
"Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat " "Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat "
"toisistaan." "toisistaan."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Luettu asetustiedostosta: %s ###\n" msgstr "### Luettu asetustiedostosta: %s ###\n"
@ -948,7 +953,7 @@ msgstr "Vasen ylä taka"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Oikea ylä taka" msgstr "Oikea ylä taka"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1078,27 +1083,27 @@ msgstr "Puuttuva toteutus"
msgid "Client forked" msgid "Client forked"
msgstr "Asiakasohjelma haarautui" msgstr "Asiakasohjelma haarautui"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %u kan. %uHz" msgstr "%s %u kan. %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2250,7 +2255,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää." msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2267,7 +2272,7 @@ msgstr ""
"asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, " "asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, "
"joka on < min_avail." "joka on < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -11,7 +11,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio trunk\n" "Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-26 17:22+0200\n" "PO-Revision-Date: 2009-04-26 17:22+0200\n"
"Last-Translator: Corentin Perard <corentin.perard@gmail.com>\n" "Last-Translator: Corentin Perard <corentin.perard@gmail.com>\n"
"Language-Team: French <fedora-trans-fr@redhat.com>\n" "Language-Team: French <fedora-trans-fr@redhat.com>\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n" "Plural-Forms: nplurals=2; plural=n>1;\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -77,11 +77,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Audio interne" msgstr "Audio interne"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -336,11 +336,16 @@ msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s." msgstr "Utilisation du répertoire d'état %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s" msgstr "Exécution en mode système : %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -350,16 +355,16 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "Échec de pa_pid_file_create()." msgstr "Échec de pa_pid_file_create()."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "" msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !" "De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -367,27 +372,27 @@ msgstr ""
"Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est " "Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est "
"d'activer les horloges à haute résolution sur ton Linux." "d'activer les horloges à haute résolution sur ton Linux."
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "Échec de pa_core_new()." msgstr "Échec de pa_core_new()."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Échec lors de l'initialisation du démon" msgstr "Échec lors de l'initialisation du démon"
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Démarrage du démon sans aucun module chargé : refus de fonctionner." msgstr "Démarrage du démon sans aucun module chargé : refus de fonctionner."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué." msgstr "Démarrage du démon effectué."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée." msgstr "Fermeture du démon initiée."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Démon terminé." msgstr "Démon terminé."
@ -663,72 +668,72 @@ msgid "Path: %s\n"
msgstr "Chemin : %s\n" msgstr "Chemin : %s\n"
# dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci] # 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 #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide." msgstr "[%s:%u] Cible du journal « %s » invalide."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide." msgstr "[%s:%u] Niveau du journal « %s » invalide."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide." msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide." msgstr "[%s:%u] rlimit « %s » invalide."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme." 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 #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide." msgstr "[%s:%u] Format d'échantillon « %s » invalide."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide." msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide." msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Plan de canaux « %s » invalide." msgstr "[%s:%u] Plan de canaux « %s » invalide."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide." msgstr "[%s:%u] Nombre de fragments « %s » invalide."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide." msgstr "[%s:%u] Taille du fragment « %s » invalide."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide." msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Échec lors de l'ouverture du fichier de configuration : %s" msgstr "Échec lors de l'ouverture du fichier de configuration : %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -736,7 +741,7 @@ msgstr ""
"Le plan de canaux spécifié par défaut a un nombre de canaux différent du " "Le plan de canaux spécifié par défaut a un nombre de canaux différent du "
"nombre spécifié par défaut." "nombre spécifié par défaut."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n" msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
@ -958,7 +963,7 @@ msgstr "Arrière gauche haut"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Arrière droit haut" msgstr "Arrière droit haut"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1088,27 +1093,27 @@ msgstr "Implantation manquante"
msgid "Client forked" msgid "Client forked"
msgstr "Le client s'est divisé (Client forked)" msgstr "Le client s'est divisé (Client forked)"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f Gio" msgstr "%0.1f Gio"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f Mio" msgstr "%0.1f Mio"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f Kio" msgstr "%0.1f Kio"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2289,7 +2294,7 @@ msgstr "write() : %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome." msgstr "Impossible d'accèder au verrou autonome."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2306,7 +2311,7 @@ msgstr ""
"le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une " "le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une "
"autre valeur < min_avail." "autre valeur < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-07 14:27+0530\n" "PO-Revision-Date: 2009-04-07 14:27+0530\n"
"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n" "Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
"Language-Team: Gujarati\n" "Language-Team: Gujarati\n"
@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n" "X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -73,11 +73,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "આંતરિક ઓડિયો" msgstr "આંતરિક ઓડિયો"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "મોડેમ" msgstr "મોડેમ"
@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "સ્થિતિ ડિરેક્ટરી %s ને વાપરી રહ્યા છે." msgstr "સ્થિતિ ડિરેક્ટરી %s ને વાપરી રહ્યા છે."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "રનટાઇમ ડિરેક્ટરી %s ને વાપરી રહ્યા છે."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે: %s" msgstr "સિસ્ટમ સ્થિતિમાં ચાલી રહ્યુ છે: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -340,15 +345,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() નિષ્ફળ." msgstr "pa_pid_file_create() નિષ્ફળ."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "તાજુ high-resolution ટાઇમરો ઉપલ્બધ છે! બોન એપેટાઇટ!" msgstr "તાજુ high-resolution ટાઇમરો ઉપલ્બધ છે! બોન એપેટાઇટ!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -356,27 +361,27 @@ msgstr ""
"મિત્ર, તમારુ કર્નલમાં ગડબડ છે! રસોઇયાનું આજે ભલામણ એ સક્રિય થયેલ high-resolution " "મિત્ર, તમારુ કર્નલમાં ગડબડ છે! રસોઇયાનું આજે ભલામણ એ સક્રિય થયેલ high-resolution "
"ટાઇમરો સાથે Linux નું છે!" "ટાઇમરો સાથે Linux નું છે!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() નિષ્ફળ." msgstr "pa_core_new() નિષ્ફળ."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "ડિમનને શરૂ કરવામાં નિષ્ફળ." msgstr "ડિમનને શરૂ કરવામાં નિષ્ફળ."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "કોઇપણ લોડ થયેલ મોડ્યુલો વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહ્યા છે." msgstr "કોઇપણ લોડ થયેલ મોડ્યુલો વગર ડિમનને શરૂ કરો, કામ કરવા માટે ફરી શરૂ કરી રહ્યા છે."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "ડિમન પારંભ કરવાનું સમાપ્ત છે." msgstr "ડિમન પારંભ કરવાનું સમાપ્ત છે."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "ડિમનને બંધ કરવાનું પ્રારંભ થયેલ છે." msgstr "ડિમનને બંધ કરવાનું પ્રારંભ થયેલ છે."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "ડિમનનો અંત આવેલ છે." msgstr "ડિમનનો અંત આવેલ છે."
@ -632,79 +637,79 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "પાથ: %s\n" msgstr "પાથ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] અયોગ્ય લોગ લક્ષ્ય '%s'." msgstr "[%s:%u] અયોગ્ય લોગ લક્ષ્ય '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] અયોગ્ય લોગ સ્તર '%s'." msgstr "[%s:%u] અયોગ્ય લોગ સ્તર '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] અયોગ્ય resample પદ્દતિ '%s'." msgstr "[%s:%u] અયોગ્ય resample પદ્દતિ '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] અયોગ્ય rlimit '%s'." msgstr "[%s:%u] અયોગ્ય rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit એ આ પ્લેટફોર્મ પર આધારભૂત નથી." msgstr "[%s:%u] rlimit એ આ પ્લેટફોર્મ પર આધારભૂત નથી."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] અયોગ્ય નમૂના બંધારણ '%s'." msgstr "[%s:%u] અયોગ્ય નમૂના બંધારણ '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] અયોગ્ય નમૂના દર '%s'." msgstr "[%s:%u] અયોગ્ય નમૂના દર '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] અયોગ્ય નમૂના ચેનલો '%s'." msgstr "[%s:%u] અયોગ્ય નમૂના ચેનલો '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] અયોગ્ય ચેનલ મેપ '%s'." msgstr "[%s:%u] અયોગ્ય ચેનલ મેપ '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટોનાં નંબર '%s'." msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટોનાં નંબર '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટ માપ '%s'." msgstr "[%s:%u] અયોગ્ય ફ્રેગમેન્ટ માપ '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] અયોગ્ય સારુ સ્તર '%s'." msgstr "[%s:%u] અયોગ્ય સારુ સ્તર '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનું નિષ્ફળ: %s" msgstr "રૂપરેખાંકન ફાઇલને ખોલવાનું નિષ્ફળ: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "" msgstr ""
"સ્પષ્ટ થયેલ મૂળભૂત ચેનલ મેપ પાસે સ્પષ્ટ થયેલ ચેનલોની મૂળભૂત સંખ્યા કરતા વિવિધ ચેનલોની સંખ્યા છે." "સ્પષ્ટ થયેલ મૂળભૂત ચેનલ મેપ પાસે સ્પષ્ટ થયેલ ચેનલોની મૂળભૂત સંખ્યા કરતા વિવિધ ચેનલોની સંખ્યા છે."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### રૂપરેખાંકન ફાઇલમાંથી વાંચો: %s ###\n" msgstr "### રૂપરેખાંકન ફાઇલમાંથી વાંચો: %s ###\n"
@ -926,7 +931,7 @@ msgstr "ઉપર રિઅર ડાબે"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "ઉપર રિઅર જમણે" msgstr "ઉપર રિઅર જમણે"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1056,27 +1061,27 @@ msgstr "ગુમ થયેલ અમલીકરણ"
msgid "Client forked" msgid "Client forked"
msgstr "ક્લાઇન્ટમાં ફાટા પડેલ છે" msgstr "ક્લાઇન્ટમાં ફાટા પડેલ છે"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2227,7 +2232,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn તાળાને દાખલ કરી શકાતુ નથી." msgstr "autospawn તાળાને દાખલ કરી શકાતુ નથી."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2244,7 +2249,7 @@ msgstr ""
"POLLOUT સુયોજન સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનું snd_pcm_avail() ને 0 પાછો મળે " "POLLOUT સુયોજન સાથે આપણે જાગેલ હતા -- છતાંપણ ના પછીનું snd_pcm_avail() ને 0 પાછો મળે "
"છે અથવા બીજી કિંમત < min_avail." "છે અથવા બીજી કિંમત < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" "Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-06-08 12:01+0530\n" "PO-Revision-Date: 2009-06-08 12:01+0530\n"
"Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n" "Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n"
"Language-Team: Hindi <hindi.sf.net>\n" "Language-Team: Hindi <hindi.sf.net>\n"
@ -20,7 +20,7 @@ msgstr ""
"\n" "\n"
"\n" "\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -75,11 +75,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "आंतरिक ऑडियो" msgstr "आंतरिक ऑडियो"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "मॉडेम" msgstr "मॉडेम"
@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "स्टेट निर्देशिका %s का प्रयोग कर रहा है." msgstr "स्टेट निर्देशिका %s का प्रयोग कर रहा है."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "रनटाइम निर्देशिका %s का प्रयोग कर रहा है."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "तंत्र मोड में चल रहा है: %s" msgstr "तंत्र मोड में चल रहा है: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -340,42 +345,42 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() विफल." msgstr "pa_pid_file_create() विफल."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ताज़ा उच्च विभेदन टाइमर उपलब्ध! आनंद लें!" msgstr "ताज़ा उच्च विभेदन टाइमर उपलब्ध! आनंद लें!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "" msgstr ""
"आपका कर्नेल बुरी स्थिति में है! सलाह है कि उच्च विभेदन युक्त लिनक्स सक्रिय किया जाना चाहिए!" "आपका कर्नेल बुरी स्थिति में है! सलाह है कि उच्च विभेदन युक्त लिनक्स सक्रिय किया जाना चाहिए!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() विफल." msgstr "pa_core_new() विफल."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "डेमॉन आरंभ करने में विफल." msgstr "डेमॉन आरंभ करने में विफल."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "बिना लोड मॉड्यूल के डेमॉन आरंभ, काम करने से अस्वीकार कर रहा है." msgstr "बिना लोड मॉड्यूल के डेमॉन आरंभ, काम करने से अस्वीकार कर रहा है."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "डेमॉन आरंभन पूर्ण." msgstr "डेमॉन आरंभन पूर्ण."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "डेमॉन बन्द किया जाना आरंभ." msgstr "डेमॉन बन्द किया जाना आरंभ."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "डेमॉन अवरोधित." msgstr "डेमॉन अवरोधित."
@ -632,72 +637,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "पथ: %s\n" msgstr "पथ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'." msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग स्तर '%s'." msgstr "[%s:%u] अवैध लॉग स्तर '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पुनः नमूना विधि '%s'." msgstr "[%s:%u] अवैध पुनः नमूना विधि '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'." msgstr "[%s:%u] अवैध rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit इस प्लेटफॉर्म पर समर्थित नहीं." msgstr "[%s:%u] rlimit इस प्लेटफॉर्म पर समर्थित नहीं."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध प्रतिदर्श प्रारूप '%s'." msgstr "[%s:%u] अवैध प्रतिदर्श प्रारूप '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध प्रतिदर्श दर '%s'." msgstr "[%s:%u] अवैध प्रतिदर्श दर '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध प्रतिदर्श चैनल '%s'." msgstr "[%s:%u] अवैध प्रतिदर्श चैनल '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध चैनल मानचित्र '%s'." msgstr "[%s:%u] अवैध चैनल मानचित्र '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] टुकड़े '%s' की अवैध संख्या." msgstr "[%s:%u] टुकड़े '%s' की अवैध संख्या."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध खंड आकार '%s'." msgstr "[%s:%u] अवैध खंड आकार '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध नाइस स्तर '%s'." msgstr "[%s:%u] अवैध नाइस स्तर '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "विन्यास फ़ाइल खोलने में विफल: %s" msgstr "विन्यास फ़ाइल खोलने में विफल: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -705,7 +710,7 @@ msgstr ""
"निर्दिष्ट तयशुदा चैनल मानचित्र के पास चैनल की भिन्न संख्या है चैनल की तयशुदा निर्दिष्ट संख्या " "निर्दिष्ट तयशुदा चैनल मानचित्र के पास चैनल की भिन्न संख्या है चैनल की तयशुदा निर्दिष्ट संख्या "
"के बनिस्पत." "के बनिस्पत."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### विन्यास फ़ाइल से पढ़ें: %s ###\n" msgstr "### विन्यास फ़ाइल से पढ़ें: %s ###\n"
@ -927,7 +932,7 @@ msgstr "ऊपर पश्च बायाँ"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "ऊपर पश्च दायाँ" msgstr "ऊपर पश्च दायाँ"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1057,27 +1062,27 @@ msgstr "अनुपस्थित कार्यान्वयन"
msgid "Client forked" msgid "Client forked"
msgstr "क्लाएंट विभाजित" msgstr "क्लाएंट विभाजित"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2233,7 +2238,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn लॉक की पहुँच नहीं ले सकता है." msgstr "autospawn लॉक की पहुँच नहीं ले सकता है."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2250,7 +2255,7 @@ msgstr ""
"हमें POLLOUT सेट के साथ तैयार किया गया है -- हालांकि परवर्ती snd_pcm_avail() ने 0 या " "हमें POLLOUT सेट के साथ तैयार किया गया है -- हालांकि परवर्ती snd_pcm_avail() ने 0 या "
"दूसरा मान < min_avail दिया." "दूसरा मान < min_avail दिया."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-20 22:34+0200\n" "PO-Revision-Date: 2009-04-20 22:34+0200\n"
"Last-Translator: mario_santagiuliana <mario at marionline.it>\n" "Last-Translator: mario_santagiuliana <mario at marionline.it>\n"
"Language-Team: Italian <fedora-trans-it at redhat.com>\n" "Language-Team: Italian <fedora-trans-it at redhat.com>\n"
@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n" "X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -74,11 +74,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Audio interno" msgstr "Audio interno"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -335,11 +335,16 @@ msgid "Using state directory %s."
msgstr "In uso directory di stato %s." msgstr "In uso directory di stato %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "In uso directory di runtime %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s" msgstr "In esecuzione in modalità sistema: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -349,17 +354,17 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita." msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah! # io mi domando e dico..... mah!
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!" msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!"
# $REPEAT_PREVIOUS_COMMENT_HERE # $REPEAT_PREVIOUS_COMMENT_HERE
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -367,27 +372,27 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i " "Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!" "timer high-resolution abilitati!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita." msgstr "pa_core_new() non riuscita."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita." msgstr "Inizializzazione del demone non riuscita."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare." msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone." msgstr "Completato l'avvio del demone."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone." msgstr "Iniziato l'arresto del demone."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Demone terminato." msgstr "Demone terminato."
@ -678,73 +683,73 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Percorso: %s\n" msgstr "Percorso: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida." msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido." msgstr "[%s:%u] Livello di registro \"%s\" non valido."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido." msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido." msgstr "[%s:%u] rlimit \"%s\" non valido."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit non supportato su questa piattaforma." msgstr "[%s:%u] rlimit non supportato su questa piattaforma."
# o campionamento?? ma campionamento non è sampling? # o campionamento?? ma campionamento non è sampling?
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido." msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida." msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi." msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mappa del canale \"%s\" non valida." msgstr "[%s:%u] Mappa del canale \"%s\" non valida."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido." msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida." msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido." msgstr "[%s:%u] Livello di nice \"%s\" non valido."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s" msgstr "Apertura del file di configurazione non riuscita: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -752,7 +757,7 @@ msgstr ""
"La mappa del canale predefinita specificata presenta un numero diverso di " "La mappa del canale predefinita specificata presenta un numero diverso di "
"canali rispetto a quello predefinito specificato." "canali rispetto a quello predefinito specificato."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Lettura dal file di configurazione: %s ###\n" msgstr "### Lettura dal file di configurazione: %s ###\n"
@ -976,7 +981,7 @@ msgstr "Superiore posteriore sinistro"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Superiore posteriore destro" msgstr "Superiore posteriore destro"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1106,27 +1111,27 @@ msgstr "Implementazione mancante"
msgid "Client forked" msgid "Client forked"
msgstr "Fork del client" msgstr "Fork del client"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s ch %u %u Hz" msgstr "%s ch %u %u Hz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2318,7 +2323,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn." msgstr "Impossibile accedere al lock di autospawn."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2335,7 +2340,7 @@ msgstr ""
"Ci si è alzati con impostato POLLOUT -- come sempre un subsequent " "Ci si è alzati con impostato POLLOUT -- come sempre un subsequent "
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail." "snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" "Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-07 11:13+0530\n" "PO-Revision-Date: 2009-04-07 11:13+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n" "Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n" "Language-Team: Kannada <en@li.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n" "X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -71,11 +71,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "ಆಂತರಿಕ ಆಡಿಯೊ" msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "ಮಾಡೆಮ್:" msgstr "ಮಾಡೆಮ್:"
@ -331,11 +331,16 @@ msgid "Using state directory %s."
msgstr "ಸ್ಥಿತಿ ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು." msgstr "ಸ್ಥಿತಿ ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "ಚಲಾವಣಾಸಮಯ(ರನ್‌ಟೈಮ್) ಕೋಶ %s ಅನ್ನು ಬಳಸಿಕೊಂಡು."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s" msgstr "ವ್ಯವಸ್ಥೆಯ ಕ್ರಮದಲ್ಲಿ ಚಲಾಯಿಸಲಾಗುತ್ತಿದೆ: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -345,15 +350,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ." msgstr "pa_pid_file_create() ವಿಫಲಗೊಂಡಿದೆ."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ತಾಜಾ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಲಭ್ಯವಿದೆ! Bon appetit!" msgstr "ತಾಜಾ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಲಭ್ಯವಿದೆ! Bon appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -361,27 +366,27 @@ msgstr ""
"ಮಹಾಶಯರೆ, ನಿಮ್ಮ ಕರ್ನಲ್ ಕೊಳೆತುಹೋಗಿದೆ! ಅತ್ಯುತ್ತಮ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾದ " "ಮಹಾಶಯರೆ, ನಿಮ್ಮ ಕರ್ನಲ್ ಕೊಳೆತುಹೋಗಿದೆ! ಅತ್ಯುತ್ತಮ ರೆಸಲ್ಯೂಶನ್ ಟೈಮರ್ ಅನ್ನು ಶಕ್ತಗೊಳಿಸಲಾದ "
"ಲಿನಕ್ಸನ್ನು ಬಳಸುವಂತೆ ಅಡುಗೆಯವರು ಸಲಹೆ ಮಾಡುತ್ತಿದ್ದಾರೆ!" "ಲಿನಕ್ಸನ್ನು ಬಳಸುವಂತೆ ಅಡುಗೆಯವರು ಸಲಹೆ ಮಾಡುತ್ತಿದ್ದಾರೆ!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ." msgstr "pa_core_new() ವಿಫಲಗೊಂಡಿದೆ."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "ಡೀಮನ್ ಅನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ." msgstr "ಡೀಮನ್ ಅನ್ನು ಆರಂಭಿಸಲು ವಿಫಲಗೊಂಡಿದೆ."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ಲೋಡ್ ಮಾಡಲಾದ ಯಾವುದೆ ಡೀಮನ್ ಇಲ್ಲದೆ ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲು ನಿರಾಕರಿಸಿದೆ." msgstr "ಲೋಡ್ ಮಾಡಲಾದ ಯಾವುದೆ ಡೀಮನ್ ಇಲ್ಲದೆ ಆರಂಭಗೊಂಡಿದೆ, ಕೆಲಸ ಮಾಡಲು ನಿರಾಕರಿಸಿದೆ."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳಿಕೆ ಪೂರ್ಣಗೊಂಡಿದೆ." msgstr "ಡೀಮನ್ ಆರಂಭಗೊಳಿಕೆ ಪೂರ್ಣಗೊಂಡಿದೆ."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "ಡೀಮನ್ ಸ್ಥಗಿತಗೊಳಿಕೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ." msgstr "ಡೀಮನ್ ಸ್ಥಗಿತಗೊಳಿಕೆಯನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "ಡೀಮನ್ ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸಲಾಗಿದೆ." msgstr "ಡೀಮನ್ ಅನ್ನು ಅಂತ್ಯಗೊಳಿಸಲಾಗಿದೆ."
@ -643,72 +648,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "ಮಾರ್ಗ: %s\n" msgstr "ಮಾರ್ಗ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಮಟ್ಟ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಮಟ್ಟ '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಮರುನಮೂನೆ ವಿಧಾನ '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ rlimit '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ಗೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ." msgstr "[%s:%u] rlimit ಗೆ ಈ ಪ್ಲಾಟ್‌ಫಾರ್ಮಿನಲ್ಲಿ ಬೆಂಬಲವಿಲ್ಲ."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ರಚನೆ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ರಚನೆ '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ದರ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ದರ '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ಚಾನಲ್‌ಗಳು '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನಮೂನೆ ಚಾನಲ್‌ಗಳು '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಚಾನಲ್ ನಕ್ಷೆ '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ಅಮಾನ್ತವಾದ ಫ್ರಾಗ್ಮೆಂಟುಗಳ ಸಂಖ್ಯೆ '%s'." msgstr "[%s:%u] ಅಮಾನ್ತವಾದ ಫ್ರಾಗ್ಮೆಂಟುಗಳ ಸಂಖ್ಯೆ '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಫ್ರಾಗ್ಮೆಂಟ್ ಗಾತ್ರ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ಫ್ರಾಗ್ಮೆಂಟ್ ಗಾತ್ರ '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನೈಸ್‌ ಹಂತ '%s'." msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ನೈಸ್‌ ಹಂತ '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ: %s" msgstr "ಸಂರಚನಾ ಕಡತವನ್ನು ತೆರೆಯಲು ವಿಫಲಗೊಂಡಿದೆ: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -716,7 +721,7 @@ msgstr ""
"ಸೂಚಿಸಲಾದ ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್ ನಕ್ಷೆಯು ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆಗಳಿಗಿಂತ ವಿಭಿನ್ನವಾದ " "ಸೂಚಿಸಲಾದ ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್ ನಕ್ಷೆಯು ಪೂರ್ವನಿಯೋಜಿತ ಚಾನಲ್‌ಗಳ ಸಂಖ್ಯೆಗಳಿಗಿಂತ ವಿಭಿನ್ನವಾದ "
"ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿದೆ." "ಮಾರ್ಗಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿದೆ."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### ಸಂರಚನಾ ಕಡತದಿಂದ ಓದು: %s ###\n" msgstr "### ಸಂರಚನಾ ಕಡತದಿಂದ ಓದು: %s ###\n"
@ -938,7 +943,7 @@ msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಎಡಭಾಗ"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಬಲಭಾಗ" msgstr "ಮೇಲಿನ ಹಿಂಬದಿಯ ಬಲಭಾಗ"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1068,27 +1073,27 @@ msgstr "ಅನ್ವಯಿಸುವಿಕೆಯು ಕಾಣಿಸುತ್ತ
msgid "Client forked" msgid "Client forked"
msgstr "ಕ್ಲೈಂಟ್ ಅನ್ನು ಫೋರ್ಕ್ ಮಾಡಲಾಗಿದೆ" msgstr "ಕ್ಲೈಂಟ್ ಅನ್ನು ಫೋರ್ಕ್ ಮಾಡಲಾಗಿದೆ"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2243,7 +2248,7 @@ msgstr "ಬರೆ(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "ಸ್ವಯಂಹೆಚ್ಚಿಸುವಿಕೆಯ ಲಾಕ್ ಅನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ." msgstr "ಸ್ವಯಂಹೆಚ್ಚಿಸುವಿಕೆಯ ಲಾಕ್ ಅನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2258,7 +2263,7 @@ msgstr ""
"ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ.POLLOUT ಸೆಟ್‌ನಿಂದ ನಾವು ಎಚ್ಚೆತ್ತುಗೊಂಡಿದ್ದೇವೆ -- ಆದರೆ ನಂತರದ " "ವಿಕಸನಗಾರರ ಗಮನಕ್ಕೆ ತನ್ನಿ.POLLOUT ಸೆಟ್‌ನಿಂದ ನಾವು ಎಚ್ಚೆತ್ತುಗೊಂಡಿದ್ದೇವೆ -- ಆದರೆ ನಂತರದ "
"snd_pcm_avail() 0 ಅಥವ min_avail ಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಇನ್ನೊಂದು ಮೌಲ್ಯವನ್ನು ಮರಳಿಸಿದೆ." "snd_pcm_avail() 0 ಅಥವ min_avail ಕ್ಕಿಂತ ಚಿಕ್ಕದಾದ ಇನ್ನೊಂದು ಮೌಲ್ಯವನ್ನು ಮರಳಿಸಿದೆ."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -61,11 +61,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "" msgstr ""
@ -312,10 +312,15 @@ msgstr ""
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, c-format #, c-format
msgid "Using modules directory %s."
msgstr ""
#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "" msgstr ""
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -325,41 +330,41 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "" msgstr ""
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "" msgstr ""
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "" msgstr ""
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "" msgstr ""
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "" msgstr ""
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "" msgstr ""
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "" msgstr ""
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "" msgstr ""
@ -545,78 +550,78 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "" msgstr ""
@ -837,7 +842,7 @@ msgstr ""
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "" msgstr ""
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -967,27 +972,27 @@ msgstr ""
msgid "Client forked" msgid "Client forked"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "" msgstr ""
@ -1923,7 +1928,7 @@ msgstr ""
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -1934,7 +1939,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" "Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-06 13:43+0530\n" "PO-Revision-Date: 2009-04-06 13:43+0530\n"
"Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n" "Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n"
"Language-Team: marathi\n" "Language-Team: marathi\n"
@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n" "X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -71,11 +71,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "आंतरीक ऑडिओ" msgstr "आंतरीक ऑडिओ"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "मोडेम" msgstr "मोडेम"
@ -322,11 +322,16 @@ msgid "Using state directory %s."
msgstr "स्थिती डिरेक्ट्री %s वापरत आहे." msgstr "स्थिती डिरेक्ट्री %s वापरत आहे."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "रनटाईम डिरेक्ट्री %s वापरत आहे."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "प्रणाली पद्धतीत कार्यरत: %s" msgstr "प्रणाली पद्धतीत कार्यरत: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -336,15 +341,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() अपयशी." msgstr "pa_pid_file_create() अपयशी."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "नवीन उच्च-बिंदूता टाइमर उपलब्ध! Bon appetit!" msgstr "नवीन उच्च-बिंदूता टाइमर उपलब्ध! Bon appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -352,27 +357,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() अपयशी." msgstr "pa_core_new() अपयशी."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "डिमन प्रारंभ करण्यास अपयशी." msgstr "डिमन प्रारंभ करण्यास अपयशी."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "विना विभाग दाखल केल्यास डिमन प्रारंभ झाले, कार्य करण्यास नकार." msgstr "विना विभाग दाखल केल्यास डिमन प्रारंभ झाले, कार्य करण्यास नकार."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "डिमन स्टार्टअप पूर्ण झाले." msgstr "डिमन स्टार्टअप पूर्ण झाले."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "डिमन पूर्णपणे बंद करण्यास प्रारंभ केले." msgstr "डिमन पूर्णपणे बंद करण्यास प्रारंभ केले."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "डिमन नष्ट केले." msgstr "डिमन नष्ट केले."
@ -629,72 +634,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "मार्ग: %s\n" msgstr "मार्ग: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'." msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] अवैध लॉग स्तर '%s'." msgstr "[%s:%u] अवैध लॉग स्तर '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] अवैध पुन्ह सॅम्पल पद्धत '%s'." msgstr "[%s:%u] अवैध पुन्ह सॅम्पल पद्धत '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] अवैध rlimit '%s'." msgstr "[%s:%u] अवैध rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit या प्लॅटफॉर्म वर समर्थीत नाही." msgstr "[%s:%u] rlimit या प्लॅटफॉर्म वर समर्थीत नाही."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] अवैध सॅम्पल स्वरूप '%s'." msgstr "[%s:%u] अवैध सॅम्पल स्वरूप '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] अवैध सॅम्पल दर '%s'." msgstr "[%s:%u] अवैध सॅम्पल दर '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] अवैध सॅम्पल मार्ग '%s'." msgstr "[%s:%u] अवैध सॅम्पल मार्ग '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] अवैध मार्ग मॅप '%s'." msgstr "[%s:%u] अवैध मार्ग मॅप '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] अवैध तुकडे '%s' यांची एकूण संख्या." msgstr "[%s:%u] अवैध तुकडे '%s' यांची एकूण संख्या."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] अवैध तुकड्याचे आकार '%s'." msgstr "[%s:%u] अवैध तुकड्याचे आकार '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] अवैध nice स्तर '%s'." msgstr "[%s:%u] अवैध nice स्तर '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "संयोजना फाइल उघडण्यास अपयशी: %s" msgstr "संयोजना फाइल उघडण्यास अपयशी: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -702,7 +707,7 @@ msgstr ""
"निश्चित मुलभूत वाहिनी मॅपकडे निश्चित एकूण मुलभूत वाहिनी पेक्षा वेगळे वाहिनी संख्या " "निश्चित मुलभूत वाहिनी मॅपकडे निश्चित एकूण मुलभूत वाहिनी पेक्षा वेगळे वाहिनी संख्या "
"समाविष्टीत आहे." "समाविष्टीत आहे."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### संयोजना फाइल: %s पासून वाचा ###\n" msgstr "### संयोजना फाइल: %s पासून वाचा ###\n"
@ -924,7 +929,7 @@ msgstr "वरील पाठीमागचे डावे"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "वरील पाठीमागचे उजवे" msgstr "वरील पाठीमागचे उजवे"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1054,27 +1059,27 @@ msgstr "लागू केले आहे असे आढळले नाह
msgid "Client forked" msgid "Client forked"
msgstr "क्लाऐंट विभाजीत केले" msgstr "क्लाऐंट विभाजीत केले"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2230,7 +2235,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn कुलूप करीता प्रवेश प्राप्य अशक्य." msgstr "autospawn कुलूप करीता प्रवेश प्राप्य अशक्य."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2245,7 +2250,7 @@ msgstr ""
"POLLOUT द्वारे सज्ज होणे शक्य आहे -- तरी परस्पर snd_pcm_avail() ने 0 पूरविले किंवा इतर " "POLLOUT द्वारे सज्ज होणे शक्य आहे -- तरी परस्पर snd_pcm_avail() ने 0 पूरविले किंवा इतर "
"मूल्य < min_avail असावे." "मूल्य < min_avail असावे."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n" "Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-15 21:04+0200\n" "PO-Revision-Date: 2009-04-15 21:04+0200\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n" "Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: Dutch <nl@li.org>\n" "Language-Team: Dutch <nl@li.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -74,11 +74,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Intern geluid" msgstr "Intern geluid"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -327,11 +327,16 @@ msgid "Using state directory %s."
msgstr "Verbruik van state map %s." msgstr "Verbruik van state map %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Gebruik van runtime map %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Draaiend in systeem mode: %s" msgstr "Draaiend in systeem mode: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -341,15 +346,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() mislukte." msgstr "pa_pid_file_create() mislukte."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!" msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -357,27 +362,27 @@ msgstr ""
"Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met " "Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met "
"aangezette high-resolution timers!" "aangezette high-resolution timers!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() mislukte." msgstr "pa_core_new() mislukte."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Initialiseren van de daemon mislukte." msgstr "Initialiseren van de daemon mislukte."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon opgestart zonder geladen modules, dat werkt niet." msgstr "Daemon opgestart zonder geladen modules, dat werkt niet."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Daemon opstarten is klaar." msgstr "Daemon opstarten is klaar."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Daemon afsluiten is begonnen." msgstr "Daemon afsluiten is begonnen."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Daemon is afgesloten." msgstr "Daemon is afgesloten."
@ -644,78 +649,78 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Pad: %s\n" msgstr "Pad: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "" msgstr ""
@ -936,7 +941,7 @@ msgstr "boven achter links"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "boven achter rechts" msgstr "boven achter rechts"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1066,27 +1071,27 @@ msgstr "Implementatie ontbreekt"
msgid "Client forked" msgid "Client forked"
msgstr "Client afgesplitst" msgstr "Client afgesplitst"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2030,7 +2035,7 @@ msgstr ""
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2041,7 +2046,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" "Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-09 13:16+0530\n" "PO-Revision-Date: 2009-04-09 13:16+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n" "Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya <oriya-it@googlegroups.com>\n" "Language-Team: Oriya <oriya-it@googlegroups.com>\n"
@ -23,7 +23,7 @@ msgstr ""
"\n" "\n"
"\n" "\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -80,11 +80,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି" msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "ମଡେମ" msgstr "ମଡେମ"
@ -332,11 +332,16 @@ msgid "Using state directory %s."
msgstr "ସ୍ଥିତି ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରି।" msgstr "ସ୍ଥିତି ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରି।"
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "ପ୍ରଚଳିତ ଡିରେକ୍ଟୋରୀ %s କୁ ବ୍ୟବହାର କରୁଅଛି।"
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି: %s" msgstr "ତନ୍ତ୍ର ଧାରାରେ ଚାଲୁଅଛି: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -346,15 +351,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।" msgstr "pa_pid_file_create() ବିଫଳ ହୋଇଛି।"
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ସତେଜ ଉଚ୍ଚ-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବ୍ଧ! Bon appetit!" msgstr "ସତେଜ ଉଚ୍ଚ-ବିଭେଦନ ସମୟ ମାପକ ଉପଲବ୍ଧ! Bon appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -362,27 +367,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।" msgstr "pa_core_new() ବିଫଳ ହୋଇଛି।"
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "ଡେମନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।" msgstr "ଡେମନକୁ ଆରମ୍ଭ କରିବାରେ ବିଫଳ।"
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ଧାରଣ ହୋଇଥିବା ଏକକାଂଶଗୁଡ଼ିକ ବିନା ଡେମନ ଆରମ୍ଭ ହୋଇଛି, କାର୍ଯ୍ୟ କରିବାକୁ ବାରଣ କରୁଅଛି।" msgstr "ଧାରଣ ହୋଇଥିବା ଏକକାଂଶଗୁଡ଼ିକ ବିନା ଡେମନ ଆରମ୍ଭ ହୋଇଛି, କାର୍ଯ୍ୟ କରିବାକୁ ବାରଣ କରୁଅଛି।"
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "ଡେମନ ଆରମ୍ଭ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।" msgstr "ଡେମନ ଆରମ୍ଭ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।"
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "ଡେମନ ବନ୍ଦକୁ ଆରମ୍ଭ କରାଯାଇଛି।" msgstr "ଡେମନ ବନ୍ଦକୁ ଆରମ୍ଭ କରାଯାଇଛି।"
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "ଡେମନକୁ ସମାପ୍ତ କରାଯାଇଛି।" msgstr "ଡେମନକୁ ସମାପ୍ତ କରାଯାଇଛି।"
@ -638,72 +643,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "ପଥ: %s\n" msgstr "ପଥ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ '%s'।" msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ '%s'।"
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ଅବୈଧ ଲଗ ସ୍ତର%s'." msgstr "[%s:%u] ଅବୈଧ ଲଗ ସ୍ତର%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ଅବୈଧ ପୁନଃ ମିଶ୍ରଣ ଧାରା '%s'।" msgstr "[%s:%u] ଅବୈଧ ପୁନଃ ମିଶ୍ରଣ ଧାରା '%s'।"
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ଅବୈଧ rlimit '%s'." msgstr "[%s:%u] ଅବୈଧ rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ଏହି ପ୍ଲାଟଫର୍ମରେ ସମର୍ଥିତ ନୁହଁ।" msgstr "[%s:%u] rlimit ଏହି ପ୍ଲାଟଫର୍ମରେ ସମର୍ଥିତ ନୁହଁ।"
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଶୈଳୀ '%s'।" msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଶୈଳୀ '%s'।"
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମୁନା ହାର '%s'।" msgstr "[%s:%u] ଅବୈଧ ନମୁନା ହାର '%s'।"
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଚ୍ୟାନେଲ '%s'।" msgstr "[%s:%u] ଅବୈଧ ନମୁନା ଚ୍ୟାନେଲ '%s'।"
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'." msgstr "[%s:%u] ଅବୈଧ ଚ୍ୟାନେଲ ମ୍ୟାପ '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ଅବୈଧ ସଂଖ୍ୟକ ଖଣ୍ଡଗୁଡ଼ିକ '%s'." msgstr "[%s:%u] ଅବୈଧ ସଂଖ୍ୟକ ଖଣ୍ଡଗୁଡ଼ିକ '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ଅବୈଧ ଖଣ୍ଡ ଆକାର '%s'." msgstr "[%s:%u] ଅବୈଧ ଖଣ୍ଡ ଆକାର '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ଅବୈଧ ସୁନ୍ଦର ସ୍ତର '%s'." msgstr "[%s:%u] ଅବୈଧ ସୁନ୍ଦର ସ୍ତର '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "ବିନ୍ୟାସ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %s" msgstr "ବିନ୍ୟାସ ଫାଇଲ ଖୋଲିବାରେ ବିଫଳ: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -711,7 +716,7 @@ msgstr ""
"ନିର୍ଦ୍ଦିଷ୍ଟିତ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚ୍ୟାନେଲ ମ୍ୟାପରେ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସଂଖ୍ୟକ ଚ୍ୟାନେଲ ବ୍ୟତିତ ଭିନ୍ନ ସଂଖ୍ୟକ " "ନିର୍ଦ୍ଦିଷ୍ଟିତ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଚ୍ୟାନେଲ ମ୍ୟାପରେ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ସଂଖ୍ୟକ ଚ୍ୟାନେଲ ବ୍ୟତିତ ଭିନ୍ନ ସଂଖ୍ୟକ "
"ଚ୍ୟାନେଲ ଉଲ୍ଲେଖ ଅଛି।" "ଚ୍ୟାନେଲ ଉଲ୍ଲେଖ ଅଛି।"
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### ବିନ୍ୟାସ ଫାଇଲରୁ ପଢ଼ନ୍ତୁ: %s ###\n" msgstr "### ବିନ୍ୟାସ ଫାଇଲରୁ ପଢ଼ନ୍ତୁ: %s ###\n"
@ -933,7 +938,7 @@ msgstr "ଉପର ପଛ ବାମ ପାଖ"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "ଉପର ପଛ ଡ଼ାହାଣ ପାଖ" msgstr "ଉପର ପଛ ଡ଼ାହାଣ ପାଖ"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1063,27 +1068,27 @@ msgstr "ଅନୁପସ୍ଥିତ ପ୍ରୟୋଗ"
msgid "Client forked" msgid "Client forked"
msgstr "ଗ୍ରାହକ ଶାଖାଯୁକ୍ତ ହୋଇଛି" msgstr "ଗ୍ରାହକ ଶାଖାଯୁକ୍ତ ହୋଇଛି"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2234,7 +2239,7 @@ msgstr "ଲେଖନ୍ତୁ(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn ଅପରିବର୍ତ୍ତନୀୟତାକୁ ଅଭିଗମ୍ୟ କରିହେଉ ନାହିଁ" msgstr "autospawn ଅପରିବର୍ତ୍ତନୀୟତାକୁ ଅଭିଗମ୍ୟ କରିହେଉ ନାହିଁ"
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2251,7 +2256,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pa\n" "Project-Id-Version: pulseaudio.master-tx.pa\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-06-06 07:38+0530\n" "PO-Revision-Date: 2009-06-06 07:38+0530\n"
"Last-Translator: A S Alam <aalam@users.sf.net>\n" "Last-Translator: A S Alam <aalam@users.sf.net>\n"
"Language-Team: American English <punjabi-users@lists.sf.net>\n" "Language-Team: American English <punjabi-users@lists.sf.net>\n"
@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n" "X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -70,11 +70,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ" msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "ਮਾਡਮ" msgstr "ਮਾਡਮ"
@ -320,11 +320,16 @@ msgid "Using state directory %s."
msgstr "ਸਟੇਟ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।" msgstr "ਸਟੇਟ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "ਰਨਟਾਈਮ ਡਾਇਰੈਕਟਰੀ %s ਦੀ ਵਰਤੋਂ।"
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s" msgstr "ਸਿਸਟਮ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -334,42 +339,42 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ਫੇਲ੍ਹ ਹੈ।" msgstr "pa_pid_file_create() ਫੇਲ੍ਹ ਹੈ।"
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ਤਾਜ਼ੀ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਉਪਲੱਬਧ ਹੈ! Bon appetit!" msgstr "ਤਾਜ਼ੀ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਉਪਲੱਬਧ ਹੈ! Bon appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "" msgstr ""
"ਮਿੱਤਰਾ, ਤੇਰਾ ਕਰਨਲ ਪੁਰਾਣਾ ਹੈ! ਚੀਫ ਦੀ ਅੱਜ ਦੀ ਸਿਫਾਰਸ਼ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਯੋਗ ਨਾਲ ਲੀਨਕਸ ਹੈ!" "ਮਿੱਤਰਾ, ਤੇਰਾ ਕਰਨਲ ਪੁਰਾਣਾ ਹੈ! ਚੀਫ ਦੀ ਅੱਜ ਦੀ ਸਿਫਾਰਸ਼ ਹਾਈ-ਰੈਜ਼ੋਲੂਸ਼ਨ ਟਾਈਮਰ ਯੋਗ ਨਾਲ ਲੀਨਕਸ ਹੈ!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() ਫੇਲ੍ਹ ਹੈ।" msgstr "pa_core_new() ਫੇਲ੍ਹ ਹੈ।"
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "ਡੈਮਨ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ।" msgstr "ਡੈਮਨ ਸ਼ੁਰੂ ਕਰਨ ਵਿੱਚ ਫੇਲ੍ਹ।"
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਬਿਨਾਂ ਕਿਸੇ ਲੋਡ ਕੀਤੇ ਮੈਡਿਊਲ, ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।" msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਬਿਨਾਂ ਕਿਸੇ ਲੋਡ ਕੀਤੇ ਮੈਡਿਊਲ, ਕੰਮ ਕਰਨ ਤੋਂ ਰੋਕ ਰਿਹਾ ਹੈ।"
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਮੁਕੰਮਲ।" msgstr "ਡੈਮਨ ਸ਼ੁਰੂਆਤੀ ਮੁਕੰਮਲ।"
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "ਡੈਮਨ ਬੰਦ ਕਰਨਾ ਸ਼ੁਰੂ ਹੋ ਗਿਆ।" msgstr "ਡੈਮਨ ਬੰਦ ਕਰਨਾ ਸ਼ੁਰੂ ਹੋ ਗਿਆ।"
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "ਡੈਮਨ ਬੰਦ ਹੋ ਗਿਆ।" msgstr "ਡੈਮਨ ਬੰਦ ਹੋ ਗਿਆ।"
@ -626,78 +631,78 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "ਪਾਥ: %s\n" msgstr "ਪਾਥ: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।" msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।"
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] ਗਲਤੀ ਲਾਗ ਲੈਵਲ '%s'।" msgstr "[%s:%u] ਗਲਤੀ ਲਾਗ ਲੈਵਲ '%s'।"
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ ਰੀਸੈਂਪਲ ਢੰਗ '%s'।"
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ rlimit '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵੀਂ rlimit '%s'।"
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit ਨੂੰ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।" msgstr "[%s:%u] rlimit ਨੂੰ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਫਾਰਮੈਟ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਫਾਰਮੈਟ '%s'।"
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਰੇਟ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਰੇਟ '%s'।"
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਚੈਨਲ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਸੈਂਪਲ ਚੈਨਲ '%s'।"
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਚੈਨਲ ਮੈਪ '%s'।"
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] ਫਰੈਗਮੈਂਟਾਂ ਦਾ ਅਢੁੱਕਵਾਂ ਨੰਬਰ '%s'।" msgstr "[%s:%u] ਫਰੈਗਮੈਂਟਾਂ ਦਾ ਅਢੁੱਕਵਾਂ ਨੰਬਰ '%s'।"
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਫਰੈਗਮੈਂਟ ਅਕਾਰ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ ਫਰੈਗਮੈਂਟ ਅਕਾਰ '%s'।"
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ nice ਲੈਵਲ '%s'।" msgstr "[%s:%u] ਅਢੁੱਕਵਾਂ nice ਲੈਵਲ '%s'।"
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s" msgstr "ਸੰਰਚਨਾ ਫਾਇਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਫੇਲ੍ਹ: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "ਦਿੱਤੇ ਡਿਫਾਲਟ ਚੈਨਲ ਮੈਪ ਦੀ ਦਿੱਤੇਤ ਚੈਨਲ ਗਿਣਤੀ ਨਾਲੋਂ ਇੱਕ ਵੱਖਰੀ ਚੈਨਲ ਗਿਣਤੀ ਹੈ।" msgstr "ਦਿੱਤੇ ਡਿਫਾਲਟ ਚੈਨਲ ਮੈਪ ਦੀ ਦਿੱਤੇਤ ਚੈਨਲ ਗਿਣਤੀ ਨਾਲੋਂ ਇੱਕ ਵੱਖਰੀ ਚੈਨਲ ਗਿਣਤੀ ਹੈ।"
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚੋਂ ਪੜਿਆ: %s ###\n" msgstr "### ਸੰਰਚਨਾ ਫਾਇਲ ਵਿੱਚੋਂ ਪੜਿਆ: %s ###\n"
@ -919,7 +924,7 @@ msgstr "ਉੱਤੇ ਪਿੱਛੇ ਖੱਬੇ"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "ਉੱਤੇ ਪਿੱਛੇ ਸੱਜੇ" msgstr "ਉੱਤੇ ਪਿੱਛੇ ਸੱਜੇ"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1049,27 +1054,27 @@ msgstr "ਗੈਰ-ਮੌਜੂਦ ਨਿਰਧਾਰਨ"
msgid "Client forked" msgid "Client forked"
msgstr "ਕਲਾਇਟ ਅੱਡ ਕੀਤਾ" msgstr "ਕਲਾਇਟ ਅੱਡ ਕੀਤਾ"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2221,7 +2226,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn ਲਾਕ ਵਰਤ ਨਹੀਂ ਸਕਦਾ।" msgstr "autospawn ਲਾਕ ਵਰਤ ਨਹੀਂ ਸਕਦਾ।"
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2238,7 +2243,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() " "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

149
po/pl.po
View file

@ -5,15 +5,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pl\n" "Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-07-28 21:54+0200\n" "PO-Revision-Date: 2009-08-22 12:12+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
@ -72,11 +72,11 @@ msgstr ""
"kanałów> plugin=<nazwa wtyczki ladspa> label=<etykieta wtyczki ladspa> " "kanałów> plugin=<nazwa wtyczki ladspa> label=<etykieta wtyczki ladspa> "
"control=<lista wartości kontroli wejścia oddzielona przecinkami>" "control=<lista wartości kontroli wejścia oddzielona przecinkami>"
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Wewnętrzny dźwięk" msgstr "Wewnętrzny dźwięk"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -331,10 +331,15 @@ msgstr "Używanie folderu stanu %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, c-format #, c-format
msgid "Using modules directory %s."
msgstr "Używanie folderu modułów %s."
#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s" msgstr "Uruchamianie w trybie systemowym: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -350,15 +355,15 @@ msgstr ""
"Proszę przeczytać http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode, " "Proszę przeczytać http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode, "
"gdzie wyjaśniono, dlaczego tryb systemowy jest zwykle złym pomysłem." "gdzie wyjaśniono, dlaczego tryb systemowy jest zwykle złym pomysłem."
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodło się." msgstr "pa_pid_file_create() nie powiodło się."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!" msgstr "Świeże zegary o wysokiej rozdzielczości! Smacznego!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -366,27 +371,27 @@ msgstr ""
"Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi " "Koleś, twoje jądro śmierdzi! Szef kuchni poleca dzisiaj Linuksa w włączonymi "
"zegarami o wysokiej rozdzielczości!" "zegarami o wysokiej rozdzielczości!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodło się." msgstr "pa_core_new() nie powiodło się."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodło się." msgstr "Zainicjowanie demona nie powiodło się."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy." msgstr "Uruchamianie demona bez żadnych wczytanych modułów, odmawianie pracy."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Zakończono uruchamianie demona." msgstr "Zakończono uruchamianie demona."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyłączenie demona." msgstr "Zainicjowano wyłączenie demona."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Demon został zniszczony." msgstr "Demon został zniszczony."
@ -652,72 +657,72 @@ msgstr "OSTRZEŻENIE O PRZESTARZAŁOŚCI: %s\n"
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Ścieżka: %s\n" msgstr "Ścieżka: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Nieprawidłowy dziennik docelowy \"%s\"." msgstr "[%s:%u] Nieprawidłowy dziennik docelowy \"%s\"."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom dziennika \"%s\"." msgstr "[%s:%u] Nieprawidłowy poziom dziennika \"%s\"."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Nieprawidłowa metoda resamplingu \"%s\"." msgstr "[%s:%u] Nieprawidłowa metoda resamplingu \"%s\"."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Nieprawidłowy rlimit \"%s\"." msgstr "[%s:%u] Nieprawidłowy rlimit \"%s\"."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nie jest obsługiwany na tej platformie." 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 #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Nieprawidłowy format próbki \"%s\"." msgstr "[%s:%u] Nieprawidłowy format próbki \"%s\"."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Nieprawidłowa częstotliwość próbki \"%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 #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Nieprawidłowe kanały próbki \"%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 #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Nieprawidłowa mapa kanałów \"%s\"." msgstr "[%s:%u] Nieprawidłowa mapa kanałów \"%s\"."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nieprawidłowa liczba fragmentów \"%s\"." msgstr "[%s:%u] Nieprawidłowa liczba fragmentów \"%s\"."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Nieprawidłowy rozmiar fragmentu \"%s\"." msgstr "[%s:%u] Nieprawidłowy rozmiar fragmentu \"%s\"."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nieprawidłowy poziom nice \"%s\"." msgstr "[%s:%u] Nieprawidłowy poziom nice \"%s\"."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodło się: %s" msgstr "Otwarcie pliku konfiguracji nie powiodło się: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -725,15 +730,14 @@ msgstr ""
"Podana domyślna mapa kanałów ma inną liczbę kanałów niż podana domyślna " "Podana domyślna mapa kanałów ma inną liczbę kanałów niż podana domyślna "
"liczba kanałów." "liczba kanałów."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Odczytano z pliku konfiguracji: %s ###\n" msgstr "### Odczytano z pliku konfiguracji: %s ###\n"
#: ../src/daemon/caps.c:62 #: ../src/daemon/caps.c:62
#, fuzzy
msgid "Cleaning up privileges." msgid "Cleaning up privileges."
msgstr "Porzucanie uprawnień roota." msgstr "Czyszczenie uprawnień."
#: ../src/daemon/pulseaudio.desktop.in.h:1 #: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System" msgid "PulseAudio Sound System"
@ -947,7 +951,7 @@ msgstr "Górny tylny lewy"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Górny tylny prawy" msgstr "Górny tylny prawy"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1077,27 +1081,27 @@ msgstr "Brak implementacji"
msgid "Client forked" msgid "Client forked"
msgstr "Rozdzielono klienta" msgstr "Rozdzielono klienta"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2225,9 +2229,9 @@ msgid "Daemon not responding."
msgstr "Demon nie odpowiada." msgstr "Demon nie odpowiada."
#: ../src/utils/pacmd.c:161 #: ../src/utils/pacmd.c:161
#, fuzzy, c-format #, c-format
msgid "poll(): %s" msgid "poll(): %s"
msgstr "fork(): %s" msgstr "poll(): %s"
#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format #, c-format
@ -2243,7 +2247,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Nie można uzyskać dostępu do blokady automatycznego wznawiania." msgstr "Nie można uzyskać dostępu do blokady automatycznego wznawiania."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2260,7 +2264,7 @@ msgstr ""
"Wybudzono za pomocą ustawienia POLLOUT - ale jednoczesne wywołanie " "Wybudzono za pomocą ustawienia POLLOUT - ale jednoczesne wywołanie "
"snd_pcm_avail() zwróciło zero lub inną wartość < min_avail." "snd_pcm_avail() zwróciło zero lub inną wartość < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "
@ -2293,64 +2297,3 @@ msgstr "Duplex telefoniczny (HSP/HFP)"
#: ../src/modules/reserve-wrap.c:151 #: ../src/modules/reserve-wrap.c:151
msgid "PulseAudio Sound Server" msgid "PulseAudio Sound Server"
msgstr "Serwer dźwięku PulseAudio" msgstr "Serwer dźwięku PulseAudio"
#~ msgid "select(): %s"
#~ msgstr "select(): %s"
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Nie można połączyć się z magistralą systemową: %s"
#~ msgid "Cannot get caller from PID: %s"
#~ msgstr "Nie można uzyskać obiektu caller z PID: %s"
#~ msgid "Cannot set UID on caller object."
#~ msgstr "Nie można ustawić UID obiektu caller."
#~ msgid "Failed to get CK session."
#~ msgstr "Uzyskanie sesji CK nie powiodło się."
#~ msgid "Cannot set UID on session object."
#~ msgstr "Nie można ustawić UID obiektowi sesji."
#~ msgid "Cannot allocate PolKitAction."
#~ msgstr "Nie można przydzielić PolKitAction."
#~ msgid "Cannot set action_id"
#~ msgstr "Nie można ustawić action_id"
#~ msgid "Cannot allocate PolKitContext."
#~ msgstr "Nie można przydzielić PolKitContext."
#~ msgid "Cannot initialize PolKitContext: %s"
#~ msgstr "Nie można zainicjować PolKitContext: %s"
#~ msgid "Could not determine whether caller is authorized: %s"
#~ msgstr "Nie można ustalić, czy obiekt caller jest upoważniony: %s"
#~ msgid "Cannot obtain auth: %s"
#~ msgstr "Nie można uzyskać upoważnienia: %s"
#~ msgid "PolicyKit responded with '%s'"
#~ msgstr "PolicyKit zwróciło \"%s\""
#~ msgid ""
#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
#~ "daemon"
#~ msgstr ""
#~ "Szeregowanie o wysokim priorytecie (ujemny poziom nice Uniksa) dla demona "
#~ "PulseAudio"
#~ msgid "Real-time scheduling for the PulseAudio daemon"
#~ msgstr "Szeregowanie w czasie rzeczywistym dla demona PulseAudio"
#~ msgid ""
#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
#~ msgstr ""
#~ "Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania o wysokim "
#~ "priorytecie."
#~ msgid ""
#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
#~ msgstr ""
#~ "Polityka systemu uniemożliwia PulseAudio uzyskanie szeregowania w czasie "
#~ "rzeczywistym."

View file

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n" "Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n"
"Language-Team: pt <fedora-trans-pt@redhat.com>\n" "Language-Team: pt <fedora-trans-pt@redhat.com>\n"
@ -12,7 +12,7 @@ msgstr ""
"X-Poedit-Language: Portuguese\n" "X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: PORTUGAL\n" "X-Poedit-Country: PORTUGAL\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
@ -70,11 +70,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Áudio Interno" msgstr "Áudio Interno"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -326,11 +326,16 @@ msgid "Using state directory %s."
msgstr "A manter o estado no directório %s." msgstr "A manter o estado no directório %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Execução a utilizar o directório %s"
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Execução em modo de sistema: %s" msgstr "Execução em modo de sistema: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -340,15 +345,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou." msgstr "pa_pid_file_create() falhou."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timer \"frescos\" de alta resolução disponíveis. Bom apetite!" msgstr "Timer \"frescos\" de alta resolução disponíveis. Bom apetite!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -356,27 +361,27 @@ msgstr ""
"Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com " "Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com "
"timers de alta resolução activos!" "timers de alta resolução activos!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou." msgstr "pa_core_new() falhou."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Falha ao inicializar serviço." msgstr "Falha ao inicializar serviço."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Serviço arrancou sem módulos carregados. A recusar trabalhar." msgstr "Serviço arrancou sem módulos carregados. A recusar trabalhar."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Arranque do serviço completo." msgstr "Arranque do serviço completo."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Encerramento do serviço iniciado." msgstr "Encerramento do serviço iniciado."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Serviço terminado." msgstr "Serviço terminado."
@ -646,72 +651,72 @@ msgstr "Aviso de Impressão"
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Caminho: %s\n" msgstr "Caminho: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] ficheiro registo de destino inválido '%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 #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nível do ficheiro de registo inválido '%s'." msgstr "[%s:%u] Nível do ficheiro de registo inválido '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, fuzzy, c-format #, fuzzy, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "nome do método de acesso" msgstr "nome do método de acesso"
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'." msgstr "[%s:%u] rlimit inválido '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não é suportado nesta plataforma." msgstr "[%s:%u] rlimit não é suportado nesta plataforma."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato da amostra inválido '%s'." msgstr "[%s:%u] Formato da amostra inválido '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, fuzzy, c-format #, fuzzy, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "Taxa de amostragem em kHz" msgstr "Taxa de amostragem em kHz"
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, fuzzy, c-format #, fuzzy, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "Número de canais de audio" msgstr "Número de canais de audio"
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, fuzzy, c-format #, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "Activar mapa de _radar" msgstr "Activar mapa de _radar"
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Número inválido de fragmentos '%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 #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho do fragmento inválido '%s'." msgstr "[%s:%u] Tamanho do fragmento inválido '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nível nice inválido '%s'." msgstr "[%s:%u] nível nice inválido '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Falha ao abrir ficheiro de configuração: %s" msgstr "Falha ao abrir ficheiro de configuração: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -719,7 +724,7 @@ msgstr ""
"O mapa de canais especificado tem um número de canais diferente do número de " "O mapa de canais especificado tem um número de canais diferente do número de "
"canais definido por omissão." "canais definido por omissão."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Ler configuração a partir do ficheiro: %s ###\n" msgstr "### Ler configuração a partir do ficheiro: %s ###\n"
@ -941,7 +946,7 @@ msgstr "Topo Traseira Esquerda"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Topo Traseira Direita" msgstr "Topo Traseira Direita"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1071,27 +1076,27 @@ msgstr "Implementação em falta"
msgid "Client forked" msgid "Client forked"
msgstr "Cliente efectuou um fork" msgstr "Cliente efectuou um fork"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%.1f GiB" msgstr "%.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%.1f MiB" msgstr "%.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%.1f KiB" msgstr "%.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2058,7 +2063,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Impossível aceder ao lock \"autospawn\"." msgstr "Impossível aceder ao lock \"autospawn\"."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2075,7 +2080,7 @@ msgstr ""
"Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de " "Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de "
"snd_pcm_avail() retornou 0 ou outro valor < min_avail." "snd_pcm_avail() retornou 0 ou outro valor < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-08-08 19:02-0300\n" "PO-Revision-Date: 2009-08-21 11:25-0300\n"
"Last-Translator: Igor Pires Soares <igor@projetofedora.org>\n" "Last-Translator: Igor Pires Soares <igor@projetofedora.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br@redhat.com>\n" "Language-Team: Brazilian-Portuguese <fedora-trans-pt_br@redhat.com>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -19,7 +19,7 @@ msgstr ""
"X-Poedit-Language: Portuguese\n" "X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: Brazil\n" "X-Poedit-Country: Brazil\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
@ -81,11 +81,11 @@ msgstr ""
"canais> plugin=<nome do plugin ladspa> label=<rótulo do plugin ladspa> " "canais> plugin=<nome do plugin ladspa> label=<rótulo do plugin ladspa> "
"control=<lista separada por vírgulas dos valores de controle da entrada>" "control=<lista separada por vírgulas dos valores de controle da entrada>"
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Áudio interno" msgstr "Áudio interno"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -113,17 +113,17 @@ msgstr "Saindo."
#: ../src/daemon/main.c:186 #: ../src/daemon/main.c:186
#, c-format #, c-format
msgid "Failed to find user '%s'." 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:191 #: ../src/daemon/main.c:191
#, c-format #, c-format
msgid "Failed to find group '%s'." msgid "Failed to find group '%s'."
msgstr "Falha em encontrar o grupo '%s'." msgstr "Falha ao localizar o grupo \"%s\"."
#: ../src/daemon/main.c:195 #: ../src/daemon/main.c:195
#, c-format #, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)." 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:200 #: ../src/daemon/main.c:200
#, c-format #, c-format
@ -133,27 +133,27 @@ msgstr "O GID do usuário'%s' e do grupo '%s' não combinam."
#: ../src/daemon/main.c:205 #: ../src/daemon/main.c:205
#, c-format #, c-format
msgid "Home directory of user '%s' is not '%s', ignoring." 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:208 ../src/daemon/main.c:213 #: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format #, c-format
msgid "Failed to create '%s': %s" msgid "Failed to create '%s': %s"
msgstr "Falha em criar '%s': %s" msgstr "Falha ao criar \"%s\": %s"
#: ../src/daemon/main.c:220 #: ../src/daemon/main.c:220
#, c-format #, c-format
msgid "Failed to change group list: %s" 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:236 #: ../src/daemon/main.c:236
#, c-format #, c-format
msgid "Failed to change GID: %s" msgid "Failed to change GID: %s"
msgstr "Falha em mudar o GID: %s" msgstr "Falha ao alterar o GID: %s"
#: ../src/daemon/main.c:252 #: ../src/daemon/main.c:252
#, c-format #, c-format
msgid "Failed to change UID: %s" msgid "Failed to change UID: %s"
msgstr "Falha em mudar o UID: %s" msgstr "Falha ao alterar o UID: %s"
#: ../src/daemon/main.c:266 #: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges." msgid "Successfully dropped root privileges."
@ -337,11 +337,16 @@ msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s." msgstr "Usando o diretório de estado %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Usando o diretório de runtime %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s" msgstr "Executando em modo do sistema: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -357,15 +362,15 @@ msgstr ""
"Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para " "Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para "
"obter um explicação sobre porque o modo de sistema é uma má idéia." "obter um explicação sobre porque o modo de sistema é uma má idéia."
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou." msgstr "pa_pid_file_create() falhou."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!" msgstr "Timers de alta resolução frequinhos disponíveis! Bon appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -373,28 +378,28 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de " "Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!" "alta resolução habilitados!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou." msgstr "pa_core_new() falhou."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon." msgstr "Falha em iniciar o daemon."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar." "O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa." msgstr "A partida dos Daemon está completa."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado." msgstr "O encerramento do Daemon foi iniciado."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Daemon terminado." msgstr "Daemon terminado."
@ -661,72 +666,72 @@ msgstr "AVISO DE OBSOLESCÊNCIA: %s\n"
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Caminho: %s\n" msgstr "Caminho: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'." msgstr "[%s:%u] Alvo do log inválido '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nível de log inválido '%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 #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%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 #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'." msgstr "[%s:%u] rlimit inválido '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não tem suporte nessa plataforma." msgstr "[%s:%u] rlimit não tem suporte nessa plataforma."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'." msgstr "[%s:%u] Formato de amostragem inválido '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'." msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'." msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Mapa de canais \"%s\" inválido." msgstr "[%s:%u] Mapa de canais \"%s\" inválido."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Números de fragmentos inválidos '%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 #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'." msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'." msgstr "[%s:%u] Número de nice inválido'%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s" msgstr "Falha em abrir o arquivo de configuração: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -734,15 +739,14 @@ msgstr ""
"O mapa padrão dos canais especificado tem um número diferente de canais do " "O mapa padrão dos canais especificado tem um número diferente de canais do "
"que o número de canais padrão especificado." "que o número de canais padrão especificado."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Lido do arquivo de configuração: %s ###\n" msgstr "### Lido do arquivo de configuração: %s ###\n"
#: ../src/daemon/caps.c:62 #: ../src/daemon/caps.c:62
#, fuzzy
msgid "Cleaning up privileges." msgid "Cleaning up privileges."
msgstr "Descartando os privilégios de root." msgstr "Limpando privilégios."
#: ../src/daemon/pulseaudio.desktop.in.h:1 #: ../src/daemon/pulseaudio.desktop.in.h:1
msgid "PulseAudio Sound System" msgid "PulseAudio Sound System"
@ -956,7 +960,7 @@ msgstr "Posterior Superior Esquerdo"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Posterior Superior Direito" msgstr "Posterior Superior Direito"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1086,27 +1090,27 @@ msgstr "Implementação faltando"
msgid "Client forked" msgid "Client forked"
msgstr "Cliente bifurcado" msgstr "Cliente bifurcado"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2243,9 +2247,9 @@ msgid "Daemon not responding."
msgstr "O daemon não responde." msgstr "O daemon não responde."
#: ../src/utils/pacmd.c:161 #: ../src/utils/pacmd.c:161
#, fuzzy, c-format #, c-format
msgid "poll(): %s" msgid "poll(): %s"
msgstr "fork(): %s" msgstr "poll(): %s"
#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188 #: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format #, c-format
@ -2261,7 +2265,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Não foi possível acessar a trava de autogeração." msgstr "Não foi possível acessar a trava de autogeração."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2278,7 +2282,7 @@ msgstr ""
"Nós fomos acordados com o conjunto POLLOUT -- entretanto, a snd_pcm_avail() " "Nós fomos acordados com o conjunto POLLOUT -- entretanto, a snd_pcm_avail() "
"subseqüente retornou 0 ou outro valor < min_avail." "subseqüente retornou 0 ou outro valor < min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n" "PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n" "Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n" "Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@ -19,7 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n" "X-Generator: Lokalize 0.3\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -76,11 +76,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Унутрашњи звук" msgstr "Унутрашњи звук"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Модем" msgstr "Модем"
@ -331,11 +331,16 @@ msgid "Using state directory %s."
msgstr "Користи се %s директоријум стања." msgstr "Користи се %s директоријум стања."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Користи се %s извршни директоријум."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Покренуто у системском режиму: %s" msgstr "Покренуто у системском режиму: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -345,15 +350,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "Неуспела функција pa_pid_file_create()." msgstr "Неуспела функција pa_pid_file_create()."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Доступни су нови бројачи високе резолуције! Пријатно!" msgstr "Доступни су нови бројачи високе резолуције! Пријатно!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -361,27 +366,27 @@ msgstr ""
"Ваше језгро није добро подешено за pulseaudio! Препоручује Вам се да " "Ваше језгро није добро подешено за pulseaudio! Препоручује Вам се да "
"користите Linux језгро са омогућеним бројачима високе резолуције." "користите Linux језгро са омогућеним бројачима високе резолуције."
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "Неуспела функција pa_core_new()." msgstr "Неуспела функција pa_core_new()."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Неуспешно покретање демона." msgstr "Неуспешно покретање демона."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Демон је покренут без иједног учитаног модула, одбија да ради." msgstr "Демон је покренут без иједног учитаног модула, одбија да ради."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Покретање демона успешно." msgstr "Покретање демона успешно."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Покренуто гашење демона." msgstr "Покренуто гашење демона."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Рад демона је прекинут." msgstr "Рад демона је прекинут."
@ -647,72 +652,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Путања: %s\n" msgstr "Путања: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Неисправан циљни дневник „%s“." msgstr "[%s:%u] Неисправан циљни дневник „%s“."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Неисправан ниво опширности у дневнику „%s“." msgstr "[%s:%u] Неисправан ниво опширности у дневнику „%s“."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Неисправан начин дискретизације „%s“." msgstr "[%s:%u] Неисправан начин дискретизације „%s“."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Неисправан rlimit „%s“." msgstr "[%s:%u] Неисправан rlimit „%s“."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit није подржан на овој платформи." msgstr "[%s:%u] rlimit није подржан на овој платформи."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Неисправан формат узорка „%s“." msgstr "[%s:%u] Неисправан формат узорка „%s“."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Неисправна учестаност дискретизације „%s“." msgstr "[%s:%u] Неисправна учестаност дискретизације „%s“."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Неисправни канали узорка „%s“." msgstr "[%s:%u] Неисправни канали узорка „%s“."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Неисправна мапа канала „%s“." msgstr "[%s:%u] Неисправна мапа канала „%s“."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Неисправан број одломака „%s“." msgstr "[%s:%u] Неисправан број одломака „%s“."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Неисправна величина одломка „%s“." msgstr "[%s:%u] Неисправна величина одломка „%s“."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Неисправан ниво приоритета „%s“." msgstr "[%s:%u] Неисправан ниво приоритета „%s“."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Неуспело отварање датотеке подешавања: %s" msgstr "Неуспело отварање датотеке подешавања: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -720,7 +725,7 @@ msgstr ""
"Наведена мапа канала има нема исти број канала као што је наведено у " "Наведена мапа канала има нема исти број канала као што је наведено у "
"подразумеваном броју канала." "подразумеваном броју канала."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Прочитај из датотеке подешавања: %s ###\n" msgstr "### Прочитај из датотеке подешавања: %s ###\n"
@ -942,7 +947,7 @@ msgstr "Горњи позадински леви"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Горњи позадински десни" msgstr "Горњи позадински десни"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1073,27 +1078,27 @@ msgstr "Није одрађено"
msgid "Client forked" msgid "Client forked"
msgstr "Клијент израчван" msgstr "Клијент израчван"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2244,7 +2249,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Није могуће приступити датотеци закључавања за самоумножавање." msgstr "Није могуће приступити датотеци закључавања за самоумножавање."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2261,7 +2266,7 @@ msgstr ""
"Пробуђени смо са постављеним POLLOUT-ом -- али следећи snd_pcm_avail() је " "Пробуђени смо са постављеним POLLOUT-ом -- али следећи snd_pcm_avail() је "
"вратио 0 или неку другу вредност мању од min_avail." "вратио 0 или неку другу вредност мању од min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n" "PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n" "Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr@redhat.com>\n" "Language-Team: Serbian <fedora-trans-sr@redhat.com>\n"
@ -19,7 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n" "X-Generator: Lokalize 0.3\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -76,11 +76,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Unutrašnji zvuk" msgstr "Unutrašnji zvuk"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Modem" msgstr "Modem"
@ -332,11 +332,16 @@ msgid "Using state directory %s."
msgstr "Koristi se %s direktorijum stanja." msgstr "Koristi se %s direktorijum stanja."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Koristi se %s izvršni direktorijum."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Pokrenuto u sistemskom režimu: %s" msgstr "Pokrenuto u sistemskom režimu: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -346,15 +351,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "Neuspela funkcija pa_pid_file_create()." msgstr "Neuspela funkcija pa_pid_file_create()."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Dostupni su novi brojači visoke rezolucije! Prijatno!" msgstr "Dostupni su novi brojači visoke rezolucije! Prijatno!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -362,27 +367,27 @@ msgstr ""
"Vaše jezgro nije dobro podešeno za pulseaudio! Preporučuje Vam se da " "Vaše jezgro nije dobro podešeno za pulseaudio! Preporučuje Vam se da "
"koristite Linux jezgro sa omogućenim brojačima visoke rezolucije." "koristite Linux jezgro sa omogućenim brojačima visoke rezolucije."
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "Neuspela funkcija pa_core_new()." msgstr "Neuspela funkcija pa_core_new()."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Neuspešno pokretanje demona." msgstr "Neuspešno pokretanje demona."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Demon je pokrenut bez ijednog učitanog modula, odbija da radi." msgstr "Demon je pokrenut bez ijednog učitanog modula, odbija da radi."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Pokretanje demona uspešno." msgstr "Pokretanje demona uspešno."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Pokrenuto gašenje demona." msgstr "Pokrenuto gašenje demona."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Rad demona je prekinut." msgstr "Rad demona je prekinut."
@ -648,72 +653,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Putanja: %s\n" msgstr "Putanja: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“." msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neispravan nivo opširnosti u dnevniku „%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 #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neispravan način diskretizacije „%s“." msgstr "[%s:%u] Neispravan način diskretizacije „%s“."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neispravan rlimit „%s“." msgstr "[%s:%u] Neispravan rlimit „%s“."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nije podržan na ovoj platformi." msgstr "[%s:%u] rlimit nije podržan na ovoj platformi."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neispravan format uzorka „%s“." msgstr "[%s:%u] Neispravan format uzorka „%s“."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neispravna učestanost diskretizacije „%s“." msgstr "[%s:%u] Neispravna učestanost diskretizacije „%s“."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neispravni kanali uzorka „%s“." msgstr "[%s:%u] Neispravni kanali uzorka „%s“."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neispravna mapa kanala „%s“." msgstr "[%s:%u] Neispravna mapa kanala „%s“."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neispravan broj odlomaka „%s“." msgstr "[%s:%u] Neispravan broj odlomaka „%s“."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neispravna veličina odlomka „%s“." msgstr "[%s:%u] Neispravna veličina odlomka „%s“."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neispravan nivo prioriteta „%s“." msgstr "[%s:%u] Neispravan nivo prioriteta „%s“."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Neuspelo otvaranje datoteke podešavanja: %s" msgstr "Neuspelo otvaranje datoteke podešavanja: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -721,7 +726,7 @@ msgstr ""
"Navedena mapa kanala ima nema isti broj kanala kao što je navedeno u " "Navedena mapa kanala ima nema isti broj kanala kao što je navedeno u "
"podrazumevanom broju kanala." "podrazumevanom broju kanala."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Pročitaj iz datoteke podešavanja: %s ###\n" msgstr "### Pročitaj iz datoteke podešavanja: %s ###\n"
@ -943,7 +948,7 @@ msgstr "Gornji pozadinski levi"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Gornji pozadinski desni" msgstr "Gornji pozadinski desni"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1074,27 +1079,27 @@ msgstr "Nije odrađeno"
msgid "Client forked" msgid "Client forked"
msgstr "Klijent izračvan" msgstr "Klijent izračvan"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2246,7 +2251,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Nije moguće pristupiti datoteci zaključavanja za samoumnožavanje." msgstr "Nije moguće pristupiti datoteci zaključavanja za samoumnožavanje."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2263,7 +2268,7 @@ msgstr ""
"Probuđeni smo sa postavljenim POLLOUT-om -- ali sledeći snd_pcm_avail() je " "Probuđeni smo sa postavljenim POLLOUT-om -- ali sledeći snd_pcm_avail() je "
"vratio 0 ili neku drugu vrednost manju od min_avail." "vratio 0 ili neku drugu vrednost manju od min_avail."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio\n" "Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n" "PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -60,12 +60,12 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
#, fuzzy #, fuzzy
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Internt fel" msgstr "Internt fel"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "" msgstr ""
@ -316,10 +316,15 @@ msgstr ""
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, c-format #, c-format
msgid "Using modules directory %s."
msgstr ""
#: ../src/daemon/main.c:779
#, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "" msgstr ""
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -329,41 +334,41 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades." msgstr "pa_pid_file_create() misslyckades."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "" msgstr ""
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "" msgstr ""
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades." msgstr "pa_core_new() misslyckades."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "" msgstr ""
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "" msgstr ""
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "" msgstr ""
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "" msgstr ""
@ -552,78 +557,78 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Sökväg: %s\n" msgstr "Sökväg: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s" msgstr "Misslyckades med att öppna konfigurationsfil: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "" msgstr ""
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "" msgstr ""
@ -845,7 +850,7 @@ msgstr ""
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "" msgstr ""
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
#, fuzzy #, fuzzy
@ -976,27 +981,27 @@ msgstr ""
msgid "Client forked" msgid "Client forked"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "" msgstr ""
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "" msgstr ""
@ -1951,7 +1956,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -1962,7 +1967,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n" "Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-12 05:02+0530\n" "PO-Revision-Date: 2009-04-12 05:02+0530\n"
"Last-Translator: I. Felix <ifelix@redhat.com>\n" "Last-Translator: I. Felix <ifelix@redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n" "Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
@ -34,7 +34,7 @@ msgstr ""
"\n" "\n"
"\n" "\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -91,11 +91,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "உட்புற ஆடியோ" msgstr "உட்புற ஆடியோ"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "மாதிரி" msgstr "மாதிரி"
@ -342,11 +342,16 @@ msgid "Using state directory %s."
msgstr "%s நிலை அடைவினை பயன்படுத்துகிறது." msgstr "%s நிலை அடைவினை பயன்படுத்துகிறது."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "ஓடும்நேரம் %s அடைவை பயன்படுத்துகிறது."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "கணினியின் முறைமையில் இயங்குகிறது: %s" msgstr "கணினியின் முறைமையில் இயங்குகிறது: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -356,15 +361,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() தோல்வியுற்றது." msgstr "pa_pid_file_create() தோல்வியுற்றது."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "உயர்ந்த திரைத்திறன் நேரம்காட்டி கிடைக்கிளது! Bon appetit!" msgstr "உயர்ந்த திரைத்திறன் நேரம்காட்டி கிடைக்கிளது! Bon appetit!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -372,27 +377,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() தோல்வியுற்றது." msgstr "pa_core_new() தோல்வியுற்றது."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "டோமோனை ஆரம்பிப்பதில் தோல்வி." msgstr "டோமோனை ஆரம்பிப்பதில் தோல்வி."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "டீமான் துவக்கம் எந்த தொகுதிகளும் ஏற்றப்படாமல், வேலையை நிராகரிக்கிறது." msgstr "டீமான் துவக்கம் எந்த தொகுதிகளும் ஏற்றப்படாமல், வேலையை நிராகரிக்கிறது."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "டோமோன் துவக்குவது முடிவடைந்தது." msgstr "டோமோன் துவக்குவது முடிவடைந்தது."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "டோமோன் பணிநிறுத்தம் முனைகிறது." msgstr "டோமோன் பணிநிறுத்தம் முனைகிறது."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "டோமோன் நீக்கப்பட்டுது." msgstr "டோமோன் நீக்கப்பட்டுது."
@ -649,72 +654,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "பாதை: %s\n" msgstr "பாதை: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'." msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'." msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] தவறான மறுமாதிரி முறை '%s'." msgstr "[%s:%u] தவறான மறுமாதிரி முறை '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] தவறான rlimit '%s'." msgstr "[%s:%u] தவறான rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit இந்த தளத்தில் துணைபுரியவில்லை." msgstr "[%s:%u] rlimit இந்த தளத்தில் துணைபுரியவில்லை."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] தவறான மாதிரி முறை '%s'." msgstr "[%s:%u] தவறான மாதிரி முறை '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] தவறான மாதிரி விலை '%s'." msgstr "[%s:%u] தவறான மாதிரி விலை '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] தவறான மாதிரி சேனல்கள் '%s'." msgstr "[%s:%u] தவறான மாதிரி சேனல்கள் '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] தவறான சேனல் படம் '%s'." msgstr "[%s:%u] தவறான சேனல் படம் '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] பகுப்பு '%s'க்கு தவறான எண்" msgstr "[%s:%u] பகுப்பு '%s'க்கு தவறான எண்"
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] தவறான பகுப்பு அளவு '%s'." msgstr "[%s:%u] தவறான பகுப்பு அளவு '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] தவறான நல்ல நிலை '%s'." msgstr "[%s:%u] தவறான நல்ல நிலை '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "கட்டமைக்கப்பட்ட கோப்பினை திறப்பதில் தோல்வி: %s" msgstr "கட்டமைக்கப்பட்ட கோப்பினை திறப்பதில் தோல்வி: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -722,7 +727,7 @@ msgstr ""
"குறிப்பிட்ட முன்னிருப்பு சேனல் மேப் வேறுபட்ட சேனல்களின் எண்ணிக்கையை குறிப்பிட்ட " "குறிப்பிட்ட முன்னிருப்பு சேனல் மேப் வேறுபட்ட சேனல்களின் எண்ணிக்கையை குறிப்பிட்ட "
"முன்னிருப்பு சேனல்களின் எண்ணிக்கையை விட கொண்டுள்ளது" "முன்னிருப்பு சேனல்களின் எண்ணிக்கையை விட கொண்டுள்ளது"
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### கட்டமைப்பு கோப்பிலிருந்து வாசிக்கவும்: %s ###\n" msgstr "### கட்டமைப்பு கோப்பிலிருந்து வாசிக்கவும்: %s ###\n"
@ -944,7 +949,7 @@ msgstr "மேலே பின் இடது"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "மேலே பின் வலது" msgstr "மேலே பின் வலது"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1074,27 +1079,27 @@ msgstr "விடுபட்ட செயல்பாடு"
msgid "Client forked" msgid "Client forked"
msgstr "கிளையன் நீக்கப்பட்டது" msgstr "கிளையன் நீக்கப்பட்டது"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2252,7 +2257,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "autospawn பூட்டை அணுக முடியவில்லை." msgstr "autospawn பூட்டை அணுக முடியவில்லை."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2263,7 +2268,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx.te\n" "Project-Id-Version: pulseaudio.master-tx.te\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-08 18:21+0530\n" "PO-Revision-Date: 2009-04-08 18:21+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n" "Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n" "Language-Team: Telugu <en@li.org>\n"
@ -21,7 +21,7 @@ msgstr ""
"\n" "\n"
"\n" "\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -74,11 +74,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "అంతర్గత ఆడియో" msgstr "అంతర్గత ఆడియో"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "మోడెమ్" msgstr "మోడెమ్"
@ -324,11 +324,16 @@ msgid "Using state directory %s."
msgstr "స్థితి డైరెక్టరీను వుపయోగించుచున్నది %s." msgstr "స్థితి డైరెక్టరీను వుపయోగించుచున్నది %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "రన్‌టైమ్ డైరెక్టరీను వుపయోగించుచున్నది %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "సిస్టమ్ రీతినందు వుపయోగించుచున్నది: %s" msgstr "సిస్టమ్ రీతినందు వుపయోగించుచున్నది: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -338,41 +343,41 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() విఫలమైంది." msgstr "pa_pid_file_create() విఫలమైంది."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "తాజా అధిక-తీవ్రత కాలసూచికలు అందుబాటులో వున్నాయి! బాన్ ఎపటైట్!" msgstr "తాజా అధిక-తీవ్రత కాలసూచికలు అందుబాటులో వున్నాయి! బాన్ ఎపటైట్!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "మిత్రమా, నీ కెర్నల్ చెడిపోయింది! అధిక-తీవ్రత కాలసూచకిలను చేతనము చేయమని సూచించడమైనది!" msgstr "మిత్రమా, నీ కెర్నల్ చెడిపోయింది! అధిక-తీవ్రత కాలసూచకిలను చేతనము చేయమని సూచించడమైనది!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new() విఫలమైంది." msgstr "pa_core_new() విఫలమైంది."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "డెమోన్ సిద్దముచేయుటకు విఫలమైంది." msgstr "డెమోన్ సిద్దముచేయుటకు విఫలమైంది."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ఏవిధమైన మాడ్యూళ్ళు లోడవకుండా డెమోన్ ప్రారంభము, పనిచేయుటకు తిరస్కరించబడింది." msgstr "ఏవిధమైన మాడ్యూళ్ళు లోడవకుండా డెమోన్ ప్రారంభము, పనిచేయుటకు తిరస్కరించబడింది."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "డెమోన్ ప్రారంభము పూర్తైనది." msgstr "డెమోన్ ప్రారంభము పూర్తైనది."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "డెమోన్ మూసివేత సిద్దముచేయబడింది." msgstr "డెమోన్ మూసివేత సిద్దముచేయబడింది."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "డెమోన్ అంతముచేయబడింది." msgstr "డెమోన్ అంతముచేయబడింది."
@ -629,72 +634,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "పాత్: %s\n" msgstr "పాత్: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] చెల్లని లాగ్ లక్ష్యము '%s'." msgstr "[%s:%u] చెల్లని లాగ్ లక్ష్యము '%s'."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] చెల్లని లాగ్ స్థాయి '%s'." msgstr "[%s:%u] చెల్లని లాగ్ స్థాయి '%s'."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] చెల్లని పునఃవుదాహరణ పద్దతి '%s'." msgstr "[%s:%u] చెల్లని పునఃవుదాహరణ పద్దతి '%s'."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] చెల్లని rlimit '%s'." msgstr "[%s:%u] చెల్లని rlimit '%s'."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit అనునది ఈ ప్లాట్‌ఫాం నందు మద్దతివ్వబడదు." msgstr "[%s:%u] rlimit అనునది ఈ ప్లాట్‌ఫాం నందు మద్దతివ్వబడదు."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] చెల్లని మాదిరి ఫార్మాట్ '%s'." msgstr "[%s:%u] చెల్లని మాదిరి ఫార్మాట్ '%s'."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] చెల్లని మాదిరి రేటు '%s'." msgstr "[%s:%u] చెల్లని మాదిరి రేటు '%s'."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] చెల్లని మాదిరి చానళ్ళు '%s'." msgstr "[%s:%u] చెల్లని మాదిరి చానళ్ళు '%s'."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] చెల్లని ఛానల్ మాప్ '%s'." msgstr "[%s:%u] చెల్లని ఛానల్ మాప్ '%s'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] చెల్లని ముక్కలు సంఖ్య '%s'." msgstr "[%s:%u] చెల్లని ముక్కలు సంఖ్య '%s'."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] చెల్లని ముక్క పరిమాణము '%s'." msgstr "[%s:%u] చెల్లని ముక్క పరిమాణము '%s'."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] చెల్లని సాదా స్థాయి '%s'." msgstr "[%s:%u] చెల్లని సాదా స్థాయి '%s'."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "ఆకృతీకరణ దస్త్రమును తెరుచుటకు విఫలమైంది: %s" msgstr "ఆకృతీకరణ దస్త్రమును తెరుచుటకు విఫలమైంది: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -702,7 +707,7 @@ msgstr ""
"తెలుపబడిన అప్రమేయ ప్రాసారమార్గం మాప్ తెలుపబడిన అప్రమేయ ప్రసారమార్గముల కన్నా విభిన్న ప్రసారమార్గముల " "తెలుపబడిన అప్రమేయ ప్రాసారమార్గం మాప్ తెలుపబడిన అప్రమేయ ప్రసారమార్గముల కన్నా విభిన్న ప్రసారమార్గముల "
"సంఖ్యను కలిగివుంది." "సంఖ్యను కలిగివుంది."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### ఆకృతీకరణ దస్త్రమునుండి చదువుము: %s ###\n" msgstr "### ఆకృతీకరణ దస్త్రమునుండి చదువుము: %s ###\n"
@ -924,7 +929,7 @@ msgstr "పైన వెనుక ఎడమవైపు"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "పైన వెనుక కుడివైపున" msgstr "పైన వెనుక కుడివైపున"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1054,27 +1059,27 @@ msgstr "తప్పిపోయిన యింప్లిమెంటేష
msgid "Client forked" msgid "Client forked"
msgstr "కక్షిదారి పోర్క్ చేసిన" msgstr "కక్షిదారి పోర్క్ చేసిన"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2228,7 +2233,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "ఆటోస్పాన్ తాళంను యాక్సిస్ చేయలేదు." msgstr "ఆటోస్పాన్ తాళంను యాక్సిస్ చేయలేదు."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2244,7 +2249,7 @@ msgstr ""
"మనము POLLOUT అమర్పు ద్వారా జాగరూక పరచబడినాము -- ఏమైనప్పటికి snd_pcm_avail() అనునది 0 ను " "మనము POLLOUT అమర్పు ద్వారా జాగరూక పరచబడినాము -- ఏమైనప్పటికి snd_pcm_avail() అనునది 0 ను "
"యిస్తుంది లేదా వేరొక విలువ < min_avail యిస్తుంది." "యిస్తుంది లేదా వేరొక విలువ < min_avail యిస్తుంది."
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n" "Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-18 11:13+0300\n" "PO-Revision-Date: 2009-04-18 11:13+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n" "Language-Team: Ukrainian <translation@linux.org.ua>\n"
@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && 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" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -74,11 +74,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "Вбудоване аудіо" msgstr "Вбудоване аудіо"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "Модем" msgstr "Модем"
@ -335,11 +335,16 @@ msgid "Using state directory %s."
msgstr "Каталог стану: %s." msgstr "Каталог стану: %s."
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "Каталог запуску: %s."
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "Запуску у загальносистемному режимі: %s" msgstr "Запуску у загальносистемному режимі: %s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -349,15 +354,15 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "Спроба виконання pa_pid_file_create() зазнала невдачі." msgstr "Спроба виконання pa_pid_file_create() зазнала невдачі."
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Доступні свіжі високоточні таймери! Смачного!" msgstr "Доступні свіжі високоточні таймери! Смачного!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
@ -365,29 +370,29 @@ msgstr ""
"Чувак, твоє ядро — лайно! Круті пацани рекомендують Linux з увімкненими " "Чувак, твоє ядро — лайно! Круті пацани рекомендують Linux з увімкненими "
"високоточними таймерами!" "високоточними таймерами!"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "Спроба виконання pa_core_new() зазнала невдачі." msgstr "Спроба виконання pa_core_new() зазнала невдачі."
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "Не вдалося ініціалізувати фонову службу." msgstr "Не вдалося ініціалізувати фонову службу."
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "" msgstr ""
"Запуск фонової служби без жодного завантаженого модуля, служба не буде " "Запуск фонової служби без жодного завантаженого модуля, служба не буде "
"працездатною." "працездатною."
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "Запуск фонової служби завершено." msgstr "Запуск фонової служби завершено."
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "Ініційовано завершення роботи фонової служби." msgstr "Ініційовано завершення роботи фонової служби."
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "Виконання фонової служби перервано." msgstr "Виконання фонової служби перервано."
@ -661,72 +666,72 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "Шлях: %s\n" msgstr "Шлях: %s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Некоректний журнал «%s»." msgstr "[%s:%u] Некоректний журнал «%s»."
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Некоректний рівень журналювання «%s»." msgstr "[%s:%u] Некоректний рівень журналювання «%s»."
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Некоректний метод зміни частотних характеристик «%s»." msgstr "[%s:%u] Некоректний метод зміни частотних характеристик «%s»."
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Некоректне значення rlimit «%s»." msgstr "[%s:%u] Некоректне значення rlimit «%s»."
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit не підтримується на цій платформі." msgstr "[%s:%u] rlimit не підтримується на цій платформі."
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Некоректний формат фрагмента «%s»." msgstr "[%s:%u] Некоректний формат фрагмента «%s»."
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Некоректна частота вибірки «%s»." msgstr "[%s:%u] Некоректна частота вибірки «%s»."
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Некоректні канали фрагмента «%s»." msgstr "[%s:%u] Некоректні канали фрагмента «%s»."
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Некоректна карта каналів «%s»'." msgstr "[%s:%u] Некоректна карта каналів «%s»'."
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Некоректна кількість фрагментів «%s»." msgstr "[%s:%u] Некоректна кількість фрагментів «%s»."
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Некоректний розмір фрагмента «%s»." msgstr "[%s:%u] Некоректний розмір фрагмента «%s»."
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Некоректний рівень nice «%s»." msgstr "[%s:%u] Некоректний рівень nice «%s»."
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "Не вдалося відкрити файл налаштувань: %s" msgstr "Не вдалося відкрити файл налаштувань: %s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
@ -734,7 +739,7 @@ msgstr ""
"У вказаній типовій карті каналів визначається інша кількість каналів, ніж " "У вказаній типовій карті каналів визначається інша кількість каналів, ніж "
"типова кількість каналів." "типова кількість каналів."
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### Прочитано з файла налаштувань: %s ###\n" msgstr "### Прочитано з файла налаштувань: %s ###\n"
@ -956,7 +961,7 @@ msgstr "Верхній задній лівий"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "Верхній задній правий" msgstr "Верхній задній правий"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1086,27 +1091,27 @@ msgstr "Відсутня реалізація"
msgid "Client forked" msgid "Client forked"
msgstr "Клієнт розгалужено" msgstr "Клієнт розгалужено"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uкан. %uГц" msgstr "%s %uкан. %uГц"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f ГБ" msgstr "%0.1f ГБ"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f МБ" msgstr "%0.1f МБ"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f кБ" msgstr "%0.1f кБ"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u Б" msgstr "%u Б"
@ -2267,7 +2272,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "Не вдалося зняти блокування автоматичного розгалуження." msgstr "Не вдалося зняти блокування автоматичного розгалуження."
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2278,7 +2283,7 @@ msgid ""
"returned 0 or another value < min_avail." "returned 0 or another value < min_avail."
msgstr "" msgstr ""
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

View file

@ -11,7 +11,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n" "Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-08-19 04:16+0200\n" "POT-Creation-Date: 2009-08-24 03:31+0200\n"
"PO-Revision-Date: 2009-04-06 10:26+1000\n" "PO-Revision-Date: 2009-04-06 10:26+1000\n"
"Last-Translator: Leah Liu <lliu@redhat.com>\n" "Last-Translator: Leah Liu <lliu@redhat.com>\n"
"Language-Team: Simplified Chinese <zh@li.org>\n" "Language-Team: Simplified Chinese <zh@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n" "X-Generator: KBabel 1.11.4\n"
#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666 #: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2676
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "" msgstr ""
@ -71,11 +71,11 @@ msgid ""
"input control values>" "input control values>"
msgstr "" msgstr ""
#: ../src/pulsecore/sink.c:2650 #: ../src/pulsecore/sink.c:2660
msgid "Internal Audio" msgid "Internal Audio"
msgstr "内部音频" msgstr "内部音频"
#: ../src/pulsecore/sink.c:2655 #: ../src/pulsecore/sink.c:2665
msgid "Modem" msgid "Modem"
msgstr "调制解调器" msgstr "调制解调器"
@ -321,11 +321,16 @@ msgid "Using state directory %s."
msgstr "正在使用状态文件夹%s。" msgstr "正在使用状态文件夹%s。"
#: ../src/daemon/main.c:777 #: ../src/daemon/main.c:777
#, fuzzy, c-format
msgid "Using modules directory %s."
msgstr "正在使用运行时文件夹%s。"
#: ../src/daemon/main.c:779
#, c-format #, c-format
msgid "Running in system mode: %s" msgid "Running in system mode: %s"
msgstr "正在以系统模式运行:%s" msgstr "正在以系统模式运行:%s"
#: ../src/daemon/main.c:780 #: ../src/daemon/main.c:782
msgid "" msgid ""
"OK, so you are running PA in system mode. Please note that you most likely " "OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n" "shouldn't be doing that.\n"
@ -335,41 +340,41 @@ msgid ""
"explanation why system mode is usually a bad idea." "explanation why system mode is usually a bad idea."
msgstr "" msgstr ""
#: ../src/daemon/main.c:797 #: ../src/daemon/main.c:799
msgid "pa_pid_file_create() failed." msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败。" msgstr "pa_pid_file_create()失败。"
#: ../src/daemon/main.c:807 #: ../src/daemon/main.c:809
msgid "Fresh high-resolution timers available! Bon appetit!" msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "新鲜的高分辨率计时器开锅了!吃个饱!" msgstr "新鲜的高分辨率计时器开锅了!吃个饱!"
#: ../src/daemon/main.c:809 #: ../src/daemon/main.c:811
msgid "" msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-" "Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!" "resolution timers enabled!"
msgstr "老兄你的内核真臭现在流行的是启用了高分辩率计分器的Linux" msgstr "老兄你的内核真臭现在流行的是启用了高分辩率计分器的Linux"
#: ../src/daemon/main.c:827 #: ../src/daemon/main.c:832
msgid "pa_core_new() failed." msgid "pa_core_new() failed."
msgstr "pa_core_new()失败。" msgstr "pa_core_new()失败。"
#: ../src/daemon/main.c:889 #: ../src/daemon/main.c:892
msgid "Failed to initialize daemon." msgid "Failed to initialize daemon."
msgstr "后台程序初始化失败。" msgstr "后台程序初始化失败。"
#: ../src/daemon/main.c:894 #: ../src/daemon/main.c:897
msgid "Daemon startup without any loaded modules, refusing to work." msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "后台程序启动未加载任何模块,拒绝工作。" msgstr "后台程序启动未加载任何模块,拒绝工作。"
#: ../src/daemon/main.c:911 #: ../src/daemon/main.c:914
msgid "Daemon startup complete." msgid "Daemon startup complete."
msgstr "后台程序启动完成。" msgstr "后台程序启动完成。"
#: ../src/daemon/main.c:917 #: ../src/daemon/main.c:920
msgid "Daemon shutdown initiated." msgid "Daemon shutdown initiated."
msgstr "开始关闭后台程序。" msgstr "开始关闭后台程序。"
#: ../src/daemon/main.c:939 #: ../src/daemon/main.c:942
msgid "Daemon terminated." msgid "Daemon terminated."
msgstr "后台程序已终止。" msgstr "后台程序已终止。"
@ -610,78 +615,78 @@ msgstr ""
msgid "Path: %s\n" msgid "Path: %s\n"
msgstr "路径:%s\n" msgstr "路径:%s\n"
#: ../src/daemon/daemon-conf.c:216 #: ../src/daemon/daemon-conf.c:232
#, c-format #, c-format
msgid "[%s:%u] Invalid log target '%s'." msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] 无效的日志目标'%s'。" msgstr "[%s:%u] 无效的日志目标'%s'。"
#: ../src/daemon/daemon-conf.c:232 #: ../src/daemon/daemon-conf.c:248
#, c-format #, c-format
msgid "[%s:%u] Invalid log level '%s'." msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] 无效的日志级别'%s'。" msgstr "[%s:%u] 无效的日志级别'%s'。"
#: ../src/daemon/daemon-conf.c:248 #: ../src/daemon/daemon-conf.c:264
#, c-format #, c-format
msgid "[%s:%u] Invalid resample method '%s'." msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] 无效的重采样方法'%s'。" msgstr "[%s:%u] 无效的重采样方法'%s'。"
#: ../src/daemon/daemon-conf.c:271 #: ../src/daemon/daemon-conf.c:287
#, c-format #, c-format
msgid "[%s:%u] Invalid rlimit '%s'." msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] 无效的rlimit '%s'。" msgstr "[%s:%u] 无效的rlimit '%s'。"
#: ../src/daemon/daemon-conf.c:278 #: ../src/daemon/daemon-conf.c:294
#, c-format #, c-format
msgid "[%s:%u] rlimit not supported on this platform." msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] 此平台不支持rlimit。" msgstr "[%s:%u] 此平台不支持rlimit。"
#: ../src/daemon/daemon-conf.c:294 #: ../src/daemon/daemon-conf.c:310
#, c-format #, c-format
msgid "[%s:%u] Invalid sample format '%s'." msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] 无效的样品格式'%s'。" msgstr "[%s:%u] 无效的样品格式'%s'。"
#: ../src/daemon/daemon-conf.c:312 #: ../src/daemon/daemon-conf.c:328
#, c-format #, c-format
msgid "[%s:%u] Invalid sample rate '%s'." msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] 无效的样品率'%s'。" msgstr "[%s:%u] 无效的样品率'%s'。"
#: ../src/daemon/daemon-conf.c:336 #: ../src/daemon/daemon-conf.c:352
#, c-format #, c-format
msgid "[%s:%u] Invalid sample channels '%s'." msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] 无效的样品通道'%s'。" msgstr "[%s:%u] 无效的样品通道'%s'。"
#: ../src/daemon/daemon-conf.c:354 #: ../src/daemon/daemon-conf.c:370
#, c-format #, c-format
msgid "[%s:%u] Invalid channel map '%s'." msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] 无效频道地图 '%s'。" msgstr "[%s:%u] 无效频道地图 '%s'。"
#: ../src/daemon/daemon-conf.c:372 #: ../src/daemon/daemon-conf.c:388
#, c-format #, c-format
msgid "[%s:%u] Invalid number of fragments '%s'." msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] 无效的分段数'%s'。" msgstr "[%s:%u] 无效的分段数'%s'。"
#: ../src/daemon/daemon-conf.c:390 #: ../src/daemon/daemon-conf.c:406
#, c-format #, c-format
msgid "[%s:%u] Invalid fragment size '%s'." msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] 无效的分段大小'%s'。" msgstr "[%s:%u] 无效的分段大小'%s'。"
#: ../src/daemon/daemon-conf.c:408 #: ../src/daemon/daemon-conf.c:424
#, c-format #, c-format
msgid "[%s:%u] Invalid nice level '%s'." msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] 无效的nice level '%s'。" msgstr "[%s:%u] 无效的nice level '%s'。"
#: ../src/daemon/daemon-conf.c:530 #: ../src/daemon/daemon-conf.c:546
#, c-format #, c-format
msgid "Failed to open configuration file: %s" msgid "Failed to open configuration file: %s"
msgstr "打开配置文件失败:%s" msgstr "打开配置文件失败:%s"
#: ../src/daemon/daemon-conf.c:546 #: ../src/daemon/daemon-conf.c:562
msgid "" msgid ""
"The specified default channel map has a different number of channels than " "The specified default channel map has a different number of channels than "
"the specified default number of channels." "the specified default number of channels."
msgstr "指定的默认频道地图的频道数与指定的默认频道数不同。" msgstr "指定的默认频道地图的频道数与指定的默认频道数不同。"
#: ../src/daemon/daemon-conf.c:622 #: ../src/daemon/daemon-conf.c:638
#, c-format #, c-format
msgid "### Read from configuration file: %s ###\n" msgid "### Read from configuration file: %s ###\n"
msgstr "### 从配置文件读取:%s ###\n" msgstr "### 从配置文件读取:%s ###\n"
@ -903,7 +908,7 @@ msgstr "上左后"
msgid "Top Rear Right" msgid "Top Rear Right"
msgstr "上右后" msgstr "上右后"
#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171 #: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:170
#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311 #: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361 #: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)" msgid "(invalid)"
@ -1033,27 +1038,27 @@ msgstr "缺少部署"
msgid "Client forked" msgid "Client forked"
msgstr "客户端分支" msgstr "客户端分支"
#: ../src/pulse/sample.c:173 #: ../src/pulse/sample.c:172
#, c-format #, c-format
msgid "%s %uch %uHz" msgid "%s %uch %uHz"
msgstr "%s %uch %uHz" msgstr "%s %uch %uHz"
#: ../src/pulse/sample.c:185 #: ../src/pulse/sample.c:184
#, c-format #, c-format
msgid "%0.1f GiB" msgid "%0.1f GiB"
msgstr "%0.1f GiB" msgstr "%0.1f GiB"
#: ../src/pulse/sample.c:187 #: ../src/pulse/sample.c:186
#, c-format #, c-format
msgid "%0.1f MiB" msgid "%0.1f MiB"
msgstr "%0.1f MiB" msgstr "%0.1f MiB"
#: ../src/pulse/sample.c:189 #: ../src/pulse/sample.c:188
#, c-format #, c-format
msgid "%0.1f KiB" msgid "%0.1f KiB"
msgstr "%0.1f KiB" msgstr "%0.1f KiB"
#: ../src/pulse/sample.c:191 #: ../src/pulse/sample.c:190
#, c-format #, c-format
msgid "%u B" msgid "%u B"
msgstr "%u B" msgstr "%u B"
@ -2187,7 +2192,7 @@ msgstr "write()%s"
msgid "Cannot access autospawn lock." msgid "Cannot access autospawn lock."
msgstr "不能访问autospawn锁。" msgstr "不能访问autospawn锁。"
#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608 #: ../src/modules/alsa/alsa-sink.c:526 ../src/modules/alsa/alsa-sink.c:684
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to write new data to the device, but there was actually " "ALSA woke us up to write new data to the device, but there was actually "
@ -2203,7 +2208,7 @@ msgstr ""
"提醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者另一个小于最小可" "提醒我们设置 POLLOUT -- 但结果是 snd_pcm_avail() 返回 0 或者另一个小于最小可"
"用值的数值。" "用值的数值。"
#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580 #: ../src/modules/alsa/alsa-source.c:506 ../src/modules/alsa/alsa-source.c:656
#, c-format #, c-format
msgid "" msgid ""
"ALSA woke us up to read new data from the device, but there was actually " "ALSA woke us up to read new data from the device, but there was actually "

1
src/.gitignore vendored
View file

@ -1,3 +1,4 @@
usergroup-test
sigbus-test sigbus-test
TAGS TAGS
alsa-time-test alsa-time-test

View file

@ -74,6 +74,7 @@ AM_CFLAGS = \
$(LIBSAMPLERATE_CFLAGS) \ $(LIBSAMPLERATE_CFLAGS) \
$(LIBSNDFILE_CFLAGS) \ $(LIBSNDFILE_CFLAGS) \
$(LIBSPEEX_CFLAGS) \ $(LIBSPEEX_CFLAGS) \
-DPA_BUILDDIR=\"$(abs_builddir)\" \
-DPA_DLSEARCHPATH=\"$(modlibexecdir)\" \ -DPA_DLSEARCHPATH=\"$(modlibexecdir)\" \
-DPA_DEFAULT_CONFIG_DIR=\"$(PA_DEFAULT_CONFIG_DIR)\" \ -DPA_DEFAULT_CONFIG_DIR=\"$(PA_DEFAULT_CONFIG_DIR)\" \
-DPA_BINARY=\"$(PA_BINARY)\" \ -DPA_BINARY=\"$(PA_BINARY)\" \
@ -280,7 +281,8 @@ TESTS = \
proplist-test \ proplist-test \
lock-autospawn-test \ lock-autospawn-test \
prioq-test \ prioq-test \
sigbus-test sigbus-test \
usergroup-test
TESTS_BINARIES = \ TESTS_BINARIES = \
mainloop-test \ mainloop-test \
@ -318,7 +320,8 @@ TESTS_BINARIES = \
stripnul \ stripnul \
lock-autospawn-test \ lock-autospawn-test \
prioq-test \ prioq-test \
sigbus-test sigbus-test \
usergroup-test
if HAVE_SIGXCPU if HAVE_SIGXCPU
#TESTS += \ #TESTS += \
@ -557,6 +560,11 @@ alsa_time_test_LDADD = $(AM_LDADD)
alsa_time_test_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS) alsa_time_test_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS)
alsa_time_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(ASOUNDLIB_LIBS) 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 # # Common library #
################################### ###################################
@ -621,6 +629,7 @@ libpulsecommon_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/tagstruct.c pulsecore/tagstruct.h \ pulsecore/tagstruct.c pulsecore/tagstruct.h \
pulsecore/time-smoother.c pulsecore/time-smoother.h \ pulsecore/time-smoother.c pulsecore/time-smoother.h \
pulsecore/tokenizer.c pulsecore/tokenizer.h \ pulsecore/tokenizer.c pulsecore/tokenizer.h \
pulsecore/usergroup.c pulsecore/usergroup.h \
pulsecore/sndfile-util.c pulsecore/sndfile-util.h \ pulsecore/sndfile-util.c pulsecore/sndfile-util.h \
pulsecore/winsock.h pulsecore/winsock.h
@ -823,10 +832,14 @@ libpulsecore_@PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/object.c pulsecore/object.h \ pulsecore/object.c pulsecore/object.h \
pulsecore/play-memblockq.c pulsecore/play-memblockq.h \ pulsecore/play-memblockq.c pulsecore/play-memblockq.h \
pulsecore/play-memchunk.c pulsecore/play-memchunk.h \ pulsecore/play-memchunk.c pulsecore/play-memchunk.h \
pulsecore/protocol-dbus.h \ pulsecore/remap.c pulsecore/remap.h \
pulsecore/remap_mmx.c \
pulsecore/resampler.c pulsecore/resampler.h \ pulsecore/resampler.c pulsecore/resampler.h \
pulsecore/rtpoll.c pulsecore/rtpoll.h \ pulsecore/rtpoll.c pulsecore/rtpoll.h \
pulsecore/sample-util.c pulsecore/sample-util.h \ pulsecore/sample-util.c pulsecore/sample-util.h \
pulsecore/cpu-arm.c pulsecore/cpu-x86.c \
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-s16be.c pulsecore/sconv-s16be.h \
pulsecore/sconv-s16le.c pulsecore/sconv-s16le.h \ pulsecore/sconv-s16le.c pulsecore/sconv-s16le.h \
pulsecore/sconv.c pulsecore/sconv.h \ pulsecore/sconv.c pulsecore/sconv.h \

View file

@ -385,11 +385,6 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
pa_xfree(conf->script_commands); pa_xfree(conf->script_commands);
conf->script_commands = pa_strbuf_tostring_free(buf); conf->script_commands = pa_strbuf_tostring_free(buf);
if (!conf->script_commands) {
pa_xfree(conf->script_commands);
conf->script_commands = NULL;
}
*d = optind; *d = optind;
return 0; return 0;

View file

@ -136,9 +136,25 @@ static const pa_daemon_conf default_conf = {
}; };
pa_daemon_conf* pa_daemon_conf_new(void) { 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; return c;
} }

View file

@ -39,8 +39,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <liboil/liboil.h>
#ifdef HAVE_SYS_MMAN_H #ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h> #include <sys/mman.h>
#endif #endif
@ -95,6 +93,8 @@
#ifdef HAVE_DBUS #ifdef HAVE_DBUS
#include <pulsecore/dbus-shared.h> #include <pulsecore/dbus-shared.h>
#endif #endif
#include <pulsecore/cpu-arm.h>
#include <pulsecore/cpu-x86.h>
#include "cmdline.h" #include "cmdline.h"
#include "cpulimit.h" #include "cpulimit.h"
@ -804,6 +804,8 @@ int main(int argc, char *argv[]) {
pa_log_info(_("Using state directory %s."), s); pa_log_info(_("Using state directory %s."), s);
pa_xfree(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())); pa_log_info(_("Running in system mode: %s"), pa_yes_no(pa_in_system_mode()));
if (pa_in_system_mode()) if (pa_in_system_mode())
@ -851,6 +853,9 @@ int main(int argc, char *argv[]) {
pa_memtrap_install(); pa_memtrap_install();
pa_cpu_init_x86();
pa_cpu_init_arm();
pa_assert_se(mainloop = pa_mainloop_new()); pa_assert_se(mainloop = pa_mainloop_new());
if (!(c = pa_core_new(pa_mainloop_get_api(mainloop), !conf->disable_shm, conf->shm_size))) { if (!(c = pa_core_new(pa_mainloop_get_api(mainloop), !conf->disable_shm, conf->shm_size))) {
@ -893,8 +898,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); win32_timer = pa_mainloop_get_api(mainloop)->rtclock_time_new(pa_mainloop_get_api(mainloop), pa_gettimeofday(&win32_tv), message_cb, NULL);
#endif #endif
oil_init();
if (!conf->no_cpu_limit) if (!conf->no_cpu_limit)
pa_assert_se(pa_cpu_limit_init(pa_mainloop_get_api(mainloop)) == 0); pa_assert_se(pa_cpu_limit_init(pa_mainloop_get_api(mainloop)) == 0);

View file

@ -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) { int pa_alsa_path_select(pa_alsa_path *p, snd_mixer_t *m) {
pa_alsa_element *e; pa_alsa_element *e;
int r; int r = 0;
pa_assert(m); pa_assert(m);
pa_assert(p); pa_assert(p);
@ -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[1].data = &p->description;
items[2].data = &p->name; 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); r = pa_config_parse(fn, NULL, items, p);
pa_xfree(fn); pa_xfree(fn);
@ -3110,7 +3115,12 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
if (!fname) if (!fname)
fname = "default.conf"; 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); r = pa_config_parse(fn, NULL, items, ps);
pa_xfree(fn); pa_xfree(fn);

View file

@ -62,12 +62,22 @@
/* #define DEBUG_TIMING */ /* #define DEBUG_TIMING */
#define DEFAULT_DEVICE "default" #define DEFAULT_DEVICE "default"
#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */ #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 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_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 (1*PA_USEC_PER_MSEC) /* 3ms -- 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 */
#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */ #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 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 */ #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 { struct userdata {
@ -96,7 +106,12 @@ struct userdata {
hwbuf_unused, hwbuf_unused,
min_sleep, min_sleep,
min_wakeup, 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; unsigned nfragments;
pa_memchunk memchunk; pa_memchunk memchunk;
@ -115,6 +130,8 @@ struct userdata {
pa_smoother *smoother; pa_smoother *smoother;
uint64_t write_count; uint64_t write_count;
uint64_t since_start; uint64_t since_start;
pa_usec_t smoother_interval;
pa_usec_t last_smoother_update;
pa_reserve_wrapper *reserve; pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot; pa_hook_slot *reserve_slot;
@ -243,6 +260,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2; size_t max_use, max_use_2;
pa_assert(u); pa_assert(u);
pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused; max_use = u->hwbuf_size - u->hwbuf_unused;
max_use_2 = pa_frame_align(max_use/2, &u->sink->sample_spec); max_use_2 = pa_frame_align(max_use/2, &u->sink->sample_spec);
@ -257,6 +275,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) {
static void fix_tsched_watermark(struct userdata *u) { static void fix_tsched_watermark(struct userdata *u) {
size_t max_use; size_t max_use;
pa_assert(u); pa_assert(u);
pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused; max_use = u->hwbuf_size - u->hwbuf_unused;
@ -267,7 +286,7 @@ static void fix_tsched_watermark(struct userdata *u) {
u->tsched_watermark = u->min_wakeup; 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; size_t old_watermark;
pa_usec_t old_min_latency, new_min_latency; pa_usec_t old_min_latency, new_min_latency;
@ -276,31 +295,64 @@ static void adjust_after_underrun(struct userdata *u) {
/* First, just try to increase the watermark */ /* First, just try to increase the watermark */
old_watermark = u->tsched_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); fix_tsched_watermark(u);
if (old_watermark != u->tsched_watermark) { if (old_watermark != u->tsched_watermark) {
pa_log_notice("Increasing wakeup watermark to %0.2f ms", 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); (double) pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec) / PA_USEC_PER_MSEC);
return; return;
} }
/* Hmm, we cannot increase the watermark any further, hence let's raise the latency */ /* Hmm, we cannot increase the watermark any further, hence let's raise the latency */
old_min_latency = u->sink->thread_info.min_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); new_min_latency = PA_MIN(new_min_latency, u->sink->thread_info.max_latency);
if (old_min_latency != new_min_latency) { if (old_min_latency != new_min_latency) {
pa_log_notice("Increasing minimal latency to %0.2f ms", pa_log_info("Increasing minimal latency to %0.2f ms",
(double) new_min_latency / PA_USEC_PER_MSEC); (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); 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! */ /* 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) { static void hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*process_usec) {
pa_usec_t usec, wm; pa_usec_t usec, wm;
@ -308,6 +360,7 @@ static void hw_sleep_time(struct userdata *u, pa_usec_t *sleep_usec, pa_usec_t*p
pa_assert(process_usec); pa_assert(process_usec);
pa_assert(u); pa_assert(u);
pa_assert(u->use_tsched);
usec = pa_sink_get_requested_latency_within_thread(u->sink); usec = pa_sink_get_requested_latency_within_thread(u->sink);
@ -355,7 +408,7 @@ static int try_recover(struct userdata *u, const char *call, int err) {
return 0; 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; size_t left_to_play;
/* We use <= instead of < for this check here because an underrun /* We use <= instead of < for this check here because an underrun
@ -363,34 +416,55 @@ static size_t check_left_to_play(struct userdata *u, size_t n_bytes) {
* it is removed from the buffer. This is particularly important * it is removed from the buffer. This is particularly important
* when block transfer is used. */ * 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; left_to_play = u->hwbuf_size - n_bytes;
else {
#ifdef DEBUG_TIMING /* We got a dropout. What a mess! */
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 {
left_to_play = 0; left_to_play = 0;
#ifdef DEBUG_TIMING #ifdef DEBUG_TIMING
PA_DEBUG_TRAP; PA_DEBUG_TRAP;
#endif #endif
if (!u->first && !u->after_rewind) { if (!u->first && !u->after_rewind)
if (pa_log_ratelimit()) if (pa_log_ratelimit())
pa_log_info("Underrun!"); 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 (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; 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_bool_t work_done = TRUE;
pa_usec_t max_sleep_usec = 0, process_usec = 0; pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_play; size_t left_to_play;
@ -425,7 +499,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); pa_log_debug("avail: %lu", (unsigned long) n_bytes);
#endif #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) if (u->use_tsched)
@ -560,7 +635,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
return work_done ? 1 : 0; 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_bool_t work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0; pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_play; size_t left_to_play;
@ -586,7 +661,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; 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) if (u->use_tsched)
@ -723,18 +799,27 @@ static void update_smoother(struct userdata *u) {
now1 = pa_timespec_load(&htstamp); 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); position = (int64_t) u->write_count - ((int64_t) delay * (int64_t) u->frame_size);
if (PA_UNLIKELY(position < 0)) if (PA_UNLIKELY(position < 0))
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); now2 = pa_bytes_to_usec((uint64_t) position, &u->sink->sample_spec);
pa_smoother_put(u->smoother, now1, now2); 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) { static pa_usec_t sink_get_latency(struct userdata *u) {
@ -906,11 +991,12 @@ static int unsuspend(struct userdata *u) {
u->write_count = 0; u->write_count = 0;
pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE); pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
u->smoother_interval = SMOOTHER_MIN_INTERVAL;
u->last_smoother_update = 0;
u->first = TRUE; u->first = TRUE;
u->since_start = 0; u->since_start = 0;
pa_log_info("Resumed successfully..."); pa_log_info("Resumed successfully...");
return 0; return 0;
@ -1263,15 +1349,16 @@ static void thread_func(void *userdata) {
if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) { if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
int work_done; int work_done;
pa_usec_t sleep_usec = 0; 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 (PA_UNLIKELY(u->sink->thread_info.rewind_requested))
if (process_rewind(u) < 0) if (process_rewind(u) < 0)
goto fail; goto fail;
if (u->use_mmap) 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 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) if (work_done < 0)
goto fail; goto fail;
@ -1622,6 +1709,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
5, 5,
pa_rtclock_now(), pa_rtclock_now(),
TRUE); TRUE);
u->smoother_interval = SMOOTHER_MIN_INTERVAL;
dev_id = pa_modargs_get_value( dev_id = pa_modargs_get_value(
ma, "device_id", ma, "device_id",
@ -1771,7 +1859,6 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size); u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size);
u->nfragments = nfrags; u->nfragments = nfrags;
u->hwbuf_size = u->fragment_size * 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);
pa_cvolume_mute(&u->hardware_volume, u->sink->sample_spec.channels); 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", pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
@ -1782,7 +1869,13 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_sink_set_max_rewind(u->sink, u->hwbuf_size); pa_sink_set_max_rewind(u->sink, u->hwbuf_size);
if (u->use_tsched) { 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_min_sleep_wakeup(u);
fix_tsched_watermark(u); fix_tsched_watermark(u);
@ -1796,6 +1889,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
} else } else
pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss)); pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
reserve_update(u); reserve_update(u);
if (update_sw_params(u) < 0) if (update_sw_params(u) < 0)

View file

@ -59,12 +59,23 @@
/* #define DEBUG_TIMING */ /* #define DEBUG_TIMING */
#define DEFAULT_DEVICE "default" #define DEFAULT_DEVICE "default"
#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */ #define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */
#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */ #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 (1*PA_USEC_PER_MSEC) /* 3ms */
#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_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
#define TSCHED_MIN_SLEEP_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 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) #define VOLUME_ACCURACY (PA_VOLUME_NORM/100)
struct userdata { struct userdata {
@ -93,7 +104,12 @@ struct userdata {
hwbuf_unused, hwbuf_unused,
min_sleep, min_sleep,
min_wakeup, 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; unsigned nfragments;
@ -108,6 +124,8 @@ struct userdata {
pa_smoother *smoother; pa_smoother *smoother;
uint64_t read_count; uint64_t read_count;
pa_usec_t smoother_interval;
pa_usec_t last_smoother_update;
pa_reserve_wrapper *reserve; pa_reserve_wrapper *reserve;
pa_hook_slot *reserve_slot; pa_hook_slot *reserve_slot;
@ -236,6 +254,7 @@ static int reserve_monitor_init(struct userdata *u, const char *dname) {
static void fix_min_sleep_wakeup(struct userdata *u) { static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2; size_t max_use, max_use_2;
pa_assert(u); pa_assert(u);
pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused; max_use = u->hwbuf_size - u->hwbuf_unused;
max_use_2 = pa_frame_align(max_use/2, &u->source->sample_spec); max_use_2 = pa_frame_align(max_use/2, &u->source->sample_spec);
@ -250,6 +269,7 @@ static void fix_min_sleep_wakeup(struct userdata *u) {
static void fix_tsched_watermark(struct userdata *u) { static void fix_tsched_watermark(struct userdata *u) {
size_t max_use; size_t max_use;
pa_assert(u); pa_assert(u);
pa_assert(u->use_tsched);
max_use = u->hwbuf_size - u->hwbuf_unused; max_use = u->hwbuf_size - u->hwbuf_unused;
@ -260,7 +280,7 @@ static void fix_tsched_watermark(struct userdata *u) {
u->tsched_watermark = u->min_wakeup; 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; size_t old_watermark;
pa_usec_t old_min_latency, new_min_latency; pa_usec_t old_min_latency, new_min_latency;
@ -269,36 +289,72 @@ static void adjust_after_overrun(struct userdata *u) {
/* First, just try to increase the watermark */ /* First, just try to increase the watermark */
old_watermark = u->tsched_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); fix_tsched_watermark(u);
if (old_watermark != u->tsched_watermark) { if (old_watermark != u->tsched_watermark) {
pa_log_notice("Increasing wakeup watermark to %0.2f ms", 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); (double) pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec) / PA_USEC_PER_MSEC);
return; return;
} }
/* Hmm, we cannot increase the watermark any further, hence let's raise the latency */ /* Hmm, we cannot increase the watermark any further, hence let's raise the latency */
old_min_latency = u->source->thread_info.min_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); new_min_latency = PA_MIN(new_min_latency, u->source->thread_info.max_latency);
if (old_min_latency != new_min_latency) { if (old_min_latency != new_min_latency) {
pa_log_notice("Increasing minimal latency to %0.2f ms", pa_log_info("Increasing minimal latency to %0.2f ms",
(double) new_min_latency / PA_USEC_PER_MSEC); (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); 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! */ /* 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) { 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_usec_t wm, usec;
pa_assert(sleep_usec);
pa_assert(process_usec);
pa_assert(u); pa_assert(u);
pa_assert(u->use_tsched);
usec = pa_source_get_requested_latency_within_thread(u->source); usec = pa_source_get_requested_latency_within_thread(u->source);
@ -347,7 +403,7 @@ static int try_recover(struct userdata *u, const char *call, int err) {
return 0; 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 left_to_record;
size_t rec_space = u->hwbuf_size - u->hwbuf_unused; size_t rec_space = u->hwbuf_size - u->hwbuf_unused;
@ -356,14 +412,11 @@ static size_t check_left_to_record(struct userdata *u, size_t n_bytes) {
* it is removed from the buffer. This is particularly important * it is removed from the buffer. This is particularly important
* when block transfer is used. */ * when block transfer is used. */
if (n_bytes <= rec_space) { if (n_bytes <= rec_space)
left_to_record = rec_space - n_bytes; left_to_record = rec_space - n_bytes;
else {
#ifdef DEBUG_TIMING /* We got a dropout. What a mess! */
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 {
left_to_record = 0; left_to_record = 0;
#ifdef DEBUG_TIMING #ifdef DEBUG_TIMING
@ -372,15 +425,36 @@ static size_t check_left_to_record(struct userdata *u, size_t n_bytes) {
if (pa_log_ratelimit()) if (pa_log_ratelimit())
pa_log_info("Overrun!"); pa_log_info("Overrun!");
}
if (u->use_tsched) #ifdef DEBUG_TIMING
adjust_after_overrun(u); 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 (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; 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_bool_t work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0; pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_record; size_t left_to_record;
@ -412,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); pa_log_debug("avail: %lu", (unsigned long) n_bytes);
#endif #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 (u->use_tsched)
if (!polled && if (!polled &&
@ -538,7 +613,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
return work_done ? 1 : 0; 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; int work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0; pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_record; size_t left_to_record;
@ -565,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; 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 (u->use_tsched)
if (!polled && if (!polled &&
@ -691,15 +767,23 @@ static void update_smoother(struct userdata *u) {
now1 = pa_timespec_load(&htstamp); 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 */ /* Hmm, if the timestamp is 0, then it wasn't set and we take the current time */
if (now1 <= 0) if (now1 <= 0)
now1 = pa_rtclock_now(); 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); now2 = pa_bytes_to_usec(position, &u->source->sample_spec);
pa_smoother_put(u->smoother, now1, now2); 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) { static pa_usec_t source_get_latency(struct userdata *u) {
@ -862,6 +946,8 @@ static int unsuspend(struct userdata *u) {
u->read_count = 0; u->read_count = 0;
pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE); 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..."); pa_log_info("Resumed successfully...");
@ -1143,11 +1229,12 @@ static void thread_func(void *userdata) {
if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) { if (PA_SOURCE_IS_OPENED(u->source->thread_info.state)) {
int work_done; int work_done;
pa_usec_t sleep_usec = 0; pa_usec_t sleep_usec = 0;
pa_bool_t on_timeout = pa_rtpoll_timer_elapsed(u->rtpoll);
if (u->use_mmap) 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 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) if (work_done < 0)
goto fail; goto fail;
@ -1469,6 +1556,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
5, 5,
pa_rtclock_now(), pa_rtclock_now(),
FALSE); FALSE);
u->smoother_interval = SMOOTHER_MIN_INTERVAL;
dev_id = pa_modargs_get_value( dev_id = pa_modargs_get_value(
ma, "device_id", ma, "device_id",
@ -1616,7 +1704,6 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size); u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size);
u->nfragments = nfrags; u->nfragments = nfrags;
u->hwbuf_size = u->fragment_size * 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);
pa_cvolume_mute(&u->hardware_volume, u->source->sample_spec.channels); 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", pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
@ -1624,7 +1711,13 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
(double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC); (double) pa_bytes_to_usec(u->hwbuf_size, &ss) / PA_USEC_PER_MSEC);
if (u->use_tsched) { 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_min_sleep_wakeup(u);
fix_tsched_watermark(u); fix_tsched_watermark(u);

View file

@ -41,9 +41,12 @@ volume = merge
override-map.1 = lfe override-map.1 = lfe
override-map.2 = lfe,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] [Element Headphone]
switch = off switch = mute
volume = off volume = zero
[Element Speaker] [Element Speaker]
switch = mute switch = mute

View file

@ -38,9 +38,12 @@ volume = merge
override-map.1 = all override-map.1 = all
override-map.2 = all-left,all-right 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] [Element Headphone]
switch = off switch = mute
volume = off volume = zero
[Element Speaker] [Element Speaker]
switch = mute switch = mute

View file

@ -37,9 +37,12 @@ override-map.2 = all-left,all-right
switch = off switch = off
volume = 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] [Element Headphone]
switch = off switch = mute
volume = off volume = zero
[Element Speaker] [Element Speaker]
switch = mute switch = mute

View file

@ -52,9 +52,6 @@ PA_MODULE_LOAD_ONCE(TRUE);
#define MAX_MODULES 10 #define MAX_MODULES 10
#define BUF_MAX 2048 #define BUF_MAX 2048
/* #undef PA_GCONF_HELPER */
/* #define PA_GCONF_HELPER "/home/lennart/projects/pulseaudio/src/gconf-helper" */
struct module_item { struct module_item {
char *name; char *name;
char *args; char *args;
@ -343,7 +340,11 @@ int pa__init(pa_module*m) {
u->io_event = NULL; u->io_event = NULL;
u->buf_fill = 0; 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; goto fail;
u->io_event = m->core->mainloop->io_new( u->io_event = m->core->mainloop->io_new(

View file

@ -1161,6 +1161,8 @@ int pa__init(pa_module*m) {
pa_channel_map slaves_map; pa_channel_map slaves_map;
pa_bool_t is_first_slave = TRUE; pa_bool_t is_first_slave = TRUE;
pa_sample_spec_init(&slaves_spec);
while ((n = pa_split(slaves, ",", &split_state))) { while ((n = pa_split(slaves, ",", &split_state))) {
pa_sink *slave_sink; pa_sink *slave_sink;

View file

@ -99,7 +99,7 @@ static const char* const valid_modargs[] = {
}; };
/* Called from I/O thread context */ /* 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; struct userdata *u = PA_SINK(o)->userdata;
switch (code) { switch (code) {
@ -130,7 +130,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
} }
/* Called from main context */ /* 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; struct userdata *u;
pa_sink_assert_ref(s); pa_sink_assert_ref(s);
@ -145,7 +145,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
} }
/* Called from I/O thread context */ /* 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; struct userdata *u;
pa_sink_assert_ref(s); pa_sink_assert_ref(s);
@ -160,7 +160,7 @@ static void sink_request_rewind(pa_sink *s) {
} }
/* Called from I/O thread context */ /* 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; struct userdata *u;
pa_sink_assert_ref(s); pa_sink_assert_ref(s);
@ -176,6 +176,34 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_sink_get_requested_latency_within_thread(s)); 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 */ /* Called from I/O thread context */
static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) { static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk) {
struct userdata *u; struct userdata *u;
@ -390,8 +418,31 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
pa_sink_input_assert_ref(i); pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata); pa_assert_se(u = i->userdata);
if (dest) {
pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq); pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags); pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
} else
pa_sink_set_asyncmsgq(u->sink, NULL);
}
/* 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) { int pa__init(pa_module*m) {
@ -731,7 +782,9 @@ int pa__init(pa_module*m) {
goto fail; goto fail;
} }
u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)); 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); pa_sink_new_data_done(&sink_data);
if (!u->sink) { if (!u->sink) {
@ -739,10 +792,12 @@ int pa__init(pa_module*m) {
goto fail; goto fail;
} }
u->sink->parent.process_msg = sink_process_msg; u->sink->parent.process_msg = sink_process_msg_cb;
u->sink->set_state = sink_set_state; u->sink->set_state = sink_set_state_cb;
u->sink->update_requested_latency = sink_update_requested_latency; u->sink->update_requested_latency = sink_update_requested_latency_cb;
u->sink->request_rewind = sink_request_rewind; 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; u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq); pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
@ -775,6 +830,8 @@ int pa__init(pa_module*m) {
u->sink_input->state_change = sink_input_state_change_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->may_move_to = sink_input_may_move_to_cb;
u->sink_input->moving = sink_input_moving_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; u->sink_input->userdata = u;
pa_sink_put(u->sink); pa_sink_put(u->sink);

View file

@ -302,8 +302,11 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
pa_sink_input_assert_ref(i); pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata); pa_assert_se(u = i->userdata);
if (dest) {
pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq); pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags); pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
} else
pa_sink_set_asyncmsgq(u->sink, NULL);
} }
int pa__init(pa_module*m) { int pa__init(pa_module*m) {

View file

@ -60,6 +60,7 @@
#include <pulsecore/thread-mq.h> #include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h> #include <pulsecore/rtpoll.h>
#include <pulsecore/thread.h> #include <pulsecore/thread.h>
#include <pulsecore/time-smoother.h>
#include "module-solaris-symdef.h" #include "module-solaris-symdef.h"
@ -110,6 +111,8 @@ struct userdata {
uint32_t prev_playback_samples, prev_record_samples; uint32_t prev_playback_samples, prev_record_samples;
int32_t minimum_request; int32_t minimum_request;
pa_smoother *smoother;
}; };
static const char* const valid_modargs[] = { static const char* const valid_modargs[] = {
@ -133,6 +136,9 @@ static const char* const valid_modargs[] = {
#define MAX_RENDER_HZ (300) #define MAX_RENDER_HZ (300)
/* This render rate limit imposes a minimum latency, but without it we waste too much CPU time. */ /* 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) { static uint64_t get_playback_buffered_bytes(struct userdata *u) {
audio_info_t info; audio_info_t info;
uint64_t played_bytes; 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. */ /* Handle wrap-around of the device's sample counter, which is a uint_32. */
if (u->prev_playback_samples > info.play.samples) { 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) { if (u->prev_playback_samples + info.play.samples < 240000) {
++u->play_samples_msw; ++u->play_samples_msw;
} else { } else {
@ -155,6 +166,8 @@ static uint64_t get_playback_buffered_bytes(struct userdata *u) {
u->prev_playback_samples = info.play.samples; u->prev_playback_samples = info.play.samples;
played_bytes = (((uint64_t)u->play_samples_msw << 32) + info.play.samples) * u->frame_size; 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; 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_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 (!u->source || u->source_suspended) {
if (suspend(u) < 0) if (suspend(u) < 0)
return -1; 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: case PA_SINK_RUNNING:
if (u->sink->thread_info.state == PA_SINK_SUSPENDED) { 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 (!u->source || u->source_suspended) {
if (unsuspend(u) < 0) if (unsuspend(u) < 0)
return -1; return -1;
@ -479,7 +496,7 @@ static void sink_set_volume(pa_sink *s) {
if (u->fd >= 0) { if (u->fd >= 0) {
AUDIO_INITINFO(&info); 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); assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) { 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) if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno)); pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
else else
pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels, pa_cvolume_set(&s->real_volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
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) { if (u->fd >= 0) {
AUDIO_INITINFO(&info); 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); assert(info.play.gain <= AUDIO_MAX_GAIN);
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) { 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) if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno)); pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
else else
pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels, pa_cvolume_set(&s->volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
} }
} }
@ -606,11 +621,13 @@ static void thread_func(void *userdata) {
pa_thread_mq_install(&u->thread_mq); pa_thread_mq_install(&u->thread_mq);
pa_smoother_set_time_offset(u->smoother, pa_rtclock_now());
for (;;) { for (;;) {
/* Render some data and write it to the dsp */ /* Render some data and write it to the dsp */
if (u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state)) { 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; uint64_t buffered_bytes;
if (u->sink->thread_info.rewind_requested) if (u->sink->thread_info.rewind_requested)
@ -629,12 +646,15 @@ static void thread_func(void *userdata) {
info.play.error = 0; info.play.error = 0;
if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno)); pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
} }
for (;;) { for (;;) {
void *p; void *p;
ssize_t w; ssize_t w;
size_t len; size_t len;
int write_type = 1;
/* /*
* Since we cannot modify the size of the output buffer we fake it * Since we cannot modify the size of the output buffer we fake it
@ -652,28 +672,22 @@ static void thread_func(void *userdata) {
break; break;
if (u->memchunk.length < len) if (u->memchunk.length < len)
pa_sink_render(u->sink, u->sink->thread_info.max_request, &u->memchunk); pa_sink_render(u->sink, len - u->memchunk.length, &u->memchunk);
len = PA_MIN(u->memchunk.length, len);
p = pa_memblock_acquire(u->memchunk.memblock); 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); pa_memblock_release(u->memchunk.memblock);
if (w <= 0) { if (w <= 0) {
switch (errno) { if (errno == EINTR) {
case EINTR:
continue; continue;
case EAGAIN: } else if (errno == EAGAIN) {
/* If the buffer_size is too big, we get EAGAIN. Avoiding that limit by trial and error /* We may have realtime priority so yield the CPU to ensure that fd can become writable again. */
* is not ideal, but I don't know how to get the system to tell me what the limit is. pa_log_debug("EAGAIN with %llu bytes buffered.", buffered_bytes);
*/
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; break;
default: } else {
pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno)); pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno));
goto fail; goto fail;
} }
@ -681,9 +695,8 @@ static void thread_func(void *userdata) {
pa_assert(w % u->frame_size == 0); pa_assert(w % u->frame_size == 0);
u->written_bytes += w; u->written_bytes += w;
u->memchunk.length -= w;
u->memchunk.index += w; u->memchunk.index += w;
u->memchunk.length -= w;
if (u->memchunk.length <= 0) { if (u->memchunk.length <= 0) {
pa_memblock_unref(u->memchunk.memblock); pa_memblock_unref(u->memchunk.memblock);
pa_memchunk_reset(&u->memchunk); pa_memchunk_reset(&u->memchunk);
@ -691,7 +704,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 } else
pa_rtpoll_set_timer_disabled(u->rtpoll); pa_rtpoll_set_timer_disabled(u->rtpoll);
@ -797,7 +812,7 @@ static void sig_callback(pa_mainloop_api *api, pa_signal_event*e, int sig, void
pa_log_debug("caught signal"); pa_log_debug("caught signal");
if (u->sink) { 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); pa_sink_get_mute(u->sink, TRUE);
} }
@ -812,7 +827,7 @@ int pa__init(pa_module *m) {
pa_channel_map map; pa_channel_map map;
pa_modargs *ma = NULL; pa_modargs *ma = NULL;
uint32_t buffer_length_msec; uint32_t buffer_length_msec;
int fd; int fd = -1;
pa_sink_new_data sink_new_data; pa_sink_new_data sink_new_data;
pa_source_new_data source_new_data; pa_source_new_data source_new_data;
char const *name; char const *name;
@ -838,6 +853,9 @@ int pa__init(pa_module *m) {
u = pa_xnew0(struct userdata, 1); 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 * 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. * record and playback at the same time, the device's mixer must be enabled.
@ -861,7 +879,13 @@ int pa__init(pa_module *m) {
} }
u->buffer_size = pa_usec_to_bytes(1000 * buffer_length_msec, &ss); u->buffer_size = pa_usec_to_bytes(1000 * buffer_length_msec, &ss);
if (u->buffer_size < 2 * u->minimum_request) { 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; goto fail;
} }
@ -924,6 +948,7 @@ int pa__init(pa_module *m) {
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll); 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->get_volume = source_get_volume;
u->source->set_volume = source_set_volume; u->source->set_volume = source_set_volume;
@ -966,15 +991,15 @@ int pa__init(pa_module *m) {
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll); 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->get_volume = sink_get_volume;
u->sink->set_volume = sink_set_volume; u->sink->set_volume = sink_set_volume;
u->sink->get_mute = sink_get_mute; u->sink->get_mute = sink_get_mute;
u->sink->set_mute = sink_set_mute; u->sink->set_mute = sink_set_mute;
u->sink->refresh_volume = u->sink->refresh_muted = TRUE; 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 } else
u->sink = NULL; u->sink = NULL;
@ -1075,6 +1100,9 @@ void pa__done(pa_module *m) {
if (u->fd >= 0) if (u->fd >= 0)
close(u->fd); close(u->fd);
if (u->smoother)
pa_smoother_free(u->smoother);
pa_xfree(u->device_name); pa_xfree(u->device_name);
pa_xfree(u); pa_xfree(u);

View file

@ -25,6 +25,7 @@
#include <errno.h> #include <errno.h>
#include <limits.h> #include <limits.h>
#include <dirent.h>
#include <sys/inotify.h> #include <sys/inotify.h>
#include <libudev.h> #include <libudev.h>
@ -45,8 +46,9 @@ PA_MODULE_USAGE(
struct device { struct device {
char *path; char *path;
pa_bool_t accessible; pa_bool_t need_verify;
char *card_name; char *card_name;
char *args;
uint32_t module; uint32_t module;
}; };
@ -78,6 +80,7 @@ static void device_free(struct device *d) {
pa_xfree(d->path); pa_xfree(d->path);
pa_xfree(d->card_name); pa_xfree(d->card_name);
pa_xfree(d->args);
pa_xfree(d); pa_xfree(d);
} }
@ -96,30 +99,166 @@ static const char *path_get_card_id(const char *path) {
return e + 5; 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);
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) { static void verify_access(struct userdata *u, struct device *d) {
char *cd; char *cd;
pa_card *card; pa_card *card;
pa_bool_t accessible;
pa_assert(u); pa_assert(u);
pa_assert(d); 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)); 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; accessible = access(cd, R_OK|W_OK) >= 0;
pa_log_info("%s is accessible: %s", cd, pa_yes_no(d->accessible)); pa_log_debug("%s is accessible: %s", cd, pa_yes_no(accessible));
pa_xfree(cd); 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) {
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 {
/* 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) { static void card_changed(struct userdata *u, struct udev_device *dev) {
struct device *d; struct device *d;
const char *path; const char *path;
const char *t; const char *t;
char *card_name, *args;
pa_module *m;
char *n; char *n;
pa_assert(u); pa_assert(u);
@ -135,15 +274,18 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
return; return;
} }
d = pa_xnew0(struct device, 1);
d->path = pa_xstrdup(path);
d->module = PA_INVALID_INDEX;
if (!(t = udev_device_get_property_value(dev, "PULSE_NAME"))) 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_ID")))
if (!(t = udev_device_get_property_value(dev, "ID_PATH"))) if (!(t = udev_device_get_property_value(dev, "ID_PATH")))
t = path_get_card_id(path); t = path_get_card_id(path);
n = pa_namereg_make_valid_name(t); n = pa_namereg_make_valid_name(t);
d->card_name = pa_sprintf_malloc("alsa_card.%s", n);
card_name = pa_sprintf_malloc("alsa_card.%s", n); d->args = pa_sprintf_malloc("device_id=\"%s\" "
args = pa_sprintf_malloc("device_id=\"%s\" "
"name=\"%s\" " "name=\"%s\" "
"card_name=\"%s\" " "card_name=\"%s\" "
"tsched=%s " "tsched=%s "
@ -151,28 +293,14 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
"card_properties=\"module-udev-detect.discovered=1\"", "card_properties=\"module-udev-detect.discovered=1\"",
path_get_card_id(path), path_get_card_id(path),
n, n,
card_name, d->card_name,
pa_yes_no(u->use_tsched), pa_yes_no(u->use_tsched),
pa_yes_no(u->ignore_dB)); pa_yes_no(u->ignore_dB));
pa_xfree(n);
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); pa_hashmap_put(u->devices, d->path, d);
} else
pa_xfree(card_name);
pa_xfree(n); verify_access(u, d);
} }
static void remove_card(struct userdata *u, struct udev_device *dev) { static void remove_card(struct userdata *u, struct udev_device *dev) {
@ -185,7 +313,10 @@ static void remove_card(struct userdata *u, struct udev_device *dev) {
return; return;
pa_log_info("Card %s removed.", d->path); pa_log_info("Card %s removed.", d->path);
if (d->module != PA_INVALID_INDEX)
pa_module_unload_request_by_index(u->core, d->module, TRUE); pa_module_unload_request_by_index(u->core, d->module, TRUE);
device_free(d); device_free(d);
} }
@ -262,6 +393,34 @@ fail:
u->udev_io = NULL; 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( static void inotify_cb(
pa_mainloop_api*a, pa_mainloop_api*a,
pa_io_event* e, pa_io_event* e,
@ -275,10 +434,13 @@ static void inotify_cb(
} buf; } buf;
struct userdata *u = userdata; struct userdata *u = userdata;
static int type = 0; static int type = 0;
pa_bool_t verify = FALSE, deleted = FALSE; pa_bool_t deleted = FALSE;
struct device *d;
void *state;
for (;;) { for (;;) {
ssize_t r; ssize_t r;
struct inotify_event *event;
pa_zero(buf); pa_zero(buf);
if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) { if ((r = pa_read(fd, &buf, sizeof(buf), &type)) <= 0) {
@ -290,20 +452,49 @@ static void inotify_cb(
goto fail; goto fail;
} }
if ((buf.e.mask & IN_CLOSE_WRITE) && pa_startswith(buf.e.name, "pcmC")) event = &buf.e;
verify = TRUE; while (r > 0) {
size_t len;
if ((buf.e.mask & (IN_DELETE_SELF|IN_MOVE_SELF))) if ((size_t) r < sizeof(struct inotify_event)) {
deleted = TRUE; pa_log("read() too short.");
goto fail;
} }
if (verify) { len = sizeof(struct inotify_event) + event->len;
struct device *d;
void *state;
pa_log_debug("Verifying access."); 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;
}
}
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); verify_access(u, d);
} }
@ -335,7 +526,7 @@ static int setup_inotify(struct userdata *u) {
} }
dev_snd = pa_sprintf_malloc("%s/snd", udev_get_dev_path(u->udev)); 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|IN_DELETE_SELF|IN_MOVE_SELF); r = inotify_add_watch(u->inotify_fd, dev_snd, IN_ATTRIB|IN_CLOSE_WRITE|IN_DELETE_SELF|IN_MOVE_SELF);
pa_xfree(dev_snd); pa_xfree(dev_snd);
if (r < 0) { if (r < 0) {
@ -449,7 +640,7 @@ int pa__init(pa_module *m) {
udev_enumerate_unref(enumerate); 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); pa_modargs_free(ma);

View file

@ -56,7 +56,9 @@ pa_glib_mainloop *pa_glib_mainloop_new(GMainContext *c);
/** Free the GLIB main loop object */ /** Free the GLIB main loop object */
void pa_glib_mainloop_free(pa_glib_mainloop* g); 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_mainloop_api* pa_glib_mainloop_get_api(pa_glib_mainloop *g);
PA_C_DECL_END PA_C_DECL_END

View file

@ -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. */ /** 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); 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); pa_mainloop_api* pa_mainloop_get_api(pa_mainloop*m);
/** Shutdown the main loop */ /** Shutdown the main loop */

View file

@ -36,9 +36,7 @@
#include "sample.h" #include "sample.h"
size_t pa_sample_size_of_format(pa_sample_format_t f) { static const size_t size_table[] = {
static const size_t table[] = {
[PA_SAMPLE_U8] = 1, [PA_SAMPLE_U8] = 1,
[PA_SAMPLE_ULAW] = 1, [PA_SAMPLE_ULAW] = 1,
[PA_SAMPLE_ALAW] = 1, [PA_SAMPLE_ALAW] = 1,
@ -54,10 +52,11 @@ size_t pa_sample_size_of_format(pa_sample_format_t f) {
[PA_SAMPLE_S24_32BE] = 4 [PA_SAMPLE_S24_32BE] = 4
}; };
size_t pa_sample_size_of_format(pa_sample_format_t f) {
pa_assert(f >= 0); pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX); pa_assert(f < PA_SAMPLE_MAX);
return table[f]; return size_table[f];
} }
size_t pa_sample_size(const pa_sample_spec *spec) { 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_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); 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) { size_t pa_frame_size(const pa_sample_spec *spec) {
pa_assert(spec); pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); 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) { size_t pa_bytes_per_second(const pa_sample_spec *spec) {
pa_assert(spec); pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); 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_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec) {
pa_assert(spec); pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); 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) { size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec) {
pa_assert(spec); pa_assert(spec);
pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); 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) { 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) { int pa_sample_spec_valid(const pa_sample_spec *spec) {
pa_assert(spec); pa_assert(spec);
if (spec->rate <= 0 || if (PA_UNLIKELY (spec->rate <= 0 ||
spec->rate > PA_RATE_MAX || spec->rate > PA_RATE_MAX ||
spec->channels <= 0 || spec->channels <= 0 ||
spec->channels > PA_CHANNELS_MAX || spec->channels > PA_CHANNELS_MAX ||
spec->format >= PA_SAMPLE_MAX || spec->format >= PA_SAMPLE_MAX ||
spec->format < 0) spec->format < 0))
return 0; return 0;
return 1; return 1;

View file

@ -299,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. */ /** Return the return value as specified with the main loop's quit() routine. */
int pa_threaded_mainloop_get_retval(pa_threaded_mainloop *m); 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); 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 */ /** Returns non-zero when called from withing the event loop thread. \since 0.9.7 */

View file

@ -61,38 +61,40 @@
#include <pulsecore/log.h> #include <pulsecore/log.h>
#include <pulsecore/core-util.h> #include <pulsecore/core-util.h>
#include <pulsecore/macro.h> #include <pulsecore/macro.h>
#include <pulsecore/usergroup.h>
#include "util.h" #include "util.h"
char *pa_get_user_name(char *s, size_t l) { char *pa_get_user_name(char *s, size_t l) {
const char *p; const char *p;
char *name = NULL;
#ifdef OS_IS_WIN32
char buf[1024]; char buf[1024];
#endif
#ifdef HAVE_PWD_H #ifdef HAVE_PWD_H
struct passwd pw, *r; struct passwd *r;
#endif #endif
pa_assert(s); pa_assert(s);
pa_assert(l > 0); pa_assert(l > 0);
if (!(p = (getuid() == 0 ? "root" : NULL)) && if ((p = (getuid() == 0 ? "root" : NULL)) ||
!(p = getenv("USER")) && (p = getenv("USER")) ||
!(p = getenv("LOGNAME")) && (p = getenv("LOGNAME")) ||
!(p = getenv("USERNAME"))) { (p = getenv("USERNAME")))
{
name = pa_strlcpy(s, p, l);
} else {
#ifdef HAVE_PWD_H #ifdef HAVE_PWD_H
#ifdef HAVE_GETPWUID_R if ((r = pa_getpwuid_malloc(getuid())) == NULL) {
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
pa_snprintf(s, l, "%lu", (unsigned long) getuid()); pa_snprintf(s, l, "%lu", (unsigned long) getuid());
return s; 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 */ #elif defined(OS_IS_WIN32) /* HAVE_PWD_H */
DWORD size = sizeof(buf); DWORD size = sizeof(buf);
@ -102,7 +104,7 @@ char *pa_get_user_name(char *s, size_t l) {
return NULL; return NULL;
} }
p = buf; name = pa_strlcpy(s, buf, l);
#else /* HAVE_PWD_H */ #else /* HAVE_PWD_H */
@ -110,7 +112,7 @@ char *pa_get_user_name(char *s, size_t l) {
#endif /* HAVE_PWD_H */ #endif /* HAVE_PWD_H */
} }
return pa_strlcpy(s, p, l); return name;
} }
char *pa_get_host_name(char *s, size_t l) { 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 *pa_get_home_dir(char *s, size_t l) {
char *e; char *e, *dir;
#ifdef HAVE_PWD_H #ifdef HAVE_PWD_H
char buf[1024]; struct passwd *r;
struct passwd pw, *r;
#endif #endif
pa_assert(s); pa_assert(s);
@ -143,22 +144,19 @@ char *pa_get_home_dir(char *s, size_t l) {
return pa_strlcpy(s, e, l); return pa_strlcpy(s, e, l);
#ifdef HAVE_PWD_H #ifdef HAVE_PWD_H
errno = 0; errno = 0;
#ifdef HAVE_GETPWUID_R if ((r = pa_getpwuid_malloc(getuid())) == NULL) {
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 (!errno) if (!errno)
errno = ENOENT; errno = ENOENT;
return NULL; 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 */ #else /* HAVE_PWD_H */
errno = ENOENT; errno = ENOENT;

View file

@ -115,6 +115,7 @@
#include <pulsecore/macro.h> #include <pulsecore/macro.h>
#include <pulsecore/thread.h> #include <pulsecore/thread.h>
#include <pulsecore/strbuf.h> #include <pulsecore/strbuf.h>
#include <pulsecore/usergroup.h>
#include "core-util.h" #include "core-util.h"
@ -969,54 +970,24 @@ fail:
/* Check whether the specified GID and the group name match */ /* Check whether the specified GID and the group name match */
static int is_group(gid_t gid, const char *name) { static int is_group(gid_t gid, const char *name) {
struct group group, *result = NULL; struct group *group = NULL;
long n;
void *data;
int r = -1; 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; errno = 0;
if (getgrgid_r(gid, &group, data, (size_t) n, &result) < 0 || !result) { if (!(group = pa_getgrgid_malloc(gid)))
pa_log("getgrgid_r(%u): %s", (unsigned) gid, pa_cstrerror(errno)); {
if (!errno) if (!errno)
errno = ENOENT; errno = ENOENT;
pa_log("pa_getgrgid_malloc(%u): %s", gid, pa_cstrerror(errno));
goto finish; goto finish;
} }
r = strcmp(name, result->gr_name) == 0; r = strcmp(name, group->gr_name) == 0;
finish: finish:
pa_xfree(data); pa_getgrgid_free(group);
#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
return r; return r;
} }
@ -1065,38 +1036,12 @@ finish:
/* Check whether the specifc user id is a member of the specified group */ /* Check whether the specifc user id is a member of the specified group */
int pa_uid_in_group(uid_t uid, const char *name) { int pa_uid_in_group(uid_t uid, const char *name) {
char *g_buf, *p_buf; struct group *group = NULL;
long g_n, p_n;
struct group grbuf, *gr;
char **i; char **i;
int r = -1; 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; errno = 0;
#ifdef HAVE_GETGRNAM_R if (!(group = pa_getgrnam_malloc(name)))
if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
#else
if (!(gr = getgrnam(name)))
#endif
{ {
if (!errno) if (!errno)
errno = ENOENT; errno = ENOENT;
@ -1104,25 +1049,24 @@ int pa_uid_in_group(uid_t uid, const char *name) {
} }
r = 0; r = 0;
for (i = gr->gr_mem; *i; i++) { for (i = group->gr_mem; *i; i++) {
struct passwd pwbuf, *pw; struct passwd *pw = NULL;
#ifdef HAVE_GETPWNAM_R errno = 0;
if (getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw) != 0 || !pw) if (!(pw = pa_getpwnam_malloc(*i)))
#else
if (!(pw = getpwnam(*i)))
#endif
continue; continue;
if (pw->pw_uid == uid) { if (pw->pw_uid == uid)
r = 1; r = 1;
pa_getpwnam_free(pw);
if (r == 1)
break; break;
} }
}
finish: finish:
pa_xfree(g_buf); pa_getgrnam_free(group);
pa_xfree(p_buf);
return r; return r;
} }
@ -1130,26 +1074,10 @@ finish:
/* Get the GID of a gfiven group, return (gid_t) -1 on failure. */ /* 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 pa_get_gid_of_group(const char *name) {
gid_t ret = (gid_t) -1; gid_t ret = (gid_t) -1;
char *g_buf; struct group *gr = NULL;
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);
errno = 0; errno = 0;
#ifdef HAVE_GETGRNAM_R if (!(gr = pa_getgrnam_malloc(name)))
if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
#else
if (!(gr = getgrnam(name)))
#endif
{ {
if (!errno) if (!errno)
errno = ENOENT; errno = ENOENT;
@ -1159,7 +1087,7 @@ gid_t pa_get_gid_of_group(const char *name) {
ret = gr->gr_gid; ret = gr->gr_gid;
finish: finish:
pa_xfree(g_buf); pa_getgrnam_free(gr);
return ret; return ret;
} }
@ -2295,7 +2223,7 @@ int pa_close_all(int except_fd, ...) {
va_end(ap); va_end(ap);
r = pa_close_allv(p); r = pa_close_allv(p);
free(p); pa_xfree(p);
return r; return r;
} }
@ -2890,3 +2818,22 @@ void pa_reset_personality(void) {
#endif #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

View file

@ -250,4 +250,8 @@ size_t pa_pipe_buf(int fd);
void pa_reset_personality(void); void pa_reset_personality(void);
#if defined(__linux__) && !defined(__OPTIMIZE__)
pa_bool_t pa_run_from_build_tree(void);
#endif
#endif #endif

View file

@ -47,7 +47,7 @@
#include "core.h" #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) { static int core_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk) {
pa_core *c = PA_CORE(o); pa_core *c = PA_CORE(o);

View file

@ -174,7 +174,7 @@ struct pa_core {
pa_hook hooks[PA_CORE_HOOK_MAX]; 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) #define PA_CORE(o) pa_core_cast(o)
enum { enum {

139
src/pulsecore/cpu-arm.c Normal file
View file

@ -0,0 +1,139 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdint.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pulse/xmalloc.h>
#include <pulsecore/log.h>
#include "cpu-arm.h"
#if defined (__arm__) && defined (__linux__)
#define MAX_BUFFER 4096
static char *
get_cpuinfo_line (char *cpuinfo, const char *tag) {
char *line, *end, *colon;
if (!(line = strstr (cpuinfo, tag)))
return NULL;
if (!(end = strchr (line, '\n')))
return NULL;
if (!(colon = strchr (line, ':')))
return NULL;
if (++colon >= end)
return NULL;
return pa_xstrndup (colon, end - colon);
}
static char *get_cpuinfo(void) {
char *cpuinfo;
int n, fd;
cpuinfo = pa_xmalloc(MAX_BUFFER);
if ((fd = open("/proc/cpuinfo", O_RDONLY)) < 0) {
pa_xfree(cpuinfo);
return NULL;
}
if ((n = pa_read(fd, cpuinfo, MAX_BUFFER-1)) < 0) {
pa_xfree(cpuinfo);
pa_close(fd);
return NULL;
}
cpuinfo[n] = 0;
pa_close(fd);
return cpuinfo;
}
#endif /* defined (__arm__) && defined (__linux__) */
void pa_cpu_init_arm (void) {
#if defined (__arm__)
#if defined (__linux__)
char *cpuinfo, *line;
int arch;
pa_cpu_arm_flag_t flags = 0;
/* We need to read the CPU flags from /proc/cpuinfo because there is no user
* space support to get the CPU features. This only works on linux AFAIK. */
if (!(cpuinfo = get_cpuinfo ())) {
pa_log ("Can't read cpuinfo");
return;
}
/* get the CPU architecture */
if ((line = get_cpuinfo_line (cpuinfo, "CPU architecture"))) {
arch = strtoul (line, NULL, 0);
if (arch >= 6)
flags |= PA_CPU_ARM_V6;
if (arch >= 7)
flags |= PA_CPU_ARM_V7;
pa_xfree(line);
}
/* get the CPU features */
if ((line = get_cpuinfo_line (cpuinfo, "Features"))) {
char *state = NULL, *current;
while ((current = pa_split_spaces (line, &state))) {
if (!strcmp (current, "vfp"))
flags |= PA_CPU_ARM_VFP;
else if (!strcmp (current, "edsp"))
flags |= PA_CPU_ARM_EDSP;
else if (!strcmp (current, "neon"))
flags |= PA_CPU_ARM_NEON;
else if (!strcmp (current, "vfpv3"))
flags |= PA_CPU_ARM_VFPV3;
pa_xfree(current);
}
}
pa_xfree(cpuinfo);
pa_log_info ("CPU flags: %s%s%s%s%s%s",
(flags & PA_CPU_ARM_V6) ? "V6 " : "",
(flags & PA_CPU_ARM_V7) ? "V7 " : "",
(flags & PA_CPU_ARM_VFP) ? "VFP " : "",
(flags & PA_CPU_ARM_EDSP) ? "EDSP " : "",
(flags & PA_CPU_ARM_NEON) ? "NEON " : "",
(flags & PA_CPU_ARM_VFPV3) ? "VFPV3 " : "");
#else /* defined (__linux__) */
pa_log ("ARM cpu features not yet supported on this OS");
#endif /* defined (__linux__) */
if (flags & PA_CPU_ARM_V6)
pa_volume_func_init_arm (flags);
#endif /* defined (__arm__) */
}

42
src/pulsecore/cpu-arm.h Normal file
View file

@ -0,0 +1,42 @@
#ifndef foocpuarmhfoo
#define foocpuarmhfoo
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#include <stdint.h>
typedef enum pa_cpu_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 */

122
src/pulsecore/cpu-x86.c Normal file
View file

@ -0,0 +1,122 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdint.h>
#include <pulsecore/log.h>
#include "cpu-x86.h"
#if defined (__i386__) || defined (__amd64__)
static void
get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
{
__asm__ __volatile__ (
" push %%"PA_REG_b" \n\t"
" cpuid \n\t"
" mov %%ebx, %%esi \n\t"
" pop %%"PA_REG_b" \n\t"
: "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d)
: "0" (op)
);
}
#endif
void pa_cpu_init_x86 (void) {
#if defined (__i386__) || defined (__amd64__)
uint32_t eax, ebx, ecx, edx;
uint32_t level;
pa_cpu_x86_flag_t flags = 0;
/* get standard level */
get_cpuid (0x00000000, &level, &ebx, &ecx, &edx);
if (level >= 1) {
get_cpuid (0x00000001, &eax, &ebx, &ecx, &edx);
if (edx & (1<<23))
flags |= PA_CPU_X86_MMX;
if (edx & (1<<25))
flags |= PA_CPU_X86_SSE;
if (edx & (1<<26))
flags |= PA_CPU_X86_SSE2;
if (ecx & (1<<0))
flags |= PA_CPU_X86_SSE3;
if (ecx & (1<<9))
flags |= PA_CPU_X86_SSSE3;
if (ecx & (1<<19))
flags |= PA_CPU_X86_SSE4_1;
if (ecx & (1<<20))
flags |= PA_CPU_X86_SSE4_2;
}
/* get extended level */
get_cpuid (0x80000000, &level, &ebx, &ecx, &edx);
if (level >= 0x80000001) {
get_cpuid (0x80000001, &eax, &ebx, &ecx, &edx);
if (edx & (1<<22))
flags |= PA_CPU_X86_MMXEXT;
if (edx & (1<<23))
flags |= PA_CPU_X86_MMX;
if (edx & (1<<30))
flags |= PA_CPU_X86_3DNOWEXT;
if (edx & (1<<31))
flags |= PA_CPU_X86_3DNOW;
}
pa_log_info ("CPU flags: %s%s%s%s%s%s%s%s%s%s",
(flags & PA_CPU_X86_MMX) ? "MMX " : "",
(flags & PA_CPU_X86_SSE) ? "SSE " : "",
(flags & PA_CPU_X86_SSE2) ? "SSE2 " : "",
(flags & PA_CPU_X86_SSE3) ? "SSE3 " : "",
(flags & PA_CPU_X86_SSSE3) ? "SSSE3 " : "",
(flags & PA_CPU_X86_SSE4_1) ? "SSE4_1 " : "",
(flags & PA_CPU_X86_SSE4_2) ? "SSE4_2 " : "",
(flags & PA_CPU_X86_MMXEXT) ? "MMXEXT " : "",
(flags & PA_CPU_X86_3DNOW) ? "3DNOW " : "",
(flags & PA_CPU_X86_3DNOWEXT) ? "3DNOWEXT " : "");
/* activate various optimisations */
if (flags & PA_CPU_X86_MMX) {
pa_volume_func_init_mmx (flags);
pa_remap_func_init_mmx (flags);
}
if (flags & PA_CPU_X86_SSE)
pa_volume_func_init_sse (flags);
#endif /* defined (__i386__) || defined (__amd64__) */
}

68
src/pulsecore/cpu-x86.h Normal file
View file

@ -0,0 +1,68 @@
#ifndef foocpux86hfoo
#define foocpux86hfoo
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#include <stdint.h>
typedef enum pa_cpu_x86_flag {
PA_CPU_X86_MMX = (1 << 0),
PA_CPU_X86_MMXEXT = (1 << 1),
PA_CPU_X86_SSE = (1 << 2),
PA_CPU_X86_SSE2 = (1 << 3),
PA_CPU_X86_SSE3 = (1 << 4),
PA_CPU_X86_SSSE3 = (1 << 5),
PA_CPU_X86_SSE4_1 = (1 << 6),
PA_CPU_X86_SSE4_2 = (1 << 7),
PA_CPU_X86_3DNOW = (1 << 8),
PA_CPU_X86_3DNOWEXT = (1 << 9)
} pa_cpu_x86_flag_t;
void pa_cpu_init_x86 (void);
#if defined (__i386__)
typedef int32_t pa_reg_x86;
#define PA_REG_a "eax"
#define PA_REG_b "ebx"
#define PA_REG_c "ecx"
#define PA_REG_d "edx"
#define PA_REG_D "edi"
#define PA_REG_S "esi"
#elif defined (__amd64__)
typedef int64_t pa_reg_x86;
#define PA_REG_a "rax"
#define PA_REG_b "rbx"
#define PA_REG_c "rcx"
#define PA_REG_d "rdx"
#define PA_REG_D "rdi"
#define PA_REG_S "rsi"
#endif
/* some optimized functions */
void pa_volume_func_init_mmx(pa_cpu_x86_flag_t flags);
void pa_volume_func_init_sse(pa_cpu_x86_flag_t flags);
void pa_remap_func_init_mmx(pa_cpu_x86_flag_t flags);
#endif /* foocpux86hfoo */

View file

@ -26,22 +26,22 @@
#include "msgobject.h" #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_msgobject *o;
pa_assert(size > sizeof(pa_msgobject)); pa_assert(size > sizeof(pa_msgobject));
pa_assert(type_name); pa_assert(type_id);
if (!check_type) if (!check_type)
check_type = pa_msgobject_check_type; check_type = pa_msgobject_check_type;
pa_assert(check_type(type_name)); pa_assert(check_type(type_id));
pa_assert(check_type("pa_object")); pa_assert(check_type(pa_object_type_id));
pa_assert(check_type("pa_msgobject")); 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; o->process_msg = NULL;
return o; return o;
} }

View file

@ -38,15 +38,13 @@ struct pa_msgobject {
int (*process_msg)(pa_msgobject *o, int code, void *userdata, int64_t offset, pa_memchunk *chunk); 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_id, type##_check_type))
#define pa_msgobject_new(type) ((type*) pa_msgobject_new_internal(sizeof(type), #type, type##_check_type))
#define pa_msgobject_free ((void (*) (pa_msgobject* o)) pa_object_free) #define pa_msgobject_free ((void (*) (pa_msgobject* o)) pa_object_free)
#define PA_MSGOBJECT(o) pa_msgobject_cast(o) #define PA_MSGOBJECT(o) pa_msgobject_cast(o)
PA_DECLARE_CLASS(pa_msgobject); PA_DECLARE_PUBLIC_CLASS(pa_msgobject);
#endif #endif

View file

@ -28,21 +28,23 @@
#include "object.h" #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_object *o;
pa_assert(size > sizeof(pa_object)); pa_assert(size > sizeof(pa_object));
pa_assert(type_name); pa_assert(type_id);
if (!check_type) if (!check_type)
check_type = pa_object_check_type; check_type = pa_object_check_type;
pa_assert(check_type(type_name)); pa_assert(check_type(type_id));
pa_assert(check_type("pa_object")); pa_assert(check_type(pa_object_type_id));
o = pa_xmalloc(size); o = pa_xmalloc(size);
PA_REFCNT_INIT(o); PA_REFCNT_INIT(o);
o->type_name = type_name; o->type_id = type_id;
o->free = pa_object_free; o->free = pa_object_free;
o->check_type = check_type; 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_bool_t pa_object_check_type(const char *type_id) {
pa_assert(type_name); pa_assert(type_id);
return pa_streq(type_name, "pa_object"); return type_id == pa_object_type_id;
} }

View file

@ -34,21 +34,23 @@ typedef struct pa_object pa_object;
struct pa_object { struct pa_object {
PA_REFCNT_DECLARE; PA_REFCNT_DECLARE;
const char *type_name; const char *type_id;
void (*free)(pa_object *o); 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)); 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##_check_type) #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) #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; 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); 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) { static inline pa_object* pa_object_cast(void *o) {
pa_object *obj = (pa_object*) 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; 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_OBJECT(o) pa_object_cast(o)
#define PA_DECLARE_CLASS(c) \ #define PA_DECLARE_CLASS_COMMON(c) \
static inline int c##_isinstance(void *o) { \ static inline pa_bool_t c##_isinstance(void *o) { \
pa_object *obj = (pa_object*) 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) { \ static inline c* c##_cast(void *o) { \
pa_assert(c##_isinstance(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 struct __stupid_useless_struct_to_allow_trailing_semicolon
#define PA_DEFINE_CHECK_TYPE(c, parent) \ #define PA_DECLARE_PUBLIC_CLASS(c) \
int c##_check_type(const char *type) { \ extern const char c##_type_id[]; \
pa_assert(type); \ PA_DECLARE_CLASS_COMMON(c); \
if (strcmp(type, #c) == 0) \ pa_bool_t c##_check_type(const char *type_id)
return 1; \
return parent##_check_type(type); \ #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 struct __stupid_useless_struct_to_allow_trailing_semicolon

View file

@ -47,9 +47,8 @@ enum {
MEMBLOCKQ_STREAM_MESSAGE_UNLINK, 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)) #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) { static void memblockq_stream_unlink(memblockq_stream *u) {
pa_assert(u); pa_assert(u);

View file

@ -120,9 +120,8 @@ typedef struct connection {
pa_time_event *auth_timeout_event; pa_time_event *auth_timeout_event;
} connection; } connection;
PA_DECLARE_CLASS(connection); PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject);
#define CONNECTION(o) (connection_cast(o)) #define CONNECTION(o) (connection_cast(o))
static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject);
struct pa_esound_protocol { struct pa_esound_protocol {
PA_REFCNT_DECLARE; PA_REFCNT_DECLARE;

View file

@ -98,17 +98,15 @@ typedef struct record_stream {
pa_usec_t current_source_latency; pa_usec_t current_source_latency;
} record_stream; } record_stream;
PA_DECLARE_CLASS(record_stream);
#define RECORD_STREAM(o) (record_stream_cast(o)) #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 { typedef struct output_stream {
pa_msgobject parent; pa_msgobject parent;
} output_stream; } output_stream;
PA_DECLARE_CLASS(output_stream);
#define OUTPUT_STREAM(o) (output_stream_cast(o)) #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 { typedef struct playback_stream {
output_stream parent; output_stream parent;
@ -138,9 +136,8 @@ typedef struct playback_stream {
uint64_t playing_for, underrun_for; uint64_t playing_for, underrun_for;
} playback_stream; } playback_stream;
PA_DECLARE_CLASS(playback_stream);
#define PLAYBACK_STREAM(o) (playback_stream_cast(o)) #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 { typedef struct upload_stream {
output_stream parent; output_stream parent;
@ -156,9 +153,8 @@ typedef struct upload_stream {
pa_proplist *proplist; pa_proplist *proplist;
} upload_stream; } upload_stream;
PA_DECLARE_CLASS(upload_stream);
#define UPLOAD_STREAM(o) (upload_stream_cast(o)) #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 { struct pa_native_connection {
pa_msgobject parent; pa_msgobject parent;
@ -176,9 +172,8 @@ struct pa_native_connection {
pa_time_event *auth_timeout_event; pa_time_event *auth_timeout_event;
}; };
PA_DECLARE_CLASS(pa_native_connection);
#define PA_NATIVE_CONNECTION(o) (pa_native_connection_cast(o)) #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 { struct pa_native_protocol {
PA_REFCNT_DECLARE; PA_REFCNT_DECLARE;

View file

@ -69,9 +69,8 @@ typedef struct connection {
} playback; } playback;
} connection; } connection;
PA_DECLARE_CLASS(connection); PA_DEFINE_PRIVATE_CLASS(connection, pa_msgobject);
#define CONNECTION(o) (connection_cast(o)) #define CONNECTION(o) (connection_cast(o))
static PA_DEFINE_CHECK_TYPE(connection, pa_msgobject);
struct pa_simple_protocol { struct pa_simple_protocol {
PA_REFCNT_DECLARE; PA_REFCNT_DECLARE;

204
src/pulsecore/remap.c Normal file
View file

@ -0,0 +1,204 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h>
#include <pulse/sample.h>
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
#include "remap.h"
static void remap_mono_to_stereo_c (pa_remap_t *m, void *dst, const void *src, unsigned n) {
unsigned i;
switch (*m->format) {
case PA_SAMPLE_FLOAT32NE:
{
float *d, *s;
d = (float *) dst;
s = (float *) src;
for (i = n >> 2; i; i--) {
d[0] = d[1] = s[0];
d[2] = d[3] = s[1];
d[4] = d[5] = s[2];
d[6] = d[7] = s[3];
s += 4;
d += 8;
}
for (i = n & 3; i; i--) {
d[0] = d[1] = s[0];
s++;
d += 2;
}
break;
}
case PA_SAMPLE_S16NE:
{
int16_t *d, *s;
d = (int16_t *) dst;
s = (int16_t *) src;
for (i = n >> 2; i; i--) {
d[0] = d[1] = s[0];
d[2] = d[3] = s[1];
d[4] = d[5] = s[2];
d[6] = d[7] = s[3];
s += 4;
d += 8;
}
for (i = n & 3; i; i--) {
d[0] = d[1] = s[0];
s++;
d += 2;
}
break;
}
default:
pa_assert_not_reached();
}
}
static void remap_channels_matrix_c (pa_remap_t *m, void *dst, const void *src, unsigned n) {
unsigned oc, ic, i;
unsigned n_ic, n_oc;
n_ic = m->i_ss->channels;
n_oc = m->o_ss->channels;
switch (*m->format) {
case PA_SAMPLE_FLOAT32NE:
{
float *d, *s;
memset(dst, 0, n * sizeof (float) * n_oc);
for (oc = 0; oc < n_oc; oc++) {
for (ic = 0; ic < n_ic; ic++) {
float vol;
vol = m->map_table_f[oc][ic];
if (vol <= 0.0)
continue;
d = (float *)dst + oc;
s = (float *)src + ic;
if (vol >= 1.0) {
for (i = n; i > 0; i--, s += n_ic, d += n_oc)
*d += *s;
} else {
for (i = n; i > 0; i--, s += n_ic, d += n_oc)
*d += *s * vol;
}
}
}
break;
}
case PA_SAMPLE_S16NE:
{
int16_t *d, *s;
memset(dst, 0, n * sizeof (int16_t) * n_oc);
for (oc = 0; oc < n_oc; oc++) {
for (ic = 0; ic < n_ic; ic++) {
int32_t vol;
vol = m->map_table_i[oc][ic];
if (vol <= 0)
continue;
d = (int16_t *)dst + oc;
s = (int16_t *)src + ic;
if (vol >= 0x10000) {
for (i = n; i > 0; i--, s += n_ic, d += n_oc)
*d += *s;
} else {
for (i = n; i > 0; i--, s += n_ic, d += n_oc)
*d += (int16_t) (((int32_t)*s * vol) >> 16);
}
}
}
break;
}
default:
pa_assert_not_reached();
}
}
/* set the function that will execute the remapping based on the matrices */
static void init_remap_c (pa_remap_t *m) {
unsigned n_oc, n_ic;
n_oc = m->o_ss->channels;
n_ic = m->i_ss->channels;
/* find some common channel remappings, fall back to full matrix operation. */
if (n_ic == 1 && n_oc == 2 &&
m->map_table_f[0][0] >= 1.0 && m->map_table_f[1][0] >= 1.0) {
m->do_remap = (pa_do_remap_func_t) remap_mono_to_stereo_c;
pa_log_info("Using mono to stereo remapping");
} else {
m->do_remap = (pa_do_remap_func_t) remap_channels_matrix_c;
pa_log_info("Using generic matrix remapping");
}
}
/* default C implementation */
static pa_init_remap_func_t remap_func = init_remap_c;
void pa_init_remap (pa_remap_t *m) {
pa_assert (remap_func);
m->do_remap = NULL;
/* call the installed remap init function */
remap_func (m);
if (m->do_remap == NULL) {
/* nothing was installed, fallback to C version */
init_remap_c (m);
}
}
pa_init_remap_func_t pa_get_init_remap_func(void) {
return remap_func;
}
void pa_set_init_remap_func(pa_init_remap_func_t func) {
remap_func = func;
}

48
src/pulsecore/remap.h Normal file
View file

@ -0,0 +1,48 @@
#ifndef fooremapfoo
#define fooremapfoo
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#include <pulse/sample.h>
typedef struct pa_remap pa_remap_t;
typedef void (*pa_do_remap_func_t) (pa_remap_t *m, void *d, const void *s, unsigned n);
struct pa_remap {
pa_sample_format_t *format;
pa_sample_spec *i_ss, *o_ss;
float map_table_f[PA_CHANNELS_MAX][PA_CHANNELS_MAX];
int32_t map_table_i[PA_CHANNELS_MAX][PA_CHANNELS_MAX];
pa_do_remap_func_t do_remap;
};
void pa_init_remap (pa_remap_t *m);
/* custom installation of init functions */
typedef void (*pa_init_remap_func_t) (pa_remap_t *m);
pa_init_remap_func_t pa_get_init_remap_func(void);
void pa_set_init_remap_func(pa_init_remap_func_t func);
#endif /* fooremapfoo */

148
src/pulsecore/remap_mmx.c Normal file
View file

@ -0,0 +1,148 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk.com>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h>
#include <pulse/sample.h>
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
#include "cpu-x86.h"
#include "remap.h"
#define LOAD_SAMPLES \
" movq (%1), %%mm0 \n\t" \
" movq 8(%1), %%mm2 \n\t" \
" movq 16(%1), %%mm4 \n\t" \
" movq 24(%1), %%mm6 \n\t" \
" movq %%mm0, %%mm1 \n\t" \
" movq %%mm2, %%mm3 \n\t" \
" movq %%mm4, %%mm5 \n\t" \
" movq %%mm6, %%mm7 \n\t"
#define UNPACK_SAMPLES(s) \
" punpckl"#s" %%mm0, %%mm0 \n\t" \
" punpckh"#s" %%mm1, %%mm1 \n\t" \
" punpckl"#s" %%mm2, %%mm2 \n\t" \
" punpckh"#s" %%mm3, %%mm3 \n\t" \
" punpckl"#s" %%mm4, %%mm4 \n\t" \
" punpckh"#s" %%mm5, %%mm5 \n\t" \
" punpckl"#s" %%mm6, %%mm6 \n\t" \
" punpckh"#s" %%mm7, %%mm7 \n\t" \
#define STORE_SAMPLES \
" movq %%mm0, (%0) \n\t" \
" movq %%mm1, 8(%0) \n\t" \
" movq %%mm2, 16(%0) \n\t" \
" movq %%mm3, 24(%0) \n\t" \
" movq %%mm4, 32(%0) \n\t" \
" movq %%mm5, 40(%0) \n\t" \
" movq %%mm6, 48(%0) \n\t" \
" movq %%mm7, 56(%0) \n\t" \
" add $32, %1 \n\t" \
" add $64, %0 \n\t"
#define HANDLE_SINGLE(s) \
" movd (%1), %%mm0 \n\t" \
" movq %%mm0, %%mm1 \n\t" \
" punpckl"#s" %%mm0, %%mm0 \n\t" \
" movq %%mm0, (%0) \n\t" \
" add $4, %1 \n\t" \
" add $8, %0 \n\t"
#define MONO_TO_STEREO(s) \
" mov %3, %2 \n\t" \
" sar $3, %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 %3, %2 \n\t" \
" and $7, %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"
static void remap_mono_to_stereo_mmx (pa_remap_t *m, void *dst, const void *src, unsigned n) {
pa_reg_x86 temp;
switch (*m->format) {
case PA_SAMPLE_FLOAT32NE:
{
__asm__ __volatile__ (
MONO_TO_STEREO(dq) /* do doubles to quads */
: "+r" (dst), "+r" (src), "=&r" (temp)
: "r" ((pa_reg_x86)n)
: "cc"
);
break;
}
case PA_SAMPLE_S16NE:
{
__asm__ __volatile__ (
MONO_TO_STEREO(wd) /* do words to doubles */
: "+r" (dst), "+r" (src), "=&r" (temp)
: "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");
}
}
void pa_remap_func_init_mmx (pa_cpu_x86_flag_t flags) {
#if defined (__i386__) || defined (__amd64__)
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__) */
}

View file

@ -31,9 +31,6 @@
#include <speex/speex_resampler.h> #include <speex/speex_resampler.h>
#include <liboil/liboilfuncs.h>
#include <liboil/liboil.h>
#include <pulse/xmalloc.h> #include <pulse/xmalloc.h>
#include <pulsecore/sconv.h> #include <pulsecore/sconv.h>
#include <pulsecore/log.h> #include <pulsecore/log.h>
@ -43,6 +40,7 @@
#include "ffmpeg/avcodec.h" #include "ffmpeg/avcodec.h"
#include "resampler.h" #include "resampler.h"
#include "remap.h"
/* Number of samples of extra space we allow the resamplers to return */ /* Number of samples of extra space we allow the resamplers to return */
#define EXTRA_FRAMES 128 #define EXTRA_FRAMES 128
@ -64,7 +62,7 @@ struct pa_resampler {
pa_convert_func_t to_work_format_func; pa_convert_func_t to_work_format_func;
pa_convert_func_t from_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; pa_bool_t map_required;
void (*impl_free)(pa_resampler *r); void (*impl_free)(pa_resampler *r);
@ -214,6 +212,11 @@ pa_resampler* pa_resampler_new(
r->i_ss = *a; r->i_ss = *a;
r->o_ss = *b; 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) if (am)
r->i_cm = *am; r->i_cm = *am;
else if (!pa_channel_map_init_auto(&r->i_cm, r->i_ss.channels, PA_CHANNEL_MAP_DEFAULT)) else if (!pa_channel_map_init_auto(&r->i_cm, r->i_ss.channels, PA_CHANNEL_MAP_DEFAULT))
@ -580,32 +583,41 @@ static int front_rear_side(pa_channel_position_t p) {
static void calc_map_table(pa_resampler *r) { static void calc_map_table(pa_resampler *r) {
unsigned oc, ic; unsigned oc, ic;
unsigned n_oc, n_ic;
pa_bool_t ic_connected[PA_CHANNELS_MAX]; pa_bool_t ic_connected[PA_CHANNELS_MAX];
pa_bool_t remix; pa_bool_t remix;
pa_strbuf *s; pa_strbuf *s;
char *t; char *t;
pa_remap_t *m;
pa_assert(r); 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))))) 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; 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)); memset(ic_connected, 0, sizeof(ic_connected));
remix = (r->flags & (PA_RESAMPLER_NO_REMAP|PA_RESAMPLER_NO_REMIX)) == 0; 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_bool_t oc_connected = FALSE;
pa_channel_position_t b = r->o_cm.map[oc]; 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]; pa_channel_position_t a = r->i_cm.map[ic];
if (r->flags & PA_RESAMPLER_NO_REMAP) { if (r->flags & PA_RESAMPLER_NO_REMAP) {
/* We shall not do any remapping. Hence, just check by index */ /* We shall not do any remapping. Hence, just check by index */
if (ic == oc) if (ic == oc)
r->map_table[oc][ic] = 1.0; m->map_table_f[oc][ic] = 1.0;
continue; continue;
} }
@ -614,7 +626,7 @@ static void calc_map_table(pa_resampler *r) {
/* We shall not do any remixing. Hence, just check by name */ /* We shall not do any remixing. Hence, just check by name */
if (a == b) if (a == b)
r->map_table[oc][ic] = 1.0; m->map_table_f[oc][ic] = 1.0;
continue; continue;
} }
@ -689,7 +701,7 @@ static void calc_map_table(pa_resampler *r) {
*/ */
if (a == b || a == PA_CHANNEL_POSITION_MONO || b == PA_CHANNEL_POSITION_MONO) { 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; oc_connected = TRUE;
ic_connected[ic] = TRUE; ic_connected[ic] = TRUE;
@ -707,14 +719,14 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and on the left side, let's /* We are not connected and on the left side, let's
* average all left side input channels. */ * 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])) if (on_left(r->i_cm.map[ic]))
n++; n++;
if (n > 0) 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])) { 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; ic_connected[ic] = TRUE;
} }
@ -728,14 +740,14 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and on the right side, let's /* We are not connected and on the right side, let's
* average all right side input channels. */ * 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])) if (on_right(r->i_cm.map[ic]))
n++; n++;
if (n > 0) 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])) { 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; ic_connected[ic] = TRUE;
} }
@ -749,14 +761,14 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and at the center. Let's /* We are not connected and at the center. Let's
* average all center input channels. */ * 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])) if (on_center(r->i_cm.map[ic]))
n++; n++;
if (n > 0) { 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])) { 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; ic_connected[ic] = TRUE;
} }
} else { } else {
@ -766,14 +778,14 @@ static void calc_map_table(pa_resampler *r) {
n = 0; 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])) if (on_left(r->i_cm.map[ic]) || on_right(r->i_cm.map[ic]))
n++; n++;
if (n > 0) 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])) { 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; ic_connected[ic] = TRUE;
} }
@ -787,12 +799,12 @@ static void calc_map_table(pa_resampler *r) {
/* We are not connected and an LFE. Let's average all /* We are not connected and an LFE. Let's average all
* channels for LFE. */ * 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)) 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 else
r->map_table[oc][ic] = 0; m->map_table_f[oc][ic] = 0;
/* Please note that a channel connected to LFE /* Please note that a channel connected to LFE
* doesn't really count as connected. */ * doesn't really count as connected. */
@ -808,7 +820,7 @@ static void calc_map_table(pa_resampler *r) {
ic_unconnected_center = 0, ic_unconnected_center = 0,
ic_unconnected_lfe = 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]; pa_channel_position_t a = r->i_cm.map[ic];
if (ic_connected[ic]) if (ic_connected[ic])
@ -831,20 +843,20 @@ static void calc_map_table(pa_resampler *r) {
* the left side by .9 and add in our averaged unconnected * the left side by .9 and add in our averaged unconnected
* channels multplied by .1 */ * 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])) if (!on_left(r->o_cm.map[oc]))
continue; continue;
for (ic = 0; ic < r->i_ss.channels; ic++) { for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) { if (ic_connected[ic]) {
r->map_table[oc][ic] *= .9f; m->map_table_f[oc][ic] *= .9f;
continue; continue;
} }
if (on_left(r->i_cm.map[ic])) 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;
} }
} }
} }
@ -856,20 +868,20 @@ static void calc_map_table(pa_resampler *r) {
* the right side by .9 and add in our averaged unconnected * the right side by .9 and add in our averaged unconnected
* channels multplied by .1 */ * 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])) if (!on_right(r->o_cm.map[oc]))
continue; continue;
for (ic = 0; ic < r->i_ss.channels; ic++) { for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) { if (ic_connected[ic]) {
r->map_table[oc][ic] *= .9f; m->map_table_f[oc][ic] *= .9f;
continue; continue;
} }
if (on_right(r->i_cm.map[ic])) 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;
} }
} }
} }
@ -882,20 +894,20 @@ static void calc_map_table(pa_resampler *r) {
* the center side by .9 and add in our averaged unconnected * the center side by .9 and add in our averaged unconnected
* channels multplied by .1 */ * 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])) if (!on_center(r->o_cm.map[oc]))
continue; continue;
for (ic = 0; ic < r->i_ss.channels; ic++) { for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) { if (ic_connected[ic]) {
r->map_table[oc][ic] *= .9f; m->map_table_f[oc][ic] *= .9f;
continue; continue;
} }
if (on_center(r->i_cm.map[ic])) { 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; mixed_in = TRUE;
} }
} }
@ -913,7 +925,7 @@ static void calc_map_table(pa_resampler *r) {
it into left and right. Using .375 and 0.75 as it into left and right. Using .375 and 0.75 as
factors. */ factors. */
for (ic = 0; ic < r->i_ss.channels; ic++) { for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) if (ic_connected[ic])
continue; continue;
@ -921,7 +933,7 @@ static void calc_map_table(pa_resampler *r) {
if (!on_center(r->i_cm.map[ic])) if (!on_center(r->i_cm.map[ic]))
continue; 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])) if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc]))
continue; continue;
@ -932,7 +944,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])) if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc]))
continue; continue;
@ -942,7 +954,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])) if (!on_left(r->o_cm.map[oc]) && !on_right(r->o_cm.map[oc]))
continue; continue;
@ -950,10 +962,10 @@ static void calc_map_table(pa_resampler *r) {
if (ncenter[oc] <= 0) if (ncenter[oc] <= 0)
continue; continue;
for (ic = 0; ic < r->i_ss.channels; ic++) { for (ic = 0; ic < n_ic; ic++) {
if (ic_connected[ic]) { if (ic_connected[ic]) {
r->map_table[oc][ic] *= .75f; m->map_table_f[oc][ic] *= .75f;
continue; continue;
} }
@ -961,7 +973,7 @@ static void calc_map_table(pa_resampler *r) {
continue; continue;
if (!found_frs[ic] || front_rear_side(r->i_cm.map[ic]) == front_rear_side(r->o_cm.map[oc])) 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];
} }
} }
} }
@ -972,40 +984,46 @@ static void calc_map_table(pa_resampler *r) {
/* OK, so there is an unconnected LFE channel. Let's mix /* OK, so there is an unconnected LFE channel. Let's mix
* it into all channels, with factor 0.375 */ * 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])) if (!on_lfe(r->i_cm.map[ic]))
continue; continue;
for (oc = 0; oc < r->o_ss.channels; oc++) for (oc = 0; oc < n_oc; oc++)
r->map_table[oc][ic] = 0.375f / (float) ic_unconnected_lfe; 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(); s = pa_strbuf_new();
pa_strbuf_printf(s, " "); 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_printf(s, " I%02u ", ic);
pa_strbuf_puts(s, "\n +"); 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_printf(s, "------");
pa_strbuf_puts(s, "\n"); 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); pa_strbuf_printf(s, "O%02u |", oc);
for (ic = 0; ic < r->i_ss.channels; ic++) for (ic = 0; ic < n_ic; ic++)
pa_strbuf_printf(s, " %1.3f", r->map_table[oc][ic]); pa_strbuf_printf(s, " %1.3f", m->map_table_f[oc][ic]);
pa_strbuf_puts(s, "\n"); pa_strbuf_puts(s, "\n");
} }
pa_log_debug("Channel matrix:\n%s", t = pa_strbuf_tostring_free(s)); pa_log_debug("Channel matrix:\n%s", t = pa_strbuf_tostring_free(s));
pa_xfree(t); pa_xfree(t);
/* initialize the remapping function */
pa_init_remap (m);
} }
static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input) { static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input) {
@ -1045,41 +1063,10 @@ static pa_memchunk* convert_to_work_format(pa_resampler *r, pa_memchunk *input)
return &r->buf1; 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) { static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) {
unsigned in_n_samples, out_n_samples, n_frames; unsigned in_n_samples, out_n_samples, n_frames;
int i_skip, o_skip;
unsigned oc;
void *src, *dst; void *src, *dst;
pa_remap_t *remap;
pa_assert(r); pa_assert(r);
pa_assert(input); pa_assert(input);
@ -1108,76 +1095,14 @@ static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) {
src = ((uint8_t*) pa_memblock_acquire(input->memblock) + input->index); src = ((uint8_t*) pa_memblock_acquire(input->memblock) + input->index);
dst = pa_memblock_acquire(r->buf2.memblock); 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); pa_assert (remap->do_remap);
i_skip = (int) (r->w_sz * r->i_ss.channels); remap->do_remap (remap, dst, src, n_frames);
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_memblock_release(input->memblock); pa_memblock_release(input->memblock);
pa_memblock_release(r->buf2.memblock); pa_memblock_release(r->buf2.memblock);
r->buf2.length = out_n_samples * r->w_sz;
return &r->buf2; return &r->buf2;
} }
@ -1469,7 +1394,7 @@ static void trivial_resample(pa_resampler *r, const pa_memchunk *input, unsigned
pa_assert(o_index * fz < pa_memblock_get_length(output->memblock)); 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); (uint8_t*) src + fz * j, (int) fz);
} }

View file

@ -63,6 +63,7 @@ struct pa_rtpoll {
pa_bool_t running:1; pa_bool_t running:1;
pa_bool_t rebuild_needed:1; pa_bool_t rebuild_needed:1;
pa_bool_t quit:1; pa_bool_t quit:1;
pa_bool_t timer_elapsed:1;
#ifdef DEBUG_TIMING #ifdef DEBUG_TIMING
pa_usec_t timestamp; pa_usec_t timestamp;
@ -94,26 +95,14 @@ PA_STATIC_FLIST_DECLARE(items, 0, pa_xfree);
pa_rtpoll *pa_rtpoll_new(void) { pa_rtpoll *pa_rtpoll_new(void) {
pa_rtpoll *p; pa_rtpoll *p;
p = pa_xnew(pa_rtpoll, 1); p = pa_xnew0(pa_rtpoll, 1);
p->n_pollfd_alloc = 32; p->n_pollfd_alloc = 32;
p->pollfd = pa_xnew(struct pollfd, p->n_pollfd_alloc); p->pollfd = pa_xnew(struct pollfd, p->n_pollfd_alloc);
p->pollfd2 = 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 #ifdef DEBUG_TIMING
p->timestamp = pa_rtclock_now(); p->timestamp = pa_rtclock_now();
p->slept = p->awake = 0;
#endif #endif
return p; return p;
@ -229,6 +218,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
pa_assert(!p->running); pa_assert(!p->running);
p->running = TRUE; p->running = TRUE;
p->timer_elapsed = FALSE;
/* First, let's do some work */ /* First, let's do some work */
for (i = p->items; i && i->priority < PA_RTPOLL_NEVER; i = i->next) { 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) if (p->rebuild_needed)
rtpoll_rebuild(p); rtpoll_rebuild(p);
memset(&timeout, 0, sizeof(timeout)); pa_zero(timeout);
/* Calculate timeout */ /* Calculate timeout */
if (wait_op && !p->quit && p->timer_enabled) { if (wait_op && !p->quit && p->timer_enabled) {
@ -317,6 +307,8 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
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 #endif
p->timer_elapsed = r == 0;
#ifdef DEBUG_TIMING #ifdef DEBUG_TIMING
{ {
pa_usec_t now = pa_rtclock_now(); pa_usec_t now = pa_rtclock_now();
@ -628,3 +620,9 @@ void pa_rtpoll_quit(pa_rtpoll *p) {
p->quit = TRUE; p->quit = TRUE;
} }
pa_bool_t pa_rtpoll_timer_elapsed(pa_rtpoll *p) {
pa_assert(p);
return p->timer_elapsed;
}

View file

@ -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_relative(pa_rtpoll *p, pa_usec_t usec);
void pa_rtpoll_set_timer_disabled(pa_rtpoll *p); 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 */ /* 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); 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); void pa_rtpoll_item_free(pa_rtpoll_item *i);

View file

@ -30,9 +30,6 @@
#include <stdio.h> #include <stdio.h>
#include <errno.h> #include <errno.h>
#include <liboil/liboilfuncs.h>
#include <liboil/liboil.h>
#include <pulse/timeval.h> #include <pulse/timeval.h>
#include <pulsecore/log.h> #include <pulsecore/log.h>
@ -106,24 +103,36 @@ void* pa_silence_memory(void *p, size_t length, const pa_sample_spec *spec) {
return p; return p;
} }
#define VOLUME_PADDING 32
static void calc_linear_integer_volume(int32_t linear[], const pa_cvolume *volume) { static void calc_linear_integer_volume(int32_t linear[], const pa_cvolume *volume) {
unsigned channel; unsigned channel, nchannels, padding;
pa_assert(linear); pa_assert(linear);
pa_assert(volume); 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); 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) { static void calc_linear_float_volume(float linear[], const pa_cvolume *volume) {
unsigned channel; unsigned channel, nchannels, padding;
pa_assert(linear); pa_assert(linear);
pa_assert(volume); 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]); 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) { static void calc_linear_integer_stream_volumes(pa_mix_info streams[], unsigned nstreams, const pa_cvolume *volume, const pa_sample_spec *spec) {
@ -690,6 +699,28 @@ size_t pa_mix(
return length; 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( void pa_volume_memchunk(
pa_memchunk*c, pa_memchunk*c,
@ -697,6 +728,8 @@ void pa_volume_memchunk(
const pa_cvolume *volume) { const pa_cvolume *volume) {
void *ptr; void *ptr;
volume_val linear[PA_CHANNELS_MAX + VOLUME_PADDING];
pa_do_volume_func_t do_volume;
pa_assert(c); pa_assert(c);
pa_assert(spec); pa_assert(spec);
@ -714,337 +747,19 @@ void pa_volume_memchunk(
return; 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; ptr = (uint8_t*) pa_memblock_acquire(c->memblock) + c->index;
switch (spec->format) { do_volume (ptr, (void *)linear, spec->channels, c->length);
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 */
}
pa_memblock_release(c->memblock); 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; d = (uint8_t*) dst + c * ss;
for (j = 0; j < n; j ++) { for (j = 0; j < n; j ++) {
oil_memcpy(d, s, (int) ss); memcpy(d, s, (int) ss);
s = (uint8_t*) s + ss; s = (uint8_t*) s + ss;
d = (uint8_t*) d + fs; 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]; d = dst[c];
for (j = 0; j < n; j ++) { for (j = 0; j < n; j ++) {
oil_memcpy(d, s, (int) ss); memcpy(d, s, (int) ss);
s = (uint8_t*) s + fs; s = (uint8_t*) s + fs;
d = (uint8_t*) d + ss; 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; s = src; d = dst;
if (format == PA_SAMPLE_FLOAT32NE) { if (format == PA_SAMPLE_FLOAT32NE) {
for (; n > 0; n--) {
float f;
float minus_one = -1.0, plus_one = 1.0; f = *s;
oil_clip_f32(d, (int) dstr, s, (int) sstr, (int) n, &minus_one, &plus_one); *d = PA_CLAMP_UNLIKELY(f, -1.0f, 1.0f);
s = (const float*) ((const uint8_t*) s + sstr);
d = (float*) ((uint8_t*) d + dstr);
}
} else { } else {
pa_assert(format == PA_SAMPLE_FLOAT32RE); pa_assert(format == PA_SAMPLE_FLOAT32RE);

View file

@ -86,6 +86,11 @@ 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); 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);
#define PA_CHANNEL_POSITION_MASK_LEFT \ #define PA_CHANNEL_POSITION_MASK_LEFT \
(PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT) \ (PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_FRONT_LEFT) \
| PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_LEFT) \ | PA_CHANNEL_POSITION_MASK(PA_CHANNEL_POSITION_REAR_LEFT) \

View file

@ -28,8 +28,6 @@
#include <inttypes.h> #include <inttypes.h>
#include <stdio.h> #include <stdio.h>
#include <liboil/liboilfuncs.h>
#include <pulsecore/sconv.h> #include <pulsecore/sconv.h>
#include <pulsecore/macro.h> #include <pulsecore/macro.h>
#include <pulsecore/log.h> #include <pulsecore/log.h>
@ -86,17 +84,13 @@ void pa_sconv_s16le_to_float32ne(unsigned n, const int16_t *a, float *b) {
pa_assert(b); pa_assert(b);
#if SWAP_WORDS == 1 #if SWAP_WORDS == 1
for (; n > 0; n--) { for (; n > 0; n--) {
int16_t s = *(a++); int16_t s = *(a++);
*(b++) = ((float) INT16_FROM(s))/(float) 0x7FFF; *(b++) = ((float) INT16_FROM(s))/(float) 0x7FFF;
} }
#else #else
{ for (; n > 0; n--)
static const double add = 0, factor = 1.0/0x7FFF; *(b++) = ((float) (*(a++)))/(float) 0x7FFF;
oil_scaleconv_f32_s16(b, a, (int) n, &add, &factor);
}
#endif #endif
} }
@ -105,17 +99,13 @@ void pa_sconv_s32le_to_float32ne(unsigned n, const int32_t *a, float *b) {
pa_assert(b); pa_assert(b);
#if SWAP_WORDS == 1 #if SWAP_WORDS == 1
for (; n > 0; n--) { for (; n > 0; n--) {
int32_t s = *(a++); int32_t s = *(a++);
*(b++) = (float) (((double) INT32_FROM(s))/0x7FFFFFFF); *(b++) = (float) (((double) INT32_FROM(s))/0x7FFFFFFF);
} }
#else #else
{ for (; n > 0; n--)
static const double add = 0, factor = 1.0/0x7FFFFFFF; *(b++) = (float) (((double) (*(a++)))/0x7FFFFFFF);
oil_scaleconv_f32_s32(b, a, (int) n, &add, &factor);
}
#endif #endif
} }
@ -124,7 +114,6 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) {
pa_assert(b); pa_assert(b);
#if SWAP_WORDS == 1 #if SWAP_WORDS == 1
for (; n > 0; n--) { for (; n > 0; n--) {
int16_t s; int16_t s;
float v = *(a++); float v = *(a++);
@ -133,11 +122,12 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) {
s = (int16_t) lrintf(v * 0x7FFF); s = (int16_t) lrintf(v * 0x7FFF);
*(b++) = INT16_TO(s); *(b++) = INT16_TO(s);
} }
#else #else
{ for (; n > 0; n--) {
static const double add = 0, factor = 0x7FFF; float v = *(a++);
oil_scaleconv_s16_f32(b, a, (int) n, &add, &factor);
v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.f);
*(b++) = (int16_t) lrintf(v * 0x7FFF);
} }
#endif #endif
} }
@ -147,7 +137,6 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) {
pa_assert(b); pa_assert(b);
#if SWAP_WORDS == 1 #if SWAP_WORDS == 1
for (; n > 0; n--) { for (; n > 0; n--) {
int32_t s; int32_t s;
float v = *(a++); float v = *(a++);
@ -156,11 +145,12 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) {
s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF); s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
*(b++) = INT32_TO(s); *(b++) = INT32_TO(s);
} }
#else #else
{ for (; n > 0; n--) {
static const double add = 0, factor = 0x7FFFFFFF; float v = *(a++);
oil_scaleconv_s32_f32(b, a, (int) n, &add, &factor);
v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.0f);
*(b++) = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
} }
#endif #endif
} }

View file

@ -27,9 +27,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <liboil/liboilfuncs.h>
#include <liboil/liboil.h>
#include <pulsecore/g711.h> #include <pulsecore/g711.h>
#include <pulsecore/macro.h> #include <pulsecore/macro.h>
@ -41,32 +38,31 @@
/* u8 */ /* u8 */
static void u8_to_float32ne(unsigned n, const uint8_t *a, float *b) { 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(a);
pa_assert(b); 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 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(a);
pa_assert(b); 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 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(a);
pa_assert(b); pa_assert(b);
oil_conv_s16_u8(b, 2, a, 1, (int) n); for (; n > 0; n--, a++, b++)
oil_scalaradd_s16(b, 2, b, 2, &add, (int) n); *b = (((int16_t)*a) - 128) << 8;
oil_scalarmult_s16(b, 2, b, 2, &factor, (int) n);
} }
static void u8_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) { 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(a);
pa_assert(b); 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) { 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(a);
pa_assert(b); 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) { static void s16re_to_s16ne(unsigned n, const int16_t *a, int16_t *b) {
@ -188,9 +184,7 @@ static void alaw_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) {
*b = st_13linear2alaw(*a >> 3); *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[] = {
static const pa_convert_func_t table[] = {
[PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_float32ne, [PA_SAMPLE_U8] = (pa_convert_func_t) u8_to_float32ne,
[PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_float32ne, [PA_SAMPLE_ALAW] = (pa_convert_func_t) alaw_to_float32ne,
[PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_float32ne, [PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_to_float32ne,
@ -206,15 +200,23 @@ pa_convert_func_t pa_get_convert_to_float32ne_function(pa_sample_format_t f) {
[PA_SAMPLE_FLOAT32RE] = (pa_convert_func_t) float32re_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 >= 0);
pa_assert(f < PA_SAMPLE_MAX); pa_assert(f < PA_SAMPLE_MAX);
return table[f]; return to_float32ne_table[f];
} }
pa_convert_func_t pa_get_convert_from_float32ne_function(pa_sample_format_t f) { void pa_set_convert_to_float32ne_function(pa_sample_format_t f, pa_convert_func_t func) {
static const pa_convert_func_t table[] = { 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_U8] = (pa_convert_func_t) u8_from_float32ne,
[PA_SAMPLE_S16LE] = (pa_convert_func_t) pa_sconv_s16le_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_S16BE] = (pa_convert_func_t) pa_sconv_s16be_from_float32ne,
@ -230,15 +232,23 @@ pa_convert_func_t pa_get_convert_from_float32ne_function(pa_sample_format_t f) {
[PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_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) {
pa_assert(f >= 0); pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX); pa_assert(f < PA_SAMPLE_MAX);
return table[f]; return from_float32ne_table[f];
} }
pa_convert_func_t pa_get_convert_to_s16ne_function(pa_sample_format_t f) { void pa_set_convert_from_float32ne_function(pa_sample_format_t f, pa_convert_func_t func) {
static const pa_convert_func_t table[] = { pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
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_U8] = (pa_convert_func_t) u8_to_s16ne,
[PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne, [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne,
[PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne, [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne,
@ -254,15 +264,23 @@ pa_convert_func_t pa_get_convert_to_s16ne_function(pa_sample_format_t f) {
[PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_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) {
pa_assert(f >= 0); pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX); pa_assert(f < PA_SAMPLE_MAX);
return table[f]; return to_s16ne_table[f];
} }
pa_convert_func_t pa_get_convert_from_s16ne_function(pa_sample_format_t f) { void pa_set_convert_to_s16ne_function(pa_sample_format_t f, pa_convert_func_t func) {
static const pa_convert_func_t table[] = { pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
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_U8] = (pa_convert_func_t) u8_from_s16ne,
[PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne, [PA_SAMPLE_S16NE] = (pa_convert_func_t) s16ne_to_s16ne,
[PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne, [PA_SAMPLE_S16RE] = (pa_convert_func_t) s16re_to_s16ne,
@ -278,8 +296,18 @@ pa_convert_func_t pa_get_convert_from_s16ne_function(pa_sample_format_t f) {
[PA_SAMPLE_ULAW] = (pa_convert_func_t) ulaw_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) {
pa_assert(f >= 0); pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX); pa_assert(f < PA_SAMPLE_MAX);
return table[f]; 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);
from_s16ne_table[f] = func;
} }

View file

@ -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_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; 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 #endif

View file

@ -44,7 +44,7 @@
#define MEMBLOCKQ_MAXLENGTH (32*1024*1024) #define MEMBLOCKQ_MAXLENGTH (32*1024*1024)
#define CONVERT_BUFFER_LENGTH (PA_PAGE_SIZE) #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 sink_input_free(pa_object *o);
static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v); static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v);
@ -126,6 +126,8 @@ static void reset_callbacks(pa_sink_input *i) {
i->state_change = NULL; i->state_change = NULL;
i->may_move_to = NULL; i->may_move_to = NULL;
i->send_event = NULL; i->send_event = NULL;
i->volume_changed = NULL;
i->mute_changed = NULL;
} }
/* Called from main context */ /* Called from main context */
@ -485,7 +487,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_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) if (i->thread_info.render_memblockq)
pa_memblockq_free(i->thread_info.render_memblockq); pa_memblockq_free(i->thread_info.render_memblockq);
@ -968,7 +973,10 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0); 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); pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
} }
@ -999,6 +1007,11 @@ void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
i->save_muted = 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); 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); pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
} }
@ -1263,6 +1276,10 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
/* Notify everyone */ /* Notify everyone */
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FINISH], i); 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); pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
return 0; return 0;

View file

@ -192,8 +192,16 @@ struct pa_sink_input {
pa_bool_t (*may_move_to) (pa_sink_input *i, pa_sink *s); /* may be NULL */ 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 /* If non-NULL this function is used to dispatch asynchronous
* control events. */ * control events. Called from main context. */
void (*send_event)(pa_sink_input *i, const char *event, pa_proplist* data); 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 { struct {
pa_sink_input_state_t state; pa_sink_input_state_t state;
@ -227,7 +235,7 @@ struct pa_sink_input {
void *userdata; 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) #define PA_SINK_INPUT(o) pa_sink_input_cast(o)
enum { enum {

View file

@ -52,7 +52,7 @@
#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC) #define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC) #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); static void sink_free(pa_object *s);
@ -1380,11 +1380,16 @@ static void propagate_reference_volume(pa_sink *s) {
pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map); pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio); pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
/* The reference volume changed, let's tell people so */ /* The volume changed, let's tell people so */
if (!pa_cvolume_equal(&old_volume, &i->volume)) 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); pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
} }
} }
}
/* Called from main thread */ /* Called from main thread */
void pa_sink_set_volume( void pa_sink_set_volume(
@ -1522,10 +1527,15 @@ static void propagate_real_volume(pa_sink *s, const pa_cvolume *old_real_volume)
pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio); pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
/* Notify if something changed */ /* Notify if something changed */
if (!pa_cvolume_equal(&old_volume, &i->volume)) 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); 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 /* Something got changed in the hardware. It probably makes sense
* to save changed hw settings given that hw volume changes not * to save changed hw settings given that hw volume changes not

View file

@ -191,7 +191,7 @@ struct pa_sink {
void *userdata; void *userdata;
}; };
PA_DECLARE_CLASS(pa_sink); PA_DECLARE_PUBLIC_CLASS(pa_sink);
#define PA_SINK(s) (pa_sink_cast(s)) #define PA_SINK(s) (pa_sink_cast(s))
typedef enum pa_sink_message { typedef enum pa_sink_message {

View file

@ -64,9 +64,8 @@ enum {
FILE_STREAM_MESSAGE_UNLINK 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)) #define FILE_STREAM(o) (file_stream_cast(o))
static PA_DEFINE_CHECK_TYPE(file_stream, pa_msgobject);
/* Called from main context */ /* Called from main context */
static void file_stream_unlink(file_stream *u) { static void file_stream_unlink(file_stream *u) {

View file

@ -41,7 +41,7 @@
#define MEMBLOCKQ_MAXLENGTH (32*1024*1024) #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); static void source_output_free(pa_object* mo);
@ -359,8 +359,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_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) if (o->thread_info.delay_memblockq)
pa_memblockq_free(o->thread_info.delay_memblockq); pa_memblockq_free(o->thread_info.delay_memblockq);

View file

@ -182,7 +182,7 @@ struct pa_source_output {
void *userdata; 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) #define PA_SOURCE_OUTPUT(o) pa_source_output_cast(o)
enum { enum {

View file

@ -46,7 +46,7 @@
#define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC) #define ABSOLUTE_MAX_LATENCY (10*PA_USEC_PER_SEC)
#define DEFAULT_FIXED_LATENCY (250*PA_USEC_PER_MSEC) #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); static void source_free(pa_object *o);

View file

@ -158,7 +158,7 @@ struct pa_source {
void *userdata; void *userdata;
}; };
PA_DECLARE_CLASS(pa_source); PA_DECLARE_PUBLIC_CLASS(pa_source);
#define PA_SOURCE(s) pa_source_cast(s) #define PA_SOURCE(s) pa_source_cast(s)
typedef enum pa_source_message { typedef enum pa_source_message {

195
src/pulsecore/svolume_arm.c Normal file
View file

@ -0,0 +1,195 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <pulse/timeval.h>
#include <pulsecore/random.h>
#include <pulsecore/macro.h>
#include <pulsecore/g711.h>
#include <pulsecore/core-util.h>
#include "cpu-arm.h"
#include "sample-util.h"
#include "endianmacros.h"
#if defined (__arm__)
#define MOD_INC() \
" subs r0, r6, %2 \n\t" \
" addcs r0, %1 \n\t" \
" movcs r6, r0 \n\t"
static void
pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
int32_t *ve;
channels = PA_MAX (4U, channels);
ve = volumes + channels;
__asm__ __volatile__ (
" mov r6, %1 \n\t"
" mov %3, %3, LSR #1 \n\t" /* length /= sizeof (int16_t) */
" tst %3, #1 \n\t" /* check for odd samples */
" beq 2f \n\t"
"1: \n\t"
" ldr r0, [r6], #4 \n\t" /* odd samples volumes */
" ldrh r2, [%0] \n\t"
" smulwb r0, r0, r2 \n\t"
" ssat r0, #16, r0 \n\t"
" strh r0, [%0], #2 \n\t"
MOD_INC()
"2: \n\t"
" mov %3, %3, LSR #1 \n\t"
" tst %3, #1 \n\t" /* check for odd samples */
" beq 4f \n\t"
"3: \n\t"
" ldrd r2, [r6], #8 \n\t" /* 2 samples at a time */
" ldr r0, [%0] \n\t"
" smulwt r2, r2, r0 \n\t"
" smulwb r3, r3, r0 \n\t"
" ssat r2, #16, r2 \n\t"
" ssat r3, #16, r3 \n\t"
" pkhbt r0, r3, r2, LSL #16 \n\t"
" str r0, [%0], #4 \n\t"
MOD_INC()
"4: \n\t"
" movs %3, %3, LSR #1 \n\t"
" beq 6f \n\t"
"5: \n\t"
" ldrd r2, [r6], #8 \n\t" /* 4 samples at a time */
" ldrd r4, [r6], #8 \n\t"
" ldrd r0, [%0] \n\t"
" smulwt r2, r2, r0 \n\t"
" smulwb r3, r3, r0 \n\t"
" smulwt r4, r4, r1 \n\t"
" smulwb r5, r5, r1 \n\t"
" ssat r2, #16, r2 \n\t"
" ssat r3, #16, r3 \n\t"
" ssat r4, #16, r4 \n\t"
" ssat r5, #16, r5 \n\t"
" pkhbt r0, r3, r2, LSL #16 \n\t"
" pkhbt r1, r5, r4, LSL #16 \n\t"
" strd r0, [%0], #8 \n\t"
MOD_INC()
" subs %3, %3, #1 \n\t"
" bne 5b \n\t"
"6: \n\t"
: "+r" (samples), "+r" (volumes), "+r" (ve), "+r" (length)
:
: "r6", "r5", "r4", "r3", "r2", "r1", "r0", "cc"
);
}
#undef RUN_TEST
#ifdef RUN_TEST
#define CHANNELS 2
#define SAMPLES 1023
#define TIMES 1000
#define PADDING 16
static void run_test (void) {
int16_t samples[SAMPLES];
int16_t samples_ref[SAMPLES];
int16_t samples_orig[SAMPLES];
int32_t volumes[CHANNELS + PADDING];
int i, j, padding;
pa_do_volume_func_t func;
pa_usec_t start, stop;
func = pa_get_volume_func (PA_SAMPLE_S16NE);
printf ("checking ARM %zd\n", sizeof (samples));
pa_random (samples, sizeof (samples));
memcpy (samples_ref, samples, sizeof (samples));
memcpy (samples_orig, samples, sizeof (samples));
for (i = 0; i < CHANNELS; i++)
volumes[i] = rand() >> 1;
for (padding = 0; padding < PADDING; padding++, i++)
volumes[i] = volumes[padding];
func (samples_ref, volumes, CHANNELS, sizeof (samples));
pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples));
for (i = 0; i < SAMPLES; i++) {
if (samples[i] != samples_ref[i]) {
printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i],
samples_orig[i], volumes[i % CHANNELS]);
}
}
start = pa_rtclock_now();
for (j = 0; j < TIMES; j++) {
memcpy (samples, samples_orig, sizeof (samples));
pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples));
}
stop = pa_rtclock_now();
pa_log_info("ARM: %llu usec.", (long long unsigned int) (stop - start));
start = pa_rtclock_now();
for (j = 0; j < TIMES; j++) {
memcpy (samples_ref, samples_orig, sizeof (samples));
func (samples_ref, volumes, CHANNELS, sizeof (samples));
}
stop = pa_rtclock_now();
pa_log_info("ref: %llu usec.", (long long unsigned int) (stop - start));
}
#endif
#endif /* defined (__arm__) */
void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) {
#if defined (__arm__)
pa_log_info("Initialising ARM optimized functions.");
#ifdef RUN_TEST
run_test ();
#endif
pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_arm);
#endif /* defined (__arm__) */
}

335
src/pulsecore/svolume_c.c Normal file
View file

@ -0,0 +1,335 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <pulsecore/macro.h>
#include <pulsecore/g711.h>
#include <pulsecore/core-util.h>
#include "sample-util.h"
#include "endianmacros.h"
static void
pa_volume_u8_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
for (channel = 0; length; length--) {
int32_t t, hi, lo;
hi = volumes[channel] >> 16;
lo = volumes[channel] & 0xFFFF;
t = (int32_t) *samples - 0x80;
t = ((t * lo) >> 16) + (t * hi);
t = PA_CLAMP_UNLIKELY(t, -0x80, 0x7F);
*samples++ = (uint8_t) (t + 0x80);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_alaw_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
for (channel = 0; length; length--) {
int32_t t, hi, lo;
hi = volumes[channel] >> 16;
lo = volumes[channel] & 0xFFFF;
t = (int32_t) st_alaw2linear16(*samples);
t = ((t * lo) >> 16) + (t * hi);
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
*samples++ = (uint8_t) st_13linear2alaw((int16_t) t >> 3);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_ulaw_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
for (channel = 0; length; length--) {
int32_t t, hi, lo;
hi = volumes[channel] >> 16;
lo = volumes[channel] & 0xFFFF;
t = (int32_t) st_ulaw2linear16(*samples);
t = ((t * lo) >> 16) + (t * hi);
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
*samples++ = (uint8_t) st_14linear2ulaw((int16_t) t >> 2);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s16ne_c (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (int16_t);
for (channel = 0; length; length--) {
int32_t t, hi, lo;
/* Multiplying the 32bit volume factor with the 16bit
* sample might result in an 48bit value. We want to
* do without 64 bit integers and hence do the
* multiplication independantly for the HI and LO part
* of the volume. */
hi = volumes[channel] >> 16;
lo = volumes[channel] & 0xFFFF;
t = (int32_t)(*samples);
t = ((t * lo) >> 16) + (t * hi);
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
*samples++ = (int16_t) t;
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s16re_c (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (int16_t);
for (channel = 0; length; length--) {
int32_t t, hi, lo;
hi = volumes[channel] >> 16;
lo = volumes[channel] & 0xFFFF;
t = (int32_t) PA_INT16_SWAP(*samples);
t = ((t * lo) >> 16) + (t * hi);
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);
*samples++ = PA_INT16_SWAP((int16_t) t);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_float32ne_c (float *samples, float *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (float);
for (channel = 0; length; length--) {
*samples++ *= volumes[channel];
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_float32re_c (float *samples, float *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (float);
for (channel = 0; length; length--) {
float t;
t = PA_FLOAT32_SWAP(*samples);
t *= volumes[channel];
*samples++ = PA_FLOAT32_SWAP(t);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s32ne_c (int32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (int32_t);
for (channel = 0; length; length--) {
int64_t t;
t = (int64_t)(*samples);
t = (t * volumes[channel]) >> 16;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
*samples++ = (int32_t) t;
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s32re_c (int32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (int32_t);
for (channel = 0; length; length--) {
int64_t t;
t = (int64_t) PA_INT32_SWAP(*samples);
t = (t * volumes[channel]) >> 16;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
*samples++ = PA_INT32_SWAP((int32_t) t);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s24ne_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
uint8_t *e;
e = samples + length;
for (channel = 0; samples < e; samples += 3) {
int64_t t;
t = (int64_t)((int32_t) (PA_READ24NE(samples) << 8));
t = (t * volumes[channel]) >> 16;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
PA_WRITE24NE(samples, ((uint32_t) (int32_t) t) >> 8);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s24re_c (uint8_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
uint8_t *e;
e = samples + length;
for (channel = 0; samples < e; samples += 3) {
int64_t t;
t = (int64_t)((int32_t) (PA_READ24RE(samples) << 8));
t = (t * volumes[channel]) >> 16;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
PA_WRITE24RE(samples, ((uint32_t) (int32_t) t) >> 8);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s24_32ne_c (uint32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (uint32_t);
for (channel = 0; length; length--) {
int64_t t;
t = (int64_t) ((int32_t) (*samples << 8));
t = (t * volumes[channel]) >> 16;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
*samples++ = ((uint32_t) ((int32_t) t)) >> 8;
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static void
pa_volume_s24_32re_c (uint32_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
unsigned channel;
length /= sizeof (uint32_t);
for (channel = 0; length; length--) {
int64_t t;
t = (int64_t) ((int32_t) (PA_UINT32_SWAP(*samples) << 8));
t = (t * volumes[channel]) >> 16;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);
*samples++ = PA_UINT32_SWAP(((uint32_t) ((int32_t) t)) >> 8);
if (PA_UNLIKELY(++channel >= channels))
channel = 0;
}
}
static pa_do_volume_func_t do_volume_table[] =
{
[PA_SAMPLE_U8] = (pa_do_volume_func_t) pa_volume_u8_c,
[PA_SAMPLE_ALAW] = (pa_do_volume_func_t) pa_volume_alaw_c,
[PA_SAMPLE_ULAW] = (pa_do_volume_func_t) pa_volume_ulaw_c,
[PA_SAMPLE_S16NE] = (pa_do_volume_func_t) pa_volume_s16ne_c,
[PA_SAMPLE_S16RE] = (pa_do_volume_func_t) pa_volume_s16re_c,
[PA_SAMPLE_FLOAT32NE] = (pa_do_volume_func_t) pa_volume_float32ne_c,
[PA_SAMPLE_FLOAT32RE] = (pa_do_volume_func_t) pa_volume_float32re_c,
[PA_SAMPLE_S32NE] = (pa_do_volume_func_t) pa_volume_s32ne_c,
[PA_SAMPLE_S32RE] = (pa_do_volume_func_t) pa_volume_s32re_c,
[PA_SAMPLE_S24NE] = (pa_do_volume_func_t) pa_volume_s24ne_c,
[PA_SAMPLE_S24RE] = (pa_do_volume_func_t) pa_volume_s24re_c,
[PA_SAMPLE_S24_32NE] = (pa_do_volume_func_t) pa_volume_s24_32ne_c,
[PA_SAMPLE_S24_32RE] = (pa_do_volume_func_t) pa_volume_s24_32re_c
};
pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
return do_volume_table[f];
}
void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func) {
pa_assert(f >= 0);
pa_assert(f < PA_SAMPLE_MAX);
do_volume_table[f] = func;
}

313
src/pulsecore/svolume_mmx.c Normal file
View file

@ -0,0 +1,313 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <pulse/timeval.h>
#include <pulsecore/random.h>
#include <pulsecore/macro.h>
#include <pulsecore/g711.h>
#include <pulsecore/core-util.h>
#include "cpu-x86.h"
#include "sample-util.h"
#include "endianmacros.h"
#if defined (__i386__) || defined (__amd64__)
/* in s: 2 int16_t samples
* in v: 2 int32_t volumes, fixed point 16:16
* out s: contains scaled and clamped int16_t samples.
*
* We calculate the high 32 bits of a 32x16 multiply which we then
* clamp to 16 bits. The calulcation is:
*
* vl = (v & 0xffff)
* vh = (v >> 16)
* s = ((s * vl) >> 16) + (s * vh);
*
* For the first multiply we have to do a sign correction as we need to
* multiply a signed int with an unsigned int. Hacker's delight 8-3 gives a
* simple formula to correct the sign of the high word after the signed
* multiply.
*/
#define VOLUME_32x16(s,v) /* .. | vh | vl | */ \
" pxor %%mm4, %%mm4 \n\t" /* .. | 0 | 0 | */ \
" punpcklwd %%mm4, "#s" \n\t" /* .. | 0 | p0 | */ \
" pcmpgtw "#v", %%mm4 \n\t" /* .. | 0 | s(vl) | */ \
" pand "#s", %%mm4 \n\t" /* .. | 0 | (p0) | (vl >> 15) & p */ \
" movq %%mm6, %%mm5 \n\t" /* .. | ffff | 0 | */ \
" pand "#v", %%mm5 \n\t" /* .. | vh | 0 | */ \
" por %%mm5, %%mm4 \n\t" /* .. | vh | (p0) | */ \
" pmulhw "#s", "#v" \n\t" /* .. | 0 | vl*p0 | */ \
" paddw %%mm4, "#v" \n\t" /* .. | vh | vl*p0 | vh + sign correct */ \
" pslld $16, "#s" \n\t" /* .. | p0 | 0 | */ \
" por %%mm7, "#s" \n\t" /* .. | p0 | 1 | */ \
" pmaddwd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
/* approximately advances %3 = (%3 + a) % b. This function requires that
* a <= b. */
#define MOD_ADD(a,b) \
" add "#a", %3 \n\t" \
" mov %3, %4 \n\t" \
" sub "#b", %4 \n\t" \
" cmovae %4, %3 \n\t"
/* swap 16 bits */
#define SWAP_16(s) \
" movq "#s", %%mm4 \n\t" /* .. | h l | */ \
" psrlw $8, %%mm4 \n\t" /* .. | 0 h | */ \
" psllw $8, "#s" \n\t" /* .. | l 0 | */ \
" por %%mm4, "#s" \n\t" /* .. | l h | */
/* swap 2 registers 16 bits for better pairing */
#define SWAP_16_2(s1,s2) \
" movq "#s1", %%mm4 \n\t" /* .. | h l | */ \
" movq "#s2", %%mm5 \n\t" \
" psrlw $8, %%mm4 \n\t" /* .. | 0 h | */ \
" psrlw $8, %%mm5 \n\t" \
" psllw $8, "#s1" \n\t" /* .. | l 0 | */ \
" psllw $8, "#s2" \n\t" \
" por %%mm4, "#s1" \n\t" /* .. | l h | */ \
" por %%mm5, "#s2" \n\t"
static void
pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
pa_reg_x86 channel, temp;
/* the max number of samples we process at a time, this is also the max amount
* we overread the volume array, which should have enough padding. */
channels = PA_MAX (4U, channels);
__asm__ __volatile__ (
" xor %3, %3 \n\t"
" sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
" pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */
" pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */
" pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */
" psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */
" test $1, %2 \n\t" /* check for odd samples */
" je 2f \n\t"
" movd (%1, %3, 4), %%mm0 \n\t" /* | v0h | v0l | */
" movw (%0), %w4 \n\t" /* .. | p0 | */
" movd %4, %%mm1 \n\t"
VOLUME_32x16 (%%mm1, %%mm0)
" movd %%mm0, %4 \n\t" /* .. | p0*v0 | */
" movw %w4, (%0) \n\t"
" add $2, %0 \n\t"
MOD_ADD ($1, %5)
"2: \n\t"
" sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */
" test $1, %2 \n\t" /* check for odd samples */
" je 4f \n\t"
"3: \n\t" /* do samples in groups of 2 */
" movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
" movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
VOLUME_32x16 (%%mm1, %%mm0)
" movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
" add $4, %0 \n\t"
MOD_ADD ($2, %5)
"4: \n\t"
" sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */
" cmp $0, %2 \n\t"
" je 6f \n\t"
"5: \n\t" /* do samples in groups of 4 */
" movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
" movq 8(%1, %3, 4), %%mm2 \n\t" /* | v3h | v3l | v2h | v2l | */
" movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
" movd 4(%0), %%mm3 \n\t" /* .. | p3 | p2 | */
VOLUME_32x16 (%%mm1, %%mm0)
VOLUME_32x16 (%%mm3, %%mm2)
" movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
" movd %%mm2, 4(%0) \n\t" /* .. | p3*v3 | p2*v2 | */
" add $8, %0 \n\t"
MOD_ADD ($4, %5)
" dec %2 \n\t"
" jne 5b \n\t"
"6: \n\t"
" emms \n\t"
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
: "r" ((pa_reg_x86)channels)
: "cc"
);
}
static void
pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
{
pa_reg_x86 channel, temp;
/* the max number of samples we process at a time, this is also the max amount
* we overread the volume array, which should have enough padding. */
channels = PA_MAX (4U, channels);
__asm__ __volatile__ (
" xor %3, %3 \n\t"
" sar $1, %2 \n\t" /* length /= sizeof (int16_t) */
" pcmpeqw %%mm6, %%mm6 \n\t" /* .. | ffff | ffff | */
" pcmpeqw %%mm7, %%mm7 \n\t" /* .. | ffff | ffff | */
" pslld $16, %%mm6 \n\t" /* .. | ffff | 0 | */
" psrld $31, %%mm7 \n\t" /* .. | 0 | 1 | */
" test $1, %2 \n\t" /* check for odd samples */
" je 2f \n\t"
" movd (%1, %3, 4), %%mm0 \n\t" /* | v0h | v0l | */
" movw (%0), %w4 \n\t" /* .. | p0 | */
" rorw $8, %w4 \n\t"
" movd %4, %%mm1 \n\t"
VOLUME_32x16 (%%mm1, %%mm0)
" movd %%mm0, %4 \n\t" /* .. | p0*v0 | */
" rorw $8, %w4 \n\t"
" movw %w4, (%0) \n\t"
" add $2, %0 \n\t"
MOD_ADD ($1, %5)
"2: \n\t"
" sar $1, %2 \n\t" /* prepare for processing 2 samples at a time */
" test $1, %2 \n\t" /* check for odd samples */
" je 4f \n\t"
"3: \n\t" /* do samples in groups of 2 */
" movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
" movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
SWAP_16 (%%mm1)
VOLUME_32x16 (%%mm1, %%mm0)
SWAP_16 (%%mm0)
" movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
" add $4, %0 \n\t"
MOD_ADD ($2, %5)
"4: \n\t"
" sar $1, %2 \n\t" /* prepare for processing 4 samples at a time */
" cmp $0, %2 \n\t"
" je 6f \n\t"
"5: \n\t" /* do samples in groups of 4 */
" movq (%1, %3, 4), %%mm0 \n\t" /* | v1h | v1l | v0h | v0l | */
" movq 8(%1, %3, 4), %%mm2 \n\t" /* | v3h | v3l | v2h | v2l | */
" movd (%0), %%mm1 \n\t" /* .. | p1 | p0 | */
" movd 4(%0), %%mm3 \n\t" /* .. | p3 | p2 | */
SWAP_16_2 (%%mm1, %%mm3)
VOLUME_32x16 (%%mm1, %%mm0)
VOLUME_32x16 (%%mm3, %%mm2)
SWAP_16_2 (%%mm0, %%mm2)
" movd %%mm0, (%0) \n\t" /* .. | p1*v1 | p0*v0 | */
" movd %%mm2, 4(%0) \n\t" /* .. | p3*v3 | p2*v2 | */
" add $8, %0 \n\t"
MOD_ADD ($4, %5)
" dec %2 \n\t"
" jne 5b \n\t"
"6: \n\t"
" emms \n\t"
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
: "r" ((pa_reg_x86)channels)
: "cc"
);
}
#undef RUN_TEST
#ifdef RUN_TEST
#define CHANNELS 2
#define SAMPLES 1021
#define TIMES 1000
#define PADDING 16
static void run_test (void) {
int16_t samples[SAMPLES];
int16_t samples_ref[SAMPLES];
int16_t samples_orig[SAMPLES];
int32_t volumes[CHANNELS + PADDING];
int i, j, padding;
pa_do_volume_func_t func;
pa_usec_t start, stop;
func = pa_get_volume_func (PA_SAMPLE_S16NE);
printf ("checking MMX %zd\n", sizeof (samples));
pa_random (samples, sizeof (samples));
memcpy (samples_ref, samples, sizeof (samples));
memcpy (samples_orig, samples, sizeof (samples));
for (i = 0; i < CHANNELS; i++)
volumes[i] = rand() >> 1;
for (padding = 0; padding < PADDING; padding++, i++)
volumes[i] = volumes[padding];
func (samples_ref, volumes, CHANNELS, sizeof (samples));
pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples));
for (i = 0; i < SAMPLES; i++) {
if (samples[i] != samples_ref[i]) {
printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i],
samples_orig[i], volumes[i % CHANNELS]);
}
}
start = pa_rtclock_now();
for (j = 0; j < TIMES; j++) {
memcpy (samples, samples_orig, sizeof (samples));
pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples));
}
stop = pa_rtclock_now();
pa_log_info("MMX: %llu usec.", (long long unsigned int)(stop - start));
start = pa_rtclock_now();
for (j = 0; j < TIMES; j++) {
memcpy (samples_ref, samples_orig, sizeof (samples));
func (samples_ref, volumes, CHANNELS, sizeof (samples));
}
stop = pa_rtclock_now();
pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start));
}
#endif
#endif /* defined (__i386__) || defined (__amd64__) */
void pa_volume_func_init_mmx (pa_cpu_x86_flag_t flags) {
#if defined (__i386__) || defined (__amd64__)
pa_log_info("Initialising MMX optimized functions.");
#ifdef RUN_TEST
run_test ();
#endif
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__) */
}

314
src/pulsecore/svolume_sse.c Normal file
View file

@ -0,0 +1,314 @@
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
Copyright 2009 Wim Taymans <wim.taymans@collabora.co.uk>
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <pulse/timeval.h>
#include <pulsecore/random.h>
#include <pulsecore/macro.h>
#include <pulsecore/g711.h>
#include <pulsecore/core-util.h>
#include "cpu-x86.h"
#include "sample-util.h"
#include "endianmacros.h"
#if defined (__i386__) || defined (__amd64__)
#define VOLUME_32x16(s,v) /* .. | vh | vl | */ \
" pxor %%xmm4, %%xmm4 \n\t" /* .. | 0 | 0 | */ \
" punpcklwd %%xmm4, "#s" \n\t" /* .. | 0 | p0 | */ \
" pcmpgtw "#s", %%xmm4 \n\t" /* .. | 0 | s(p0) | */ \
" pand "#v", %%xmm4 \n\t" /* .. | 0 | (vl) | */ \
" movdqa "#s", %%xmm5 \n\t" \
" pmulhuw "#v", "#s" \n\t" /* .. | 0 | vl*p0 | */ \
" psubd %%xmm4, "#s" \n\t" /* .. | 0 | vl*p0 | + sign correct */ \
" psrld $16, "#v" \n\t" /* .. | p0 | 0 | */ \
" pmaddwd %%xmm5, "#v" \n\t" /* .. | p0 * vh | */ \
" paddd "#s", "#v" \n\t" /* .. | p0 * v0 | */ \
" packssdw "#v", "#v" \n\t" /* .. | p1*v1 | p0*v0 | */
#define MOD_ADD(a,b) \
" add "#a", %3 \n\t" /* channel += inc */ \
" mov %3, %4 \n\t" \
" sub "#b", %4 \n\t" /* tmp = channel - channels */ \
" cmovae %4, %3 \n\t" /* if (tmp >= 0) channel = tmp */
/* swap 16 bits */
#define SWAP_16(s) \
" movdqa "#s", %%xmm4 \n\t" /* .. | h l | */ \
" psrlw $8, %%xmm4 \n\t" /* .. | 0 h | */ \
" psllw $8, "#s" \n\t" /* .. | l 0 | */ \
" por %%xmm4, "#s" \n\t" /* .. | l h | */
/* swap 2 registers 16 bits for better pairing */
#define SWAP_16_2(s1,s2) \
" movdqa "#s1", %%xmm4 \n\t" /* .. | h l | */ \
" movdqa "#s2", %%xmm5 \n\t" \
" psrlw $8, %%xmm4 \n\t" /* .. | 0 h | */ \
" psrlw $8, %%xmm5 \n\t" \
" psllw $8, "#s1" \n\t" /* .. | l 0 | */ \
" psllw $8, "#s2" \n\t" \
" por %%xmm4, "#s1" \n\t" /* .. | l h | */ \
" por %%xmm5, "#s2" \n\t"
static void
pa_volume_s16ne_sse (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_sse (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__)
pa_log_info("Initialising SSE optimized functions.");
#ifdef RUN_TEST
run_test ();
#endif
pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_sse);
pa_set_volume_func (PA_SAMPLE_S16RE, (pa_do_volume_func_t) pa_volume_s16re_sse);
#endif /* defined (__i386__) || defined (__amd64__) */
}

372
src/pulsecore/usergroup.c Normal file
View file

@ -0,0 +1,372 @@
/***
This file is part of PulseAudio.
Copyright 2009 Ted Percival
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <sys/types.h>
#include <errno.h>
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
#ifdef HAVE_GRP_H
#include <grp.h>
#endif
#include <pulse/xmalloc.h>
#include <pulsecore/macro.h>
#include "usergroup.h"
#ifdef HAVE_GRP_H
/* Returns a suitable starting size for a getgrnam_r() or getgrgid_r() buffer,
plus the size of a struct group.
*/
static size_t starting_getgr_buflen(void) {
size_t full_size;
long n;
#ifdef _SC_GETGR_R_SIZE_MAX
n = sysconf(_SC_GETGR_R_SIZE_MAX);
#else
n = -1;
#endif
if (n <= 0)
n = 512;
full_size = (size_t) n + sizeof(struct group);
if (full_size < (size_t) n) /* check for integer overflow */
return (size_t) n;
return full_size;
}
/* Returns a suitable starting size for a getpwnam_r() or getpwuid_r() buffer,
plus the size of a struct passwd.
*/
static size_t starting_getpw_buflen(void) {
long n;
size_t full_size;
#ifdef _SC_GETPW_R_SIZE_MAX
n = sysconf(_SC_GETPW_R_SIZE_MAX);
#else
n = -1;
#endif
if (n <= 0)
n = 512;
full_size = (size_t) n + sizeof(struct passwd);
if (full_size < (size_t) n) /* check for integer overflow */
return (size_t) n;
return full_size;
}
/* Given a memory allocation (*bufptr) and its length (*buflenptr),
double the size of the allocation, updating the given buffer and length
arguments. This function should be used in conjunction with the pa_*alloc
and pa_xfree functions.
Unlike realloc(), this function does *not* retain the original buffer's
contents.
Returns 0 on success, nonzero on error. The error cause is indicated by
errno.
*/
static int expand_buffer_trashcontents(void **bufptr, size_t *buflenptr) {
size_t newlen;
if (!bufptr || !*bufptr || !buflenptr) {
errno = EINVAL;
return -1;
}
newlen = *buflenptr * 2;
if (newlen < *buflenptr) {
errno = EOVERFLOW;
return -1;
}
/* Don't bother retaining memory contents; free & alloc anew */
pa_xfree(*bufptr);
*bufptr = pa_xmalloc(newlen);
*buflenptr = newlen;
return 0;
}
#ifdef HAVE_GETGRGID_R
/* Thread-safe getgrgid() replacement.
Returned value should be freed using pa_getgrgid_free() when the caller is
finished with the returned group data.
API is the same as getgrgid(), errors are indicated by a NULL return;
consult errno for the error cause (zero it before calling).
*/
struct group *pa_getgrgid_malloc(gid_t gid) {
size_t buflen, getgr_buflen;
int err;
void *buf;
void *getgr_buf;
struct group *result = NULL;
buflen = starting_getgr_buflen();
buf = pa_xmalloc(buflen);
getgr_buflen = buflen - sizeof(struct group);
getgr_buf = (char *)buf + sizeof(struct group);
while ((err = getgrgid_r(gid, (struct group *)buf, getgr_buf,
getgr_buflen, &result)) == ERANGE)
{
if (expand_buffer_trashcontents(&buf, &buflen))
break;
getgr_buflen = buflen - sizeof(struct group);
getgr_buf = (char *)buf + sizeof(struct group);
}
if (err || !result) {
result = NULL;
if (buf) {
pa_xfree(buf);
buf = NULL;
}
}
pa_assert(result == buf || result == NULL);
return result;
}
void pa_getgrgid_free(struct group *grp) {
pa_xfree(grp);
}
#else /* !HAVE_GETGRGID_R */
struct group *pa_getgrgid_malloc(gid_t gid) {
return getgrgid(gid);
}
void pa_getgrgid_free(struct group *grp) {
/* nothing */
return;
}
#endif /* !HAVE_GETGRGID_R */
#ifdef HAVE_GETGRNAM_R
/* Thread-safe getgrnam() function.
Returned value should be freed using pa_getgrnam_free() when the caller is
finished with the returned group data.
API is the same as getgrnam(), errors are indicated by a NULL return;
consult errno for the error cause (zero it before calling).
*/
struct group *pa_getgrnam_malloc(const char *name) {
size_t buflen, getgr_buflen;
int err;
void *buf;
void *getgr_buf;
struct group *result = NULL;
buflen = starting_getgr_buflen();
buf = pa_xmalloc(buflen);
getgr_buflen = buflen - sizeof(struct group);
getgr_buf = (char *)buf + sizeof(struct group);
while ((err = getgrnam_r(name, (struct group *)buf, getgr_buf,
getgr_buflen, &result)) == ERANGE)
{
if (expand_buffer_trashcontents(&buf, &buflen))
break;
getgr_buflen = buflen - sizeof(struct group);
getgr_buf = (char *)buf + sizeof(struct group);
}
if (err || !result) {
result = NULL;
if (buf) {
pa_xfree(buf);
buf = NULL;
}
}
pa_assert(result == buf || result == NULL);
return result;
}
void pa_getgrnam_free(struct group *group) {
pa_xfree(group);
}
#else /* !HAVE_GETGRNAM_R */
struct group *pa_getgrnam_malloc(const char *name) {
return getgrnam(name);
}
void pa_getgrnam_free(struct group *group) {
/* nothing */
return;
}
#endif /* HAVE_GETGRNAM_R */
#endif /* HAVE_GRP_H */
#ifdef HAVE_PWD_H
#ifdef HAVE_GETPWNAM_R
/* Thread-safe getpwnam() function.
Returned value should be freed using pa_getpwnam_free() when the caller is
finished with the returned passwd data.
API is the same as getpwnam(), errors are indicated by a NULL return;
consult errno for the error cause (zero it before calling).
*/
struct passwd *pa_getpwnam_malloc(const char *name) {
size_t buflen, getpw_buflen;
int err;
void *buf;
void *getpw_buf;
struct passwd *result = NULL;
buflen = starting_getpw_buflen();
buf = pa_xmalloc(buflen);
getpw_buflen = buflen - sizeof(struct passwd);
getpw_buf = (char *)buf + sizeof(struct passwd);
while ((err = getpwnam_r(name, (struct passwd *)buf, getpw_buf,
getpw_buflen, &result)) == ERANGE)
{
if (expand_buffer_trashcontents(&buf, &buflen))
break;
getpw_buflen = buflen - sizeof(struct passwd);
getpw_buf = (char *)buf + sizeof(struct passwd);
}
if (err || !result) {
result = NULL;
if (buf) {
pa_xfree(buf);
buf = NULL;
}
}
pa_assert(result == buf || result == NULL);
return result;
}
void pa_getpwnam_free(struct passwd *passwd) {
pa_xfree(passwd);
}
#else /* !HAVE_GETPWNAM_R */
struct passwd *pa_getpwnam_malloc(const char *name) {
return getpwnam(name);
}
void pa_getpwnam_free(struct passwd *passwd) {
/* nothing */
return;
}
#endif /* !HAVE_GETPWNAM_R */
#ifdef HAVE_GETPWUID_R
/* Thread-safe getpwuid() function.
Returned value should be freed using pa_getpwuid_free() when the caller is
finished with the returned group data.
API is the same as getpwuid(), errors are indicated by a NULL return;
consult errno for the error cause (zero it before calling).
*/
struct passwd *pa_getpwuid_malloc(uid_t uid) {
size_t buflen, getpw_buflen;
int err;
void *buf;
void *getpw_buf;
struct passwd *result = NULL;
buflen = starting_getpw_buflen();
buf = pa_xmalloc(buflen);
getpw_buflen = buflen - sizeof(struct passwd);
getpw_buf = (char *)buf + sizeof(struct passwd);
while ((err = getpwuid_r(uid, (struct passwd *)buf, getpw_buf,
getpw_buflen, &result)) == ERANGE)
{
if (expand_buffer_trashcontents(&buf, &buflen))
break;
getpw_buflen = buflen - sizeof(struct passwd);
getpw_buf = (char *)buf + sizeof(struct passwd);
}
if (err || !result) {
result = NULL;
if (buf) {
pa_xfree(buf);
buf = NULL;
}
}
pa_assert(result == buf || result == NULL);
return result;
}
void pa_getpwuid_free(struct passwd *passwd) {
pa_xfree(passwd);
}
#else /* !HAVE_GETPWUID_R */
struct passwd *pa_getpwuid_malloc(uid_t uid) {
return getpwuid(uid);
}
void pa_getpwuid_free(struct passwd *passwd) {
/* nothing */
return;
}
#endif /* !HAVE_GETPWUID_R */
#endif /* HAVE_PWD_H */

51
src/pulsecore/usergroup.h Normal file
View file

@ -0,0 +1,51 @@
#ifndef foousergrouphfoo
#define foousergrouphfoo
/***
This file is part of PulseAudio.
Copyright 2009 Ted Percival
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#include <sys/types.h>
#ifndef PACKAGE
#error "Please include config.h before including this file!"
#endif
#ifdef HAVE_GRP_H
struct group *pa_getgrgid_malloc(gid_t gid);
void pa_getgrgid_free(struct group *grp);
struct group *pa_getgrnam_malloc(const char *name);
void pa_getgrnam_free(struct group *group);
#endif /* HAVE_GRP_H */
#ifdef HAVE_PWD_H
struct passwd *pa_getpwuid_malloc(uid_t uid);
void pa_getpwuid_free(struct passwd *passwd);
struct passwd *pa_getpwnam_malloc(const char *name);
void pa_getpwnam_free(struct passwd *passwd);
#endif /* HAVE_PWD_H */
#endif /* foousergrouphfoo */

View file

@ -34,8 +34,6 @@
#include <pulsecore/memblock.h> #include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h> #include <pulsecore/sample-util.h>
#include <liboil/liboil.h>
const pa_envelope_def ramp_down = { const pa_envelope_def ramp_down = {
.n_points = 2, .n_points = 2,
.points_x = { 100*PA_USEC_PER_MSEC, 300*PA_USEC_PER_MSEC }, .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 } .values = { PA_VOLUME_NORM, PA_VOLUME_NORM/2 }
}; };
oil_init();
pa_log_set_level(PA_LOG_DEBUG); pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0)); pa_assert_se(pool = pa_mempool_new(FALSE, 0));

View file

@ -32,8 +32,6 @@
#include <pulsecore/memblock.h> #include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h> #include <pulsecore/sample-util.h>
#include <liboil/liboil.h>
static float swap_float(float a) { static float swap_float(float a) {
uint32_t *b = (uint32_t*) &a; uint32_t *b = (uint32_t*) &a;
*b = PA_UINT32_SWAP(*b); *b = PA_UINT32_SWAP(*b);
@ -211,7 +209,6 @@ int main(int argc, char *argv[]) {
pa_sample_spec a; pa_sample_spec a;
pa_cvolume v; pa_cvolume v;
oil_init();
pa_log_set_level(PA_LOG_DEBUG); pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0)); pa_assert_se(pool = pa_mempool_new(FALSE, 0));

View file

@ -32,8 +32,6 @@
#include <pulsecore/memblock.h> #include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h> #include <pulsecore/sample-util.h>
#include <liboil/liboil.h>
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
static const pa_channel_map maps[] = { static const pa_channel_map maps[] = {
@ -55,7 +53,6 @@ int main(int argc, char *argv[]) {
unsigned i, j; unsigned i, j;
pa_mempool *pool; pa_mempool *pool;
oil_init();
pa_log_set_level(PA_LOG_DEBUG); pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0)); pa_assert_se(pool = pa_mempool_new(FALSE, 0));

View file

@ -32,8 +32,6 @@
#include <pulsecore/memblock.h> #include <pulsecore/memblock.h>
#include <pulsecore/sample-util.h> #include <pulsecore/sample-util.h>
#include <liboil/liboil.h>
static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) { static void dump_block(const pa_sample_spec *ss, const pa_memchunk *chunk) {
void *d; void *d;
unsigned i; unsigned i;
@ -248,7 +246,6 @@ int main(int argc, char *argv[]) {
pa_sample_spec a, b; pa_sample_spec a, b;
pa_cvolume v; pa_cvolume v;
oil_init();
pa_log_set_level(PA_LOG_DEBUG); pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0)); pa_assert_se(pool = pa_mempool_new(FALSE, 0));

161
src/tests/usergroup-test.c Normal file
View file

@ -0,0 +1,161 @@
/***
This file is part of PulseAudio.
Copyright 2009 Ted Percival
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA.
***/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
#include <errno.h>
#include <pulsecore/usergroup.h>
static int load_reference_structs(struct group **gr, struct passwd **pw) {
setpwent();
*pw = getpwent();
endpwent();
setgrent();
*gr = getgrent();
endgrent();
return (*gr && *pw) ? 0 : 1;
}
static int compare_group(const struct group *a, const struct group *b) {
char **amem, **bmem;
if (strcmp(a->gr_name, b->gr_name)) {
fprintf(stderr, "Group name mismatch: [%s] [%s]\n",
a->gr_name, b->gr_name);
return 1;
}
if (strcmp(a->gr_passwd, b->gr_passwd)) {
fprintf(stderr, "Group password mismatch: [%s] [%s]\n",
a->gr_passwd, b->gr_passwd);
return 1;
}
if (a->gr_gid != b->gr_gid) {
fprintf(stderr, "Gid mismatch: [%lu] [%lu]\n",
(unsigned long) a->gr_gid, (unsigned long) b->gr_gid);
return 1;
}
/* XXX: Assuming the group ordering is identical. */
for (amem = a->gr_mem, bmem = b->gr_mem; *amem && *bmem; ++amem, ++bmem) {
if (strcmp(*amem, *bmem)) {
fprintf(stderr, "Group member mismatch: [%s] [%s]\n",
*amem, *bmem);
return 1;
}
}
if (*amem || *bmem) {
fprintf(stderr, "Mismatched group count\n");
return 1;
}
return 0;
}
static int compare_passwd(const struct passwd *a, const struct passwd *b) {
if (strcmp(a->pw_name, b->pw_name)) {
fprintf(stderr, "pw_name mismatch: [%s] [%s]\n", a->pw_name, b->pw_name);
return 1;
}
if (strcmp(a->pw_passwd, b->pw_passwd)) {
fprintf(stderr, "pw_passwd mismatch: [%s] [%s]\n", a->pw_passwd, b->pw_passwd);
return 1;
}
if (a->pw_uid != b->pw_uid) {
fprintf(stderr, "pw_uid mismatch: [%lu] [%lu]\n",
(unsigned long) a->pw_uid, (unsigned long) b->pw_uid);
return 1;
}
if (a->pw_gid != b->pw_gid) {
fprintf(stderr, "pw_gid mismatch: [%lu] [%lu]\n",
(unsigned long) a->pw_gid, (unsigned long) b->pw_gid);
return 1;
}
if (strcmp(a->pw_gecos, b->pw_gecos)) {
fprintf(stderr, "pw_gecos mismatch: [%s] [%s]\n", a->pw_gecos, b->pw_gecos);
return 1;
}
if (strcmp(a->pw_dir, b->pw_dir)) {
fprintf(stderr, "pw_dir mismatch: [%s] [%s]\n", a->pw_dir, b->pw_dir);
return 1;
}
if (strcmp(a->pw_shell, b->pw_shell)) {
fprintf(stderr, "pw_shell mismatch: [%s] [%s]\n", a->pw_shell, b->pw_shell);
return 1;
}
return 0;
}
int main(int argc, char *argv[]) {
struct group *gr;
struct passwd *pw;
int err;
struct group *reference_group = NULL;
struct passwd *reference_passwd = NULL;
err = load_reference_structs(&reference_group, &reference_passwd);
if (err)
return 77;
errno = 0;
gr = pa_getgrgid_malloc(reference_group->gr_gid);
if (compare_group(reference_group, gr))
return 1;
pa_getgrgid_free(gr);
errno = 0;
gr = pa_getgrnam_malloc(reference_group->gr_name);
if (compare_group(reference_group, gr))
return 1;
pa_getgrnam_free(gr);
errno = 0;
pw = pa_getpwuid_malloc(reference_passwd->pw_uid);
if (compare_passwd(reference_passwd, pw))
return 1;
pa_getpwuid_free(pw);
errno = 0;
pw = pa_getpwnam_malloc(reference_passwd->pw_name);
if (compare_passwd(reference_passwd, pw))
return 1;
pa_getpwnam_free(pw);
return 0;
}