mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-02 09:01:46 -05:00
Compare commits
13 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f839526a5 | ||
|
|
566849c4af | ||
|
|
0647fcb622 | ||
|
|
9a428e4c50 | ||
|
|
a8b28d86cd | ||
|
|
f2836dc6b6 | ||
|
|
686ae9c696 | ||
|
|
e5ad31e873 | ||
|
|
e4d54dae91 | ||
|
|
0e896eb518 | ||
|
|
ca8c5242eb | ||
|
|
437cfe4630 | ||
|
|
8299a7f100 |
158 changed files with 5020 additions and 20139 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -37,4 +37,3 @@ stamp-*
|
|||
.dirstamp
|
||||
*.orig
|
||||
*.rej
|
||||
subprojects/*/
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# container and push it to the project's container registry on fd.o GitLab.
|
||||
# This step is only run when the tag for the container changes, else it is
|
||||
# effectively a no-op. All of this infrastructure is inherited from the
|
||||
# freedesktop/ci-templates repository which is the recommended way to set up CI
|
||||
# wayland/ci-templates repository which is the recommended way to set up CI
|
||||
# infrastructure on fd.o GitLab.
|
||||
#
|
||||
# Once the container stage is done, we move on to the 'build' stage where we
|
||||
|
|
@ -10,15 +10,6 @@
|
|||
# there doesn't seem to be significant value to splitting the stages at the
|
||||
# moment.
|
||||
|
||||
# Create merge request pipelines for open merge requests, branch pipelines
|
||||
# otherwise. This allows MRs for new users to run CI.
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH
|
||||
|
||||
stages:
|
||||
- container
|
||||
- build
|
||||
|
|
@ -28,21 +19,22 @@ variables:
|
|||
# CI runs, for example when adding new packages to FDO_DISTRIBUTION_PACKAGES.
|
||||
# The tag is an arbitrary string that identifies the exact container
|
||||
# contents.
|
||||
FDO_DISTRIBUTION_TAG: '2023-08-13-00'
|
||||
FDO_DISTRIBUTION_TAG: '2021-11-03-00'
|
||||
FDO_DISTRIBUTION_VERSION: '20.04'
|
||||
FDO_UPSTREAM_REPO: 'pulseaudio/pulseaudio'
|
||||
UBUNTU_IMAGE: "$CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG"
|
||||
|
||||
include:
|
||||
# We pull templates from master to avoid the overhead of periodically
|
||||
# scanning for changes upstream. This does means builds might occasionally
|
||||
# break due to upstream changing things, so if you see unexpected build
|
||||
# failures, this might be one cause.
|
||||
- project: 'freedesktop/ci-templates'
|
||||
- project: 'wayland/ci-templates'
|
||||
ref: 'master'
|
||||
file: '/templates/ubuntu.yml'
|
||||
|
||||
build-container:
|
||||
extends: .fdo.container-build@ubuntu
|
||||
extends: .fdo.container-ifnot-exists@ubuntu
|
||||
stage: container
|
||||
variables:
|
||||
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
||||
|
|
@ -56,7 +48,6 @@ build-container:
|
|||
check
|
||||
curl
|
||||
dbus-x11
|
||||
doxygen
|
||||
g++
|
||||
gcc
|
||||
gettext
|
||||
|
|
@ -97,19 +88,17 @@ build-container:
|
|||
wget
|
||||
|
||||
build-meson:
|
||||
extends: .fdo.distribution-image@ubuntu
|
||||
stage: build
|
||||
image: $UBUNTU_IMAGE
|
||||
script:
|
||||
# Install meson (higher than our min version to support our wrap file)
|
||||
- wget -q https://github.com/mesonbuild/meson/releases/download/0.63.2/meson-0.63.2.tar.gz
|
||||
- tar -xf meson-0.63.2.tar.gz
|
||||
- cd meson-0.63.2
|
||||
# Install meson
|
||||
- wget -q https://github.com/mesonbuild/meson/releases/download/0.50.0/meson-0.50.0.tar.gz
|
||||
- tar -xf meson-0.50.0.tar.gz
|
||||
- cd meson-0.50.0
|
||||
- python3 setup.py install
|
||||
- cd ..
|
||||
# needed to generate a version
|
||||
- git fetch https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git --tags
|
||||
# Do the actual build
|
||||
- meson build -Dwebrtc-aec=enabled
|
||||
- meson build --werror
|
||||
- cd build
|
||||
- ninja
|
||||
- ulimit -c 0 # don't dump core files on tests that are supposed to assert
|
||||
|
|
|
|||
70
NEWS
70
NEWS
|
|
@ -1,74 +1,18 @@
|
|||
PulseAudio 17.0
|
||||
PulseAudio 16.2
|
||||
|
||||
Changes at a glance:
|
||||
* Notes for end users
|
||||
* Updates to ALSA UCM-based setups
|
||||
* Battery level indication to Bluetooth devices
|
||||
* Support for the Bluetooth FastStream codec
|
||||
* webrtc-audio-processing dependency updated
|
||||
* Trigger role groups added to module-role-cork
|
||||
* XDG base directory spec for profile-set loading
|
||||
* Notes for application developers
|
||||
* PA_RATE_MAX increased
|
||||
* Notes for packagers
|
||||
* webrtc-audio-processing dependency updated
|
||||
A bug fix release.
|
||||
|
||||
* A couple of time-smoother-2 fixes, mainly manifesting in issues for GStreamer clients
|
||||
* Fix a crash in some restricted environments
|
||||
* Minor RTP spec compliance fix
|
||||
* Minur completion and tests fixups
|
||||
|
||||
Contributors
|
||||
|
||||
Alistair Leslie-Hughes
|
||||
Alper Nebi Yasak
|
||||
Arun Raghavan
|
||||
Asier Sarasua Garmendia
|
||||
Ataberk Özen
|
||||
Balázs Meskó
|
||||
Biswapriyo Nath
|
||||
Dylan Van Assche
|
||||
Eero Nurkkala
|
||||
Ettore Atalan
|
||||
Fabrice Fontaine
|
||||
Fran Diéguez
|
||||
Georg Chini
|
||||
Gioele Barabucci
|
||||
Gogo Gogsi
|
||||
Hector Martin
|
||||
Hugo Carvalho
|
||||
Hui Wang
|
||||
Igor V. Kovalenko
|
||||
Jaechul Lee
|
||||
Jan Kuparinen
|
||||
Jan Palus
|
||||
Jaroslav Kysela
|
||||
Jiri Grönroos
|
||||
Joachim Philipp
|
||||
Jordi Mas
|
||||
Marijn Suijten
|
||||
Mart Raudsepp
|
||||
Nicolas Cavallari
|
||||
Peter Meerwald-Stadler
|
||||
Philip Goto
|
||||
Rosen Penev
|
||||
Rudi Heitbaum
|
||||
Sabri Ünal
|
||||
Sean Greenslade
|
||||
Seong-ho Cho
|
||||
Shunsuke Shimizu
|
||||
SimonP
|
||||
Takashi Sakamoto
|
||||
Tanu Kaskinen
|
||||
Temuri Doghonadze
|
||||
Toni Estevez
|
||||
Weijia Wang
|
||||
Wim Taymans
|
||||
Yureka
|
||||
acheronfail
|
||||
flyingOwl
|
||||
grimst
|
||||
hashitaku
|
||||
mooo
|
||||
peijiankang
|
||||
redfast00
|
||||
wael
|
||||
김인수
|
||||
|
||||
|
||||
PulseAudio 16.1
|
||||
|
|
|
|||
|
|
@ -174,9 +174,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
<option>
|
||||
<p><opt>set-default-sink</opt> <arg>SINK</arg></p>
|
||||
<optdesc><p>Make the specified sink (identified by its symbolic name or numerical index) the default sink.
|
||||
Use the special name \@NONE@ to unset the user defined default sink. This will make pulseaudio return to the default
|
||||
sink selection based on sink priority.</p></optdesc>
|
||||
<optdesc><p>Make the specified sink (identified by its symbolic name or numerical index) the default sink.</p></optdesc>
|
||||
</option>
|
||||
|
||||
<option>
|
||||
|
|
@ -191,9 +189,7 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
<option>
|
||||
<p><opt>set-default-source</opt> <arg>SOURCE</arg></p>
|
||||
<optdesc><p>Make the specified source (identified by its symbolic name or numerical index) the default source.
|
||||
Use the special name \@NONE@ to unset the user defined default source. This will make pulseaudio return to the default
|
||||
source selection based on source priority.</p></optdesc>
|
||||
<optdesc><p>Make the specified source (identified by its symbolic name or numerical index) the default source.</p></optdesc>
|
||||
</option>
|
||||
|
||||
<option>
|
||||
|
|
|
|||
|
|
@ -143,10 +143,8 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
|||
<p><opt>set-default-sink|set-default-source</opt> <arg>index|name</arg></p>
|
||||
<optdesc><p>Make a sink (resp. source) the default. You may specify the
|
||||
sink (resp. source) by its index in the sink (resp. source) list or by its
|
||||
name. Use the special name \@NONE@ to unset the user defined default sink or
|
||||
source. In this case, pulseaudio will return to the default sink or source
|
||||
selection based on priority.</p><p>Note that defaults may be overridden by
|
||||
various policy modules or by specific stream configurations.</p></optdesc>
|
||||
name.</p><p>Note that defaults may be overridden by various policy modules
|
||||
or by specific stream configurations.</p></optdesc>
|
||||
</option>
|
||||
|
||||
<option>
|
||||
|
|
|
|||
44
meson.build
44
meson.build
|
|
@ -1,12 +1,10 @@
|
|||
project('pulseaudio', 'c',
|
||||
version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version'), check : false).stdout().strip(),
|
||||
project('pulseaudio', 'c', 'cpp',
|
||||
version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version')).stdout().strip(),
|
||||
meson_version : '>= 0.50.0',
|
||||
default_options : [ 'c_std=gnu11', 'cpp_std=c++17' ]
|
||||
default_options : [ 'c_std=gnu11', 'cpp_std=c++11' ]
|
||||
)
|
||||
|
||||
if not meson.is_subproject()
|
||||
meson.add_dist_script('scripts/save-tarball-version.sh', meson.project_version())
|
||||
endif
|
||||
meson.add_dist_script('scripts/save-tarball-version.sh', meson.project_version())
|
||||
|
||||
pa_version_str = meson.project_version()
|
||||
# For tarballs, the first split will do nothing, but for builds in git, we
|
||||
|
|
@ -27,7 +25,7 @@ pa_protocol_version = 35
|
|||
|
||||
# The stable ABI for client applications, for the version info x:y:z
|
||||
# always will hold x=z
|
||||
libpulse_version_info = [24, 3, 24]
|
||||
libpulse_version_info = [24, 2, 24]
|
||||
|
||||
# A simplified, synchronous, ABI-stable interface for client
|
||||
# applications, for the version info x:y:z always will hold x=z
|
||||
|
|
@ -150,11 +148,7 @@ cdata.set_quoted('PA_MACHINE_ID', join_paths(sysconfdir, 'machine-id'))
|
|||
cdata.set_quoted('PA_MACHINE_ID_FALLBACK', join_paths(localstatedir, 'lib', 'dbus', 'machine-id'))
|
||||
cdata.set_quoted('PA_SRCDIR', join_paths(meson.current_source_dir(), 'src'))
|
||||
cdata.set_quoted('PA_BUILDDIR', meson.current_build_dir())
|
||||
if host_machine.system() == 'windows'
|
||||
cdata.set_quoted('PA_SOEXT', '.dll')
|
||||
else
|
||||
cdata.set_quoted('PA_SOEXT', '.so')
|
||||
endif
|
||||
cdata.set_quoted('PA_SOEXT', '.so')
|
||||
cdata.set_quoted('PA_DEFAULT_CONFIG_DIR', pulsesysconfdir)
|
||||
cdata.set('PA_DEFAULT_CONFIG_DIR_UNQUOTED', pulsesysconfdir)
|
||||
cdata.set_quoted('PA_BINARY', join_paths(bindir, 'pulseaudio'))
|
||||
|
|
@ -166,7 +160,8 @@ cdata.set_quoted('PA_SYSTEM_USER', get_option('system_user'))
|
|||
cdata.set_quoted('PA_SYSTEM_GROUP', get_option('system_group'))
|
||||
cdata.set_quoted('PA_ACCESS_GROUP', get_option('access_group'))
|
||||
cdata.set_quoted('PA_CFLAGS', 'Not yet supported on meson')
|
||||
cdata.set_quoted('PA_ALSA_DATA_DIR', alsadatadir)
|
||||
cdata.set_quoted('PA_ALSA_PATHS_DIR', join_paths(alsadatadir, 'paths'))
|
||||
cdata.set_quoted('PA_ALSA_PROFILE_SETS_DIR', join_paths(alsadatadir, 'profile-sets'))
|
||||
cdata.set_quoted('DESKTOPFILEDIR', join_paths(datadir, 'applications'))
|
||||
cdata.set_quoted('PULSE_LOCALEDIR', localedir)
|
||||
cdata.set_quoted('GETTEXT_PACKAGE', 'pulseaudio')
|
||||
|
|
@ -190,7 +185,6 @@ endif
|
|||
# rather than ending up in the config.h file?
|
||||
if host_machine.system() == 'darwin'
|
||||
cdata.set('OS_IS_DARWIN', 1)
|
||||
cdata.set('HAVE_COREAUDIO', 1)
|
||||
cdata.set('_DARWIN_C_SOURCE', '200112L') # Needed to get NSIG on Mac OS
|
||||
elif host_machine.system() == 'windows'
|
||||
cdata.set('OS_IS_WIN32', 1)
|
||||
|
|
@ -430,7 +424,7 @@ cdata.set('MESON_BUILD', 1)
|
|||
# so we request the nodelete flag to be enabled.
|
||||
# On other systems, we don't really know how to do that, but it's welcome if somebody can tell.
|
||||
# Windows doesn't support this flag.
|
||||
if host_machine.system() != 'windows' and host_machine.system() != 'darwin'
|
||||
if host_machine.system() != 'windows'
|
||||
nodelete_link_args = ['-Wl,-z,nodelete']
|
||||
else
|
||||
nodelete_link_args = []
|
||||
|
|
@ -439,7 +433,6 @@ endif
|
|||
# Code coverage
|
||||
|
||||
if get_option('gcov')
|
||||
add_languages('cpp')
|
||||
add_project_arguments('--coverage', language: ['c', 'cpp'])
|
||||
add_project_link_arguments('--coverage', language: ['c', 'cpp'])
|
||||
endif
|
||||
|
|
@ -505,24 +498,22 @@ endif
|
|||
|
||||
need_libatomic_ops = false
|
||||
|
||||
atomictest = '''int main() {
|
||||
atomictest = '''void func() {
|
||||
volatile int atomic = 2;
|
||||
__sync_bool_compare_and_swap (&atomic, 2, 3);
|
||||
return 0;
|
||||
}
|
||||
'''
|
||||
|
||||
if cc.links(atomictest)
|
||||
if cc.compiles(atomictest)
|
||||
cdata.set('HAVE_ATOMIC_BUILTINS', 1)
|
||||
|
||||
newatomictest = '''int main() {
|
||||
newatomictest = '''void func() {
|
||||
int c = 0;
|
||||
__atomic_store_n(&c, 4, __ATOMIC_SEQ_CST);
|
||||
return 0;
|
||||
}
|
||||
'''
|
||||
|
||||
if(cc.links(newatomictest))
|
||||
if(cc.compiles(newatomictest))
|
||||
cdata.set('HAVE_ATOMIC_BUILTINS_MEMORY_MODEL', 1)
|
||||
endif
|
||||
|
||||
|
|
@ -690,7 +681,7 @@ if get_option('daemon')
|
|||
cdata.set('HAVE_ALSA_UCM', 1)
|
||||
endif
|
||||
|
||||
gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : false)
|
||||
gio_dep = dependency('gio-2.0', version : '>= 2.26.0')
|
||||
if get_option('gsettings').enabled()
|
||||
assert(gio_dep.found(), 'GSettings support needs glib I/O library (GIO)')
|
||||
cdata.set('HAVE_GSETTINGS', 1)
|
||||
|
|
@ -726,7 +717,7 @@ if get_option('daemon')
|
|||
cdata.set('HAVE_SOXR', 1)
|
||||
endif
|
||||
|
||||
webrtc_dep = dependency('webrtc-audio-processing-1', version : '>= 1.0', required : get_option('webrtc-aec'))
|
||||
webrtc_dep = dependency('webrtc-audio-processing', version : '>= 0.2', required : get_option('webrtc-aec'))
|
||||
if webrtc_dep.found()
|
||||
cdata.set('HAVE_WEBRTC', 1)
|
||||
endif
|
||||
|
|
@ -741,10 +732,6 @@ if get_option('daemon')
|
|||
cdata.set('HAVE_SYSTEMD_LOGIN', 1)
|
||||
endif
|
||||
|
||||
if get_option('consolekit').enabled()
|
||||
assert(dbus_dep.found(), 'ConsoleKit requires D-Bus support')
|
||||
endif
|
||||
|
||||
tcpwrap_dep = cc.find_library('wrap', required: get_option('tcpwrap'))
|
||||
if cc.has_header('tcpd.h') and cc.has_function('hosts_access', dependencies : tcpwrap_dep)
|
||||
cdata.set('HAVE_LIBWRAP', 1)
|
||||
|
|
@ -1014,7 +1001,6 @@ summary += [
|
|||
' Enable HAL->udev compat: @0@'.format(get_option('hal-compat')),
|
||||
'Enable systemd units: @0@'.format(systemd_dep.found()),
|
||||
'Enable elogind: @0@'.format(libelogind_dep.found()),
|
||||
'Enable ConsoleKit: @0@'.format(not get_option('consolekit').disabled() and dbus_dep.found()),
|
||||
'Enable TCP Wrappers: @0@'.format(tcpwrap_dep.found()),
|
||||
'Enable OpenSSL (for Airtunes): @0@'.format(openssl_dep.found()),
|
||||
'Database: @0@'.format(get_option('database')),
|
||||
|
|
|
|||
|
|
@ -99,9 +99,6 @@ option('bluez5-native-headset',
|
|||
option('bluez5-ofono-headset',
|
||||
type : 'boolean',
|
||||
description : 'Optional oFono headset backend support (BlueZ 5)')
|
||||
option('consolekit',
|
||||
type : 'feature', value : 'auto',
|
||||
description : 'Optional ConsoleKit support')
|
||||
option('dbus',
|
||||
type : 'feature', value : 'auto',
|
||||
description : 'Optional D-Bus support')
|
||||
|
|
@ -169,7 +166,7 @@ option('x11',
|
|||
type : 'feature', value : 'auto',
|
||||
description : 'Optional X11 support')
|
||||
option('enable-smoother-2',
|
||||
type : 'boolean', value : true,
|
||||
type : 'boolean', value : 'true',
|
||||
description : 'Use alternative time smoother implementation')
|
||||
|
||||
# Echo cancellation
|
||||
|
|
|
|||
|
|
@ -49,7 +49,3 @@ zh_TW
|
|||
eo
|
||||
si
|
||||
ka
|
||||
eu
|
||||
ar
|
||||
sl
|
||||
ro
|
||||
|
|
|
|||
18
po/af.po
18
po/af.po
|
|
@ -6,7 +6,7 @@ msgstr ""
|
|||
"Project-Id-Version: master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2019-01-09 12:17+0200\n"
|
||||
"Last-Translator: F Wolff <friedel@translate.org.za>\n"
|
||||
"Language-Team: translate-discuss-af@lists.sourceforge.net\n"
|
||||
|
|
@ -988,8 +988,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-gebaseerde effenaar op %s"
|
||||
|
|
@ -1046,14 +1046,14 @@ msgstr "Klank op @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tonnel vir %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tonnel na %s/%s"
|
||||
|
|
@ -1390,11 +1390,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Ingeboude oudio"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
18
po/as.po
18
po/as.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.as\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:52+0000\n"
|
||||
"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n"
|
||||
"Language-Team: Assamese <>\n"
|
||||
|
|
@ -1142,8 +1142,8 @@ msgstr ""
|
|||
"plugin name> label=<ladspa plugin label> control=<comma separated list of "
|
||||
"input control values>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1206,14 +1206,14 @@ msgstr "@HOSTNAME@ ত অ'ডিঅ'"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1564,11 +1564,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] লগ লক্ষ্য '%s' বৈধ নহয় ।"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "আভ্যন্তৰীণ অ'ডিঅ'"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "মোডেম"
|
||||
|
||||
|
|
|
|||
225
po/be.po
225
po/be.po
|
|
@ -9,22 +9,20 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-05-01 06:49+0000\n"
|
||||
"Last-Translator: Yauhen Bugamol "
|
||||
"<bugamol@users.noreply.translate.fedoraproject.org>\n"
|
||||
"Language-Team: Belarusian <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/be/>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2016-07-19 11:06+0300\n"
|
||||
"Last-Translator: Viktar Vaŭčkievič <victorenator@gmail.com>\n"
|
||||
"Language-Team: Belarusian <>\n"
|
||||
"Language: be\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.11.1\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Lokalize 2.0\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"\n"
|
||||
|
|
@ -99,71 +97,70 @@ msgstr ""
|
|||
"Каманды:\n"
|
||||
" -h, --help Паказаць гэту даведку.\n"
|
||||
" --version Паказаць версію.\n"
|
||||
" --dump-conf Выгрузіць прадвызначаную "
|
||||
"канфігурацыю.\n"
|
||||
" --dump-modules Выгрузіць спіс даступных модуляў.\n"
|
||||
" --dump-resample-methods Выгрузіць спіс даступных метадаў\n"
|
||||
" --dump-conf Вывесці агаданую канфігурацыю.\n"
|
||||
" --dump-modules Вывесці спіс даступных модуляў.\n"
|
||||
" --dump-resample-methods Вывесці спіс даступных метадаў\n"
|
||||
" перадыскрэтызацыі.\n"
|
||||
" --cleanup-shm Ачысціць выкарыстаныя сегменты\n"
|
||||
" сумеснай памяці.\n"
|
||||
" --start Запусціць дэман, калі ён\n"
|
||||
" --start Запусціць фонавы сэрвіс, калі ён\n"
|
||||
" яшчэ не запушчаны.\n"
|
||||
" -k --kill Знішчыць запушчаны дэман.\n"
|
||||
" --check Праверыць ці запушчаны дэман\n"
|
||||
" -k --kill Знішчыць запушчаны фонавы сэрвіс.\n"
|
||||
" --check Праверыць ці запушчаны фонавы "
|
||||
"сэрвіс\n"
|
||||
" (толькі код завяршэння).\n"
|
||||
"\n"
|
||||
"Параметры:\n"
|
||||
" --system[=BOOL] Агульнасістэмны рэжым.\n"
|
||||
" -D, --daemonize[=BOOL] Запусціць як дэман.\n"
|
||||
" -D, --daemonize[=BOOL] Запусціць як фонавы сэрвіс.\n"
|
||||
" --fail[=BOOL] Выйсці пры памылцы запуску.\n"
|
||||
" --high-priority[=BOOL] Паспрабаваць павысіць прыярытэт "
|
||||
"(nice)\n"
|
||||
" (даступна толькі карыстальніку root,"
|
||||
"\n"
|
||||
" з уключаным SUID або з павышаным\n"
|
||||
" --high-priority[=BOOL] Паспрабаваць павысіць прыярытэт\n"
|
||||
" (nice)\n"
|
||||
" (даступна толькі карыстальніку "
|
||||
"root,\n"
|
||||
" з уключаным SUID ці з павышаным\n"
|
||||
" RLIMIT_NICE).\n"
|
||||
" --realtime[=BOOL] Паспрабаваць уключыць планіроўшчык\n"
|
||||
" рэальнага часу\n"
|
||||
" (даступна толькі карыстальніку root,"
|
||||
"\n"
|
||||
" з уключаным SUID або з павышаным\n"
|
||||
" (даступна толькі root,\n"
|
||||
" з уключаным SUID ці з павышаным\n"
|
||||
" RLIMIT_RTPRIO).\n"
|
||||
" --disallow-module-loading[=BOOL] Забараніць загрузку/выгрузку "
|
||||
"модуляў\n"
|
||||
" па запыту карыстальніка пасля "
|
||||
"запуску.\n"
|
||||
" па запыту карыстальніка пасля\n"
|
||||
" запуску.\n"
|
||||
" --disallow-exit[=BOOL] Забараніць выхад па запыту\n"
|
||||
" карыстальніка.\n"
|
||||
" --exit-idle-time=СЕКУНДЫ Завяршыць работу пасля азначанага\n"
|
||||
" часу бяздзеяння.\n"
|
||||
" --scache-idle-time=СЕКУНДЫ Выгрузіць аўтаматычна загружаныя\n"
|
||||
" сэмплы пасля азначанага часу "
|
||||
"бяздзеяння.\n"
|
||||
" сэмплы пасля азначанага часу\n"
|
||||
" бяздзеяння.\n"
|
||||
" --log-level[=УЗРОВЕНЬ] Павялічыць або ўставіць узровень\n"
|
||||
" інфарматыўнасці.\n"
|
||||
" -v --verbose Павялічыць узровень інфарматыўнасці."
|
||||
"\n"
|
||||
" -v --verbose Павялічыць узровень "
|
||||
"інфарматыўнасці.\n"
|
||||
" --log-target={auto,syslog,stderr,file:PATH,newfile:PATH}\n"
|
||||
" Вызначыць журнал.\n"
|
||||
" --log-meta[=BOOL] Дадаць месца ў кодзе да "
|
||||
"паведамленняў журнала.\n"
|
||||
" --log-time[=BOOL] Дадаць час да паведамленняў журнала."
|
||||
"\n"
|
||||
" --log-meta[=BOOL] Дадаць месца ў коду да паведамленняў "
|
||||
"журнала.\n"
|
||||
" --log-time[=BOOL] Дадаць час да паведамленняў "
|
||||
"журнала.\n"
|
||||
" --log-backtrace=FRAMES Дадаць стэк выклікаў да "
|
||||
"паведамленняў журнала.\n"
|
||||
" -p, --dl-search-path=ШЛЯХ Задаць шлях для пошуку дынамічных\n"
|
||||
" раздзяляльных абʼектаў (плагінаў).\n"
|
||||
" раздзяляльных абʼектаў (дадаткаў).\n"
|
||||
" --resample-method=МЕТАД Выкарыстоўваць азначаны метад\n"
|
||||
" перадыскрэтызацыі\n"
|
||||
" (Глядзіце --dump-resample-methods "
|
||||
"для магчымых значэнняў).\n"
|
||||
" (Глядзіце --dump-resample-methods\n"
|
||||
" для магчымых значэнняў).\n"
|
||||
" --use-pid-file[=BOOL] Стварыць PID-файл.\n"
|
||||
" --no-cpu-limit[=BOOL] Не ўсталёўваць абмежаванні на "
|
||||
"выкарыстанне\n"
|
||||
" працэсара на платформах, якія\n"
|
||||
" падтрымліваюць гэта.\n"
|
||||
" --disable-shm[=BOOL] Адключыць падтрымку сумеснай памяці."
|
||||
"\n"
|
||||
" --disable-shm[=BOOL] Адключыць падтрымку сумеснай "
|
||||
"памяці.\n"
|
||||
" --enable-memfd[=BOOL] Уключыць падтрымку memfd-сумеснай\n"
|
||||
" памяці.\n"
|
||||
"\n"
|
||||
|
|
@ -173,8 +170,7 @@ msgstr ""
|
|||
" -F, --file=НАЗВА_ФАЙЛА Выканаць азначаны сцэнарый.\n"
|
||||
" -C Адкрыць камандны радок у\n"
|
||||
" бягучым тэрмінале пасля запуску.\n"
|
||||
" -n Не загружаць прадвызначаны файл "
|
||||
"сцэнарыя.\n"
|
||||
" -n Не загружаць агаданы файл сцэнарыю.\n"
|
||||
|
||||
#: src/daemon/cmdline.c:246
|
||||
msgid "--daemonize expects boolean argument"
|
||||
|
|
@ -512,7 +508,7 @@ msgstr ""
|
|||
|
||||
#: src/daemon/main.c:922
|
||||
msgid "Failed to acquire stdio."
|
||||
msgstr "Не ўдалося атрымаць stdio."
|
||||
msgstr "Не атрымалася атрымаць stdio."
|
||||
|
||||
#: src/daemon/main.c:928 src/daemon/main.c:999
|
||||
#, c-format
|
||||
|
|
@ -540,7 +536,7 @@ msgstr "setsid() пацярпела няўдачу: %s"
|
|||
|
||||
#: src/daemon/main.c:1119
|
||||
msgid "Failed to get machine ID"
|
||||
msgstr "Не ўдалося атрымаць ідэнтыфікатар машыны"
|
||||
msgstr "Не атрымалася атрымаць ідэнтыфікатар машыны"
|
||||
|
||||
#: src/daemon/main.c:1145
|
||||
msgid ""
|
||||
|
|
@ -565,8 +561,9 @@ msgid "pa_core_new() failed."
|
|||
msgstr "pa_core_new() пацярпела няўдачу."
|
||||
|
||||
#: src/daemon/main.c:1268
|
||||
#, fuzzy
|
||||
msgid "command line arguments"
|
||||
msgstr "аргументы каманднага радка"
|
||||
msgstr "Занадта шмат аргументаў."
|
||||
|
||||
#: src/daemon/main.c:1275
|
||||
#, c-format
|
||||
|
|
@ -699,12 +696,14 @@ msgid "Analog Output"
|
|||
msgstr "Аналагавы выхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2808
|
||||
#, fuzzy
|
||||
msgid "Headphones 2"
|
||||
msgstr "Навушнікі 2"
|
||||
msgstr "Навушнікі"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2809
|
||||
#, fuzzy
|
||||
msgid "Headphones Mono Output"
|
||||
msgstr "Манавыхад навушнікаў"
|
||||
msgstr "Аналагавы монавыхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2810
|
||||
msgid "Line Out"
|
||||
|
|
@ -712,7 +711,7 @@ msgstr "Лінейны выхад"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2811
|
||||
msgid "Analog Mono Output"
|
||||
msgstr "Аналагавы манавыхад"
|
||||
msgstr "Аналагавы монавыхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2812
|
||||
msgid "Speakers"
|
||||
|
|
@ -739,32 +738,38 @@ msgid "Multichannel Output"
|
|||
msgstr "Шматканальны выхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2818
|
||||
#, fuzzy
|
||||
msgid "Game Output"
|
||||
msgstr "Выхад гульні"
|
||||
msgstr "%s выхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2819 src/modules/alsa/alsa-mixer.c:2820
|
||||
#, fuzzy
|
||||
msgid "Chat Output"
|
||||
msgstr "Выхад размовы"
|
||||
msgstr "%s выхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2821
|
||||
#, fuzzy
|
||||
msgid "Chat Input"
|
||||
msgstr "Уваход размовы"
|
||||
msgstr "%s уваход"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
#, fuzzy
|
||||
msgid "Virtual Surround 7.1"
|
||||
msgstr "Віртуальны абʼёмны 7.1"
|
||||
msgstr "Віртуальны абʼёмны прыёмнік"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4563
|
||||
msgid "Analog Mono"
|
||||
msgstr "Аналагавы мона"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4564
|
||||
#, fuzzy
|
||||
msgid "Analog Mono (Left)"
|
||||
msgstr "Аналагавы мона (левы)"
|
||||
msgstr "Аналагавы мона"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4565
|
||||
#, fuzzy
|
||||
msgid "Analog Mono (Right)"
|
||||
msgstr "Аналагавы мона (правы)"
|
||||
msgstr "Аналагавы мона"
|
||||
|
||||
#. Note: Not translated to "Analog Stereo Input", because the source
|
||||
#. * name gets "Input" appended to it automatically, so adding "Input"
|
||||
|
|
@ -791,8 +796,9 @@ msgid "Headset"
|
|||
msgstr "Гарнітура"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4577 src/modules/alsa/alsa-mixer.c:4735
|
||||
#, fuzzy
|
||||
msgid "Speakerphone"
|
||||
msgstr "Гучная сувязь"
|
||||
msgstr "Дынамік"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4578 src/modules/alsa/alsa-mixer.c:4579
|
||||
msgid "Multichannel"
|
||||
|
|
@ -868,35 +874,36 @@ msgstr "Лічбавы абʼёмны 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr "Размова"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr "Гульня"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
msgstr "Дуплексны аналагавы мона"
|
||||
msgstr "Аналагавы мона дуплекс"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4733
|
||||
msgid "Analog Stereo Duplex"
|
||||
msgstr "Дуплексны аналагавы стэрэа"
|
||||
msgstr "Аналагавы стэрэа дуплекс"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4736
|
||||
msgid "Digital Stereo Duplex (IEC958)"
|
||||
msgstr "Дуплексны лічбавы стэрэа (IEC958)"
|
||||
msgstr "Лічбавы стэрэа дуплекс (IEC958)"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4737
|
||||
msgid "Multichannel Duplex"
|
||||
msgstr "Дуплексны шматканальны"
|
||||
msgstr "Шматканальны дуплекс"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4738
|
||||
#, fuzzy
|
||||
msgid "Stereo Duplex"
|
||||
msgstr "Дуплексны стэрэа"
|
||||
msgstr "Аналагавы стэрэа дуплекс"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr "Размова, мона + аб'ёмны 7.1"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1170,8 +1177,8 @@ msgstr ""
|
|||
"autoloaded=<зададзены, калі гэты модуль загружаны аўтаматычна> "
|
||||
"use_volume_sharing=<yes ці no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1236,14 +1243,14 @@ msgstr "Аўдыя на @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Тунэль для %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Тунэль да %s/%s"
|
||||
|
|
@ -1253,6 +1260,7 @@ msgid "Virtual surround sink"
|
|||
msgstr "Віртуальны абʼёмны прыёмнік"
|
||||
|
||||
#: src/modules/module-virtual-surround-sink.c:54
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"sink_name=<name for the sink> sink_properties=<properties for the sink> "
|
||||
"master=<name of sink to filter> sink_master=<name of sink to filter> "
|
||||
|
|
@ -1263,21 +1271,19 @@ msgid ""
|
|||
"this module is being loaded automatically> "
|
||||
msgstr ""
|
||||
"sink_name=<назва прыёмніка> sink_properties=<уласцівасці прыёмніка> "
|
||||
"master=<назва прыёмніка для фільтрацыі> sink_master=<назва прыёмніка для "
|
||||
"фільтрацыі> format=<фармат сэмлаў> rate=<частата дыскрэдытацыі> "
|
||||
"channels=<колькасць каналаў> channel_map=<карта каналаў> "
|
||||
"use_volume_sharing=<yes або no> force_flat_volume=<yes або no> hrir=/шлях/да/"
|
||||
"левага_hrir.wav hrir_left=/шлях/да/левага_hrir.wav "
|
||||
"hrir_right=/шлях/да/неабавязковага/правага_hrir.wav autoloaded=<задаецца, "
|
||||
"калі модуль загружаецца аўтаматычна> "
|
||||
"master=<назва прыёмніка для фільтрацыі> format=<фармат сэмлаў> rate=<частата "
|
||||
"сэмлаў> channels=<number of channels> channel_map=<колькасць каналаў> "
|
||||
"use_volume_sharing=<yes ці no> force_flat_volume=<yes ці no> hrir=<шлях да "
|
||||
"left_hrir.wav> "
|
||||
|
||||
#: src/modules/raop/module-raop-discover.c:295
|
||||
#, fuzzy
|
||||
msgid "Unknown device model"
|
||||
msgstr "Невядомая мадэль прылады"
|
||||
msgstr "Невядомы код памылкі"
|
||||
|
||||
#: src/modules/raop/raop-sink.c:689
|
||||
msgid "RAOP standard profile"
|
||||
msgstr "Стандартны профіль RAOP"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/reserve-wrap.c:149
|
||||
msgid "PulseAudio Sound Server"
|
||||
|
|
@ -1591,11 +1597,11 @@ msgstr "Не атрымалася адкрыць файлы журнала «%s
|
|||
msgid "Invalid log target."
|
||||
msgstr "Некарэктны журнал."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Убудаванае аўдыя"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Мадэм"
|
||||
|
||||
|
|
@ -1826,7 +1832,7 @@ msgstr "Паток перасунуты ў прыладу %s (%u, %sпрыпын
|
|||
|
||||
#: src/utils/pacat.c:393
|
||||
msgid "not "
|
||||
msgstr "не "
|
||||
msgstr "не"
|
||||
|
||||
#: src/utils/pacat.c:400
|
||||
#, c-format
|
||||
|
|
@ -1897,7 +1903,7 @@ msgstr "Атрыманы сігнал — выхад."
|
|||
#: src/utils/pacat.c:640
|
||||
#, c-format
|
||||
msgid "Failed to get latency: %s"
|
||||
msgstr "Не ўдалося атрымаць затрымку: %s"
|
||||
msgstr "Не атрымалася атрымаць затрымку: %s"
|
||||
|
||||
#: src/utils/pacat.c:645
|
||||
#, c-format
|
||||
|
|
@ -2362,7 +2368,7 @@ msgstr "read(): %s"
|
|||
#: src/utils/pactl.c:183
|
||||
#, c-format
|
||||
msgid "Failed to get statistics: %s"
|
||||
msgstr "Не ўдалося атрымаць статыстыку: %s"
|
||||
msgstr "Не атрымалася атрымаць статыстыку: %s"
|
||||
|
||||
#: src/utils/pactl.c:199
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -2398,7 +2404,7 @@ msgstr "Памер кэшу сэмплаў: %s\n"
|
|||
#: src/utils/pactl.c:219 src/utils/pactl.c:231 src/utils/pactl.c:245
|
||||
#, c-format
|
||||
msgid "Failed to get server information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб серверы: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб серверы: %s"
|
||||
|
||||
#: src/utils/pactl.c:224 src/utils/pactl.c:236
|
||||
#, c-format
|
||||
|
|
@ -2447,15 +2453,15 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr "даступнасць невядомая"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
msgstr "даступна"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:322
|
||||
msgid "not available"
|
||||
msgstr "недаступна"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:331 src/utils/pactl.c:355
|
||||
#, fuzzy
|
||||
|
|
@ -2473,7 +2479,7 @@ msgstr "Лінейны ўваход"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr "Мікрафон"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
|
|
@ -2486,11 +2492,11 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr "SPDIF"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr "HDMI"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
|
|
@ -2498,7 +2504,7 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
msgstr "USB"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:346
|
||||
#, fuzzy
|
||||
|
|
@ -2507,17 +2513,18 @@ msgstr "Bluetooth-уваход"
|
|||
|
||||
#: src/utils/pactl.c:352
|
||||
msgid "Network"
|
||||
msgstr "Сетка"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:353
|
||||
#, fuzzy
|
||||
msgid "Analog"
|
||||
msgstr "Аналагавы"
|
||||
msgstr "Аналагавы мона"
|
||||
|
||||
#: src/utils/pactl.c:567 src/utils/pactl.c:1834 src/utils/pactl.c:1852
|
||||
#: src/utils/pactl.c:1875 src/utils/pactl.c:1992
|
||||
#, c-format
|
||||
msgid "Failed to get sink information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб прыёмніку: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб прыёмніку: %s"
|
||||
|
||||
#: src/utils/pactl.c:664
|
||||
#, c-format
|
||||
|
|
@ -2564,13 +2571,13 @@ msgid "\tPorts:\n"
|
|||
msgstr "\tПарты:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (тып: %s, прыярытэт: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (прыёмнікаў: %u, крыніц: %u, прыярытэт: %u, даступны: %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
msgstr ", група даступнасці: "
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
|
|
@ -2586,7 +2593,7 @@ msgstr "\tФарматы:\n"
|
|||
#: src/utils/pactl.c:1934 src/utils/pactl.c:2007
|
||||
#, c-format
|
||||
msgid "Failed to get source information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб крыніцы: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб крыніцы: %s"
|
||||
|
||||
#: src/utils/pactl.c:849
|
||||
#, c-format
|
||||
|
|
@ -2638,7 +2645,7 @@ msgstr "н/д"
|
|||
#: src/utils/pactl.c:924 src/utils/pactl.c:1793
|
||||
#, c-format
|
||||
msgid "Failed to get module information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб модулі: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб модулі: %s"
|
||||
|
||||
#: src/utils/pactl.c:976
|
||||
#, c-format
|
||||
|
|
@ -2660,7 +2667,7 @@ msgstr ""
|
|||
#: src/utils/pactl.c:1002
|
||||
#, c-format
|
||||
msgid "Failed to get client information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб кліенце: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб кліенце: %s"
|
||||
|
||||
#: src/utils/pactl.c:1056
|
||||
#, c-format
|
||||
|
|
@ -2680,7 +2687,7 @@ msgstr ""
|
|||
#: src/utils/pactl.c:1168
|
||||
#, c-format
|
||||
msgid "Failed to get card information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб картцы: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб картцы: %s"
|
||||
|
||||
#: src/utils/pactl.c:1224
|
||||
#, c-format
|
||||
|
|
@ -2737,7 +2744,7 @@ msgstr "\t\t\tЧастка профілю(яў): %s"
|
|||
#: src/utils/pactl.c:1290 src/utils/pactl.c:1954 src/utils/pactl.c:2022
|
||||
#, c-format
|
||||
msgid "Failed to get sink input information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб уваходзе прыёмніка: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб уваходзе прыёмніка: %s"
|
||||
|
||||
#: src/utils/pactl.c:1366
|
||||
#, c-format
|
||||
|
|
@ -2781,7 +2788,7 @@ msgstr ""
|
|||
#: src/utils/pactl.c:1413 src/utils/pactl.c:1974 src/utils/pactl.c:2037
|
||||
#, c-format
|
||||
msgid "Failed to get source output information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб выхадзе крыніцы: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб выхадзе крыніцы: %s"
|
||||
|
||||
#: src/utils/pactl.c:1489
|
||||
#, c-format
|
||||
|
|
@ -2825,7 +2832,7 @@ msgstr ""
|
|||
#: src/utils/pactl.c:1536
|
||||
#, c-format
|
||||
msgid "Failed to get sample information: %s"
|
||||
msgstr "Не ўдалося атрымаць інфармацыю аб сэмпле: %s"
|
||||
msgstr "Не атрымалася атрымаць інфармацыю аб сэмпле: %s"
|
||||
|
||||
#: src/utils/pactl.c:1604
|
||||
#, c-format
|
||||
|
|
@ -2885,9 +2892,9 @@ msgid "list-handlers message response array element %d is not a JSON object"
|
|||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Failed to unload module: Module %s not loaded"
|
||||
msgstr "Не ўдалося выгрузіць модуль: модуль %s не загружаны"
|
||||
msgstr "Не атрымалася выгрузіць модуль: модуль не загружаны"
|
||||
|
||||
#: src/utils/pactl.c:1818
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -3261,7 +3268,7 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:3194
|
||||
msgid "You have to specify a card name/index, a port name and a latency offset"
|
||||
msgstr "Неабходна задаць назву/нумар карты, назву порта і зрух затрымкі"
|
||||
msgstr "Неабходна задаць нумар ці назву карткі, назву порту і зрух затрымкі."
|
||||
|
||||
#: src/utils/pactl.c:3201
|
||||
msgid "Could not parse latency offset"
|
||||
|
|
@ -3416,7 +3423,7 @@ msgstr "Не атрымалася захаваць дадзеныя cookie\n"
|
|||
#: src/utils/pax11publish.c:168
|
||||
#, c-format
|
||||
msgid "Failed to get FQDN.\n"
|
||||
msgstr "Не ўдалося атрымаць поўнае даменнае імя (FQDN).\n"
|
||||
msgstr "Не атрымалася атрымаць поўнае даменнае імя (FQDN).\n"
|
||||
|
||||
#: src/utils/pax11publish.c:188
|
||||
#, c-format
|
||||
|
|
|
|||
18
po/bg.po
18
po/bg.po
|
|
@ -4,7 +4,7 @@ msgstr ""
|
|||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2020-10-15 21:30+0000\n"
|
||||
"Last-Translator: Emanuil Novachev <em.novachev@gmail.com>\n"
|
||||
"Language-Team: Bulgarian <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1046,8 +1046,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1104,14 +1104,14 @@ msgstr ""
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1448,11 +1448,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
18
po/bn_IN.po
18
po/bn_IN.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.bn_IN\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:52+0000\n"
|
||||
"Last-Translator: Runa Bhattacharjee <runab@redhat.com>\n"
|
||||
"Language-Team: Bengali INDIA <anubad@lists.ankur.org.in>\n"
|
||||
|
|
@ -1157,8 +1157,8 @@ msgstr ""
|
|||
"plugin name> label=<ladspa plugin label> control=<comma separated list of "
|
||||
"input control values>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1221,14 +1221,14 @@ msgstr "@HOSTNAME@-র মধ্যে অডিও"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1579,11 +1579,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] লগ টার্গেট '%s' বৈধ নয়।"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "অভ্যন্তরীণ অডিও"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "মোডেম"
|
||||
|
||||
|
|
|
|||
49
po/ca.po
49
po/ca.po
|
|
@ -28,17 +28,14 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2022-09-26 14:19+0000\n"
|
||||
"Last-Translator: Toni Estevez <toni.estevez@gmail.com>\n"
|
||||
"Language-Team: Catalan <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/ca/>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:52+0000\n"
|
||||
"Last-Translator: Josep Torné Llavall <josep.torne@gmail.com>\n"
|
||||
"Language-Team: Catalan <fedora@softcatala.net>\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -707,23 +704,25 @@ msgstr "Entrada analògica"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2800
|
||||
msgid "Dock Microphone"
|
||||
msgstr "Micròfon de l'acoblador"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2802
|
||||
msgid "Headset Microphone"
|
||||
msgstr "Micròfon de l'auricular"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2806
|
||||
msgid "Analog Output"
|
||||
msgstr "Sortida analògica"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2808
|
||||
#, fuzzy
|
||||
msgid "Headphones 2"
|
||||
msgstr "Auriculars 2"
|
||||
msgstr "Auriculars"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2809
|
||||
#, fuzzy
|
||||
msgid "Headphones Mono Output"
|
||||
msgstr "Sortida mono analògica dels auriculars"
|
||||
msgstr "Sortida mono analògica"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2810
|
||||
msgid "Line Out"
|
||||
|
|
@ -880,7 +879,7 @@ msgstr "Envoltant digital 4.0 (IEC958/AC3)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4593
|
||||
msgid "Digital Surround 5.1 (IEC958/AC3)"
|
||||
msgstr "Envoltant digital 5.1 (IEC958/AC3)"
|
||||
msgstr "Envolvent digital 5.1 (IEC958/AC3)"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4594
|
||||
msgid "Digital Surround 5.1 (IEC958/DTS)"
|
||||
|
|
@ -896,11 +895,11 @@ msgstr "So envoltant digital 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr "Xat"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr "Joc"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
|
|
@ -1176,8 +1175,8 @@ msgstr ""
|
|||
"pulgin=<nom del connector ladspa> label=<etiqueta del connector ladspa> "
|
||||
"control=<llista separada per comes dels valors de control d'entrada>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1240,14 +1239,14 @@ msgstr "Àudio a @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Túnel per %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1448,7 +1447,7 @@ msgstr "Auxiliar 28"
|
|||
|
||||
#: src/pulse/channelmap.c:150
|
||||
msgid "Auxiliary 29"
|
||||
msgstr "Auxiliar 29"
|
||||
msgstr "Auxiliar 31"
|
||||
|
||||
#: src/pulse/channelmap.c:151
|
||||
msgid "Auxiliary 30"
|
||||
|
|
@ -1591,11 +1590,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Àudio intern"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Mòdem"
|
||||
|
||||
|
|
@ -2775,12 +2774,10 @@ msgstr ""
|
|||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr ""
|
||||
"no s'ha pogut analitzar correctament la resposta del missatge de list-"
|
||||
"handlers"
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr "la resposta del missatge de list-handlers no és una matriu de JSON"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
|
|||
69
po/cs.po
69
po/cs.po
|
|
@ -10,17 +10,16 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2023-12-31 14:36+0000\n"
|
||||
"Last-Translator: Matěj Valášek <valmatej@seznam.cz>\n"
|
||||
"Language-Team: Czech <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/cs/>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2018-09-30 17:34+0200\n"
|
||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||
"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.3.1\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -562,8 +561,6 @@ msgid ""
|
|||
"Failed to initialize daemon due to errors while executing startup commands. "
|
||||
"Source of commands: %s"
|
||||
msgstr ""
|
||||
"Nepodařilo se inicializovat démona kvůli chybám při provádění startup "
|
||||
"příkazů. Zdroj příkazů: %s"
|
||||
|
||||
#: src/daemon/main.c:1280
|
||||
msgid "Daemon startup without any loaded modules, refusing to work."
|
||||
|
|
@ -862,11 +859,11 @@ msgstr "Digitální Surround 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr "Chat"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr "Hra"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
|
|
@ -890,7 +887,7 @@ msgstr "Duplexní stereo"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr "Mono Chat + 7.1 Surround"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1161,8 +1158,8 @@ msgstr ""
|
|||
"channels=<počet kanálů> channel_map=<mapa kanálů> autoloaded=<zda se má "
|
||||
"modul načítat automaticky> use_volume_sharing=<používat sdílenou hlasitost>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Ekvalizér používající FFT na %s"
|
||||
|
|
@ -1228,14 +1225,14 @@ msgstr "Zvuk na @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel pro %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunel do %s/%s"
|
||||
|
|
@ -1585,11 +1582,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neplatný cíl pro záznam."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Vnitřní zvukový systém"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -2438,15 +2435,15 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr "dostupnost neznámá"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
msgstr "dostupné"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:322
|
||||
msgid "not available"
|
||||
msgstr "není dostupné"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:331 src/utils/pactl.c:355
|
||||
#, fuzzy
|
||||
|
|
@ -2455,7 +2452,7 @@ msgstr "neznámo"
|
|||
|
||||
#: src/utils/pactl.c:332
|
||||
msgid "Aux"
|
||||
msgstr "Aux"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:335
|
||||
#, fuzzy
|
||||
|
|
@ -2464,7 +2461,7 @@ msgstr "Linkový vstup"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr "Mic"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
|
|
@ -2473,23 +2470,23 @@ msgstr "Náhlavní souprava"
|
|||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
msgstr "Sluchátka do uší"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr "SPDIF"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr "HDMI"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
msgstr "TV"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
msgstr "USB"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:346
|
||||
#, fuzzy
|
||||
|
|
@ -2498,7 +2495,7 @@ msgstr "Vstup přes Bluetooth"
|
|||
|
||||
#: src/utils/pactl.c:352
|
||||
msgid "Network"
|
||||
msgstr "Síť"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:353
|
||||
#, fuzzy
|
||||
|
|
@ -2861,22 +2858,20 @@ msgstr "Selhalo volání read(): %s"
|
|||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
msgid "list-handlers message failed: %s"
|
||||
msgstr "list-handlers zpráva selhala: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
#, fuzzy
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr "odpověď na zprávu list-handlers nelze správně analyzovat"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
#, fuzzy
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr "odpověď zprávy list-handlers není pole JSON"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
msgid "list-handlers message response array element %d is not a JSON object"
|
||||
msgstr "prvek pole odpovědí list-handlers %d není objekt JSON"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, c-format
|
||||
|
|
@ -3243,8 +3238,6 @@ msgid ""
|
|||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
msgstr ""
|
||||
"Nadbytečné argumenty budou ignorovány. Všimněte si, že všechny parametry "
|
||||
"zprávy musí být zadány jako jeden řetězec."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
|
|
|
|||
29
po/da.po
29
po/da.po
|
|
@ -7,9 +7,9 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2024-12-13 17:38+0000\n"
|
||||
"Last-Translator: DK Guy <peter@nozen.dk>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-05-21 23:01+0000\n"
|
||||
"Last-Translator: scootergrisen <scootergrisen@gmail.com>\n"
|
||||
"Language-Team: Danish <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/da/>\n"
|
||||
"Language: da\n"
|
||||
|
|
@ -17,7 +17,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
"X-Generator: Weblate 4.6.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -175,12 +175,13 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "--fail venter boolesk argument"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
msgstr ""
|
||||
"--log-level forventer logniveau argument (enten numerisk i området 0..4 "
|
||||
"eller en af debug, info, notice, warn, error)."
|
||||
"--log-level venter logniveau argument (enten numerisk i området 0..4 eller "
|
||||
"en af debug, info, notice, warn, error)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -1132,8 +1133,8 @@ msgstr ""
|
|||
"channel_map=<kanalkort> autoloaded=<indstil hvis modulet indlæses "
|
||||
"automatisk> use_volume_sharing=<yes eller no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-baseret equalizer på %s"
|
||||
|
|
@ -1199,14 +1200,14 @@ msgstr "Lyd på @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel for %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel til %s/%s"
|
||||
|
|
@ -1555,11 +1556,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ugyldigt logmål."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Indbygget lyd"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
31
po/de.po
31
po/de.po
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.de\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2022-12-06 09:20+0000\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-12-05 21:16+0000\n"
|
||||
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
|
||||
"Language-Team: German <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/de/>\n"
|
||||
|
|
@ -24,7 +24,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14.2\n"
|
||||
"X-Generator: Weblate 4.9.1\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -188,6 +188,7 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "--fail erfordert boolesche Variable"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
|
|
@ -217,12 +218,14 @@ msgid "--use-pid-file expects boolean argument"
|
|||
msgstr "--use-pid-file erfordert boolesche Variable"
|
||||
|
||||
#: src/daemon/cmdline.c:328
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Invalid log target: use either 'syslog', 'journal', 'stderr' or 'auto' or a "
|
||||
"valid file name 'file:<path>', 'newfile:<path>'."
|
||||
msgstr ""
|
||||
"Ungültiges Protokollziel: Benutzen Sie entweder »syslog«, »journal«, »stderr«"
|
||||
" oder »auto« oder einen gültigen Dateinamen »file:<Pfad>«, »newfile:<Pfad>«."
|
||||
"Ungültiges Protokollziel: Benutzen Sie entweder »syslog«, »journal«, "
|
||||
"»stderr« oder »auto« oder einen gültigen Dateinamen »file:<Pfad>«, »newfile:"
|
||||
"<Pfad>«."
|
||||
|
||||
#: src/daemon/cmdline.c:330
|
||||
msgid ""
|
||||
|
|
@ -1149,8 +1152,8 @@ msgstr ""
|
|||
"autoloaded=<setzen, wenn dieses Modul automatisch geladen wird> "
|
||||
"use_volume_sharing=<yes oder no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1217,14 +1220,14 @@ msgstr "Audio auf @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel für %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel zu %s/%s"
|
||||
|
|
@ -1573,11 +1576,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ungültiges Protokollziel."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Internes Audio"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -3157,7 +3160,7 @@ msgstr "Sie müssen einen Ziel-Namen/-Indexwert und eine Lautstärke angeben."
|
|||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
#, fuzzy
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "Sie müssen einen Quellennamen/-index angeben"
|
||||
msgstr "Sie müssen einen Quellennamen angeben."
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
|
|||
18
po/de_CH.po
18
po/de_CH.po
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:53+0000\n"
|
||||
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
|
||||
"Language-Team: German <fedora-trans-de@redhat.com>\n"
|
||||
|
|
@ -1130,8 +1130,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1191,14 +1191,14 @@ msgstr ""
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1543,11 +1543,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Internes Audio"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
18
po/eo.po
18
po/eo.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-02-05 01:40+0000\n"
|
||||
"Last-Translator: Carmen Bianca Bakker <carmen@carmenbianca.eu>\n"
|
||||
"Language-Team: Esperanto <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -984,8 +984,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1042,14 +1042,14 @@ msgstr "Sono sur @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunelo por %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunelo al %s/%s"
|
||||
|
|
@ -1386,11 +1386,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Integrita sono"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
124
po/fi.po
124
po/fi.po
|
|
@ -9,9 +9,9 @@ msgstr ""
|
|||
"Project-Id-Version: git trunk\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-04-22 16:19+0000\n"
|
||||
"Last-Translator: Ricky Tigg <ricky.tigg@gmail.com>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-20 18:18+0000\n"
|
||||
"Last-Translator: Jan Kuparinen <copper_fin@hotmail.com>\n"
|
||||
"Language-Team: Finnish <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/fi/>\n"
|
||||
"Language: fi\n"
|
||||
|
|
@ -19,7 +19,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11\n"
|
||||
"X-Generator: Weblate 4.12.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -742,11 +742,11 @@ msgstr "Peli ulostulo"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2819 src/modules/alsa/alsa-mixer.c:2820
|
||||
msgid "Chat Output"
|
||||
msgstr "Pikakeskustelun lähtö"
|
||||
msgstr "Chatti ulostulo"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2821
|
||||
msgid "Chat Input"
|
||||
msgstr "Pikakeskustelun syöttö"
|
||||
msgstr "Chatti sisääntulo"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
msgid "Virtual Surround 7.1"
|
||||
|
|
@ -1141,8 +1141,8 @@ msgstr ""
|
|||
"liitännäisen nimiö (label)> control=<pilkulla erotettu luettelo "
|
||||
"syötteenhallinta-arvoja> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-pohjainen taajuuskorjain %s:lla"
|
||||
|
|
@ -1209,14 +1209,14 @@ msgstr "Ääni koneella @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunneli %s@%s:ta varten"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunneli %s/%s:een"
|
||||
|
|
@ -1566,17 +1566,17 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Virheellinen lokikirjoituksen kohde."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Sisäinen äänentoisto"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modeemi"
|
||||
|
||||
#: src/pulse/error.c:38
|
||||
msgid "OK"
|
||||
msgstr "Hyvä on"
|
||||
msgstr "OK"
|
||||
|
||||
#: src/pulse/error.c:39
|
||||
msgid "Access denied"
|
||||
|
|
@ -1818,7 +1818,7 @@ msgstr "Korkkipyyntöpino on tyhjä: poistetaan korkkivirta"
|
|||
|
||||
#: src/utils/pacat.c:425
|
||||
msgid "Warning: Received more uncork requests than cork requests."
|
||||
msgstr "Varoitus: Vastaanotettu enemmän cork-poistopyyntöjä kuin cork-pyyntöjä."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacat.c:450
|
||||
#, c-format
|
||||
|
|
@ -1972,8 +1972,8 @@ msgstr ""
|
|||
"palvelimella\n"
|
||||
" --volume=ÄÄNENVOIMAKKUUS Määritä (lineaarinen) "
|
||||
"aloitusäänenvoimakkuus väliltä 0...65536\n"
|
||||
" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus "
|
||||
"hertseinä(oletus: 44100)\n"
|
||||
" --rate=NÄYTTEENOTTOTAAJUUS Näytteenottotaajuus hertseinä(oletus:"
|
||||
" 44100)\n"
|
||||
" --format=NÄYTEMUOTO Näytteen tyyppi, yksi seuraavista:"
|
||||
"s16le, s16be, u8, float32le,\n"
|
||||
" float32be, ulaw, alaw, s32le, s32be\n"
|
||||
|
|
@ -1993,8 +1993,8 @@ msgstr ""
|
|||
" --no-remix Älä yli- tai alimiksaa kanavia.\n"
|
||||
" --no-remap Kartoita kanavat indeksin mukaan, "
|
||||
"älä nimen mukaan.\n"
|
||||
" --latency=TAVUA Pyydä määritettyä latenssia "
|
||||
"tavuissa.\n"
|
||||
" --latency=TAVUA Pyydä määritettyä latenssia tavuissa."
|
||||
"\n"
|
||||
" --process-time=TAVUA Pyydä määritettyä prosessiaikaa "
|
||||
"pyyntöä kohti tavuissa.\n"
|
||||
" --property=ASETUS=ARVO Anna määritetylle asetukselle "
|
||||
|
|
@ -2007,29 +2007,24 @@ msgstr ""
|
|||
|
||||
#: src/utils/pacat.c:793
|
||||
msgid "Play back encoded audio files on a PulseAudio sound server."
|
||||
msgstr "Toista koodattuja äänitiedostoja PulseAudio-äänipalvelimella."
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacat.c:797
|
||||
msgid ""
|
||||
"Capture audio data from a PulseAudio sound server and write it to a file."
|
||||
msgstr ""
|
||||
"Kaappaa äänidataa PulseAudio-äänipalvelimelta ja kirjoita se tiedostoon."
|
||||
|
||||
#: src/utils/pacat.c:801
|
||||
msgid ""
|
||||
"Capture audio data from a PulseAudio sound server and write it to STDOUT or "
|
||||
"the specified file."
|
||||
msgstr ""
|
||||
"Kaappaa äänidataa PulseAudio-äänipalvelimelta ja kirjoita se STDOUTiin tai "
|
||||
"määritettyyn tiedostoon."
|
||||
|
||||
#: src/utils/pacat.c:805
|
||||
msgid ""
|
||||
"Play back audio data from STDIN or the specified file on a PulseAudio sound "
|
||||
"server."
|
||||
msgstr ""
|
||||
"Toista äänidataa STDINistä tai määritetystä tiedostosta PulseAudio-"
|
||||
"äänipalvelimella."
|
||||
|
||||
#: src/utils/pacat.c:819
|
||||
#, c-format
|
||||
|
|
@ -2079,7 +2074,7 @@ msgstr "Tuntematon tiedostomuoto %s."
|
|||
|
||||
#: src/utils/pacat.c:1000
|
||||
msgid "Failed to parse the argument for --monitor-stream"
|
||||
msgstr "Argumentin --monitor-stream jäsentäminen epäonnistui"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacat.c:1011
|
||||
msgid "Invalid sample specification"
|
||||
|
|
@ -2209,7 +2204,7 @@ msgstr "NIMI|#N AVAIN=ARVO"
|
|||
|
||||
#: src/utils/pacmd.c:59
|
||||
msgid "#N KEY=VALUE"
|
||||
msgstr "#N AVAIN=ARVO"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:61
|
||||
msgid "#N"
|
||||
|
|
@ -2233,7 +2228,7 @@ msgstr "TIEDOSTONIMI NIELU|#N"
|
|||
|
||||
#: src/utils/pacmd.c:69 src/utils/pactl.c:2645
|
||||
msgid "#N SINK|SOURCE"
|
||||
msgstr "#N SINKKI|LÄHDE"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:71 src/utils/pacmd.c:77 src/utils/pacmd.c:78
|
||||
msgid "1|0"
|
||||
|
|
@ -2249,23 +2244,23 @@ msgstr "NIMI|#N PORT"
|
|||
|
||||
#: src/utils/pacmd.c:74 src/utils/pactl.c:2658
|
||||
msgid "CARD-NAME|CARD-#N PORT OFFSET"
|
||||
msgstr "KORTIN NIMI|KORTIN-#N PORTTI OFFSET"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:75
|
||||
msgid "TARGET"
|
||||
msgstr "KOHDE"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:76
|
||||
msgid "NUMERIC-LEVEL"
|
||||
msgstr "NUMEROTASO"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:79
|
||||
msgid "FRAMES"
|
||||
msgstr "ÄÄNIRUUDUT"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659
|
||||
msgid "RECIPIENT MESSAGE [MESSAGE_PARAMETERS]"
|
||||
msgstr "VASTAAJAN VIESTI [MESSAGE_PARAMETERS]"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:82
|
||||
#, c-format
|
||||
|
|
@ -2375,12 +2370,6 @@ msgid ""
|
|||
"Client Index: %u\n"
|
||||
"Tile Size: %zu\n"
|
||||
msgstr ""
|
||||
"Palvelinmerkkijono: %s\n"
|
||||
"Kirjastoprotokollan versio: %u\n"
|
||||
"Palvelinprotokollan versio: %u\n"
|
||||
"On paikallinen: %s\n"
|
||||
"Asiakasindeksi: %u\n"
|
||||
"Laattojen koko: %zu\n"
|
||||
|
||||
#: src/utils/pactl.c:294
|
||||
#, c-format
|
||||
|
|
@ -2407,7 +2396,7 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr "saatavuus tuntematon"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
|
|
@ -2423,7 +2412,7 @@ msgstr "Tuntematon"
|
|||
|
||||
#: src/utils/pactl.c:332
|
||||
msgid "Aux"
|
||||
msgstr "Aux"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:335
|
||||
msgid "Line"
|
||||
|
|
@ -2431,27 +2420,27 @@ msgstr "Linja"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr "Mikrofoni"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
msgid "Handset"
|
||||
msgstr "Luuri"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
msgstr "Kuuloke"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr "SPDIF"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr "HDMI"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
msgstr "TV"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
|
|
@ -2522,11 +2511,11 @@ msgstr "\tPortit:\n"
|
|||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (tyyppi: %s, prioriteetti: %u%s%s, %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
msgstr ", saatavuusryhmä: "
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
|
|
@ -2664,7 +2653,6 @@ msgstr "\tProfiilit:\n"
|
|||
#, c-format
|
||||
msgid "\t\t%s: %s (sinks: %u, sources: %u, priority: %u, available: %s)\n"
|
||||
msgstr ""
|
||||
"\t\t%s: %s (nielut: %u, lähteet: %u, prioriteetti: %u, käytettävissä: %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:1245
|
||||
#, c-format
|
||||
|
|
@ -2676,8 +2664,6 @@ msgstr "\tAktiivinen profiili: %s\n"
|
|||
msgid ""
|
||||
"\t\t%s: %s (type: %s, priority: %u, latency offset: %<PRId64> usec%s%s, %s)\n"
|
||||
msgstr ""
|
||||
"\t\t%s: %s (tyyppi: %s, prioriteetti: %u, latenssipoikkeama: %<PRId64> "
|
||||
"usec%s%s, %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:1261
|
||||
#, c-format
|
||||
|
|
@ -2685,13 +2671,11 @@ msgid ""
|
|||
"\t\t\tProperties:\n"
|
||||
"\t\t\t\t%s\n"
|
||||
msgstr ""
|
||||
"\t\t\tOminaisuudet:\n"
|
||||
"\t\t\t\t%s\n"
|
||||
|
||||
#: src/utils/pactl.c:1265
|
||||
#, c-format
|
||||
msgid "\t\t\tPart of profile(s): %s"
|
||||
msgstr "\t\t\tOsa profiilista (profiileista): %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1290 src/utils/pactl.c:1954 src/utils/pactl.c:2022
|
||||
#, c-format
|
||||
|
|
@ -2828,7 +2812,7 @@ msgstr "Viestin lähetys epäonnistui: %s"
|
|||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
msgid "list-handlers message failed: %s"
|
||||
msgstr "listakäsittelijöiden viesti epäonnistui: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
|
|
@ -2842,7 +2826,6 @@ msgstr "list-handlers viestivastaus ei ole JSON-taulukko"
|
|||
#, c-format
|
||||
msgid "list-handlers message response array element %d is not a JSON object"
|
||||
msgstr ""
|
||||
"listakäsittelijöiden viestivastaustaulukon elementti %d ei ole JSON-objekti"
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, c-format
|
||||
|
|
@ -2858,11 +2841,7 @@ msgid_plural ""
|
|||
"Failed to set volume: You tried to set volumes for %d channels, whereas "
|
||||
"channel(s) supported = %d\n"
|
||||
msgstr[0] ""
|
||||
"Äänenvoimakkuuden asettaminen epäonnistui: Yritit asettaa äänenvoimakkuutta "
|
||||
"%d kanavalle, kun taas tuetut kanavat = %d\n"
|
||||
msgstr[1] ""
|
||||
"Äänenvoimakkuuden asettaminen epäonnistui: Yritit asettaa äänenvoimakkuutta "
|
||||
"%d kanaville, kun taas tuetut kanavat = %d\n"
|
||||
|
||||
#: src/utils/pactl.c:2107
|
||||
#, c-format
|
||||
|
|
@ -2899,7 +2878,7 @@ msgstr "lähde"
|
|||
|
||||
#: src/utils/pactl.c:2167
|
||||
msgid "sink-input"
|
||||
msgstr "nielun sisääntulo"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2170
|
||||
msgid "source-output"
|
||||
|
|
@ -2915,7 +2894,7 @@ msgstr "asiakas"
|
|||
|
||||
#: src/utils/pactl.c:2179
|
||||
msgid "sample-cache"
|
||||
msgstr "näyte-välimuisti"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2182
|
||||
msgid "server"
|
||||
|
|
@ -2923,12 +2902,12 @@ msgstr "palvelin"
|
|||
|
||||
#: src/utils/pactl.c:2185
|
||||
msgid "card"
|
||||
msgstr "kortti"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2206
|
||||
#, c-format
|
||||
msgid "Event '%s' on %s #%u\n"
|
||||
msgstr "Tapahtuma '%s' %s #%u\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2514
|
||||
msgid "Got SIGINT, exiting."
|
||||
|
|
@ -2940,7 +2919,7 @@ msgstr "Virheellinen äänenvoimakkuuden määritys"
|
|||
|
||||
#: src/utils/pactl.c:2581
|
||||
msgid "Volume outside permissible range.\n"
|
||||
msgstr "Äänenvoimakkuus sallitun alueen ulkopuolella.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2594
|
||||
msgid "Invalid number of volume specifications.\n"
|
||||
|
|
@ -2972,7 +2951,7 @@ msgstr "TIEDOSTONIMI [NIMI]"
|
|||
|
||||
#: src/utils/pactl.c:2641
|
||||
msgid "NAME [SINK]"
|
||||
msgstr "NIMI [NIELU]"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2653
|
||||
msgid "NAME|#N VOLUME [VOLUME ...]"
|
||||
|
|
@ -3001,9 +2980,6 @@ msgid ""
|
|||
"The special names @DEFAULT_SINK@, @DEFAULT_SOURCE@ and @DEFAULT_MONITOR@\n"
|
||||
"can be used to specify the default sink, source and monitor.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Erikoisnimiä @DEFAULT_SINK@, @DEFAULT_SOURCE@ ja @DEFAULT_MONITOR@\n"
|
||||
"voidaan käyttää oletusnielun, lähteen ja näytön määrittämiseen.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, c-format
|
||||
|
|
@ -3047,7 +3023,7 @@ msgstr "Virheellinen muotoarvo ”%s”"
|
|||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
msgid "Specify nothing, or one of: %s"
|
||||
msgstr "Määritä tyhjäksi tai jokin seuraavista: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2788
|
||||
msgid "Please specify a sample file to load"
|
||||
|
|
@ -3203,8 +3179,6 @@ msgid ""
|
|||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
msgstr ""
|
||||
"Ylimääräisiä argumentteja annettu, ne jätetään huomiotta. Huomaa, että "
|
||||
"kaikki viestiparametrit on annettava yhtenä merkkijonona."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
|
|
@ -3220,7 +3194,7 @@ msgstr "Kortin nimi/indeksi ja portin nimi ja viivästysasetus on annettava"
|
|||
|
||||
#: src/utils/pactl.c:3201
|
||||
msgid "Could not parse latency offset"
|
||||
msgstr "Latenssipoikkeamaa ei voitu jäsentää"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:3213
|
||||
msgid "No valid command specified."
|
||||
|
|
|
|||
71
po/fr.po
71
po/fr.po
|
|
@ -16,9 +16,9 @@ msgstr ""
|
|||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2023-03-19 17:20+0000\n"
|
||||
"Last-Translator: grimst <grimaitres@gmail.com>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2020-12-13 17:35+0000\n"
|
||||
"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
|
||||
"Language-Team: French <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/fr/>\n"
|
||||
"Language: fr\n"
|
||||
|
|
@ -26,10 +26,10 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.15.2\n"
|
||||
"X-Generator: Weblate 4.3.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"\n"
|
||||
|
|
@ -114,8 +114,8 @@ msgstr ""
|
|||
" --start Lancer le démon s’il n’est pas en "
|
||||
"cours d’exécution\n"
|
||||
" -k --kill Tuer un démon en cours d’exécution\n"
|
||||
" --check Rechercher un démon en cours d’"
|
||||
"exécution (retourne uniquement un code de sortie)\n"
|
||||
" --check Rechercher un démon en cours "
|
||||
"d’exécution (retourne uniquement un code de sortie)\n"
|
||||
"\n"
|
||||
"OPTIONS :\n"
|
||||
" --system[=BOOL] Exécuter en tant qu’instance "
|
||||
|
|
@ -136,8 +136,8 @@ msgstr ""
|
|||
"déchargement de modules\n"
|
||||
" requis par l’utilisateur de module "
|
||||
"après le lancement\n"
|
||||
" --disallow-exit[=BOOL] Interdire la sortie requise par l’"
|
||||
"utilisateur\n"
|
||||
" --disallow-exit[=BOOL] Interdire la sortie requise par "
|
||||
"l’utilisateur\n"
|
||||
" --exit-idle-time=SECS Quitter le démon lorsqu’inactif et "
|
||||
"que cette\n"
|
||||
" période s’est écoulée\n"
|
||||
|
|
@ -169,8 +169,6 @@ msgstr ""
|
|||
"charge\n"
|
||||
" --disable-shm[=BOOL] Désactiver la prise en charge de "
|
||||
"mémoire partagée.\n"
|
||||
" --enable-memfd[=BOOL] Activer le support de mémoire "
|
||||
"partagée memfd.\n"
|
||||
"\n"
|
||||
"SCRIPT DE LANCEMENT :\n"
|
||||
" -L, --load=\"MODULE ARGUMENTS\" Charger le module du greffon "
|
||||
|
|
@ -503,23 +501,29 @@ msgstr ""
|
|||
"plus précise en cours."
|
||||
|
||||
#: src/daemon/main.c:878
|
||||
#, fuzzy
|
||||
msgid "Running in system mode, but --disallow-exit not set."
|
||||
msgstr "Exécution en mode système, mais --disallow-exit n’est pas défini."
|
||||
msgstr ""
|
||||
"Le démon s’exécute en mode système, mais --disallow-exit n’est pas défini !"
|
||||
|
||||
#: src/daemon/main.c:881
|
||||
#, fuzzy
|
||||
msgid "Running in system mode, but --disallow-module-loading not set."
|
||||
msgstr ""
|
||||
"Exécution en mode système, mais --disallow-module-loading n’est pas défini."
|
||||
"Le démon s’exécute en mode système, mais --disallow-module-loading n’est pas "
|
||||
"défini !"
|
||||
|
||||
#: src/daemon/main.c:884
|
||||
#, fuzzy
|
||||
msgid "Running in system mode, forcibly disabling SHM mode."
|
||||
msgstr "Exécution en mode système, désactivation forcée du mode SHM."
|
||||
msgstr "Le démon s’exécute en mode système, désactivation forcée du mode SHM !"
|
||||
|
||||
#: src/daemon/main.c:889
|
||||
#, fuzzy
|
||||
msgid "Running in system mode, forcibly disabling exit idle time."
|
||||
msgstr ""
|
||||
"Exécution en mode système, désactivation forcée de la fermeture après délai "
|
||||
"d’inactivité."
|
||||
"Le démon s’exécute en mode système, désactivation forcée de la fermeture "
|
||||
"après délai d’inactivité !"
|
||||
|
||||
#: src/daemon/main.c:922
|
||||
msgid "Failed to acquire stdio."
|
||||
|
|
@ -554,6 +558,7 @@ msgid "Failed to get machine ID"
|
|||
msgstr "Échec lors de l’obtention de l’ID de la machine"
|
||||
|
||||
#: src/daemon/main.c:1145
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"OK, so you are running PA in system mode. Please make sure that you actually "
|
||||
"do want to do that.\n"
|
||||
|
|
@ -561,11 +566,13 @@ msgid ""
|
|||
"Documentation/User/WhatIsWrongWithSystemWide/ for an explanation why system "
|
||||
"mode is usually a bad idea."
|
||||
msgstr ""
|
||||
"Ok, vous êtes en train d'exécuter PA en mode système. Assurez-vous que vous "
|
||||
"voulez vraiment faire cela.\n"
|
||||
"Vous exécutez PA dans un mode système. Sachez que vous ne devriez pas faire "
|
||||
"cela.\n"
|
||||
"Si vous choisissez malgré tout de le faire, vous êtes responsable de tout "
|
||||
"dysfonctionnement inattendu.\n"
|
||||
"Veuillez lire http://www.freedesktop.org/wiki/Software/PulseAudio/"
|
||||
"Documentation/User/WhatIsWrongWithSystemWide/ pour savoir pourquoi le mode "
|
||||
"système est généralement une mauvaise idée."
|
||||
"Documentation/User/WhatIsWrongWithSystemWide/ pour comprendre pourquoi le "
|
||||
"mode système est généralement une mauvaise idée."
|
||||
|
||||
#: src/daemon/main.c:1161
|
||||
msgid "pa_pid_file_create() failed."
|
||||
|
|
@ -576,8 +583,9 @@ msgid "pa_core_new() failed."
|
|||
msgstr "Échec de pa_core_new()."
|
||||
|
||||
#: src/daemon/main.c:1268
|
||||
#, fuzzy
|
||||
msgid "command line arguments"
|
||||
msgstr "paramètres de la ligne de commande"
|
||||
msgstr "Trop de paramètres."
|
||||
|
||||
#: src/daemon/main.c:1275
|
||||
#, c-format
|
||||
|
|
@ -1176,8 +1184,8 @@ msgstr ""
|
|||
"autoloaded=<définir si ce module est chargé automatiquement> "
|
||||
"use_volume_sharing=<oui ou non> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1241,14 +1249,14 @@ msgstr "Audio sur @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel pour %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel vers %s/%s"
|
||||
|
|
@ -1598,11 +1606,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Cible du journal non valide."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio interne"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1850,10 +1858,11 @@ msgid "Cork request stack is empty: uncorking stream"
|
|||
msgstr "La pile de requêtes de bouchons est vide : débouchonnage du flux"
|
||||
|
||||
#: src/utils/pacat.c:425
|
||||
#, fuzzy
|
||||
msgid "Warning: Received more uncork requests than cork requests."
|
||||
msgstr ""
|
||||
"Avertissement : il a été reçu davantage de requêtes de débouchonnage que de "
|
||||
"requêtes de bouchonnage."
|
||||
"Avertissement : il a été reçu davantage de requêtes de bouchonnage que de "
|
||||
"requêtes de débouchonnage !"
|
||||
|
||||
#: src/utils/pacat.c:450
|
||||
#, c-format
|
||||
|
|
|
|||
90
po/gl.po
90
po/gl.po
|
|
@ -11,8 +11,8 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2023-04-14 18:20+0000\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-09-01 12:04+0000\n"
|
||||
"Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: Galician <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/gl/>\n"
|
||||
|
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.15.2\n"
|
||||
"X-Generator: Weblate 4.8\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -189,13 +189,13 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "--fail agarda un argumento booleano"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
msgstr ""
|
||||
"--log-level agarda un argumento no nivel do rexistro (xa sexa numérico, "
|
||||
"dentro do rango de 0-4 ou ben un destos valores: error, warn, notice, info, "
|
||||
"debug)."
|
||||
"dentro do rango de 0..4; xa sexa un de debug, info, notice, warn, ou error)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -1150,8 +1150,8 @@ msgstr ""
|
|||
"de canles> autoloaded=<estabelézao se este módulo se carga automaticamente> "
|
||||
"use_volume_sharing=<si ou non> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Ecualizador baseado en FFT en %s"
|
||||
|
|
@ -1219,14 +1219,14 @@ msgstr "Son en @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Túnel para %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Túnel a %s/%s"
|
||||
|
|
@ -1236,6 +1236,7 @@ msgid "Virtual surround sink"
|
|||
msgstr "Sumideiro envolvente virtual"
|
||||
|
||||
#: src/modules/module-virtual-surround-sink.c:54
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"sink_name=<name for the sink> sink_properties=<properties for the sink> "
|
||||
"master=<name of sink to filter> sink_master=<name of sink to filter> "
|
||||
|
|
@ -1246,9 +1247,9 @@ msgid ""
|
|||
"this module is being loaded automatically> "
|
||||
msgstr ""
|
||||
"sink_name=<nome para o destino> sink_properties=<propiedades para o destino> "
|
||||
"master=<nome do destino a filtrar> sink_master=<nome do destino a filtrar> "
|
||||
"format=<formato de mostra> rate=<taxa de mostra> channels=<número de canles> "
|
||||
"channel_map=<asignación de canles> use_volume_sharing=<si ou non> "
|
||||
"master=<nome do destino a filtrar> sink_master=<nome do destino a "
|
||||
"filtrar>format=<formato de mostra> rate=<taxa de mostra> channels=<número de "
|
||||
"canles> channel_map=<asignación de canles> use_volume_sharing=<si ou non> "
|
||||
"force_flat_volume=<si ou non> hrir=/ruta/ao/left_hrir.wav "
|
||||
"autoloaded=<estabelecer se este módulo se vai cargar automaticamente> "
|
||||
|
||||
|
|
@ -1575,11 +1576,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Obxectivo do rexistro incorrecto."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio interno"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Módem"
|
||||
|
||||
|
|
@ -1894,7 +1895,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "Produciuse un fallo en pa_stream_update_timing_info(): %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1973,10 +1974,8 @@ msgstr ""
|
|||
" -v, --verbose Activar operacións verbosas\n"
|
||||
"\n"
|
||||
" -s, --server=SERVER O nome do servidor co que conectar\n"
|
||||
" -d, --device=DEVICE O nome do sumideiro/orixe ao que "
|
||||
"conectarse. Os nomes especiais @DEFAULT_SINK@, @DEFAULT_SOURCE@ e "
|
||||
"@DEFAULT_MONITOR@ poden usarse para especificar o sumideiro, orixe ou "
|
||||
"monitor predeterminado respectivamente.\n"
|
||||
" -d, --device=DEVICE O nome do dispositivo co que "
|
||||
"conectar\n"
|
||||
" -n, --client-name=NAME Como chamar a este cliente no "
|
||||
"servidor\n"
|
||||
" --stream-name=NAME Como chamar a este fluxo no "
|
||||
|
|
@ -1985,10 +1984,12 @@ msgstr ""
|
|||
"inicial no intervalo entre 0...65536\n"
|
||||
" --rate=SAMPLERATE A taxa de mostra en Hz (defaults to "
|
||||
"44100)\n"
|
||||
" --format=SAMPLEFORMAT O tipo de mostra, para máis "
|
||||
"información vexa\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" --format=SAMPLEFORMAT O tipo de mostra, unha de s16le, "
|
||||
"s16be, u8, float32le,\n"
|
||||
" float32be, ulaw, alaw, s32le, s32be, "
|
||||
"s24le, s24be,\n"
|
||||
" s24-32le, s24-32be (o predeterminado "
|
||||
"é s16ne)\n"
|
||||
" --channels=CHANNELS O número de canles, 1 para mono, 2 "
|
||||
"para estéreo\n"
|
||||
" (predeterminado é 2)\n"
|
||||
|
|
@ -2391,7 +2392,7 @@ msgid "Failed to get server information: %s"
|
|||
msgstr "Produciuse un fallo ao tentar obter información do servidor: %s"
|
||||
|
||||
#: src/utils/pactl.c:224 src/utils/pactl.c:236
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s\n"
|
||||
|
||||
|
|
@ -2472,18 +2473,22 @@ msgid "Earpiece"
|
|||
msgstr "Auricular"
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
#, fuzzy
|
||||
msgid "SPDIF"
|
||||
msgstr "SPDIF"
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
#, fuzzy
|
||||
msgid "HDMI"
|
||||
msgstr "HDMI"
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
#, fuzzy
|
||||
msgid "TV"
|
||||
msgstr "TV"
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
#, fuzzy
|
||||
msgid "USB"
|
||||
msgstr "USB"
|
||||
|
||||
|
|
@ -2863,18 +2868,15 @@ msgstr "Produciuse un fallo no mensaxe list-handlers: %s"
|
|||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr ""
|
||||
"Non foi posíbel analizar correctamente a resposta da mensaxe de list-handlers"
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr "A respostaa da mensaxe de list-handlers non é unha matriz de JSON"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
msgid "list-handlers message response array element %d is not a JSON object"
|
||||
msgstr ""
|
||||
"O elemento %d da matriz de resposta da mensaxe de list-handlers non é un "
|
||||
"obxecto JSON"
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, c-format
|
||||
|
|
@ -3038,7 +3040,7 @@ msgstr ""
|
|||
"poden usarse para especificar o destino, orixe e monitor predeterminados.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3054,9 +3056,6 @@ msgstr ""
|
|||
"\n"
|
||||
" -h, --help Mostra esta axuda\n"
|
||||
" --version Mostra a versión\n"
|
||||
"\n"
|
||||
" -f, --format=FORMAT O formato da saída. Puede ser "
|
||||
"«normal» o «json»\n"
|
||||
" -s, --server=SERVIDOR O nome do servidor co que conectar\n"
|
||||
" -n, --client-name=NOME Como chamar a este cliente no "
|
||||
"servidor\n"
|
||||
|
|
@ -3073,9 +3072,9 @@ msgstr ""
|
|||
"Vinculado con libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Formato do valor «%s» incorrecto"
|
||||
msgstr "Nome do fluxo «%s» incorrecto"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3160,16 +3159,18 @@ msgid "You have to specify a source name"
|
|||
msgstr "Ten que especificar un nome para a fonte"
|
||||
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076
|
||||
#, fuzzy
|
||||
msgid "You have to specify a sink name/index"
|
||||
msgstr "Ten que especificar un nome/índice de destino"
|
||||
msgstr "Ten que especificar un nome de destino"
|
||||
|
||||
#: src/utils/pactl.c:3008
|
||||
msgid "You have to specify a sink name/index and a volume"
|
||||
msgstr "Debe especificar un nome/índice de destino e un volume"
|
||||
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
#, fuzzy
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "Ten que especificar un nome/índice de fonte"
|
||||
msgstr "Ten que especificar un nome para a fonte"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
@ -3234,18 +3235,15 @@ msgid "Invalid source output index specification"
|
|||
msgstr "Especificación de índice de saída de orixe non válida"
|
||||
|
||||
#: src/utils/pactl.c:3162
|
||||
#, fuzzy
|
||||
msgid "You have to specify at least an object path and a message name"
|
||||
msgstr ""
|
||||
"Debe especificar cando menos unha ruta de acceso ao obxecto e un nome de "
|
||||
"mensaxe"
|
||||
msgstr "Debe especificar un nome/índice de destino e un nome de porto"
|
||||
|
||||
#: src/utils/pactl.c:3172
|
||||
msgid ""
|
||||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
msgstr ""
|
||||
"Fornecéronse argumentos de máis, serán ignorados. Teña en conta que todos os "
|
||||
"parámetros de mensaxe deben ingresarse como unha única cadea."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
|
|
@ -3310,7 +3308,7 @@ msgid "WARNING: Child process terminated by signal %u\n"
|
|||
msgstr "AVISO: o proceso fillo foi rematado polo sinal %u\n"
|
||||
|
||||
#: src/utils/pasuspender.c:228
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options] -- PROGRAM [ARGUMENTS ...]\n"
|
||||
"\n"
|
||||
|
|
@ -3322,9 +3320,7 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [opcións] --PROGRAMA [ARGUMENTOS ...]... \n"
|
||||
"\n"
|
||||
"Suspende temporalmente PulseAudio mentres se executa o PROGRAMA.\n"
|
||||
"%s [opcións] ... \n"
|
||||
"\n"
|
||||
" -h, --help Mostra esta axuda\n"
|
||||
" --version Mostra a versión\n"
|
||||
|
|
|
|||
18
po/gu.po
18
po/gu.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:53+0000\n"
|
||||
"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n"
|
||||
"Language-Team: Gujarati\n"
|
||||
|
|
@ -1147,8 +1147,8 @@ msgstr ""
|
|||
"plugin name> label=<ladspa plugin label> control=<comma separated list of "
|
||||
"input control values>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1211,14 +1211,14 @@ msgstr "@HOSTNAME@ પર ઓડિયો"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1569,11 +1569,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] અયોગ્ય લોગ લક્ષ્ય '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "આંતરિક ઓડિયો"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "મોડેમ"
|
||||
|
||||
|
|
|
|||
18
po/he.po
18
po/he.po
|
|
@ -6,7 +6,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-05-12 11:02+0000\n"
|
||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||
"Language-Team: Hebrew <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -980,8 +980,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1038,14 +1038,14 @@ msgstr ""
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1382,11 +1382,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "צליל פנימי"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "מודם"
|
||||
|
||||
|
|
|
|||
32
po/hr.po
32
po/hr.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-03-28 19:10+0000\n"
|
||||
"Last-Translator: Gogo Gogsi <linux.hr@protonmail.com>\n"
|
||||
"Language-Team: Croatian <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1160,8 +1160,6 @@ msgstr ""
|
|||
"autoloaded=<postavi ako se ovaj modul učitava automatski> "
|
||||
"use_volume_sharing=<da ili ne> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
|
|
@ -1229,16 +1227,12 @@ msgstr "Zvuk na @NAZIVRAČUNALA@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel za %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
|
|
@ -1589,11 +1583,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neispravno odredište zapisa."
|
||||
|
||||
#: src/pulsecore/sink.c:3609 src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Ugrađeni zvuk"
|
||||
|
||||
#: src/pulsecore/sink.c:3614 src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1910,7 +1904,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() neuspjelo: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1991,9 +1985,7 @@ msgstr ""
|
|||
" -s, --server=POSLUŽITELJ Naziv poslužitelja za "
|
||||
"povezivanje\n"
|
||||
" -d, --device=UREĐAJ Naziv slivnika/izvora za "
|
||||
"povezivanje. Posebni nazivi @DEFAULT_SINK@, @DEFAULT_SOURCE@ i "
|
||||
"@DEFAULT_MONITOR@ mogu se koristiti za određivanje zadanog slivnika, izvora "
|
||||
"i nadgledanja.\n"
|
||||
"povezivanje\n"
|
||||
" -n, --client-name=NAZIV Naziv klijenta na poslužitelju\n"
|
||||
" --stream-name=NAZIV Naziv strujanja na poslužitelju\n"
|
||||
" --volume=GLASNOĆA ZVUKA Određuje početnu (linearnu) "
|
||||
|
|
@ -2002,7 +1994,7 @@ msgstr ""
|
|||
" --format=FORMAT UZORKA Vrsta uzorka, pogledajte\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" za moguće vrijednosti (zadano je "
|
||||
" za moguće vrijenosti (zadano je "
|
||||
"s16ne)\n"
|
||||
" --channels=KANALI Broj kanala, 1 za mono, 2 za stereo\n"
|
||||
" (zadano 2)\n"
|
||||
|
|
@ -2010,14 +2002,14 @@ msgstr ""
|
|||
"umjesto zadanog\n"
|
||||
" --fix-format Uzima uzorak formata iz slivnika/"
|
||||
"izvora s kojim\n"
|
||||
" je strujanje povezano.\n"
|
||||
" je tok povezan.\n"
|
||||
" --fix-rate Uzima frekvenciju iz slivnika/izvora "
|
||||
"s kojim\n"
|
||||
" je strujanje povezano.\n"
|
||||
" je tok povezan.\n"
|
||||
" --fix-channels Uzima broj kanala i mapiranje "
|
||||
"kanala\n"
|
||||
" iz slivnika/izvora s kojim je "
|
||||
"strujanje povezano.\n"
|
||||
" iz slivnika/izvora s kojim je tok "
|
||||
"povezan.\n"
|
||||
" --no-remix Ne smanjuj ili pojačavaj kanale.\n"
|
||||
" --no-remap Mapiraj kanale prema sadržaju "
|
||||
"umjesto nazivu.\n"
|
||||
|
|
@ -2029,8 +2021,8 @@ msgstr ""
|
|||
"msek.\n"
|
||||
" --process-time-msec=MSEK Zahtijevaj određeno vrijeme procesa "
|
||||
"po zahtjevu u msek.\n"
|
||||
" --property=SVOJSTVO=VRIJEDNOST Postavi određeno svojstvo za "
|
||||
"određenu vrijednost.\n"
|
||||
" --property=VLASNIŠTVO=VRIJEDNOST Postavi određeno vlasništvo "
|
||||
"za određenu vrijednost.\n"
|
||||
" --raw Snimaj/Reproduciraj osnovne PCM "
|
||||
"podatke.\n"
|
||||
" --passthrough Prolaz podataka.\n"
|
||||
|
|
|
|||
90
po/hu.po
90
po/hu.po
|
|
@ -10,9 +10,9 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2022-08-09 21:19+0000\n"
|
||||
"Last-Translator: Balázs Meskó <meskobalazs@mailbox.org>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-11-21 13:16+0000\n"
|
||||
"Last-Translator: . Ovari <ovari123@zoho.com>\n"
|
||||
"Language-Team: Hungarian <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/hu/>\n"
|
||||
"Language: hu\n"
|
||||
|
|
@ -20,13 +20,13 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.13\n"
|
||||
"X-Generator: Weblate 4.9\n"
|
||||
"X-Poedit-Language: Hungarian\n"
|
||||
"X-Poedit-Country: HUNGARY\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"\n"
|
||||
|
|
@ -187,6 +187,7 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "a --fail paraméter logikai értéket vár"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
|
|
@ -215,13 +216,14 @@ msgid "--use-pid-file expects boolean argument"
|
|||
msgstr "a --use-pid-file paraméter logikai értéket vár"
|
||||
|
||||
#: src/daemon/cmdline.c:328
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Invalid log target: use either 'syslog', 'journal', 'stderr' or 'auto' or a "
|
||||
"valid file name 'file:<path>', 'newfile:<path>'."
|
||||
msgstr ""
|
||||
"Érvénytelen naplózási cél: használja a „syslog”, „journal”, „stderr” vagy az "
|
||||
"„auto” egyikét, vagy egy érvényes fájlnevet: „file:<útvonal>”, "
|
||||
"„newfile:<útvonal>”."
|
||||
"„auto” egyikét, vagy egy érvényes fájlnevet: „file:<útvonal>”, „newfile:"
|
||||
"<útvonal>”."
|
||||
|
||||
#: src/daemon/cmdline.c:330
|
||||
msgid ""
|
||||
|
|
@ -958,7 +960,7 @@ msgstr ""
|
|||
"más érték volt."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1183 src/modules/alsa/alsa-util.c:1277
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"snd_pcm_avail() returned a value that is exceptionally large: %lu byte (%lu "
|
||||
"ms).\n"
|
||||
|
|
@ -981,7 +983,7 @@ msgstr[1] ""
|
|||
"ezt a problémát az ALSA fejlesztői felé."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1249
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"snd_pcm_delay() returned a value that is exceptionally large: %li byte (%s"
|
||||
"%lu ms).\n"
|
||||
|
|
@ -1017,7 +1019,7 @@ msgstr ""
|
|||
"ezt a problémát az ALSA fejlesztői felé."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1339
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu byte "
|
||||
"(%lu ms).\n"
|
||||
|
|
@ -1161,8 +1163,8 @@ msgstr ""
|
|||
"channel_map=<csatornaleképzés> autoloaded=<beállítva, ha ez a modul "
|
||||
"automatikusan betöltődik> use_volume_sharing=<igen vagy nem> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT alapú hangszínszabályzó ezen: %s"
|
||||
|
|
@ -1176,6 +1178,7 @@ msgid "Virtual LADSPA sink"
|
|||
msgstr "Látszólagos LADSPA nyelő"
|
||||
|
||||
#: src/modules/module-ladspa-sink.c:54
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"sink_name=<name for the sink> sink_properties=<properties for the sink> "
|
||||
"sink_input_properties=<properties for the sink input> master=<name of sink "
|
||||
|
|
@ -1194,8 +1197,7 @@ msgstr ""
|
|||
"control=<bemenetszabályzó értékek vesszővel elválasztott listája> "
|
||||
"input_ladspaport_map=<bemeneti LADSPA portnevek vesszővel elválasztott "
|
||||
"listája> output_ladspaport_map=<kimeneti LADSPA portnevek vesszővel "
|
||||
"elválasztott listája> autoloaded=<állítsa be ha a modul automatikusan "
|
||||
"töltődik be> "
|
||||
"elválasztott listája> "
|
||||
|
||||
#: src/modules/module-null-sink.c:46
|
||||
msgid "Clocked NULL sink"
|
||||
|
|
@ -1228,14 +1230,14 @@ msgstr "Hangok ezen a számítógépen: @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Alagút ennek: %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Alagút ehhez: %s/%s"
|
||||
|
|
@ -1245,6 +1247,7 @@ msgid "Virtual surround sink"
|
|||
msgstr "Virtuális térhatású nyelő"
|
||||
|
||||
#: src/modules/module-virtual-surround-sink.c:54
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"sink_name=<name for the sink> sink_properties=<properties for the sink> "
|
||||
"master=<name of sink to filter> sink_master=<name of sink to filter> "
|
||||
|
|
@ -1259,7 +1262,6 @@ msgstr ""
|
|||
"rate=<mintavételezési gyakoriság> channels=<csatornák száma> "
|
||||
"channel_map=<csatornaleképzés> use_volume_sharing=<igen vag nem> "
|
||||
"force_flat_volume=<igen vag nem> hrir=/útvonal/left_hrir.wav "
|
||||
"autoloaded=<állítsa be ha a modul automatikusan töltődik be> "
|
||||
|
||||
#: src/modules/raop/module-raop-discover.c:295
|
||||
msgid "Unknown device model"
|
||||
|
|
@ -1544,7 +1546,7 @@ msgid "invalid"
|
|||
msgstr "érvénytelen"
|
||||
|
||||
#: src/pulsecore/core-util.c:1790
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"XDG_RUNTIME_DIR (%s) is not owned by us (uid %d), but by uid %d! (This could "
|
||||
"e.g. happen if you try to connect to a non-root PulseAudio as a root user, "
|
||||
|
|
@ -1552,7 +1554,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Az XDG_RUNTIME_DIR (%s) tulajdonosa nem a PulseAudio (uid %d), hanem ez az "
|
||||
"uid: %d! (Ez például akkor fordulhat elő, ha egy nem rootként futó "
|
||||
"PulseAudióhoz root felhasználóként próbál csatlakozni a natív protokollon. "
|
||||
"PulseAudio-hoz root felhasználóként próbál csatlakozni a natív protokollon. "
|
||||
"Ne tegye.)"
|
||||
|
||||
#: src/pulsecore/core-util.h:97
|
||||
|
|
@ -1584,11 +1586,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Érvénytelen naplózási cél."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Belső hangforrás"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1908,7 +1910,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "A „pa_stream_update_timing_info()” függvényhívás meghiúsult: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1975,7 +1977,7 @@ msgid ""
|
|||
" --monitor-stream=INDEX Record from the sink input with "
|
||||
"index INDEX.\n"
|
||||
msgstr ""
|
||||
"%s [KAPCSOLÓK]\n"
|
||||
"%s [KAPCSOLÓ]\n"
|
||||
"\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
|
|
@ -2018,8 +2020,8 @@ msgstr ""
|
|||
" --fix-channels A csatornaszám és a csatornaleképzés "
|
||||
"átvétele a nyelőtől/forrástól,\n"
|
||||
" amelyhez az adatfolyam csatlakozik.\n"
|
||||
" --no-remix Ne keverjen fel vagy le csatornákat."
|
||||
"\n"
|
||||
" --no-remix Ne keverjen fel vagy le "
|
||||
"csatornákat.\n"
|
||||
" --no-remap Csatornák leképezése index és nem "
|
||||
"név szerint.\n"
|
||||
" --latency=BÁJT A bájtokban megadott késleltetés "
|
||||
|
|
@ -2374,14 +2376,14 @@ msgid "Failed to get statistics: %s"
|
|||
msgstr "Nem sikerült a statisztika lekérdezése: %s"
|
||||
|
||||
#: src/utils/pactl.c:199
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Currently in use: %u block containing %s bytes total.\n"
|
||||
msgid_plural "Currently in use: %u blocks containing %s bytes total.\n"
|
||||
msgstr[0] "Jelenleg használt: %u blokk, összesen %s bájt tartalommal.\n"
|
||||
msgstr[1] "Jelenleg használt: %u blokk, összesen %s bájt tartalommal.\n"
|
||||
|
||||
#: src/utils/pactl.c:205
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Allocated during whole lifetime: %u block containing %s bytes total.\n"
|
||||
msgid_plural ""
|
||||
"Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
|
||||
|
|
@ -2560,9 +2562,9 @@ msgid "\tPorts:\n"
|
|||
msgstr "\tPortok:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (típus: %s, prioritás: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (nyelők: %u, források: %u, prioritás: %u, elérhető: %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
|
|
@ -2715,8 +2717,6 @@ msgstr "\tAktív profil: %s\n"
|
|||
msgid ""
|
||||
"\t\t%s: %s (type: %s, priority: %u, latency offset: %<PRId64> usec%s%s, %s)\n"
|
||||
msgstr ""
|
||||
"\t\t%s: %s (típus: %s, prioritás: %u, késleltetési eltolás: %<PRId64> "
|
||||
"usec%s%s, %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:1261
|
||||
#, c-format
|
||||
|
|
@ -2888,7 +2888,7 @@ msgid "Failed to unload module: Module %s not loaded"
|
|||
msgstr "Nem sikerült eltávolítani a modult: nincs betöltve %s nevű modul"
|
||||
|
||||
#: src/utils/pactl.c:1818
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"Failed to set volume: You tried to set volumes for %d channel, whereas "
|
||||
"channel(s) supported = %d\n"
|
||||
|
|
@ -3044,7 +3044,7 @@ msgstr ""
|
|||
"használhatók az alapértelmezett nyelő, forrás és megfigyelő megadására.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3061,8 +3061,6 @@ msgstr ""
|
|||
" -h, --help Ezen súgó megjelenítése\n"
|
||||
" --version Verziószám megjelenítése\n"
|
||||
"\n"
|
||||
" -f, --format=FORMAT A kimenet formátuma. „normal” vagy "
|
||||
"„json”.\n"
|
||||
" -s, --server=KISZOLGÁLÓ Csatlakozás ehhez a kiszolgálóhoz\n"
|
||||
" -n, --client-name=NÉV A kliens neve a kiszolgálón\n"
|
||||
|
||||
|
|
@ -3161,16 +3159,18 @@ msgid "You have to specify a source name"
|
|||
msgstr "Meg kell adnia egy forrás nevét"
|
||||
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076
|
||||
#, fuzzy
|
||||
msgid "You have to specify a sink name/index"
|
||||
msgstr "Meg kell adnia egy nyelő nevét/indexét"
|
||||
msgstr "Meg kell adnia egy nyelő nevét"
|
||||
|
||||
#: src/utils/pactl.c:3008
|
||||
msgid "You have to specify a sink name/index and a volume"
|
||||
msgstr "Meg kell adnia egy nyelő nevét vagy indexét és egy hangerőt"
|
||||
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
#, fuzzy
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "Meg kell adnia egy forrás nevét/indexét"
|
||||
msgstr "Meg kell adnia egy forrás nevét"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
@ -3235,17 +3235,15 @@ msgid "Invalid source output index specification"
|
|||
msgstr "A forrás bemeneti indexének megadása érvénytelen"
|
||||
|
||||
#: src/utils/pactl.c:3162
|
||||
#, fuzzy
|
||||
msgid "You have to specify at least an object path and a message name"
|
||||
msgstr "Meg kell adnia legalább egy objektumútvonalat és egy üzenetnevet"
|
||||
msgstr "Meg kell adnia a nyelő nevét vagy indexét, és egy port nevét"
|
||||
|
||||
#: src/utils/pactl.c:3172
|
||||
msgid ""
|
||||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
msgstr ""
|
||||
"Túl sok argumentum lett megadva, figyelmen kívül lesznek hagyva. Vegye "
|
||||
"figyelembe, hogy az üzenetparamétereket egyetlen karakterláncban kell "
|
||||
"megadni."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
|
|
@ -3311,7 +3309,7 @@ msgstr ""
|
|||
"FIGYELMEZTETÉS: A gyermek folyamat a következő szignállal fejeződött be: %u\n"
|
||||
|
||||
#: src/utils/pasuspender.c:228
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options] -- PROGRAM [ARGUMENTS ...]\n"
|
||||
"\n"
|
||||
|
|
@ -3323,9 +3321,7 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [KAPCSOLÓK] -- PROGRAM [ARGUMENTUMOK …]\n"
|
||||
"\n"
|
||||
"A PulseAudio ideiglenes felfüggesztése, amíg a PROGRAM fut.\n"
|
||||
"%s [KAPCSOLÓK] ... \n"
|
||||
"\n"
|
||||
" -h, --help Ezen súgó megjelenítése\n"
|
||||
" --version Verziószám megjelenítése\n"
|
||||
|
|
|
|||
176
po/id.po
176
po/id.po
|
|
@ -9,8 +9,8 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2024-11-03 10:40+0000\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-09-24 12:05+0000\n"
|
||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||
"Language-Team: Indonesian <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/id/>\n"
|
||||
|
|
@ -19,10 +19,10 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.8.2\n"
|
||||
"X-Generator: Weblate 4.8\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"\n"
|
||||
|
|
@ -113,8 +113,8 @@ msgstr ""
|
|||
"OPSI:\n"
|
||||
" --system[=BOOL] Jalankan sebagai instansi seluruh "
|
||||
"sistem\n"
|
||||
" -D, --daemonize[=BOOL] Jadikan daemon setelah awal mula\n"
|
||||
" --fail[=BOOL] Keluar ketika awal mula gagal\n"
|
||||
" -D, --daemonize[=BOOL] Jadikan daemon setelah awalan\n"
|
||||
" --fail[=BOOL] Keluar ketika awalan gagal\n"
|
||||
" --high-priority[=BOOL] Coba tata ke aras nice tinggi\n"
|
||||
" (hanya tersedia sebagai root, ketika "
|
||||
"SUID\n"
|
||||
|
|
@ -126,19 +126,21 @@ msgstr ""
|
|||
" atau RLIMIT_RTPRIO yang dinaikkan)\n"
|
||||
" --disallow-module-loading[=BOOL] Larang muat/bongkar modul yang "
|
||||
"diminta\n"
|
||||
" pengguna setelah awal mula\n"
|
||||
" pengguna setelah awalan\n"
|
||||
" --disallow-exit[=BOOL] Larang permintaan keluar dari "
|
||||
"pengguna\n"
|
||||
" --exit-idle-time=SECS Matikan daemon ketika menganggur "
|
||||
"dan\n"
|
||||
" waktu ini berlalu\n"
|
||||
" waktu ini habis\n"
|
||||
" --module-idle-time=SECS Bongkar modul yang dimuat sendiri "
|
||||
"ketika\n"
|
||||
" menganggur dan waktu ini habis\n"
|
||||
" --scache-idle-time=SECS Bongkar contoh yang dimuat sendiri "
|
||||
"ketika\n"
|
||||
" menganggur dan waktu ini berlalu\n"
|
||||
" menganggur dan waktu ini habis\n"
|
||||
" --log-level[=LEVEL] Naikkan atau tata aras kerincian\n"
|
||||
" -v --verbose Naikkan aras kerincian\n"
|
||||
" --log-target={auto,syslog,stderr,file:PATH,newfile:PATH} \n"
|
||||
" Nyatakan target log\n"
|
||||
" -v Naikkan aras kerincian\n"
|
||||
" --log-target={auto,syslog,stderr} Nyatakan target log\n"
|
||||
" --log-meta[=BOOL] Sertakan lokasi kode dalam pesan "
|
||||
"log\n"
|
||||
" --log-time[=BOOL] Sertakan penanda waktu dalam pesan "
|
||||
|
|
@ -157,10 +159,8 @@ msgstr ""
|
|||
" --no-cpu-limit[=BOOL] Jangan pasang pembatas beban CPU\n"
|
||||
" pada platform yang mendukungannya.\n"
|
||||
" --disable-shm[=BOOL] Matikan dukungan memori bersama.\n"
|
||||
" --enable-memfd[=BOOL] Fungsikan dukungan memori bersama "
|
||||
"memfd.\n"
|
||||
"\n"
|
||||
"SKRIP AWAL MULA:\n"
|
||||
"SKRIP AWALAN:\n"
|
||||
" -L, --load=\"ARGUMEN MODUL\" Muat modul plugin yang dinyatakan\n"
|
||||
" dengan argumen yang disertakan\n"
|
||||
" -F, --file=NAMABERKAS Jalankan skrip yang dinyatakan\n"
|
||||
|
|
@ -179,12 +179,13 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "--fail mengharapkan argumen bool"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
msgstr ""
|
||||
"--log-level mengharapkan argumen aras log (bisa berupa angka 0..4 atau salah "
|
||||
"satu dari error, warn, notice, info, debug)."
|
||||
"satu dari debug, info, notice, warn, error)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -590,10 +591,12 @@ msgid "Docking Station Microphone"
|
|||
msgstr "Mikrofon Docking Station"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2711
|
||||
#, fuzzy
|
||||
msgid "Docking Station Line In"
|
||||
msgstr "Jalur Masuk Docking Station"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2712 src/modules/alsa/alsa-mixer.c:2803
|
||||
#, fuzzy
|
||||
msgid "Line In"
|
||||
msgstr "Jalur Masuk"
|
||||
|
||||
|
|
@ -695,6 +698,7 @@ msgid "Headphones Mono Output"
|
|||
msgstr "Keluaran Mono Headphone"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2810
|
||||
#, fuzzy
|
||||
msgid "Line Out"
|
||||
msgstr "Jalur Keluar"
|
||||
|
||||
|
|
@ -727,8 +731,9 @@ msgid "Multichannel Output"
|
|||
msgstr "Keluaran Multikanal"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2818
|
||||
#, fuzzy
|
||||
msgid "Game Output"
|
||||
msgstr "Keluaran Game"
|
||||
msgstr "Keluaran %s"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2819 src/modules/alsa/alsa-mixer.c:2820
|
||||
msgid "Chat Output"
|
||||
|
|
@ -936,7 +941,7 @@ msgstr ""
|
|||
"mengembalikan 0 atau nilai lain < min_avail."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1183 src/modules/alsa/alsa-util.c:1277
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"snd_pcm_avail() returned a value that is exceptionally large: %lu byte (%lu "
|
||||
"ms).\n"
|
||||
|
|
@ -948,13 +953,13 @@ msgid_plural ""
|
|||
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
|
||||
"to the ALSA developers."
|
||||
msgstr[0] ""
|
||||
"snd_pcm_avail() mengembalikan nilai yang luar biasa besar: %lu byte (%lu ms)."
|
||||
"\n"
|
||||
"snd_pcm_avail() mengembalikan nilai yang luar biasa besar: %lu byte (%lu "
|
||||
"ms).\n"
|
||||
"Sangat mungkin ini adalah kutu pada driver ALSA '%s'. Silakan laporkan hal "
|
||||
"ini ke para pengembang ALSA."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1249
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"snd_pcm_delay() returned a value that is exceptionally large: %li byte (%s"
|
||||
"%lu ms).\n"
|
||||
|
|
@ -985,7 +990,7 @@ msgstr ""
|
|||
"kasus ini ke para pengembang ALSA."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1339
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu byte "
|
||||
"(%lu ms).\n"
|
||||
|
|
@ -997,8 +1002,8 @@ msgid_plural ""
|
|||
"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
|
||||
"to the ALSA developers."
|
||||
msgstr[0] ""
|
||||
"snd_pcm_mmap_begin() mengembalikan nilai yang luar biasa besar: %lu byte ("
|
||||
"%lu ms).\n"
|
||||
"snd_pcm_mmap_begin() mengembalikan nilai yang luar biasa besar: %lu byte "
|
||||
"(%lu ms).\n"
|
||||
"Sangat mungkin ini adalah kutu pada driver ALSA '%s'. Silakan laporkan hal "
|
||||
"ini ke para pengembang ALSA."
|
||||
|
||||
|
|
@ -1038,30 +1043,37 @@ msgid "Phone"
|
|||
msgstr "Telepon"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2042
|
||||
#, fuzzy
|
||||
msgid "High Fidelity Playback (A2DP Sink)"
|
||||
msgstr "Putar High Fidelity (Muara A2DP)"
|
||||
msgstr "High Fidelity Playback (Muara A2DP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2054
|
||||
#, fuzzy
|
||||
msgid "High Fidelity Capture (A2DP Source)"
|
||||
msgstr "Penangkapan High Fidelity (Sumber A2DP)"
|
||||
msgstr "High Fidelity Capture (Sumber A2DP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2066
|
||||
#, fuzzy
|
||||
msgid "Headset Head Unit (HSP)"
|
||||
msgstr "Headset Head Unit (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2079
|
||||
#, fuzzy
|
||||
msgid "Headset Audio Gateway (HSP)"
|
||||
msgstr "Gateway Audio Headset (HSP/HFP)"
|
||||
msgstr "Headset Audio Gateway (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2092
|
||||
#, fuzzy
|
||||
msgid "Handsfree Head Unit (HFP)"
|
||||
msgstr "Unit Kepala Handsfree (HFP)"
|
||||
msgstr "Headset Head Unit (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2105
|
||||
#, fuzzy
|
||||
msgid "Handsfree Audio Gateway (HFP)"
|
||||
msgstr "Gateway Audio Handsfree (HSP/HFP)"
|
||||
msgstr "Headset Audio Gateway (HSP/HFP)"
|
||||
|
||||
#: src/modules/echo-cancel/module-echo-cancel.c:59
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"source_name=<name for the source> source_properties=<properties for the "
|
||||
"source> source_master=<name of source to filter> sink_name=<name for the "
|
||||
|
|
@ -1074,16 +1086,16 @@ msgid ""
|
|||
"loaded automatically> use_volume_sharing=<yes or no> use_master_format=<yes "
|
||||
"or no> "
|
||||
msgstr ""
|
||||
"source_name=<nama sumber> source_properties=<properti sumber> "
|
||||
"source_master=<nama sumber untuk disaring> sink_name=<nama muara> "
|
||||
"sink_properties=<properti muara> sink_master=<nama muara untuk disaraing> "
|
||||
"adjust_time=<seberapa sering menyetel ulang laju dalam detik> "
|
||||
"adjust_threshold=<seberapa banyak drift disetel ulang setelahnya dalam mili "
|
||||
"detik> format=<format cuplikan> rate=<laju cuplikan> channels=<cacah kanal> "
|
||||
"channel_map=<peta kanal> aec_method=<implementasi yang dipakai> "
|
||||
"aec_args=<parameter bagi mesin AEC> save_aec=<simpan data AEC dalam /tmp> "
|
||||
"autoloaded=<tata apakah modul ini dimuat secara otomatis> "
|
||||
"use_volume_sharing=<yes atau no> use_master_format=<yes atau no> "
|
||||
"source_name=<name for the source> source_properties=<properties for the "
|
||||
"source> source_master=<name of source to filter> sink_name=<name for the "
|
||||
"sink> sink_properties=<properties for the sink> sink_master=<name of sink to "
|
||||
"filter> adjust_time=<how often to readjust rates in s> adjust_threshold=<how "
|
||||
"much drift to readjust after in ms> format=<sample format> rate=<sample "
|
||||
"rate> channels=<number of channels> channel_map=<channel map> "
|
||||
"aec_method=<implementation to use> aec_args=<parameters for the AEC engine> "
|
||||
"save_aec=<save AEC data in /tmp> autoloaded=<set if this module is being "
|
||||
"loaded automatically> use_volume_sharing=<yes or no> use_master_format=<yes "
|
||||
"or no> "
|
||||
|
||||
#. add on profile
|
||||
#: src/modules/macosx/module-coreaudio-device.c:825
|
||||
|
|
@ -1104,6 +1116,7 @@ msgid "Always keeps at least one source loaded even if it's a null one"
|
|||
msgstr "Selalu jaga paling tidak satu muara bermuatan bahkan jika berupa null"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:68
|
||||
#, fuzzy
|
||||
msgid "General Purpose Equalizer"
|
||||
msgstr "Equalizer Tujuan Umum"
|
||||
|
||||
|
|
@ -1119,8 +1132,8 @@ msgstr ""
|
|||
"channels=<cacah kanal> channel_map=<peta kanal> autoloaded=<tata bila modul "
|
||||
"ini dimuat secara otomatis> use_volume_sharing=<yes atau no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Ekualiser berbasis FFT pada %s"
|
||||
|
|
@ -1134,6 +1147,7 @@ msgid "Virtual LADSPA sink"
|
|||
msgstr "Muara virtual LADSPA"
|
||||
|
||||
#: src/modules/module-ladspa-sink.c:54
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"sink_name=<name for the sink> sink_properties=<properties for the sink> "
|
||||
"sink_input_properties=<properties for the sink input> master=<name of sink "
|
||||
|
|
@ -1145,15 +1159,15 @@ msgid ""
|
|||
"separated list of output LADSPA port names> autoloaded=<set if this module "
|
||||
"is being loaded automatically> "
|
||||
msgstr ""
|
||||
"sink_name=<nama muara> sink_properties=<properti muara> "
|
||||
"sink_input_properties=<properti masukan muara> master=<nama muara untuk "
|
||||
"sink_name=<nama bagi muara> sink_properties=<properti bagi muara> "
|
||||
"sink_input_properties=<properti bagi masukan muara> master=<nama muara untuk "
|
||||
"disaring> sink_master=<nama muara yang akan disaring> format=<format "
|
||||
"cuplikan> rate=<laju cuplikan> channels=<cacah kanal> channel_map=<peta "
|
||||
"kanal> plugin=<nama plugin ladspa> label=<label plugin ladspa> "
|
||||
"control=<daftar nilai kendali masukan yang dipisah koma> "
|
||||
"input_ladspaport_map=<daftar dipisah koma dari nama port masukan LADSPA> "
|
||||
"output_ladspaport_map=<daftar dipisah koma dari nama port keluaran LADSPA> "
|
||||
"autoloaded=<tata apakah modul dimuat secara otomatis> "
|
||||
"control=<daftar nilai kendali masukan yang dipisahkan dengan koma> \n"
|
||||
"input_ladspaport_map=<comma separated list of input LADSPA port names> "
|
||||
"output_ladspaport_map=<comma separated list of output LADSPA port names> "
|
||||
"autoloaded=<set if this module is being loaded automatically> "
|
||||
|
||||
#: src/modules/module-null-sink.c:46
|
||||
msgid "Clocked NULL sink"
|
||||
|
|
@ -1186,14 +1200,14 @@ msgstr "Audio pada @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel untuk %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel ke %s/%s"
|
||||
|
|
@ -1543,11 +1557,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Target log tidak valid."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio Bawaan"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1862,7 +1876,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() gagal: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1941,9 +1955,7 @@ msgstr ""
|
|||
" -v, --verbose Aktifkan operasi cerewet\n"
|
||||
"\n"
|
||||
" -s, --server=SERVER Nama server untuk dihubungi\n"
|
||||
" -d, --device=DEVICE Nama muara/sumber untuk dihubungi. "
|
||||
"Nama khusus @DEFAULT_SINK@, @DEFAULT_SOURCE@, dan @DEFAULT_MONITOR@ masing-"
|
||||
"masing dapat dipakai untuk menyatakan muara, sumber, dan monitor.\n"
|
||||
" -d, --device=DEVICE Nama muara/sumber untuk dihubungi\n"
|
||||
" -n, --client-name=NAME Bagaimana memanggil klien ini di "
|
||||
"server\n"
|
||||
" --stream-name=NAME Bagaimana memanggil stream ini di "
|
||||
|
|
@ -1952,34 +1964,35 @@ msgstr ""
|
|||
"jangkauan 0...65536\n"
|
||||
" --rate=SAMPLERATE Laju cuplikan dalam Hz (nilai baku "
|
||||
"44100)\n"
|
||||
" --format=SAMPLEFORMAT Format cuplikan, lihat\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" untuk nilai-nilai yang mungkin ("
|
||||
"nilai baku s16ne)\n"
|
||||
" --format=SAMPLEFORMAT Jenis cuplikan, salah satu dari "
|
||||
"s16le, s16be, u8, float32le,\n"
|
||||
" float32be, ulaw, alaw, s32le, s32be, "
|
||||
"s24le, s24be,\n"
|
||||
" s24-32le, s24-32be (nilai baku "
|
||||
"s16ne)\n"
|
||||
" --channels=CHANNELS Cacah kanal, 1 untuk mono, 2 untuk "
|
||||
"stereo\n"
|
||||
" (nilai baku 2)\n"
|
||||
" --channel-map=CHANNELMAP Peta kanal yang dipakai sebagai "
|
||||
"pengganti baku\n"
|
||||
" --fix-format Ambil format cuplikan dari muara/"
|
||||
"sumber stream\n"
|
||||
" --fix-format Ambil format cuplikan dari muara "
|
||||
"stream\n"
|
||||
" yang sedang tersambung.\n"
|
||||
" --fix-rate Ambil laju cuplikan dari muara/"
|
||||
"sumber stream\n"
|
||||
" --fix-rate Ambil laju cuplikan dari muara "
|
||||
"stream\n"
|
||||
" yang sedang tersambung.\n"
|
||||
" --fix-channels Ambil cacah kanal dan peta kanal "
|
||||
"dari muara/sumber stream\n"
|
||||
"dari muara stream\n"
|
||||
" yang sedang tersambung.\n"
|
||||
" --no-remix Jangan upmix atau downmix kanal.\n"
|
||||
" --no-remap Petakan kanal berdasar indeks bukan "
|
||||
"nama.\n"
|
||||
" --latency=BYTE Minta latensi yang dinyatakan dalam "
|
||||
" --latency=BYTE Minta latensi yang dinyatakan, dalam "
|
||||
"byte.\n"
|
||||
" --process-time=BYTE Minta waktu proses yang dinyatakan "
|
||||
"bagi tiap permintaan\n"
|
||||
" dalam byte.\n"
|
||||
" --latency-msec=MSEC Minta latensi yang dinyatakan dalam "
|
||||
" --latency-msec=MSEC Minta latensi yang dinyatakan, dalam "
|
||||
"milidetik.\n"
|
||||
" --process-time-msec=MSEC Minta waktu proses yang dinyatakan "
|
||||
"bagi tiap permintaan\n"
|
||||
|
|
@ -2249,10 +2262,12 @@ msgid "TARGET"
|
|||
msgstr "TARGET"
|
||||
|
||||
#: src/utils/pacmd.c:76
|
||||
#, fuzzy
|
||||
msgid "NUMERIC-LEVEL"
|
||||
msgstr "ARAS-NUMERIK"
|
||||
msgstr "NUMERIC-LEVEL"
|
||||
|
||||
#: src/utils/pacmd.c:79
|
||||
#, fuzzy
|
||||
msgid "FRAMES"
|
||||
msgstr "BINGKAI"
|
||||
|
||||
|
|
@ -2419,8 +2434,9 @@ msgid "Aux"
|
|||
msgstr "Aux"
|
||||
|
||||
#: src/utils/pactl.c:335
|
||||
#, fuzzy
|
||||
msgid "Line"
|
||||
msgstr "Jalur"
|
||||
msgstr "Jalur Masuk"
|
||||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
|
|
@ -2510,7 +2526,7 @@ msgstr ""
|
|||
#: src/utils/pactl.c:706 src/utils/pactl.c:890 src/utils/pactl.c:1251
|
||||
#, c-format
|
||||
msgid "\tPorts:\n"
|
||||
msgstr "\tPort:\n"
|
||||
msgstr "»Port:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, c-format
|
||||
|
|
@ -2524,7 +2540,7 @@ msgstr ", grup ketersediaan: "
|
|||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
msgid "\tActive Port: %s\n"
|
||||
msgstr "\tPort Aktif: %s\n"
|
||||
msgstr "»Port Aktif: %s\n"
|
||||
|
||||
#: src/utils/pactl.c:721 src/utils/pactl.c:905
|
||||
#, c-format
|
||||
|
|
@ -2993,7 +3009,7 @@ msgstr ""
|
|||
"dapat dipakai untuk menyatakan muara, sumber, dan pemantau baku.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3010,8 +3026,6 @@ msgstr ""
|
|||
" -h, --help Tampilkan bantuan ini\n"
|
||||
" --version Tampilkan versi\n"
|
||||
"\n"
|
||||
" -f, --format=FORMAT Format keluaran. \"normal\" atau "
|
||||
"\"json\"\n"
|
||||
" -s, --server=SERVER Nama server tujuan koneksi\n"
|
||||
" -n, --client-name=NAMA Bagaimana memanggil klien ini pada "
|
||||
"server\n"
|
||||
|
|
@ -3028,9 +3042,9 @@ msgstr ""
|
|||
"Ditaut dengan libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Nilai format '%s' tidak valid"
|
||||
msgstr "Nama stream '%s' tak valid"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3262,7 +3276,7 @@ msgid "WARNING: Child process terminated by signal %u\n"
|
|||
msgstr "PERINGATAN: Proses anak diakhiri oleh sinyal %u\n"
|
||||
|
||||
#: src/utils/pasuspender.c:228
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options] -- PROGRAM [ARGUMENTS ...]\n"
|
||||
"\n"
|
||||
|
|
@ -3274,9 +3288,7 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [opsi] -- PROGRAM [ARGUMEN ...]\n"
|
||||
"\n"
|
||||
"Sementara mensuspensi PulseAudio ketika PROGRAM berjalan.\n"
|
||||
"%s [opsi] ... \n"
|
||||
"\n"
|
||||
" -h, --help Tampilkan bantuan ini\n"
|
||||
" --version Tampilkan versi\n"
|
||||
|
|
|
|||
55
po/it.po
55
po/it.po
|
|
@ -11,9 +11,9 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-06-08 14:42+0000\n"
|
||||
"Last-Translator: Salvatore Cocuzza <info@salvatorecocuzza.it>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-04-19 20:02+0000\n"
|
||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||
"Language-Team: Italian <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/it/>\n"
|
||||
"Language: it\n"
|
||||
|
|
@ -21,7 +21,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
"X-Generator: Weblate 4.6\n"
|
||||
|
||||
# mamma mia che impressione
|
||||
#: src/daemon/cmdline.c:113
|
||||
|
|
@ -198,12 +198,14 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "--fail richiede un argomento booleano"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
msgstr ""
|
||||
"--log-level si aspetta un argomento a livello di log (un valore numerico "
|
||||
"compreso tra 0 e 4 oppure uno tra error, warn, notice, info, debug)."
|
||||
"--log-level richiede il livello di registro come argomento (sia "
|
||||
"nell'intervallo numerico 0..4 oppure uno tra debug, info, notice, warn, "
|
||||
"error)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -1161,8 +1163,8 @@ msgstr ""
|
|||
"channel_map=<mappa canali> autoloaded=<imposta se il modulo viene caricato "
|
||||
"automaticamente> use_volume_sharing=<yes o no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Equalizzatore basato su FFT su %s"
|
||||
|
|
@ -1228,14 +1230,14 @@ msgstr "Audio su @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel per %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel verso %s/%s"
|
||||
|
|
@ -1245,6 +1247,7 @@ msgid "Virtual surround sink"
|
|||
msgstr "Sink surround virtuale"
|
||||
|
||||
#: src/modules/module-virtual-surround-sink.c:54
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"sink_name=<name for the sink> sink_properties=<properties for the sink> "
|
||||
"master=<name of sink to filter> sink_master=<name of sink to filter> "
|
||||
|
|
@ -1587,11 +1590,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Destinazione di registrazione non valida."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio interno"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -2417,7 +2420,7 @@ msgstr "Recupero delle informazioni del server non riuscito: %s"
|
|||
#: src/utils/pactl.c:224 src/utils/pactl.c:236
|
||||
#, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:281
|
||||
#, c-format
|
||||
|
|
@ -2488,6 +2491,7 @@ msgid "Mic"
|
|||
msgstr "Mic"
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
msgid "Handset"
|
||||
msgstr "Cuffie con microfono"
|
||||
|
||||
|
|
@ -2582,6 +2586,7 @@ msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
|||
msgstr "\t\t%s: %s (tipo: %s, priorità: %u%s%s, %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
#, fuzzy
|
||||
msgid ", availability group: "
|
||||
msgstr ", gruppo disponibilità: "
|
||||
|
||||
|
|
@ -2893,7 +2898,7 @@ msgstr "Invia messaggio non riuscito: %s"
|
|||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
msgid "list-handlers message failed: %s"
|
||||
msgstr "messaggio list-handlers non riuscito: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
|
|
@ -2907,8 +2912,6 @@ msgstr ""
|
|||
#, c-format
|
||||
msgid "list-handlers message response array element %d is not a JSON object"
|
||||
msgstr ""
|
||||
"l'elemento %d dell'array di risposta al messaggio dei gestori di elenchi non "
|
||||
"è un oggetto JSON"
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, c-format
|
||||
|
|
@ -3107,9 +3110,9 @@ msgstr ""
|
|||
"Link eseguito con libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Formato valore non valido '%s'"
|
||||
msgstr "Nome dello stream «%s» non valido"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3195,16 +3198,18 @@ msgid "You have to specify a source name"
|
|||
msgstr "È necessario specificare il nome di una sorgente"
|
||||
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076
|
||||
#, fuzzy
|
||||
msgid "You have to specify a sink name/index"
|
||||
msgstr "Devi specificare un nome/indice del sink"
|
||||
msgstr "È necessario specificare un nome di sink"
|
||||
|
||||
#: src/utils/pactl.c:3008
|
||||
msgid "You have to specify a sink name/index and a volume"
|
||||
msgstr "È necessario specificare un nome/indice di sink e un nome di porta"
|
||||
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
#, fuzzy
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "Devi specificare un nome/indice sorgente"
|
||||
msgstr "È necessario specificare il nome di una sorgente"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
@ -3270,17 +3275,15 @@ msgid "Invalid source output index specification"
|
|||
msgstr "Specifica di indice di uscita per la sorgente non valida"
|
||||
|
||||
#: src/utils/pactl.c:3162
|
||||
#, fuzzy
|
||||
msgid "You have to specify at least an object path and a message name"
|
||||
msgstr ""
|
||||
"Devi specificare almeno un percorso dell'oggetto e un nome del messaggio"
|
||||
msgstr "È necessario specificare un nome/indice di sink e un nome di porta"
|
||||
|
||||
#: src/utils/pactl.c:3172
|
||||
msgid ""
|
||||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
msgstr ""
|
||||
"Gli argomenti in eccesso verranno ignorati. Si noti che tutti i parametri "
|
||||
"del messaggio devono essere specificati come un'unica stringa."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
|
|
|
|||
18
po/ja.po
18
po/ja.po
|
|
@ -13,7 +13,7 @@ msgstr ""
|
|||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-02-20 03:16+0000\n"
|
||||
"Last-Translator: Takuro Onoue <kusanaginoturugi@gmail.com>\n"
|
||||
"Language-Team: Japanese <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1140,8 +1140,8 @@ msgstr ""
|
|||
"ル数> channel_map=<チャンネルマップ> autoloaded=<このモジュールが自動でロード"
|
||||
"されている場合にセット> use_volume_sharing=<yes 又は no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1205,14 +1205,14 @@ msgstr "@HOSTNAME@ 上のオーディオ"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s のトンネル"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "%s/%s へのトンネル"
|
||||
|
|
@ -1560,11 +1560,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "無効なログターゲット。"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "内部オーディオ"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "モデム"
|
||||
|
||||
|
|
|
|||
18
po/kk.po
18
po/kk.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2020-06-30 08:04+0500\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -989,8 +989,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1047,14 +1047,14 @@ msgstr ""
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1391,11 +1391,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Журнал мақсаты дұрыс емес."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Құрамындағы аудио"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Модем"
|
||||
|
||||
|
|
|
|||
18
po/kn.po
18
po/kn.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.kn\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:54+0000\n"
|
||||
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
|
||||
"Language-Team: Kannada <kde-l10n-kn@kde.org>\n"
|
||||
|
|
@ -1153,8 +1153,8 @@ msgstr ""
|
|||
"label=<ladspa ಪ್ಲಗ್ಇನ್ ಹೆಸರು> control=<ವಿರಾಮ ಚಿಹ್ನೆಗಳನ್ನು ಹೊಂದಿರುವ ಇನ್ಪುಟ್ ನಿಯಂತ್ರಣ "
|
||||
"ಮೌಲ್ಯಗಳ ಪಟ್ಟಿ>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1217,14 +1217,14 @@ msgstr "@HOSTNAME@ ನಲ್ಲಿನ ಆಡಿಯೊ"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1575,11 +1575,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] ಅಮಾನ್ಯವಾದ ದಾಖಲೆ ಗುರಿ '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "ಮಾಡೆಮ್"
|
||||
|
||||
|
|
|
|||
221
po/ko.po
221
po/ko.po
|
|
@ -6,8 +6,8 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-06-14 13:17+0000\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-20 18:18+0000\n"
|
||||
"Last-Translator: 김인수 <simmon@nplob.com>\n"
|
||||
"Language-Team: Korean <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/ko/>\n"
|
||||
|
|
@ -16,7 +16,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
"X-Generator: Weblate 4.12.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -94,23 +94,23 @@ msgstr ""
|
|||
"명령:\n"
|
||||
" -h, --help 도움말을 표시\n"
|
||||
" --version 버전을 표시\n"
|
||||
" --dump-conf 기본 구성 덤프\n"
|
||||
" --dump-modules 사용 가능한 모듈의 덤프 목록\n"
|
||||
" --dump-resample-methods 재표본 방법 덤프\n"
|
||||
" --dump-conf 기본 구성을 덤프\n"
|
||||
" --dump-modules 사용 가능한 모듈의 목록을 덤프\n"
|
||||
" --dump-resample-methods 사용 가능한 재표본 방식으로 덤프\n"
|
||||
" --cleanup-shm 오래된 공유 메모리 세그멘트 정리\n"
|
||||
" --start 만약 실행되지 않았으면 데몬을 시작\n"
|
||||
" -k --kill 실행 중인 데몬을 제거\n"
|
||||
" --check 동작 중인 데몬 점검 (종료 코드만 "
|
||||
"반환)\n"
|
||||
" --check 동작 중인 데몬을 위한 점검 (종료 "
|
||||
"코드만 반환)\n"
|
||||
"\n"
|
||||
"옵션:\n"
|
||||
"OPTIONS:\n"
|
||||
" --system[=BOOL] 시스템-전반의 인스턴스로 실행\n"
|
||||
" -D, --daemonize[=BOOL] 시작 후에 데몬화\n"
|
||||
" --fail[=BOOL] 시작이 실패 할 때에 종료\n"
|
||||
" --high-priority[=BOOL] 높은 수준으로 설정을 시도\n"
|
||||
" (root로만 사용 가능, SUID 또는\n"
|
||||
" 높은 RLIMIT_NICE일 때에)\n"
|
||||
" --realtime[=BOOL] 실시간 스케쥴링 활성 시도\n"
|
||||
" --realtime[=BOOL] Try to enable realtime scheduling\n"
|
||||
" (root로만 사용 가능, SUID 또는\n"
|
||||
" 높은 RLIMIT_RTPRIO일 때에)\n"
|
||||
" --disallow-module-loading[=BOOL] 시작 후 사용자가 요청 모듈을\n"
|
||||
|
|
@ -121,7 +121,7 @@ msgstr ""
|
|||
" --exit-idle-time=SECS 유휴 상태이고 시간이 경과하면\n"
|
||||
" 데몬을 종료함\n"
|
||||
" --scache-idle-time=SECS 유휴 상태이고 시간이 경과하면\n"
|
||||
" 자동 적재된 표본을 내려 놓음\n"
|
||||
" 자동 적재된 표뵨을 내려 놓음\n"
|
||||
" --log-level[=LEVEL] 자세한 표시 수준을 높이거나 설정\n"
|
||||
" -v --verbose 자세한 표시 수준을 높임\n"
|
||||
" --log-target={auto,syslog,stderr,file:PATH,newfile:PATH}\n"
|
||||
|
|
@ -132,11 +132,11 @@ msgstr ""
|
|||
" -p, --dl-search-path=PATH 동적 공유 객체(플러그인)을 위한\n"
|
||||
" 검색 경로를 설정\n"
|
||||
" --resample-method=METHOD 지정한 재표본 방식을 사용\n"
|
||||
" (사용 가능한 값은 --dump-resample-"
|
||||
"methods 옵션을\n"
|
||||
" (사용 가능한 값을 위해 --dump-"
|
||||
"resample-methods을\n"
|
||||
" 참조)\n"
|
||||
" --use-pid-file[=BOOL] PID 파일을 생성\n"
|
||||
" --no-cpu-limit[=BOOL] 이를 지원하는 CPU 부하 제한기를\n"
|
||||
" --no-cpu-limit[=BOOL] 이를 지원하는 CPU 적재 제한기를\n"
|
||||
" 설치하지 않음.\n"
|
||||
" --disable-shm[=BOOL] 공유 메모리 지원을 비활성화.\n"
|
||||
" --enable-memfd[=BOOL] memfd 공유 메모리 지원을 활성화.\n"
|
||||
|
|
@ -145,7 +145,7 @@ msgstr ""
|
|||
" -L, --load=\"MODULE ARGUMENTS\" 지정된 인수와 함께 지정된 "
|
||||
"플러그인\n"
|
||||
" 모듈을 적재\n"
|
||||
" -F, --file=FILENAME 지정 스크립트 실행\n"
|
||||
" -F, --file=FILENAME 지정된 스크립트를 실행\n"
|
||||
" -C 시작 후에 동작 중인 TTY에서\n"
|
||||
" 명령 줄을 엽니다\n"
|
||||
"\n"
|
||||
|
|
@ -153,39 +153,39 @@ msgstr ""
|
|||
|
||||
#: src/daemon/cmdline.c:246
|
||||
msgid "--daemonize expects boolean argument"
|
||||
msgstr "--daemonize 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--daemonize 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:254
|
||||
msgid "--fail expects boolean argument"
|
||||
msgstr "--fail 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--fail 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
msgstr ""
|
||||
"--log-level 에는 로그 수준 인자 값이 필요합니다 (0~4 숫자 범위 또는 오류, 경"
|
||||
"고, 알림, 정보, 디버그 중 하나)."
|
||||
"--log-level 에는 로그 수준 인수가 필요합니다 (0~4 숫자 범위 또는 오류, 경고, "
|
||||
"알림, 정보, 디버그 중 하나 )."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
msgstr "--high-priority 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--high-priority 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:285
|
||||
msgid "--realtime expects boolean argument"
|
||||
msgstr "--realtime 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--realtime 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:293
|
||||
msgid "--disallow-module-loading expects boolean argument"
|
||||
msgstr "--disallow-module-loading 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--disallow-module-loading 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:301
|
||||
msgid "--disallow-exit expects boolean argument"
|
||||
msgstr "--disallow-exit 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--disallow-exit 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:309
|
||||
msgid "--use-pid-file expects boolean argument"
|
||||
msgstr "--use-pid-file 부울 인자 값이 필요합니다"
|
||||
msgstr "--use-pid-file 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:328
|
||||
msgid ""
|
||||
|
|
@ -205,32 +205,32 @@ msgstr ""
|
|||
|
||||
#: src/daemon/cmdline.c:338
|
||||
msgid "--log-time expects boolean argument"
|
||||
msgstr "--log-time 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--log-time 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:346
|
||||
msgid "--log-meta expects boolean argument"
|
||||
msgstr "--log-meta 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--log-meta 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:366
|
||||
#, c-format
|
||||
msgid "Invalid resample method '%s'."
|
||||
msgstr "잘못된 리샘플링 방식 '%s'."
|
||||
msgstr "잘못된 리샘플링 방법 '%s'."
|
||||
|
||||
#: src/daemon/cmdline.c:373
|
||||
msgid "--system expects boolean argument"
|
||||
msgstr "--system 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--system 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:381
|
||||
msgid "--no-cpu-limit expects boolean argument"
|
||||
msgstr "--no-cpu-limit 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--no-cpu-limit 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:389
|
||||
msgid "--disable-shm expects boolean argument"
|
||||
msgstr "--disable-shm 에는 부울 인자 값이 필요합니다"
|
||||
msgstr "--disable-shm 에는 부울 인수가 필요합니다"
|
||||
|
||||
#: src/daemon/cmdline.c:397
|
||||
msgid "--enable-memfd expects boolean argument"
|
||||
msgstr "--enable-memfd 는 부울 인수가 예상됩니다"
|
||||
msgstr "--enable-memfd는 부울 인수가 예상됩니다"
|
||||
|
||||
#: src/daemon/daemon-conf.c:270
|
||||
#, c-format
|
||||
|
|
@ -275,12 +275,12 @@ msgstr "[%s:%u] 잘못된 채널 맵 '%s'."
|
|||
#: src/daemon/daemon-conf.c:433
|
||||
#, c-format
|
||||
msgid "[%s:%u] Invalid number of fragments '%s'."
|
||||
msgstr "[%s:%u] 잘못된 조각 수 '%s'."
|
||||
msgstr "[%s:%u] 잘못된 fragment 수 '%s'."
|
||||
|
||||
#: src/daemon/daemon-conf.c:450
|
||||
#, c-format
|
||||
msgid "[%s:%u] Invalid fragment size '%s'."
|
||||
msgstr "[%s:%u] 잘못된 조각 크기 '%s'."
|
||||
msgstr "[%s:%u] 잘못된 fragment 크기 '%s'."
|
||||
|
||||
#: src/daemon/daemon-conf.c:467
|
||||
#, c-format
|
||||
|
|
@ -302,7 +302,7 @@ msgid ""
|
|||
"The specified default channel map has a different number of channels than "
|
||||
"the specified default number of channels."
|
||||
msgstr ""
|
||||
"지정 기본 채널 맵은 지정 기본 채널 수와는 다른 채널 수를 가지고 있습니다."
|
||||
"지정된 기본 채널 맵은 지정된 기본 채널 수와는 다른 채널 수를 가지고 있습니다."
|
||||
|
||||
#: src/daemon/daemon-conf.c:788
|
||||
#, c-format
|
||||
|
|
@ -342,7 +342,7 @@ msgstr "사용법: %s\n"
|
|||
#: src/daemon/dumpmodules.c:70
|
||||
#, c-format
|
||||
msgid "Load Once: %s\n"
|
||||
msgstr "한 번 적재하기: %s\n"
|
||||
msgstr "한 번 로딩하기: %s\n"
|
||||
|
||||
#: src/daemon/dumpmodules.c:72
|
||||
#, c-format
|
||||
|
|
@ -365,7 +365,7 @@ msgstr "기존 lt_dlopen 로더를 찾는데 실패했습니다."
|
|||
|
||||
#: src/daemon/ltdl-bind-now.c:131
|
||||
msgid "Failed to allocate new dl loader."
|
||||
msgstr "새 dl 로더 할당에 실패했습니다."
|
||||
msgstr "새 dl 로더를 할당하는데 실패했습니다."
|
||||
|
||||
#: src/daemon/ltdl-bind-now.c:144
|
||||
msgid "Failed to add bind-now-loader."
|
||||
|
|
@ -374,22 +374,22 @@ msgstr "bind-now-loader를 추가하는데 실패했습니다."
|
|||
#: src/daemon/main.c:265
|
||||
#, c-format
|
||||
msgid "Failed to find user '%s'."
|
||||
msgstr "'%s' 사용자를 찾을 수 없습니다."
|
||||
msgstr "사용자 '%s'를 찾을 수 없습니다."
|
||||
|
||||
#: src/daemon/main.c:270
|
||||
#, c-format
|
||||
msgid "Failed to find group '%s'."
|
||||
msgstr "'%s' 그룹을 찾을 수 없습니다."
|
||||
msgstr "그룹 '%s'를 찾을 수 없습니다."
|
||||
|
||||
#: src/daemon/main.c:279
|
||||
#, c-format
|
||||
msgid "GID of user '%s' and of group '%s' don't match."
|
||||
msgstr "'%s' 사용자의 GID와 '%s' 그룹 정보가 일치하지 않습니다."
|
||||
msgstr "사용자 '%s'의 GID와 그룹 '%s'가 일치하지 않습니다."
|
||||
|
||||
#: src/daemon/main.c:284
|
||||
#, c-format
|
||||
msgid "Home directory of user '%s' is not '%s', ignoring."
|
||||
msgstr "사용자 '%s'의 홈 디렉토리가 '%s' 아니면, 무시합니다."
|
||||
msgstr "사용자 '%s'의 홈 디렉토리가 '%s'가 아닙니다, 무시됨."
|
||||
|
||||
#: src/daemon/main.c:287 src/daemon/main.c:292
|
||||
#, c-format
|
||||
|
|
@ -413,7 +413,7 @@ msgstr "UID 변경 실패: %s"
|
|||
|
||||
#: src/daemon/main.c:360
|
||||
msgid "System wide mode unsupported on this platform."
|
||||
msgstr "시스템 전역 모드는 이 기술환경에서 지원하지 않습니다."
|
||||
msgstr "시스템 전역 모드는 이 플랫폼에서 지원되지 않습니다."
|
||||
|
||||
#: src/daemon/main.c:650
|
||||
msgid "Failed to parse command line."
|
||||
|
|
@ -423,7 +423,8 @@ msgstr "명령어 행 분석 실패."
|
|||
msgid ""
|
||||
"System mode refused for non-root user. Only starting the D-Bus server lookup "
|
||||
"service."
|
||||
msgstr "non-root 사용자에게 시스템 방식이 거부되었습니다. D-Bus 서버 검색 서비스만 "
|
||||
msgstr ""
|
||||
"비 root 사용자에 대해 시스템 모드는 거부되었습니다. D-Bus 서버 검색 서비스만 "
|
||||
"시작합니다."
|
||||
|
||||
#: src/daemon/main.c:788
|
||||
|
|
@ -435,12 +436,12 @@ msgstr "데몬 종료 실패: %s"
|
|||
msgid ""
|
||||
"This program is not intended to be run as root (unless --system is "
|
||||
"specified)."
|
||||
msgstr "이와 같은 프로그램은 root로 동작하도록 의도되지 않았습니다 (--system 이 "
|
||||
"지정되지 않은 경우)."
|
||||
msgstr ""
|
||||
"프로그램이 root로 실행되지 않습니다. (실행하려면 --system을 명기하십시오)."
|
||||
|
||||
#: src/daemon/main.c:820
|
||||
msgid "Root privileges required."
|
||||
msgstr "루트 권한이 필요합니다."
|
||||
msgstr "Root 권한이 필요합니다."
|
||||
|
||||
#: src/daemon/main.c:827
|
||||
msgid "--start not supported for system instances."
|
||||
|
|
@ -449,22 +450,24 @@ msgstr "--start는 시스템 인스턴스에 대해 지원되지 않습니다."
|
|||
#: src/daemon/main.c:867
|
||||
#, c-format
|
||||
msgid "User-configured server at %s, refusing to start/autospawn."
|
||||
msgstr "%s에 User-configured 서버, start/autospawn을 거부하고 있습니다."
|
||||
msgstr "%s에서 사용자 설정한 서버, start/autospawn을 거부하고 있습니다."
|
||||
|
||||
#: src/daemon/main.c:873
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-configured server at %s, which appears to be local. Probing deeper."
|
||||
msgstr "%s에 User-configured 서버, 이는 로컬에 있습니다. 상세히 조사합니다."
|
||||
msgstr "%s에 사용자가 설정한 서버, 이는 로컬에 있습니다. 상세히 조사합니다."
|
||||
|
||||
#: src/daemon/main.c:878
|
||||
msgid "Running in system mode, but --disallow-exit not set."
|
||||
msgstr "시스템 방식에서 실행 중이지만, --disallow-exit 를 설정하지 않았습니다."
|
||||
msgstr ""
|
||||
"시스템 모드에서 실행중입니다. 하지만 --disallow-exit가 설정되지 않았습니다."
|
||||
|
||||
#: src/daemon/main.c:881
|
||||
msgid "Running in system mode, but --disallow-module-loading not set."
|
||||
msgstr "시스템 방식에서 실행 중이지만, --disallow-module-loading 를 설정하지 "
|
||||
"않았습니다."
|
||||
msgstr ""
|
||||
"시스템 모드에서 실행 중입니다. 하지만 --disallow-module-loading이 설정되어 있"
|
||||
"지 않습니다."
|
||||
|
||||
#: src/daemon/main.c:884
|
||||
msgid "Running in system mode, forcibly disabling SHM mode."
|
||||
|
|
@ -656,7 +659,7 @@ msgstr "도킹스테이션 마이크"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2802
|
||||
msgid "Headset Microphone"
|
||||
msgstr "헤드셋 마이크"
|
||||
msgstr "후면 마이크"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2806
|
||||
msgid "Analog Output"
|
||||
|
|
@ -716,7 +719,7 @@ msgstr "대화 입력"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
msgid "Virtual Surround 7.1"
|
||||
msgstr "가상 서라운드 7.1"
|
||||
msgstr "가상 서라운드 싱크"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4563
|
||||
msgid "Analog Mono"
|
||||
|
|
@ -860,7 +863,7 @@ msgstr "스테레오 듀플렉스"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr "모노 대화 + 7.1 서라운드"
|
||||
msgstr "모노 Chat + 7.1 Surround"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1010,15 +1013,15 @@ msgstr "전화기"
|
|||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2042
|
||||
msgid "High Fidelity Playback (A2DP Sink)"
|
||||
msgstr "고음질 재생 (A2DP Sink)"
|
||||
msgstr "Hi-Fi 재생 (A2DP Sink)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2054
|
||||
msgid "High Fidelity Capture (A2DP Source)"
|
||||
msgstr "고음질 캡쳐 (A2DP Source)"
|
||||
msgstr "Hi-Fi 캡쳐 (A2DP Source)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2066
|
||||
msgid "Headset Head Unit (HSP)"
|
||||
msgstr "헤드셋 헤드 단위 (HSP)"
|
||||
msgstr "헤드셋 헤드 유닛 (HSP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2079
|
||||
msgid "Headset Audio Gateway (HSP)"
|
||||
|
|
@ -1026,7 +1029,7 @@ msgstr "헤드셋 오디오 게이트웨어 (HSP)"
|
|||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2092
|
||||
msgid "Handsfree Head Unit (HFP)"
|
||||
msgstr "핸즈프리 헤드 단위 (HFP)"
|
||||
msgstr "핸즈프리 헤드 유닛 (HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2105
|
||||
msgid "Handsfree Audio Gateway (HFP)"
|
||||
|
|
@ -1089,8 +1092,8 @@ msgstr ""
|
|||
"channel_map=<채널 맵> autoloaded=<이 모듈이 자동으로 로드된다면 설정하십시오"
|
||||
"> use_volume_sharing=<yes 또는 no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "고속퓨리에변환 기반 이퀄라이저 동작 %s"
|
||||
|
|
@ -1154,14 +1157,14 @@ msgstr "호스트 @HOSTNAME@의 오디오"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s 위한 터널"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "%s/%s가는 터널"
|
||||
|
|
@ -1475,9 +1478,9 @@ msgid ""
|
|||
"e.g. happen if you try to connect to a non-root PulseAudio as a root user, "
|
||||
"over the native protocol. Don't do that.)"
|
||||
msgstr ""
|
||||
"XDG_RUNTIME_DIR (%s)는 우리(uid %d)가 아니라 uid %d가 소유합니다! (자체 "
|
||||
"통신규약을 통해 root 사용자로 root가 아닌 PluseAudio에 연결을 시도 할 때에 "
|
||||
"예시로 발생 할 수 있습니다. 그렇게 하지 않습니다.)"
|
||||
"XDG_RUNTIME_DIR (%s)는 우리(uid %d)가 아니라 uid %d가 소유합니다! (기본적인 "
|
||||
"통신규약을 통해 비-root가 PluseAudio에 root 사용자로 연결을 시도할 때에 예를 "
|
||||
"들어 발생 할 수 있습니다. 그렇게 하지 않습니다.)"
|
||||
|
||||
#: src/pulsecore/core-util.h:97
|
||||
msgid "yes"
|
||||
|
|
@ -1508,17 +1511,17 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "잘못된 기록 대상."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "내장 오디오"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "모뎀"
|
||||
|
||||
#: src/pulse/error.c:38
|
||||
msgid "OK"
|
||||
msgstr "확인"
|
||||
msgstr "OK"
|
||||
|
||||
#: src/pulse/error.c:39
|
||||
msgid "Access denied"
|
||||
|
|
@ -1586,7 +1589,7 @@ msgstr "자료 없음"
|
|||
|
||||
#: src/pulse/error.c:55
|
||||
msgid "Incompatible protocol version"
|
||||
msgstr "호환되지 않는 프로토콜 버전"
|
||||
msgstr "호환되지 않는 통신규약 버전"
|
||||
|
||||
#: src/pulse/error.c:56
|
||||
msgid "Too large"
|
||||
|
|
@ -1905,11 +1908,11 @@ msgstr ""
|
|||
" -v, --verbose 자세한 작업 활성화합니다\n"
|
||||
"\n"
|
||||
" -s, --server=SERVER 연결하고자 하는 서버의 이름\n"
|
||||
" -d, --device=DEVICE 연결하고자 하는 싱크/원천의 이름. 특"
|
||||
"별한 이름 @DEFAULT_SINK@, @DEFAULT_SOURCE@과 @DEFAULT_MONITOR@는 각기 기본 싱"
|
||||
"크, 원천과 관리를 지정하는데 사용 될 수 있습니다.\n"
|
||||
" -n, --client-name=NAME 서버에서 이와 같은 클라이언트를 호출"
|
||||
"하는 방법\n"
|
||||
" -d, --device=DEVICE 연결하고자 하는 싱크/원천의 이름. "
|
||||
"특별한 이름 @DEFAULT_SINK@, @DEFAULT_SOURCE@과 @DEFAULT_MONITOR@는 각기 기본 "
|
||||
"싱크, 원천과 관리를 지정하는데 사용 될 수 있습니다.\n"
|
||||
" -n, --client-name=NAME 서버에서 이와 같은 클라이언트를 "
|
||||
"호출하는 방법\n"
|
||||
" --stream-name=NAME 서버에서 이와 같은 스트림을 호출하는 "
|
||||
"방법\n"
|
||||
" --volume=VOLUME 범위 0...65536에서 초기(선형) 소리를 "
|
||||
|
|
@ -1922,29 +1925,29 @@ msgstr ""
|
|||
" --channels=CHANNELS 채널의 수, 모노 1, 스테레오 2\n"
|
||||
" (기본값 2)\n"
|
||||
" --channel-map=CHANNELMAP 기본값 대신에 사용하려는 채널맵\n"
|
||||
" --fix-format 스트림이 연결되고 있는 싱크/원천에"
|
||||
"서\n"
|
||||
" --fix-format 스트림이 연결되고 있는 싱크/"
|
||||
"원천에서\n"
|
||||
" 샘플 형식을 가져옵니다.\n"
|
||||
" --fix-rate 스트림이 연결되고 있는 싱크/원천에"
|
||||
"서\n"
|
||||
" --fix-rate 스트림이 연결되고 있는 싱크/"
|
||||
"원천에서\n"
|
||||
" 샘플 비율을 가져옵니다.\n"
|
||||
" --fix-channels 스트림이 연결되고 있는 싱크/원천에"
|
||||
"서\n"
|
||||
" --fix-channels 스트림이 연결되고 있는 싱크/"
|
||||
"원천에서\n"
|
||||
" 채널 수와 채널맵을 가져옵니다.\n"
|
||||
" --no-remix 채널을 언믹스하거나 다운믹스 하지 않"
|
||||
"습니다.\n"
|
||||
" --no-remap 이름 대신에 색인으로 채널을 맵핑합니"
|
||||
"다.\n"
|
||||
" --latency=BYTES 바이트 단위로 지정된 지연시간을 요청"
|
||||
"합니다.\n"
|
||||
" --process-time=BYTES 바이트 단위로 요청당 지정된 처리시간"
|
||||
"을 요청합니다.\n"
|
||||
" --latency-msec=MSEC msec 단위로 지정된 지연시간을 요청합"
|
||||
"니다.\n"
|
||||
" --no-remix 채널을 언믹스하거나 다운믹스 하지 "
|
||||
"않습니다.\n"
|
||||
" --no-remap 이름 대신에 색인으로 채널을 "
|
||||
"맵핑합니다.\n"
|
||||
" --latency=BYTES 바이트 단위로 지정된 지연시간을 "
|
||||
"요청합니다.\n"
|
||||
" --process-time=BYTES 바이트 단위로 요청당 지정된 "
|
||||
"처리시간을 요청합니다.\n"
|
||||
" --latency-msec=MSEC msec 단위로 지정된 지연시간을 "
|
||||
"요청합니다.\n"
|
||||
" --process-time-msec=MSEC msec 단위로 요청당 지정된 처리시간을 "
|
||||
"요청합니다.\n"
|
||||
" --property=PROPERTY=VALUE 지정된 속성을 지정된 값으로 설정합니"
|
||||
"다.\n"
|
||||
" --property=PROPERTY=VALUE 지정된 속성을 지정된 값으로 "
|
||||
"설정합니다.\n"
|
||||
" --raw raw PCM 자료를 기록하거나/재생.\n"
|
||||
" --passthrough 통과 자료.\n"
|
||||
" --file-format[=FFORMAT] 형식화된 PCM 자료 기록/재생.\n"
|
||||
|
|
@ -2438,7 +2441,7 @@ msgid ""
|
|||
"\tProperties:\n"
|
||||
"\t\t%s\n"
|
||||
msgstr ""
|
||||
"Sink #%u\n"
|
||||
"싱크 #%u\n"
|
||||
"\t상태: %s\n"
|
||||
"\t이름: %s\n"
|
||||
"\t설명: %s\n"
|
||||
|
|
@ -2447,10 +2450,10 @@ msgstr ""
|
|||
"\t채널 맵: %s\n"
|
||||
"\t소유자 모듈: %u\n"
|
||||
"\t무음: %s\n"
|
||||
"\t음량: %s\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t기본 음량: %s\n"
|
||||
"\t모니터 원천: %s\n"
|
||||
"\t볼륨: %s%s%s\n"
|
||||
"\t균형 %0.2f\n"
|
||||
"\t기본 볼륨: %s%s%s\n"
|
||||
"\t모니터 소스: %s\n"
|
||||
"\t지연시간: %0.0f usec, 설정 %0.0f usec\n"
|
||||
"\t플래그: %s%s%s%s%s%s%s\n"
|
||||
"\t속성:\n"
|
||||
|
|
@ -2507,7 +2510,7 @@ msgid ""
|
|||
"\tProperties:\n"
|
||||
"\t\t%s\n"
|
||||
msgstr ""
|
||||
"원천 #%u\n"
|
||||
"소스 #%u\n"
|
||||
"\t상태: %s\n"
|
||||
"\t이름: %s\n"
|
||||
"\t설명: %s\n"
|
||||
|
|
@ -2516,11 +2519,11 @@ msgstr ""
|
|||
"\t채널 맵: %s\n"
|
||||
"\t소유자 모듈: %u\n"
|
||||
"\t무음: %s\n"
|
||||
"\t볼륨: %s\n"
|
||||
"\t볼륨: %s%s%s\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t기본 볼륨: %s\n"
|
||||
"\t싱크 모니터:%s\n"
|
||||
"\t지연시간:%0.0f usec, 설정 %0.0f usec\n"
|
||||
"\t기본 볼륨: %s%s%s\n"
|
||||
"\t싱크 모니터: %s\n"
|
||||
"\t지연시간: %0.0f usec, 설정 %0.0f usec\n"
|
||||
"\t플래그: %s%s%s%s%s%s\n"
|
||||
"\t속성:\n"
|
||||
"\t\t%s\n"
|
||||
|
|
@ -2670,7 +2673,8 @@ msgstr ""
|
|||
"\t코르크: %s\n"
|
||||
"\t무음: %s\n"
|
||||
"\t볼륨: %s\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t %s\n"
|
||||
"\t균형 %0.2f\n"
|
||||
"\t버퍼 지연 시간: %0.0f usec\n"
|
||||
"\t싱크 지연 시간: %0.0f usec\n"
|
||||
"\t리샘플링 방법: %s\n"
|
||||
|
|
@ -2747,7 +2751,8 @@ msgstr ""
|
|||
"\t샘플 사양: %s\n"
|
||||
"\t채널맵: %s\n"
|
||||
"\t볼륨: %s\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t %s\n"
|
||||
"\t균형 %0.2f\n"
|
||||
"\t길이: %0.1fs\n"
|
||||
"\t크기: %s\n"
|
||||
"\t레이지: %s\n"
|
||||
|
|
@ -3131,8 +3136,8 @@ msgid ""
|
|||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
msgstr ""
|
||||
"초과 인자 값을 부여하면 무시합니다. 모든 메시지 변수는 단일 문자열로 주어져"
|
||||
"야 합니다."
|
||||
"초과 인수가 주어지면, 이들은 무시될 것입니다. 모든 메시지 변수는 단일 문자열"
|
||||
"로 주어져야 합니다."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
|
|
@ -3206,7 +3211,7 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [옵션] -- 프로그램 -[ 인자 ...]\n"
|
||||
"%s [옵션] -- 프로그램 -[ 인수 ...]\n"
|
||||
"\n"
|
||||
"프로그램이 동작 할 때에 일시적으로 PulseAudio를 중지합니다.\n"
|
||||
"\n"
|
||||
|
|
|
|||
107
po/lt.po
107
po/lt.po
|
|
@ -8,18 +8,17 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2024-02-15 22:36+0000\n"
|
||||
"Last-Translator: mooo <hazap@hotmail.com>\n"
|
||||
"Language-Team: Lithuanian <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/lt/>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2019-09-01 16:15+0300\n"
|
||||
"Last-Translator: Moo\n"
|
||||
"Language-Team: \n"
|
||||
"Language: lt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && ("
|
||||
"n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.4\n"
|
||||
"X-Generator: Poedit 2.2.1\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
|
||||
"%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -703,8 +702,9 @@ msgid "Analog Output"
|
|||
msgstr "Analoginė išvestis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2808
|
||||
#, fuzzy
|
||||
msgid "Headphones 2"
|
||||
msgstr "Ausinės 2"
|
||||
msgstr "Ausinės"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2809
|
||||
msgid "Headphones Mono Output"
|
||||
|
|
@ -751,24 +751,28 @@ msgid "Chat Output"
|
|||
msgstr "Pokalbio išvestis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2821
|
||||
#, fuzzy
|
||||
msgid "Chat Input"
|
||||
msgstr "Pokalbio įvestis"
|
||||
msgstr "Pokalbio išvestis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
#, fuzzy
|
||||
msgid "Virtual Surround 7.1"
|
||||
msgstr "Virtuali erdvinė 7.1"
|
||||
msgstr "Virtualus erdvinis rinktuvas"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4563
|
||||
msgid "Analog Mono"
|
||||
msgstr "Analoginė mono"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4564
|
||||
#, fuzzy
|
||||
msgid "Analog Mono (Left)"
|
||||
msgstr "Analoginė mono (kairioji)"
|
||||
msgstr "Analoginė mono"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4565
|
||||
#, fuzzy
|
||||
msgid "Analog Mono (Right)"
|
||||
msgstr "Analoginė mono (dešinioji)"
|
||||
msgstr "Analoginė mono"
|
||||
|
||||
#. Note: Not translated to "Analog Stereo Input", because the source
|
||||
#. * name gets "Input" appended to it automatically, so adding "Input"
|
||||
|
|
@ -873,11 +877,11 @@ msgstr "Skaitmeninė erdvinė 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr "Pokalbis"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr "Žaidimas"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
|
|
@ -901,7 +905,7 @@ msgstr "Dvipusė stereo"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr "Mono pokalbis + 7.1 erdvinė"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1098,16 +1102,19 @@ msgid "Headset Head Unit (HSP)"
|
|||
msgstr "Ausinių su mikrofonu pagrindinis įtaisas (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2079
|
||||
#, fuzzy
|
||||
msgid "Headset Audio Gateway (HSP)"
|
||||
msgstr "Ausinių su mikrofonu garso tinklų sietuvas (HSP)"
|
||||
msgstr "Ausinių su mikrofonu garso tinklų sietuvas (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2092
|
||||
#, fuzzy
|
||||
msgid "Handsfree Head Unit (HFP)"
|
||||
msgstr "Laisvų rankų įrangos pagrindinis įtaisas (HFP)"
|
||||
msgstr "Ausinių su mikrofonu pagrindinis įtaisas (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2105
|
||||
#, fuzzy
|
||||
msgid "Handsfree Audio Gateway (HFP)"
|
||||
msgstr "Laisvų rankų įrangos garso tinklų sietuvas (HFP)"
|
||||
msgstr "Ausinių su mikrofonu garso tinklų sietuvas (HSP/HFP)"
|
||||
|
||||
#: src/modules/echo-cancel/module-echo-cancel.c:59
|
||||
msgid ""
|
||||
|
|
@ -1169,8 +1176,8 @@ msgstr ""
|
|||
"schema> autoloaded=<nustatyti ar šis modulis bus įkeliamas automatiškai> "
|
||||
"use_volume_sharing=<yes arba no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT pagrįstas glodintuvas ties %s"
|
||||
|
|
@ -1238,14 +1245,14 @@ msgstr "Garsas ties @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunelis, skirtas %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunelis į %s/%s"
|
||||
|
|
@ -1596,11 +1603,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neteisinga žurnalo paskirtis."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Įtaisytas garsas"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modemas"
|
||||
|
||||
|
|
@ -2409,9 +2416,9 @@ msgid "Failed to get server information: %s"
|
|||
msgstr "Nepavyko gauti serverio informacijos: %s"
|
||||
|
||||
#: src/utils/pactl.c:224 src/utils/pactl.c:236
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s\n"
|
||||
msgstr "%s %s\n"
|
||||
|
||||
#: src/utils/pactl.c:281
|
||||
#, c-format
|
||||
|
|
@ -2455,19 +2462,20 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr "prieinamumas nežinomas"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
msgstr "prieinama"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:322
|
||||
msgid "not available"
|
||||
msgstr "neprieinama"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:331 src/utils/pactl.c:355
|
||||
#, fuzzy
|
||||
msgid "Unknown"
|
||||
msgstr "Nežinoma"
|
||||
msgstr "nežinoma"
|
||||
|
||||
#: src/utils/pactl.c:332
|
||||
msgid "Aux"
|
||||
|
|
@ -2480,11 +2488,12 @@ msgstr "Įvadinė linija"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr "Mikrofonas"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
msgid "Handset"
|
||||
msgstr "Telefono ragelis"
|
||||
msgstr "Ausinės su mikrofonu"
|
||||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
|
|
@ -2492,27 +2501,28 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr "SPDIF"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr "HDMI"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
msgstr "Televizorius"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
msgstr "USB"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:346
|
||||
#, fuzzy
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
msgstr "Bluetooth įvestis"
|
||||
|
||||
#: src/utils/pactl.c:352
|
||||
msgid "Network"
|
||||
msgstr "Tinklas"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:353
|
||||
#, fuzzy
|
||||
|
|
@ -2570,13 +2580,14 @@ msgid "\tPorts:\n"
|
|||
msgstr "\tPrievadai:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (tipas: %s, pirmenybė: %u%s%s, %s)\n"
|
||||
msgstr ""
|
||||
"\t\t%s: %s (rinktuvų: %u, šaltinių: %u, pirmenybė: %u, prieinama: %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
msgstr ", prieinamumo grupė: "
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
|
|
@ -2869,9 +2880,9 @@ msgid "Failure: %s"
|
|||
msgstr "Triktis: %s"
|
||||
|
||||
#: src/utils/pactl.c:1667
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Send message failed: %s"
|
||||
msgstr "Nepavyko išsiųsti pranešimo: %s"
|
||||
msgstr "read() nepavyko: %s"
|
||||
|
||||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
|
|
@ -2880,11 +2891,11 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr "nepavyko teisingai išnagrinėti list-handlers pranešimo atsako"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr "list-handlers pranešimo atsakas nėra JSON masyvas"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
|
|||
18
po/ml.po
18
po/ml.po
|
|
@ -6,7 +6,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.ml\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:41+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: <en@li.org>\n"
|
||||
|
|
@ -1133,8 +1133,8 @@ msgstr ""
|
|||
"plugin name> label=<ladspa plugin label> control=<comma separated list of "
|
||||
"input control values>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1197,14 +1197,14 @@ msgstr "@HOSTNAME@-ലുള്ള ഓഡിയോ"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1555,11 +1555,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] തെറ്റായ ലോഗ് ടാര്ഗറ്റ് '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ഇന്റേര്ണല് ഓഡിയോ"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "മോഡം"
|
||||
|
||||
|
|
|
|||
18
po/mr.po
18
po/mr.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:54+0000\n"
|
||||
"Last-Translator: Sandeep Shedmake <sshedmak@redhat.com>\n"
|
||||
"Language-Team: Marathi <fedora-trans-mr@redhat.com>\n"
|
||||
|
|
@ -1139,8 +1139,8 @@ msgstr ""
|
|||
"नाव> label=<ladspa प्लगइन लेबल> control=<इंपुट कंट्रोल मुल्यांची स्वल्पविराम विभाजीत "
|
||||
"सूची>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1203,14 +1203,14 @@ msgstr "@HOSTNAME@ वरील ऑडिओ"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1561,11 +1561,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] अवैध लॉग लक्ष्य '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "आंतरीक ऑडिओ"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "मोडेम"
|
||||
|
||||
|
|
|
|||
48
po/nl.po
48
po/nl.po
|
|
@ -9,9 +9,9 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2022-11-17 18:19+0000\n"
|
||||
"Last-Translator: Philip Goto <philip.goto@gmail.com>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-03-30 23:01+0000\n"
|
||||
"Last-Translator: Pjotr Vertaalt <pjotrvertaalt@gmail.com>\n"
|
||||
"Language-Team: Dutch <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/nl/>\n"
|
||||
"Language: nl\n"
|
||||
|
|
@ -19,7 +19,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14.2\n"
|
||||
"X-Generator: Weblate 4.5.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -1122,8 +1122,8 @@ msgstr ""
|
|||
"channel_map=<kanalenkaart> autoloaded=<ingesteld indien deze module "
|
||||
"automatisch wordt geladen> use_volume_sharing=<ja of nee> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-gebaseerd mengpaneel op %s"
|
||||
|
|
@ -1190,14 +1190,14 @@ msgstr "Geluid op @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel voor %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel naar %s/%s"
|
||||
|
|
@ -1546,11 +1546,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ongeldig logboekdoel."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Ingebouwde audio"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -2237,11 +2237,11 @@ msgstr "NUMERIEK-NIVEAU"
|
|||
|
||||
#: src/utils/pacmd.c:79
|
||||
msgid "FRAMES"
|
||||
msgstr "FRAMES"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659
|
||||
msgid "RECIPIENT MESSAGE [MESSAGE_PARAMETERS]"
|
||||
msgstr "ONTVANGER BERICHT [PARAMETERS_BERICHT]"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pacmd.c:82
|
||||
#, c-format
|
||||
|
|
@ -2342,9 +2342,9 @@ msgid "Failed to get server information: %s"
|
|||
msgstr "Serverinformatie verkrijgen mislukte: %s"
|
||||
|
||||
#: src/utils/pactl.c:224 src/utils/pactl.c:236
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s\n"
|
||||
msgstr "%s %s"
|
||||
|
||||
#: src/utils/pactl.c:281
|
||||
#, c-format
|
||||
|
|
@ -2416,7 +2416,7 @@ msgstr "Mic"
|
|||
|
||||
#: src/utils/pactl.c:338
|
||||
msgid "Handset"
|
||||
msgstr "Telefoon"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
|
|
@ -2879,7 +2879,7 @@ msgstr "bron"
|
|||
|
||||
#: src/utils/pactl.c:2167
|
||||
msgid "sink-input"
|
||||
msgstr "afvoerinvoer"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2170
|
||||
msgid "source-output"
|
||||
|
|
@ -2895,7 +2895,7 @@ msgstr "cliënt"
|
|||
|
||||
#: src/utils/pactl.c:2179
|
||||
msgid "sample-cache"
|
||||
msgstr "voorbeeldcache"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:2182
|
||||
msgid "server"
|
||||
|
|
@ -3017,9 +3017,9 @@ msgstr ""
|
|||
"Gelinkt met libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Ongeldige formaatwaarde ‘%s’"
|
||||
msgstr "Ongeldige stroomnaam ‘%s’"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3103,16 +3103,18 @@ msgid "You have to specify a source name"
|
|||
msgstr "U dient een bronnaam op te geven"
|
||||
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076
|
||||
#, fuzzy
|
||||
msgid "You have to specify a sink name/index"
|
||||
msgstr "U dient een afvoernaam/-index op te geven"
|
||||
msgstr "U dient een afvoernaam op te geven"
|
||||
|
||||
#: src/utils/pactl.c:3008
|
||||
msgid "You have to specify a sink name/index and a volume"
|
||||
msgstr "U dient een afvoernaam/index en een volume op te geven"
|
||||
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
#, fuzzy
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "U dient een bronnaam/-index op te geven"
|
||||
msgstr "U dient een bronnaam op te geven"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
|
|||
46
po/nn.po
46
po/nn.po
|
|
@ -7,7 +7,7 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-23 11:18+0000\n"
|
||||
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
|
||||
"Language-Team: Norwegian Nynorsk <https://translate.fedoraproject.org/"
|
||||
|
|
@ -1122,8 +1122,8 @@ msgstr ""
|
|||
"channels=<talet på kanalar> channel_map=<kanaldefinisjon> autoloaded=<vel "
|
||||
"dette viss modulen vert lasta automatisk> use_volume_sharing=<yes eller no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-basert lydbalansekontroll på %s"
|
||||
|
|
@ -1190,14 +1190,14 @@ msgstr "Lyd på @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunell for %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunell til %s/%s"
|
||||
|
|
@ -1548,11 +1548,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ugyldig loggmål."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Innebygd lyd"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1946,8 +1946,8 @@ msgstr ""
|
|||
" --version Vis versjonsinformasjon.\n"
|
||||
"\n"
|
||||
" -r, --record Opprett tilkopling for lydopptak.\n"
|
||||
" -p, --playback Opprett tilkopling for "
|
||||
"lydavspeling.\n"
|
||||
" -p, --playback Opprett tilkopling for lydavspeling."
|
||||
"\n"
|
||||
"\n"
|
||||
" -v, --verbose Vis meir detaljerte meldingar.\n"
|
||||
"\n"
|
||||
|
|
@ -1955,14 +1955,14 @@ msgstr ""
|
|||
" -d, --device=EINING Namnet på sluket/kjelda å kopla til. "
|
||||
"Du kan bruka namna @DEFAULT_SINK@, @DEFAULT_SOURCE@ og @DEFAULT_MONITOR@ for "
|
||||
"å velja standard sluk/kjelde/avlyttar.\n"
|
||||
" -n, --client-name=NAMN Kva klienten skal kallast på "
|
||||
"tenaren.\n"
|
||||
" --stream-name=NAMN Kva straumen skal kallast på "
|
||||
"tenaren.\n"
|
||||
" --volume=LYDSTYRKE Vel startlydstyrke (lineær). "
|
||||
"Verdiar: 0–65536.\n"
|
||||
" --rate=SAMPLINGSRATE Samplingsrate i Hz (standard: "
|
||||
"44100).\n"
|
||||
" -n, --client-name=NAMN Kva klienten skal kallast på tenaren."
|
||||
"\n"
|
||||
" --stream-name=NAMN Kva straumen skal kallast på tenaren."
|
||||
"\n"
|
||||
" --volume=LYDSTYRKE Vel startlydstyrke (lineær). Verdiar:"
|
||||
" 0–65536.\n"
|
||||
" --rate=SAMPLINGSRATE Samplingsrate i Hz (standard: 44100)."
|
||||
"\n"
|
||||
" --format=SAMPLEFORMAT Samplingsformat. Sjå\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
|
|
@ -1983,8 +1983,8 @@ msgstr ""
|
|||
"frå\n"
|
||||
" sluket/kjelda som straumen vert "
|
||||
"kopla til.\n"
|
||||
" --no-remix Ikkje oppmiks eller nedmiks "
|
||||
"kanalar.\n"
|
||||
" --no-remix Ikkje oppmiks eller nedmiks kanalar."
|
||||
"\n"
|
||||
" --no-remap Definer kanalar etter indeks, ikkje "
|
||||
"etter namn.\n"
|
||||
" --latency=BYTE Be om valt latenstid, målt i byte.\n"
|
||||
|
|
@ -1998,8 +1998,8 @@ msgstr ""
|
|||
"verdi.\n"
|
||||
" --raw Ta opp / spel av rå PCM-data.\n"
|
||||
" --passthrough Vidaresend lyddata.\n"
|
||||
" --file-format[=FFORMAT] Ta opp / spel av formatert PCM-"
|
||||
"data.\n"
|
||||
" --file-format[=FFORMAT] Ta opp / spel av formatert PCM-data."
|
||||
"\n"
|
||||
" --list-file-formats Vis tilgjengelege filformat.\n"
|
||||
" --monitor-stream=INDEKS Ta opp frå sluk-inndata med indeksen "
|
||||
"INDEKS.\n"
|
||||
|
|
|
|||
18
po/oc.po
18
po/oc.po
|
|
@ -13,7 +13,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio trunk\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2016-10-12 22:20+0200\n"
|
||||
"Last-Translator: Cédric Valmary (totenoc.eu) <cvalmary@yahoo.fr>\n"
|
||||
"Language-Team: Tot En Òc\n"
|
||||
|
|
@ -1051,8 +1051,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1119,14 +1119,14 @@ msgstr "Audio sus @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1474,11 +1474,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Àudio integrat"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modèm"
|
||||
|
||||
|
|
|
|||
18
po/or.po
18
po/or.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.or\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:55+0000\n"
|
||||
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
|
||||
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
|
||||
|
|
@ -1164,8 +1164,8 @@ msgstr ""
|
|||
"channel_map=<ଚ୍ୟାନେଲ ମ୍ୟାପ> plugin=<ladspa ପ୍ଲଗଇନ ନାମ> label=<ladspa ପ୍ଲଗଇନ "
|
||||
"ନାମପଟି> control=<କମା ଦ୍ୱାରା ପୃଥକ ନିବେଶ ନିୟନ୍ତ୍ରଣ ମୂଲ୍ୟ ତାଲିକା>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1227,14 +1227,14 @@ msgstr "@HOSTNAME@ ରେ ଧ୍ୱନି"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1584,11 +1584,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] ଅବୈଧ ଲଗ ଲକ୍ଷ୍ଯସ୍ଥଳ '%s'।"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "ମଡେମ"
|
||||
|
||||
|
|
|
|||
18
po/pa.po
18
po/pa.po
|
|
@ -11,7 +11,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.pa\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:55+0000\n"
|
||||
"Last-Translator: Jaswinder Singh <jsingh@redhat.com>\n"
|
||||
"Language-Team: Punjabi/Panjabi <kde-i18n-doc@kde.org>\n"
|
||||
|
|
@ -1135,8 +1135,8 @@ msgstr ""
|
|||
"plugin name> label=<ladspa plugin label> control=<comma separated list of "
|
||||
"input control values>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1199,14 +1199,14 @@ msgstr "@HOSTNAME@ ਉੱਪਰ ਆਡੀਓ"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1557,11 +1557,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] ਗਲਤ ਲਾਗ ਟਾਰਗੇਟ '%s'।"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "ਮਾਡਮ"
|
||||
|
||||
|
|
|
|||
18
po/pl.po
18
po/pl.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-21 10:06+0000\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1151,8 +1151,8 @@ msgstr ""
|
|||
"kanałów> autoloaded=<należy ustawić, jeśli ten moduł jest automatycznie "
|
||||
"uruchamiany> use_volume_sharing=<yes lub no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Korektor graficzny na podstawie FFT na %s"
|
||||
|
|
@ -1219,14 +1219,14 @@ msgstr "Dźwięk na @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel dla %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunel do %s/%s"
|
||||
|
|
@ -1576,11 +1576,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Nieprawidłowy dziennik docelowy."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Wbudowany dźwięk"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
118
po/pt_BR.po
118
po/pt_BR.po
|
|
@ -10,8 +10,8 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-05-10 22:55+0000\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-08-04 08:04+0000\n"
|
||||
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.fedoraproject.org/"
|
||||
"projects/pulseaudio/pulseaudio/pt_BR/>\n"
|
||||
|
|
@ -20,7 +20,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.11.3\n"
|
||||
"X-Generator: Weblate 4.7.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -193,12 +193,13 @@ msgid "--fail expects boolean argument"
|
|||
msgstr "--fail espera argumento booleano"
|
||||
|
||||
#: src/daemon/cmdline.c:265
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"--log-level expects log level argument (either numeric in range 0..4 or one "
|
||||
"of error, warn, notice, info, debug)."
|
||||
msgstr ""
|
||||
"--log-level espera um argumento em nível de log (seja numérico na faixa de "
|
||||
"0..4 seja algum entre error, warn, notice, info, debug)."
|
||||
"0..4 seja algum entre debug, info, notice, warn, error)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -1161,8 +1162,8 @@ msgstr ""
|
|||
"canais> autoloaded=<define se este módulo está sendo carregado "
|
||||
"automaticamente> use_volume_sharing=<yes ou no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Equalizador baseado em FFT em %s"
|
||||
|
|
@ -1229,14 +1230,14 @@ msgstr "Áudio em @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Túnel para %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Túnel para %s/%s"
|
||||
|
|
@ -1586,11 +1587,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Alvo do log inválido."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Áudio interno"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1908,7 +1909,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() falhou: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1987,58 +1988,62 @@ msgstr ""
|
|||
" -v, --verbose Habilita operações no modo "
|
||||
"detalhado\n"
|
||||
"\n"
|
||||
" -s, --server=SERVIDOR O nome do servidor para se conectar\n"
|
||||
" -d, --device=DISPOSITIVO O nome do destino/fonte para se "
|
||||
"conectar\n"
|
||||
" -s, --server=SERVIDOR O nome do servidor a conectar-se\n"
|
||||
" -d, --device=DISPOSITIVO O nome do destino/fonte a conectar-"
|
||||
"se\n"
|
||||
" -n, --client-name=NOME Como chamar este cliente no "
|
||||
"servidor\n"
|
||||
" --stream-name=NOME Como chamar este fluxo no servidor\n"
|
||||
" --volume=VOLUME Especifica o volume (linear) inicial "
|
||||
"no intervalo 0...65536\n"
|
||||
" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem em Hz (padrão: "
|
||||
" --volume=VOLUME Especifica a faixa (linear) inicial\n"
|
||||
" de volume no intervalo 0...65536\n"
|
||||
" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem, Hz (padrão "
|
||||
"44100)\n"
|
||||
" --format=FORMATO_DE_AMOSTRAGEM Formato da amostragem, veja\n"
|
||||
" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, veja\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" para valores possíveis (padrão: "
|
||||
"s16ne)\n"
|
||||
" --channels=CANAIS O número de canais, 1 para mono, 2 "
|
||||
"para estéreo\n"
|
||||
" (padrão: 2)\n"
|
||||
" --channel-map=MAPA_DE_CANAIS Mapeamento de canais para usar em "
|
||||
"vez do padrão\n"
|
||||
" --fix-format Obtém o formato da amostragem do "
|
||||
"destino/fonte onde\n"
|
||||
" o fluxo está sendo conectado.\n"
|
||||
" --fix-rate Obtém a taxa de amostragem do "
|
||||
"destino/fonte onde\n"
|
||||
" o fluxo está sendo conectado.\n"
|
||||
" --fix-channels Obtém o número de canais e o mapa de "
|
||||
"canais do destino\n"
|
||||
" onde o fluxo está sendo conectado.\n"
|
||||
" --no-remix Não faz upmix nem downmix dos canais."
|
||||
"\n"
|
||||
" --no-remap Mapeia os canais por índice em vez "
|
||||
"de nome.\n"
|
||||
" --latency=BYTES Requisita a latência especificada em "
|
||||
" --channels=CANAIS O número de canais, 1 para mono,\n"
|
||||
" 2 para estéreo (padrão: 2)\n"
|
||||
" --channel-map=MAPA_DE_CANAIS Mapeamento de canais a ser usado no\n"
|
||||
" lugar do padrão\n"
|
||||
" --fix-format Obtém o formato da amostragem do\n"
|
||||
" destino/fonte onde o fluxo está\n"
|
||||
" sendo conectado.\n"
|
||||
" --fix-rate Obtém a taxa de amostragem do\n"
|
||||
" destino/fonte onde o fluxo está\n"
|
||||
" sendo conectado.\n"
|
||||
" --fix-channels Obtém o número de canais e o mapa "
|
||||
"de\n"
|
||||
" canais do destino onde o fluxo está\n"
|
||||
" sendo conectado.\n"
|
||||
" --no-remix Não faz upmix nem downmix dos "
|
||||
"canais.\n"
|
||||
" --no-remap Mapeia os canais por índice em vez\n"
|
||||
" de nome\n"
|
||||
" --latency=BYTES Requisita a latência especificada "
|
||||
"em\n"
|
||||
" bytes.\n"
|
||||
" --process-time=BYTES Requisita o tempo de processo\n"
|
||||
" especificado por requisições em "
|
||||
"bytes.\n"
|
||||
" --process-time=BYTES Requisita o tempo de processo por "
|
||||
"requisições em bytes.\n"
|
||||
" --latency-msec=MSEGUNDOS Requisita a latência especificada em "
|
||||
"milissegundos.\n"
|
||||
" --process-time-msec=MSEGUNDOS Requisita o tempo de processo por "
|
||||
"requisições em milissegundos.\n"
|
||||
" --latency-msec=MSEGUNDOS Requisita a latência especificada "
|
||||
"em\n"
|
||||
" milissegundos.\n"
|
||||
" --process-time-msec=MSEGUNDOS Requisita a o tempo do processo por\n"
|
||||
" requisição em milissegundos.\n"
|
||||
" --property=PROPRIEDADE=VALOR Define a propriedade especificada "
|
||||
"para o valor especificado.\n"
|
||||
"para\n"
|
||||
" o valor especificado.\n"
|
||||
" --raw Grava/reproduz dados PCM não "
|
||||
"tratados.\n"
|
||||
" --passthrough Dados para conversão.\n"
|
||||
" --file-format[=FORMATO_ARQUIVO] Grava/reproduz dados PCM formatados."
|
||||
"\n"
|
||||
" --file-format[=FORMATO_ARQUIVO] Grava/reproduz dados PCM "
|
||||
"formatados.\n"
|
||||
" --list-file-formats Lista formatos de arquivo "
|
||||
"disponíveis.\n"
|
||||
" --monitor-stream=ÍNDICE Grava da entrada do destino com "
|
||||
"índice ÍNDICE.\n"
|
||||
"índice.\n"
|
||||
|
||||
#: src/utils/pacat.c:793
|
||||
msgid "Play back encoded audio files on a PulseAudio sound server."
|
||||
|
|
@ -2871,12 +2876,11 @@ msgstr "mensagem list-handlers falhou: %s"
|
|||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr ""
|
||||
"a resposta da mensagem de list-handlers não pôde ser tratada corretamente"
|
||||
msgstr "a resposta da mensagem list-handlers não pôde ser tratada corretamente"
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr "a resposta da mensagem de list-handlers não é um array JSON"
|
||||
msgstr "a resposta da mensagem list-handlers não é um array JSON"
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
@ -3048,7 +3052,7 @@ msgstr ""
|
|||
"padrão.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3065,9 +3069,7 @@ msgstr ""
|
|||
" -h, --help Mostra esta ajuda\n"
|
||||
" --version Mostra a versão\n"
|
||||
"\n"
|
||||
" -f, --format=FORMATO O formato da saída. \"normal\" ou "
|
||||
"\"json\"\n"
|
||||
" -s, --server=SERVIDOR Nome do servidor para se conectar\n"
|
||||
" -s, --server=SERVIDOR Nome do servidor a ser conectado\n"
|
||||
" -n, --client-name=NOME Como chamar este cliente no "
|
||||
"servidor\n"
|
||||
|
||||
|
|
@ -3083,9 +3085,9 @@ msgstr ""
|
|||
"Vinculado com libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Valor de formato “%s” inválido"
|
||||
msgstr "Nome do fluxo “%s” inválido"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
@ -954,7 +954,7 @@ msgid ""
|
|||
"is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097 src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094 src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1008,12 +1008,12 @@ msgstr ""
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370 src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356 src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715 src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697 src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1348,11 +1348,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
458
po/ru.po
458
po/ru.po
|
|
@ -9,18 +9,18 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-05-11 00:38+0000\n"
|
||||
"Last-Translator: \"Sergey A.\" <Ser82-png@yandex.ru>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-23 11:18+0000\n"
|
||||
"Last-Translator: Sergey A. <sw@atrus.ru>\n"
|
||||
"Language-Team: Russian <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/ru/>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.11.3\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.12.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -109,8 +109,8 @@ msgstr ""
|
|||
" --start Запустить демон, если ещё не "
|
||||
"запущен\n"
|
||||
" -k --kill Убить процесс запущенного демона\n"
|
||||
" --check Проверить, запущен ли демон "
|
||||
"(возвращает только код завершения)\n"
|
||||
" --check Проверить, запущен ли демон ("
|
||||
"возвращает только код завершения)\n"
|
||||
"\n"
|
||||
"ПАРАМЕТРЫ:\n"
|
||||
" --system[=BOOL] Запустить в общесистемном режиме\n"
|
||||
|
|
@ -397,7 +397,7 @@ msgstr ""
|
|||
|
||||
#: src/daemon/ltdl-bind-now.c:144
|
||||
msgid "Failed to add bind-now-loader."
|
||||
msgstr "Не удалось добавить bind-now-loader."
|
||||
msgstr "Не удалось добавить новый загрузчик bind-now."
|
||||
|
||||
#: src/daemon/main.c:265
|
||||
#, c-format
|
||||
|
|
@ -1063,7 +1063,7 @@ msgstr "Хендс-фри"
|
|||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:1971
|
||||
msgid "Headphone"
|
||||
msgstr "Наушники"
|
||||
msgstr "Наушник"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:1977 src/utils/pactl.c:347
|
||||
msgid "Portable"
|
||||
|
|
@ -1170,8 +1170,8 @@ msgstr ""
|
|||
"загружен автоматически> use_volume_sharing=<использовать общий уровень "
|
||||
"громкости (yes или no)> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Эквалайзер на основе БПФ на %s"
|
||||
|
|
@ -1238,14 +1238,18 @@ msgstr "Аудио на @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:320
|
||||
#: src/modules/module-tunnel-source-new.c:305
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Туннель для %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:564
|
||||
#: src/modules/module-tunnel-source-new.c:540
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Туннель к %s/%s"
|
||||
|
|
@ -1268,9 +1272,10 @@ msgstr ""
|
|||
"приёмника для фильтрации> sink_master=<имя приёмника для фильтрации> "
|
||||
"format=<формат отсчётов> rate=<частота дискретизации> channels=<число "
|
||||
"каналов> channel_map=<схема каналов> use_volume_sharing=<использовать общий "
|
||||
"уровень (yes или no)> force_flat_volume=<yes или no> hrir=/path/to/left_hrir."
|
||||
"wav hrir_left=/path/to/left_hrir.wav hrir_right=/path/to/optional/right_hrir."
|
||||
"wav autoloaded=<установлено, если этот модуль загружается автоматически> "
|
||||
"уровень (yes или no)> force_flat_volume=<yes или no> hrir=/path/to/"
|
||||
"left_hrir.wav hrir_left=/path/to/left_hrir.wav hrir_right=/path/to/optional/"
|
||||
"right_hrir.wav autoloaded=<установлено, если этот модуль загружается "
|
||||
"автоматически> "
|
||||
|
||||
#: src/modules/raop/module-raop-discover.c:295
|
||||
msgid "Unknown device model"
|
||||
|
|
@ -1597,11 +1602,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Недопустимый журнал."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Встроенное аудио"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Модем"
|
||||
|
||||
|
|
@ -2037,8 +2042,8 @@ msgstr ""
|
|||
"байтах.\n"
|
||||
" --process-time=BYTES Запросить указанное время процесса "
|
||||
"на запрос в байтах.\n"
|
||||
" --latency-msec=MSEC Запросить указанную задержку в "
|
||||
"мсек.\n"
|
||||
" --latency-msec=MSEC Запросить указанную задержку в мсек."
|
||||
"\n"
|
||||
" --process-time-msec=MSEC Запросить указанное время процесса "
|
||||
"на запрос в мсек.\n"
|
||||
" --property=PROPERTY=VALUE Установить для указанного свойства "
|
||||
|
|
@ -2090,7 +2095,7 @@ msgstr ""
|
|||
"Скомпилировано с libpulse %s\n"
|
||||
"Скомпоновано с libpulse %s\n"
|
||||
|
||||
#: src/utils/pacat.c:852 src/utils/pactl.c:2731
|
||||
#: src/utils/pacat.c:852 src/utils/pactl.c:2731 src/utils/pactl.c:2720
|
||||
#, c-format
|
||||
msgid "Invalid client name '%s'"
|
||||
msgstr "Недопустимое имя клиента «%s»"
|
||||
|
|
@ -2163,7 +2168,7 @@ msgstr ""
|
|||
"Предупреждение: указанная спецификация отсчётов будет заменена спецификацией "
|
||||
"из файла."
|
||||
|
||||
#: src/utils/pacat.c:1091 src/utils/pactl.c:2806
|
||||
#: src/utils/pacat.c:1091 src/utils/pactl.c:2806 src/utils/pactl.c:2794
|
||||
msgid "Failed to determine sample specification from file."
|
||||
msgstr "Не удалось определить спецификацию отсчётов из файла."
|
||||
|
||||
|
|
@ -2199,7 +2204,7 @@ msgstr "воспроизведения"
|
|||
msgid "Failed to set media name."
|
||||
msgstr "Не удалось установить имя потока."
|
||||
|
||||
#: src/utils/pacat.c:1172 src/utils/pactl.c:3218
|
||||
#: src/utils/pacat.c:1172 src/utils/pactl.c:3218 src/utils/pactl.c:3206
|
||||
msgid "pa_mainloop_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_mainloop_new()."
|
||||
|
||||
|
|
@ -2207,11 +2212,11 @@ msgstr "Произошла ошибка при выполнении pa_mainloop_
|
|||
msgid "io_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении io_new()."
|
||||
|
||||
#: src/utils/pacat.c:1202 src/utils/pactl.c:3230
|
||||
#: src/utils/pacat.c:1202 src/utils/pactl.c:3230 src/utils/pactl.c:3218
|
||||
msgid "pa_context_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_context_new()."
|
||||
|
||||
#: src/utils/pacat.c:1210 src/utils/pactl.c:3236
|
||||
#: src/utils/pacat.c:1210 src/utils/pactl.c:3236 src/utils/pactl.c:3224
|
||||
#, c-format
|
||||
msgid "pa_context_connect() failed: %s"
|
||||
msgstr "Произошла ошибка при выполнении pa_context_connect(): %s"
|
||||
|
|
@ -2220,21 +2225,22 @@ msgstr "Произошла ошибка при выполнении pa_context_c
|
|||
msgid "pa_context_rttime_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_context_rttime_new()."
|
||||
|
||||
#: src/utils/pacat.c:1223 src/utils/pactl.c:3241
|
||||
#: src/utils/pacat.c:1223 src/utils/pactl.c:3241 src/utils/pactl.c:3229
|
||||
msgid "pa_mainloop_run() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_mainloop_run()."
|
||||
|
||||
#: src/utils/pacmd.c:51 src/utils/pactl.c:2643
|
||||
#: src/utils/pacmd.c:51 src/utils/pactl.c:2643 src/utils/pactl.c:2632
|
||||
msgid "NAME [ARGS ...]"
|
||||
msgstr "ИМЯ [АРГУМЕНТЫ ...]"
|
||||
|
||||
#: src/utils/pacmd.c:52 src/utils/pacmd.c:60 src/utils/pactl.c:2644
|
||||
#: src/utils/pactl.c:2651 src/utils/pactl.c:2652
|
||||
#: src/utils/pactl.c:2651 src/utils/pactl.c:2652 src/utils/pactl.c:2633
|
||||
#: src/utils/pactl.c:2640 src/utils/pactl.c:2641
|
||||
msgid "NAME|#N"
|
||||
msgstr "ИМЯ|№"
|
||||
|
||||
#: src/utils/pacmd.c:53 src/utils/pacmd.c:63 src/utils/pactl.c:2642
|
||||
#: src/utils/pactl.c:2649
|
||||
#: src/utils/pactl.c:2649 src/utils/pactl.c:2631 src/utils/pactl.c:2638
|
||||
msgid "NAME"
|
||||
msgstr "ИМЯ"
|
||||
|
||||
|
|
@ -2247,6 +2253,7 @@ msgid "#N VOLUME"
|
|||
msgstr "№ ГРОМКОСТЬ"
|
||||
|
||||
#: src/utils/pacmd.c:56 src/utils/pacmd.c:70 src/utils/pactl.c:2646
|
||||
#: src/utils/pactl.c:2635
|
||||
msgid "NAME|#N 1|0"
|
||||
msgstr "ИМЯ|№ 1|0"
|
||||
|
||||
|
|
@ -2282,7 +2289,7 @@ msgstr "ПУТЬ"
|
|||
msgid "FILENAME SINK|#N"
|
||||
msgstr "ИМЯ_ФАЙЛА АУДИОПРИЁМНИК|№"
|
||||
|
||||
#: src/utils/pacmd.c:69 src/utils/pactl.c:2645
|
||||
#: src/utils/pacmd.c:69 src/utils/pactl.c:2645 src/utils/pactl.c:2634
|
||||
msgid "#N SINK|SOURCE"
|
||||
msgstr "№ АУДИОПРИЁМНИК|ИСТОЧНИК"
|
||||
|
||||
|
|
@ -2290,15 +2297,15 @@ msgstr "№ АУДИОПРИЁМНИК|ИСТОЧНИК"
|
|||
msgid "1|0"
|
||||
msgstr "1|0"
|
||||
|
||||
#: src/utils/pacmd.c:72 src/utils/pactl.c:2647
|
||||
#: src/utils/pacmd.c:72 src/utils/pactl.c:2647 src/utils/pactl.c:2636
|
||||
msgid "CARD PROFILE"
|
||||
msgstr "ПЛАТА ПРОФИЛЬ"
|
||||
|
||||
#: src/utils/pacmd.c:73 src/utils/pactl.c:2650
|
||||
#: src/utils/pacmd.c:73 src/utils/pactl.c:2650 src/utils/pactl.c:2639
|
||||
msgid "NAME|#N PORT"
|
||||
msgstr "ИМЯ|№ ПОРТ"
|
||||
|
||||
#: src/utils/pacmd.c:74 src/utils/pactl.c:2658
|
||||
#: src/utils/pacmd.c:74 src/utils/pactl.c:2658 src/utils/pactl.c:2647
|
||||
msgid "CARD-NAME|CARD-#N PORT OFFSET"
|
||||
msgstr "ИМЯ_ПЛАТЫ|№_ПЛАТЫ ПОРТ ЗАДЕРЖКА"
|
||||
|
||||
|
|
@ -2314,7 +2321,7 @@ msgstr "ЧИСЛОВОЙ-УРОВЕНЬ"
|
|||
msgid "FRAMES"
|
||||
msgstr "КАДРОВ"
|
||||
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659 src/utils/pactl.c:2648
|
||||
msgid "RECIPIENT MESSAGE [MESSAGE_PARAMETERS]"
|
||||
msgstr "СООБЩЕНИЕ ПОЛУЧАТЕЛЯ [ПАРАМЕТРЫ_СООБЩЕНИЯ]"
|
||||
|
||||
|
|
@ -2498,7 +2505,7 @@ msgstr "Гарнитура"
|
|||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
msgstr "Наушники-вкладыши"
|
||||
msgstr "Наушник"
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
|
|
@ -3012,15 +3019,15 @@ msgstr "Получен сигнал для остановки (SIGINT), выхо
|
|||
msgid "Invalid volume specification"
|
||||
msgstr "Недопустимое значение громкости"
|
||||
|
||||
#: src/utils/pactl.c:2581
|
||||
#: src/utils/pactl.c:2581 src/utils/pactl.c:2570
|
||||
msgid "Volume outside permissible range.\n"
|
||||
msgstr "Указанная громкость выходит за границы разрешённого диапазона.\n"
|
||||
|
||||
#: src/utils/pactl.c:2594
|
||||
#: src/utils/pactl.c:2594 src/utils/pactl.c:2583
|
||||
msgid "Invalid number of volume specifications.\n"
|
||||
msgstr "Недопустимое количество значений громкости.\n"
|
||||
|
||||
#: src/utils/pactl.c:2606
|
||||
#: src/utils/pactl.c:2606 src/utils/pactl.c:2595
|
||||
msgid "Inconsistent volume specification.\n"
|
||||
msgstr "Несогласованные способы указания значений громкости.\n"
|
||||
|
||||
|
|
@ -3032,43 +3039,46 @@ msgstr "Несогласованные способы указания знач
|
|||
#: src/utils/pactl.c:2651 src/utils/pactl.c:2652 src/utils/pactl.c:2653
|
||||
#: src/utils/pactl.c:2654 src/utils/pactl.c:2655 src/utils/pactl.c:2656
|
||||
#: src/utils/pactl.c:2657 src/utils/pactl.c:2658 src/utils/pactl.c:2659
|
||||
#: src/utils/pactl.c:2660
|
||||
#: src/utils/pactl.c:2660 src/utils/pactl.c:2625 src/utils/pactl.c:2626
|
||||
#: src/utils/pactl.c:2627 src/utils/pactl.c:2628 src/utils/pactl.c:2629
|
||||
#: src/utils/pactl.c:2630 src/utils/pactl.c:2631 src/utils/pactl.c:2632
|
||||
#: src/utils/pactl.c:2633 src/utils/pactl.c:2634 src/utils/pactl.c:2635
|
||||
msgid "[options]"
|
||||
msgstr "[параметры]"
|
||||
|
||||
#: src/utils/pactl.c:2638
|
||||
#: src/utils/pactl.c:2638 src/utils/pactl.c:2627
|
||||
msgid "[TYPE]"
|
||||
msgstr "[ТИП]"
|
||||
|
||||
#: src/utils/pactl.c:2640
|
||||
#: src/utils/pactl.c:2640 src/utils/pactl.c:2629
|
||||
msgid "FILENAME [NAME]"
|
||||
msgstr "ИМЯ_ФАЙЛА [ИМЯ]"
|
||||
|
||||
#: src/utils/pactl.c:2641
|
||||
#: src/utils/pactl.c:2641 src/utils/pactl.c:2630
|
||||
msgid "NAME [SINK]"
|
||||
msgstr "ИМЯ [АУДИОПРИЁМНИК]"
|
||||
|
||||
#: src/utils/pactl.c:2653
|
||||
#: src/utils/pactl.c:2653 src/utils/pactl.c:2642
|
||||
msgid "NAME|#N VOLUME [VOLUME ...]"
|
||||
msgstr "ИМЯ|№ ГРОМКОСТЬ [ГРОМКОСТЬ ...]"
|
||||
|
||||
#: src/utils/pactl.c:2654
|
||||
#: src/utils/pactl.c:2654 src/utils/pactl.c:2643
|
||||
msgid "#N VOLUME [VOLUME ...]"
|
||||
msgstr "№ ГРОМКОСТЬ [ГРОМКОСТЬ ...]"
|
||||
|
||||
#: src/utils/pactl.c:2655
|
||||
#: src/utils/pactl.c:2655 src/utils/pactl.c:2644
|
||||
msgid "NAME|#N 1|0|toggle"
|
||||
msgstr "ИМЯ|№ 1|0|toggle"
|
||||
|
||||
#: src/utils/pactl.c:2656
|
||||
#: src/utils/pactl.c:2656 src/utils/pactl.c:2645
|
||||
msgid "#N 1|0|toggle"
|
||||
msgstr "№ 1|0|toggle"
|
||||
|
||||
#: src/utils/pactl.c:2657
|
||||
#: src/utils/pactl.c:2657 src/utils/pactl.c:2646
|
||||
msgid "#N FORMATS"
|
||||
msgstr "№ ФОРМАТЫ"
|
||||
|
||||
#: src/utils/pactl.c:2661
|
||||
#: src/utils/pactl.c:2661 src/utils/pactl.c:2650
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
|
@ -3080,7 +3090,7 @@ msgstr ""
|
|||
"можно использовать для указания аудиоприёмника, источника и монитора, "
|
||||
"используемых по умолчанию.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#: src/utils/pactl.c:2664 src/utils/pactl.c:2653
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
|
@ -3103,7 +3113,7 @@ msgstr ""
|
|||
" -s, --server=СЕРВЕР Имя сервера для подключения\n"
|
||||
" -n, --client-name=ИМЯ Имя этого клиента на сервере\n"
|
||||
|
||||
#: src/utils/pactl.c:2707
|
||||
#: src/utils/pactl.c:2707 src/utils/pactl.c:2696
|
||||
#, c-format
|
||||
msgid ""
|
||||
"pactl %s\n"
|
||||
|
|
@ -3114,65 +3124,66 @@ msgstr ""
|
|||
"Скомпилировано с libpulse %s\n"
|
||||
"Скомпоновано с libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#: src/utils/pactl.c:2751 src/utils/pactl.c:2739
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Недопустимое значение формата «%s»"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#: src/utils/pactl.c:2778 src/utils/pactl.c:2766
|
||||
#, c-format
|
||||
msgid "Specify nothing, or one of: %s"
|
||||
msgstr "Не указывайте ничего либо укажите одно из: %s"
|
||||
|
||||
#: src/utils/pactl.c:2788
|
||||
#: src/utils/pactl.c:2788 src/utils/pactl.c:2776
|
||||
msgid "Please specify a sample file to load"
|
||||
msgstr "Необходимо указать файл, из которого будет загружен сэмпл"
|
||||
|
||||
#: src/utils/pactl.c:2801
|
||||
#: src/utils/pactl.c:2801 src/utils/pactl.c:2789
|
||||
msgid "Failed to open sound file."
|
||||
msgstr "Не удалось открыть аудиофайл."
|
||||
|
||||
#: src/utils/pactl.c:2813
|
||||
#: src/utils/pactl.c:2813 src/utils/pactl.c:2801
|
||||
msgid "Warning: Failed to determine sample specification from file."
|
||||
msgstr "Предупреждение: не удалось определить спецификацию отсчётов из файла."
|
||||
|
||||
#: src/utils/pactl.c:2823
|
||||
#: src/utils/pactl.c:2823 src/utils/pactl.c:2811
|
||||
msgid "You have to specify a sample name to play"
|
||||
msgstr "Необходимо указать имя сэмпла для воспроизведения"
|
||||
|
||||
#: src/utils/pactl.c:2835
|
||||
#: src/utils/pactl.c:2835 src/utils/pactl.c:2823
|
||||
msgid "You have to specify a sample name to remove"
|
||||
msgstr "Необходимо указать имя сэмпла для удаления"
|
||||
|
||||
#: src/utils/pactl.c:2844
|
||||
#: src/utils/pactl.c:2844 src/utils/pactl.c:2832
|
||||
msgid "You have to specify a sink input index and a sink"
|
||||
msgstr "Необходимо указать номер входа аудиоприёмника и аудиоприёмник"
|
||||
|
||||
#: src/utils/pactl.c:2854
|
||||
#: src/utils/pactl.c:2854 src/utils/pactl.c:2842
|
||||
msgid "You have to specify a source output index and a source"
|
||||
msgstr "Необходимо указать номер выхода источника и источник"
|
||||
|
||||
#: src/utils/pactl.c:2869
|
||||
#: src/utils/pactl.c:2869 src/utils/pactl.c:2857
|
||||
msgid "You have to specify a module name and arguments."
|
||||
msgstr "Необходимо указать имя модуля и аргументы."
|
||||
|
||||
#: src/utils/pactl.c:2889
|
||||
#: src/utils/pactl.c:2889 src/utils/pactl.c:2877
|
||||
msgid "You have to specify a module index or name"
|
||||
msgstr "Необходимо указать номер или имя модуля"
|
||||
|
||||
#: src/utils/pactl.c:2902
|
||||
#: src/utils/pactl.c:2902 src/utils/pactl.c:2890
|
||||
msgid ""
|
||||
"You may not specify more than one sink. You have to specify a boolean value."
|
||||
msgstr ""
|
||||
"Нельзя указывать больше одного аудиоприёмника. Необходимо указать логическое "
|
||||
"значение."
|
||||
|
||||
#: src/utils/pactl.c:2907 src/utils/pactl.c:2927
|
||||
#: src/utils/pactl.c:2907 src/utils/pactl.c:2927 src/utils/pactl.c:2895
|
||||
#: src/utils/pactl.c:2915
|
||||
msgid "Invalid suspend specification."
|
||||
msgstr ""
|
||||
"Недопустимое значение операции приостановки, ожидалось логическое значение."
|
||||
|
||||
#: src/utils/pactl.c:2922
|
||||
#: src/utils/pactl.c:2922 src/utils/pactl.c:2910
|
||||
msgid ""
|
||||
"You may not specify more than one source. You have to specify a boolean "
|
||||
"value."
|
||||
|
|
@ -3180,59 +3191,61 @@ msgstr ""
|
|||
"Нельзя указывать больше одного источника. Необходимо указать логическое "
|
||||
"значение."
|
||||
|
||||
#: src/utils/pactl.c:2939
|
||||
#: src/utils/pactl.c:2939 src/utils/pactl.c:2927
|
||||
msgid "You have to specify a card name/index and a profile name"
|
||||
msgstr "Необходимо указать имя или номер звуковой платы и имя профиля"
|
||||
|
||||
#: src/utils/pactl.c:2950
|
||||
#: src/utils/pactl.c:2950 src/utils/pactl.c:2938
|
||||
msgid "You have to specify a sink name/index and a port name"
|
||||
msgstr "Необходимо указать имя или номер аудиоприёмника и имя порта"
|
||||
|
||||
#: src/utils/pactl.c:2961
|
||||
#: src/utils/pactl.c:2961 src/utils/pactl.c:2949
|
||||
msgid "You have to specify a sink name"
|
||||
msgstr "Необходимо указать имя аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:2974
|
||||
#: src/utils/pactl.c:2974 src/utils/pactl.c:2962
|
||||
msgid "You have to specify a source name/index and a port name"
|
||||
msgstr "Необходимо указать имя или номер источника и имя порта"
|
||||
|
||||
#: src/utils/pactl.c:2985
|
||||
#: src/utils/pactl.c:2985 src/utils/pactl.c:2973
|
||||
msgid "You have to specify a source name"
|
||||
msgstr "Необходимо указать имя источника"
|
||||
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076 src/utils/pactl.c:2986
|
||||
#: src/utils/pactl.c:3064
|
||||
msgid "You have to specify a sink name/index"
|
||||
msgstr "Необходимо указать имя или номер аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:3008
|
||||
#: src/utils/pactl.c:3008 src/utils/pactl.c:2996
|
||||
msgid "You have to specify a sink name/index and a volume"
|
||||
msgstr "Необходимо указать имя или номер аудиоприёмника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101 src/utils/pactl.c:3009
|
||||
#: src/utils/pactl.c:3089
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "Необходимо указать имя или номер источника"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
#: src/utils/pactl.c:3031 src/utils/pactl.c:3019
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
msgstr "Необходимо указать имя или номер источника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3044
|
||||
#: src/utils/pactl.c:3044 src/utils/pactl.c:3032
|
||||
msgid "You have to specify a sink input index and a volume"
|
||||
msgstr "Необходимо указать номер входа аудиоприёмника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3049
|
||||
#: src/utils/pactl.c:3049 src/utils/pactl.c:3037
|
||||
msgid "Invalid sink input index"
|
||||
msgstr "Недопустимый номер входа аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:3060
|
||||
#: src/utils/pactl.c:3060 src/utils/pactl.c:3048
|
||||
msgid "You have to specify a source output index and a volume"
|
||||
msgstr "Необходимо указать номер выхода источника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3065
|
||||
#: src/utils/pactl.c:3065 src/utils/pactl.c:3053
|
||||
msgid "Invalid source output index"
|
||||
msgstr "Недопустимый номер выхода источника"
|
||||
|
||||
#: src/utils/pactl.c:3086
|
||||
#: src/utils/pactl.c:3086 src/utils/pactl.c:3074
|
||||
msgid ""
|
||||
"You have to specify a sink name/index and a mute action (0, 1, or 'toggle')"
|
||||
msgstr ""
|
||||
|
|
@ -3240,29 +3253,30 @@ msgstr ""
|
|||
"выключения звука (0, 1 или «toggle»)"
|
||||
|
||||
#: src/utils/pactl.c:3091 src/utils/pactl.c:3116 src/utils/pactl.c:3136
|
||||
#: src/utils/pactl.c:3154
|
||||
#: src/utils/pactl.c:3154 src/utils/pactl.c:3079 src/utils/pactl.c:3104
|
||||
#: src/utils/pactl.c:3124 src/utils/pactl.c:3142
|
||||
msgid "Invalid mute specification"
|
||||
msgstr "Недопустимое логическое значение выключения звука"
|
||||
|
||||
#: src/utils/pactl.c:3111
|
||||
#: src/utils/pactl.c:3111 src/utils/pactl.c:3099
|
||||
msgid ""
|
||||
"You have to specify a source name/index and a mute action (0, 1, or 'toggle')"
|
||||
msgstr ""
|
||||
"Необходимо указать имя или номер источника и логическое значение выключения "
|
||||
"звука (0, 1 или «toggle»)"
|
||||
|
||||
#: src/utils/pactl.c:3126
|
||||
#: src/utils/pactl.c:3126 src/utils/pactl.c:3114
|
||||
msgid ""
|
||||
"You have to specify a sink input index and a mute action (0, 1, or 'toggle')"
|
||||
msgstr ""
|
||||
"Необходимо указать номер входа аудиоприёмника и логическое значение "
|
||||
"выключения звука (0, 1 или «toggle»)"
|
||||
|
||||
#: src/utils/pactl.c:3131
|
||||
#: src/utils/pactl.c:3131 src/utils/pactl.c:3119
|
||||
msgid "Invalid sink input index specification"
|
||||
msgstr "Недопустимая спецификация номера входа аудиоприёмника"
|
||||
msgstr "Недопустимый номер входа аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:3144
|
||||
#: src/utils/pactl.c:3144 src/utils/pactl.c:3132
|
||||
msgid ""
|
||||
"You have to specify a source output index and a mute action (0, 1, or "
|
||||
"'toggle')"
|
||||
|
|
@ -3270,15 +3284,15 @@ msgstr ""
|
|||
"Необходимо указать номер выхода источника и логическое значение выключения "
|
||||
"звука (0, 1 или «toggle»)"
|
||||
|
||||
#: src/utils/pactl.c:3149
|
||||
#: src/utils/pactl.c:3149 src/utils/pactl.c:3137
|
||||
msgid "Invalid source output index specification"
|
||||
msgstr "Недопустимый номер выхода источника"
|
||||
|
||||
#: src/utils/pactl.c:3162
|
||||
#: src/utils/pactl.c:3162 src/utils/pactl.c:3150
|
||||
msgid "You have to specify at least an object path and a message name"
|
||||
msgstr "Вы должны указать как минимум путь к объекту и имя сообщения"
|
||||
|
||||
#: src/utils/pactl.c:3172
|
||||
#: src/utils/pactl.c:3160
|
||||
msgid ""
|
||||
"Excess arguments given, they will be ignored. Note that all message "
|
||||
"parameters must be given as a single string."
|
||||
|
|
@ -3286,7 +3300,7 @@ msgstr ""
|
|||
"Даны лишние аргументы, они будут проигнорированы. Обратите внимание, что все "
|
||||
"параметры сообщения должны быть предоставлены в виде одной строки."
|
||||
|
||||
#: src/utils/pactl.c:3182
|
||||
#: src/utils/pactl.c:3182 src/utils/pactl.c:3170
|
||||
msgid ""
|
||||
"You have to specify a sink index and a semicolon-separated list of supported "
|
||||
"formats"
|
||||
|
|
@ -3294,15 +3308,15 @@ msgstr ""
|
|||
"Необходимо указать номер аудиоприёмника и разделённый запятыми список "
|
||||
"поддерживаемых форматов"
|
||||
|
||||
#: src/utils/pactl.c:3194
|
||||
#: src/utils/pactl.c:3194 src/utils/pactl.c:3182
|
||||
msgid "You have to specify a card name/index, a port name and a latency offset"
|
||||
msgstr "Необходимо указать имя или номер звуковой платы, имя порта и задержку"
|
||||
|
||||
#: src/utils/pactl.c:3201
|
||||
#: src/utils/pactl.c:3201 src/utils/pactl.c:3189
|
||||
msgid "Could not parse latency offset"
|
||||
msgstr "Недопустимое значение задержки"
|
||||
|
||||
#: src/utils/pactl.c:3213
|
||||
#: src/utils/pactl.c:3213 src/utils/pactl.c:3201
|
||||
msgid "No valid command specified."
|
||||
msgstr "Имя команды не указано или не распознано."
|
||||
|
||||
|
|
@ -3466,134 +3480,134 @@ msgstr "Не удалось загрузить данные cookie.\n"
|
|||
msgid "Not yet implemented.\n"
|
||||
msgstr "Не реализовано.\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%s [options]\n"
|
||||
#~ "%s\n"
|
||||
#~ "\n"
|
||||
#~ " -h, --help Show this help\n"
|
||||
#~ " --version Show version\n"
|
||||
#~ "\n"
|
||||
#~ " -r, --record Create a connection for "
|
||||
#~ "recording\n"
|
||||
#~ " -p, --playback Create a connection for playback\n"
|
||||
#~ "\n"
|
||||
#~ " -v, --verbose Enable verbose operations\n"
|
||||
#~ "\n"
|
||||
#~ " -s, --server=SERVER The name of the server to connect "
|
||||
#~ "to\n"
|
||||
#~ " -d, --device=DEVICE The name of the sink/source to "
|
||||
#~ "connect to\n"
|
||||
#~ " -n, --client-name=NAME How to call this client on the "
|
||||
#~ "server\n"
|
||||
#~ " --stream-name=NAME How to call this stream on the "
|
||||
#~ "server\n"
|
||||
#~ " --volume=VOLUME Specify the initial (linear) "
|
||||
#~ "volume in range 0...65536\n"
|
||||
#~ " --rate=SAMPLERATE The sample rate in Hz (defaults "
|
||||
#~ "to 44100)\n"
|
||||
#~ " --format=SAMPLEFORMAT The sample format, see\n"
|
||||
#~ " https://www.freedesktop.org/wiki/"
|
||||
#~ "Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
#~ " for possible values (defaults to "
|
||||
#~ "s16ne)\n"
|
||||
#~ " --channels=CHANNELS The number of channels, 1 for "
|
||||
#~ "mono, 2 for stereo\n"
|
||||
#~ " (defaults to 2)\n"
|
||||
#~ " --channel-map=CHANNELMAP Channel map to use instead of the "
|
||||
#~ "default\n"
|
||||
#~ " --fix-format Take the sample format from the "
|
||||
#~ "sink/source the stream is\n"
|
||||
#~ " being connected to.\n"
|
||||
#~ " --fix-rate Take the sampling rate from the "
|
||||
#~ "sink/source the stream is\n"
|
||||
#~ " being connected to.\n"
|
||||
#~ " --fix-channels Take the number of channels and "
|
||||
#~ "the channel map\n"
|
||||
#~ " from the sink/source the stream "
|
||||
#~ "is being connected to.\n"
|
||||
#~ " --no-remix Don't upmix or downmix channels.\n"
|
||||
#~ " --no-remap Map channels by index instead of "
|
||||
#~ "name.\n"
|
||||
#~ " --latency=BYTES Request the specified latency in "
|
||||
#~ "bytes.\n"
|
||||
#~ " --process-time=BYTES Request the specified process "
|
||||
#~ "time per request in bytes.\n"
|
||||
#~ " --latency-msec=MSEC Request the specified latency in "
|
||||
#~ "msec.\n"
|
||||
#~ " --process-time-msec=MSEC Request the specified process "
|
||||
#~ "time per request in msec.\n"
|
||||
#~ " --property=PROPERTY=VALUE Set the specified property to the "
|
||||
#~ "specified value.\n"
|
||||
#~ " --raw Record/play raw PCM data.\n"
|
||||
#~ " --passthrough Passthrough data.\n"
|
||||
#~ " --file-format[=FFORMAT] Record/play formatted PCM data.\n"
|
||||
#~ " --list-file-formats List available file formats.\n"
|
||||
#~ " --monitor-stream=INDEX Record from the sink input with "
|
||||
#~ "index INDEX.\n"
|
||||
#~ msgstr ""
|
||||
#~ "%s [параметры]\n"
|
||||
#~ "%s\n"
|
||||
#~ "\n"
|
||||
#~ " -h, --help Показать эту справку\n"
|
||||
#~ " --version Показать сведения о версии\n"
|
||||
#~ "\n"
|
||||
#~ " -r, --record Создать соединение для записи\n"
|
||||
#~ " -p, --playback Создать соединение для "
|
||||
#~ "воспроизведения\n"
|
||||
#~ "\n"
|
||||
#~ " -v, --verbose Включить подробные операции\n"
|
||||
#~ "\n"
|
||||
#~ " -s, --server=СЕРВЕР Имя сервера для подключения\n"
|
||||
#~ " -d, --device=УСТРОЙСТВО Имя приёмника/источника для "
|
||||
#~ "подключения\n"
|
||||
#~ " -n, --client-name=ИМЯ Имя этого клиента на сервере\n"
|
||||
#~ " --stream-name=ИМЯ Имя этого потока на сервере\n"
|
||||
#~ " --volume=VOLUME Указать начальную (линейную) "
|
||||
#~ "громкость в диапазоне 0...65536\n"
|
||||
#~ " --rate=SAMPLERATE Частота дискретизации в Гц (по "
|
||||
#~ "умолчанию 44100)\n"
|
||||
#~ " --format=SAMPLEFORMAT Формат выборки, смотрите\n"
|
||||
#~ " https://www.freedesktop.org/wiki/"
|
||||
#~ "Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
#~ " возможные значения (по умолчанию "
|
||||
#~ "s16ne)\n"
|
||||
#~ " --channels=КАНАЛЫ Количество каналов, 1 для моно, 2 "
|
||||
#~ "для стерео\n"
|
||||
#~ " (по умолчанию 2)\n"
|
||||
#~ " --channel-map=CHANNELMAP Карта каналов для использования "
|
||||
#~ "вместо установленной по умолчанию\n"
|
||||
#~ " --fix-format Взять образец формата из "
|
||||
#~ "приёмника/источника, к которому\n"
|
||||
#~ " подключен поток.\n"
|
||||
#~ " --fix-rate Взять частоту дискретизации из "
|
||||
#~ "приёмника/источника, к которому\n"
|
||||
#~ " подключен поток.\n"
|
||||
#~ " --fix-channels Взять количество каналов и карту "
|
||||
#~ "каналов\n"
|
||||
#~ " из приёмника/источника, к "
|
||||
#~ "которому подключен поток.\n"
|
||||
#~ " --no-remix Не менять число каналов.\n"
|
||||
#~ " --no-remap Сопоставлять каналы по индексу, а "
|
||||
#~ "не по имени.\n"
|
||||
#~ " --latency=BYTES Запросить указанную задержку в "
|
||||
#~ "байтах.\n"
|
||||
#~ " --process-time=BYTES Запросить указанное время "
|
||||
#~ "процесса на запрос в байтах.\n"
|
||||
#~ " --latency-msec=MSEC Запросить указанную задержку в "
|
||||
#~ "мсек.\n"
|
||||
#~ " --process-time-msec=MSEC Запросить указанное время "
|
||||
#~ "процесса на запрос в мсек.\n"
|
||||
#~ " --property=PROPERTY=VALUE Установить для указанного "
|
||||
#~ "свойства указанное значение.\n"
|
||||
#~ " --raw Запись/воспроизведение "
|
||||
#~ "необработанных данных PCM.\n"
|
||||
#~ " --passthrough Пропускать данные.\n"
|
||||
#~ " --file-format[=FFORMAT] Запись/воспроизведение "
|
||||
#~ "форматированных данных PCM.\n"
|
||||
#~ " --list-file-formats Список доступных форматов "
|
||||
#~ "файлов.\n"
|
||||
#~ " --monitor-stream=INDEX Запись с входа приёмника с "
|
||||
#~ "индексом INDEX.\n"
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
" --version Show version\n"
|
||||
"\n"
|
||||
" -r, --record Create a connection for recording\n"
|
||||
" -p, --playback Create a connection for playback\n"
|
||||
"\n"
|
||||
" -v, --verbose Enable verbose operations\n"
|
||||
"\n"
|
||||
" -s, --server=SERVER The name of the server to connect "
|
||||
"to\n"
|
||||
" -d, --device=DEVICE The name of the sink/source to "
|
||||
"connect to\n"
|
||||
" -n, --client-name=NAME How to call this client on the "
|
||||
"server\n"
|
||||
" --stream-name=NAME How to call this stream on the "
|
||||
"server\n"
|
||||
" --volume=VOLUME Specify the initial (linear) volume "
|
||||
"in range 0...65536\n"
|
||||
" --rate=SAMPLERATE The sample rate in Hz (defaults to "
|
||||
"44100)\n"
|
||||
" --format=SAMPLEFORMAT The sample format, see\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" for possible values (defaults to "
|
||||
"s16ne)\n"
|
||||
" --channels=CHANNELS The number of channels, 1 for mono, "
|
||||
"2 for stereo\n"
|
||||
" (defaults to 2)\n"
|
||||
" --channel-map=CHANNELMAP Channel map to use instead of the "
|
||||
"default\n"
|
||||
" --fix-format Take the sample format from the sink/"
|
||||
"source the stream is\n"
|
||||
" being connected to.\n"
|
||||
" --fix-rate Take the sampling rate from the sink/"
|
||||
"source the stream is\n"
|
||||
" being connected to.\n"
|
||||
" --fix-channels Take the number of channels and the "
|
||||
"channel map\n"
|
||||
" from the sink/source the stream is "
|
||||
"being connected to.\n"
|
||||
" --no-remix Don't upmix or downmix channels.\n"
|
||||
" --no-remap Map channels by index instead of "
|
||||
"name.\n"
|
||||
" --latency=BYTES Request the specified latency in "
|
||||
"bytes.\n"
|
||||
" --process-time=BYTES Request the specified process time "
|
||||
"per request in bytes.\n"
|
||||
" --latency-msec=MSEC Request the specified latency in "
|
||||
"msec.\n"
|
||||
" --process-time-msec=MSEC Request the specified process time "
|
||||
"per request in msec.\n"
|
||||
" --property=PROPERTY=VALUE Set the specified property to the "
|
||||
"specified value.\n"
|
||||
" --raw Record/play raw PCM data.\n"
|
||||
" --passthrough Passthrough data.\n"
|
||||
" --file-format[=FFORMAT] Record/play formatted PCM data.\n"
|
||||
" --list-file-formats List available file formats.\n"
|
||||
" --monitor-stream=INDEX Record from the sink input with "
|
||||
"index INDEX.\n"
|
||||
msgstr ""
|
||||
"%s [параметры]\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
" -h, --help Показать эту справку\n"
|
||||
" --version Показать сведения о версии\n"
|
||||
"\n"
|
||||
" -r, --record Создать соединение для записи\n"
|
||||
" -p, --playback Создать соединение для "
|
||||
"воспроизведения\n"
|
||||
"\n"
|
||||
" -v, --verbose Включить подробные операции\n"
|
||||
"\n"
|
||||
" -s, --server=СЕРВЕР Имя сервера для подключения\n"
|
||||
" -d, --device=УСТРОЙСТВО Имя приёмника/источника для "
|
||||
"подключения\n"
|
||||
" -n, --client-name=ИМЯ Имя этого клиента на сервере\n"
|
||||
" --stream-name=ИМЯ Имя этого потока на сервере\n"
|
||||
" --volume=VOLUME Указать начальную (линейную) "
|
||||
"громкость в диапазоне 0...65536\n"
|
||||
" --rate=SAMPLERATE Частота дискретизации в Гц (по "
|
||||
"умолчанию 44100)\n"
|
||||
" --format=SAMPLEFORMAT Формат выборки, смотрите\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" возможные значения (по умолчанию "
|
||||
"s16ne)\n"
|
||||
" --channels=КАНАЛЫ Количество каналов, 1 для моно, 2 "
|
||||
"для стерео\n"
|
||||
" (по умолчанию 2)\n"
|
||||
" --channel-map=CHANNELMAP Карта каналов для использования "
|
||||
"вместо установленной по умолчанию\n"
|
||||
" --fix-format Взять образец формата из приёмника/"
|
||||
"источника, к которому\n"
|
||||
" подключен поток.\n"
|
||||
" --fix-rate Взять частоту дискретизации из "
|
||||
"приёмника/источника, к которому\n"
|
||||
" подключен поток.\n"
|
||||
" --fix-channels Взять количество каналов и карту "
|
||||
"каналов\n"
|
||||
" из приёмника/источника, к которому "
|
||||
"подключен поток.\n"
|
||||
" --no-remix Не менять число каналов.\n"
|
||||
" --no-remap Сопоставлять каналы по индексу, а не "
|
||||
"по имени.\n"
|
||||
" --latency=BYTES Запросить указанную задержку в "
|
||||
"байтах.\n"
|
||||
" --process-time=BYTES Запросить указанное время процесса "
|
||||
"на запрос в байтах.\n"
|
||||
" --latency-msec=MSEC Запросить указанную задержку в мсек."
|
||||
"\n"
|
||||
" --process-time-msec=MSEC Запросить указанное время процесса "
|
||||
"на запрос в мсек.\n"
|
||||
" --property=PROPERTY=VALUE Установить для указанного свойства "
|
||||
"указанное значение.\n"
|
||||
" --raw Запись/воспроизведение "
|
||||
"необработанных данных PCM.\n"
|
||||
" --passthrough Пропускать данные.\n"
|
||||
" --file-format[=FFORMAT] Запись/воспроизведение "
|
||||
"форматированных данных PCM.\n"
|
||||
" --list-file-formats Список доступных форматов файлов.\n"
|
||||
" --monitor-stream=INDEX Запись с входа приёмника с индексом "
|
||||
"INDEX.\n"
|
||||
|
||||
#~ msgid "Failed to initialize daemon."
|
||||
#~ msgstr "Не удалось инициализировать демон."
|
||||
|
|
|
|||
18
po/si.po
18
po/si.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-08-19 21:04+0000\n"
|
||||
"Last-Translator: Hela Basa <r45xveza@pm.me>\n"
|
||||
"Language-Team: Sinhala <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -980,8 +980,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1038,14 +1038,14 @@ msgstr ""
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1382,11 +1382,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
18
po/sk.po
18
po/sk.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2020-11-25 08:35+0000\n"
|
||||
"Last-Translator: Dusan Kazik <prescott66@gmail.com>\n"
|
||||
"Language-Team: Slovak <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1002,8 +1002,8 @@ msgid ""
|
|||
"this module is being loaded automatically> use_volume_sharing=<yes or no> "
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1060,14 +1060,14 @@ msgstr "Zvuk na @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel pre %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunel do %s/%s"
|
||||
|
|
@ -1405,11 +1405,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neplatný cieľ záznamu."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Vstavaný zvuk"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
18
po/sr.po
18
po/sr.po
|
|
@ -9,7 +9,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:55+0000\n"
|
||||
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
|
||||
"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
|
||||
|
|
@ -1181,8 +1181,8 @@ msgstr ""
|
|||
"ladspa додатка> label=<ознака ladspa додатка> control=<списак улазних "
|
||||
"контролних вредности раздвојених зарезом>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1245,14 +1245,14 @@ msgstr "Аудио на @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1603,11 +1603,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] Неисправан циљни дневник „%s“."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Унутрашњи звук"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Модем"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:55+0000\n"
|
||||
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
|
||||
"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
|
||||
|
|
@ -1182,8 +1182,8 @@ msgstr ""
|
|||
"ladspa dodatka> label=<oznaka ladspa dodatka> control=<spisak ulaznih "
|
||||
"kontrolnih vrednosti razdvojenih zarezom>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1246,14 +1246,14 @@ msgstr "Audio na @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1604,11 +1604,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] Neispravan ciljni dnevnik „%s“."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Unutrašnji zvuk"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
18
po/sv.po
18
po/sv.po
|
|
@ -19,7 +19,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-18 22:27+0000\n"
|
||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1140,8 +1140,8 @@ msgstr ""
|
|||
"channel_map=<kanalmappning> autoloaded=<om denna modul läses in automatiskt> "
|
||||
"use_volume_sharing=<ja eller nej> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-baserad equalizer på %s"
|
||||
|
|
@ -1208,14 +1208,14 @@ msgstr "Ljud på @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel för %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel till %s/%s"
|
||||
|
|
@ -1563,11 +1563,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ogiltigt mål för logg."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Inbyggt ljud"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
|
|||
18
po/ta.po
18
po/ta.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.ta\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:56+0000\n"
|
||||
"Last-Translator: I. Felix <ifelix@redhat.com>\n"
|
||||
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
|
||||
|
|
@ -1173,8 +1173,8 @@ msgstr ""
|
|||
"plugin name> label=<ladspa plugin label> control=<comma separated list of "
|
||||
"input control values>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1237,14 +1237,14 @@ msgstr "@HOSTNAME@இல் ஆடியோ"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1595,11 +1595,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] தவறான பதிவு இலக்கு '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "உட்புற ஆடியோ"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "மாதிரி"
|
||||
|
||||
|
|
|
|||
18
po/te.po
18
po/te.po
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx.te\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2012-01-30 09:56+0000\n"
|
||||
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
|
||||
"Language-Team: Telugu <en@li.org>\n"
|
||||
|
|
@ -1143,8 +1143,8 @@ msgstr ""
|
|||
"channel_map=<చానల్ మాప్> plugin=<ladspa ప్లగిన్ నామము> label=<ladspa ప్లగిన్ లేబుల్> "
|
||||
"control=<ఇన్పుట్ నియంత్రణ విలువలయొక్క జాబితా>"
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1206,14 +1206,14 @@ msgstr "@HOSTNAME@ పై ఆడియో"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1563,11 +1563,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "[%s:%u] చెల్లని లాగ్ లక్ష్యము '%s'."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "అంతర్గత ఆడియో"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "మోడెమ్"
|
||||
|
||||
|
|
|
|||
71
po/tr.po
71
po/tr.po
|
|
@ -10,8 +10,8 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2024-08-01 04:41+0000\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-18 22:27+0000\n"
|
||||
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
|
||||
"Language-Team: Turkish <https://translate.fedoraproject.org/projects/"
|
||||
"pulseaudio/pulseaudio/tr/>\n"
|
||||
|
|
@ -20,7 +20,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.6.2\n"
|
||||
"X-Generator: Weblate 4.12.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -105,17 +105,17 @@ msgstr ""
|
|||
"yöntemlerini döker\n"
|
||||
" --cleanup-shm Eski paylaşımlı bellek segmentlerini "
|
||||
"temizler\n"
|
||||
" --start Eğer çalışmıyorsa art alan hizmetini "
|
||||
"başlatır\n"
|
||||
" -k --kill Çalışan bir art alan hizmetini "
|
||||
" --start Eğer çalışmıyorsa arka plan "
|
||||
"programını başlatır\n"
|
||||
" -k --kill Çalışan bir arka plan progamını "
|
||||
"sonlandırır\n"
|
||||
" --check Çalışan bir art alan hizmetini "
|
||||
" --check Çalışan bir arka plan programını "
|
||||
"denetler (sadece çıkış kodu döner)\n"
|
||||
"\n"
|
||||
"SEÇENEKLER:\n"
|
||||
" --system[=BOOL] Sistem çapında örnek olarak "
|
||||
"çalıştırır\n"
|
||||
" -D, --daemonize[=BOOL] Başladıktan sonra art alan hizmeti "
|
||||
" -D, --daemonize[=BOOL] Başladıktan sonra arka plan programı "
|
||||
"olarak çalıştırır\n"
|
||||
" --fail[=BOOL] Başlangıç başarısız olduğunda çıkar\n"
|
||||
" --high-priority[=BOOL] Yüksek öncelik seviyesi ayarlamayı "
|
||||
|
|
@ -136,7 +136,7 @@ msgstr ""
|
|||
" --disallow-exit[=BOOL] Kullanıcının çıkış isteğine izin "
|
||||
"vermez\n"
|
||||
" --exit-idle-time=SANİYE Boştayken ve bu süre geçtiğinde\n"
|
||||
" art alan hizmetini sonlandırır\n"
|
||||
" arka plan programını sonlandırır\n"
|
||||
" --scache-idle-time=SANİYE Boştayken ve bu süre geçtiğinde "
|
||||
"otomatik\n"
|
||||
" yüklenmiş örnekleri kaldırır\n"
|
||||
|
|
@ -459,7 +459,7 @@ msgstr ""
|
|||
#: src/daemon/main.c:788
|
||||
#, c-format
|
||||
msgid "Failed to kill daemon: %s"
|
||||
msgstr "Art alan hizmeti durdurulamadı: %s"
|
||||
msgstr "Arka plan programı durdurulamadı: %s"
|
||||
|
||||
#: src/daemon/main.c:817
|
||||
msgid ""
|
||||
|
|
@ -532,7 +532,7 @@ msgstr "read() başarısız oldu: %s"
|
|||
|
||||
#: src/daemon/main.c:954
|
||||
msgid "Daemon startup failed."
|
||||
msgstr "Art alan hizmetini başlatma başarısız oldu."
|
||||
msgstr "Arka plan programını başlatma başarısız oldu."
|
||||
|
||||
#: src/daemon/main.c:987
|
||||
#, c-format
|
||||
|
|
@ -575,14 +575,12 @@ msgid ""
|
|||
"Failed to initialize daemon due to errors while executing startup commands. "
|
||||
"Source of commands: %s"
|
||||
msgstr ""
|
||||
"Başlatma komutlarını çalıştırırken oluşan hatalar nedeniyle art alan hizmeti "
|
||||
"başlatılamadı. Komutların kaynağı: %s"
|
||||
"Başlatma komutlarını çalıştırırken oluşan hatalar nedeniyle arka plan "
|
||||
"programı başlatılamadı. Komutların kaynağı: %s"
|
||||
|
||||
#: src/daemon/main.c:1280
|
||||
msgid "Daemon startup without any loaded modules, refusing to work."
|
||||
msgstr ""
|
||||
"Hiç modül yüklenmeden çalışmaya başlamayan art alan hizmeti, çalışmayı "
|
||||
"reddediyor."
|
||||
msgstr "Hiç yüklü modül olmadan arka plan programının çalışması reddediliyor."
|
||||
|
||||
#: src/daemon/pulseaudio.desktop.in:4
|
||||
msgid "PulseAudio Sound System"
|
||||
|
|
@ -1133,8 +1131,8 @@ msgstr ""
|
|||
"otomatikyüklenmiş=<set if this module is being loaded automatically> "
|
||||
"ses_paylaşım_kullan=<yes or no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "%s üzerinde FFT tabanlı dengeleyici"
|
||||
|
|
@ -1201,14 +1199,14 @@ msgstr "@HOSTNAME@ üzerindeki SES"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s için tünel"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "%s/%s tünel"
|
||||
|
|
@ -1558,11 +1556,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Geçersiz günlük hedefi."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Dahili Ses"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1706,7 +1704,7 @@ msgstr "Akış boşaltma başarısız oldu: %s"
|
|||
|
||||
#: src/utils/pacat.c:139
|
||||
msgid "Playback stream drained."
|
||||
msgstr "Oynatım akışı boşaltıldı."
|
||||
msgstr "Playback akışı boşaltıldı."
|
||||
|
||||
#: src/utils/pacat.c:150
|
||||
msgid "Draining connection to server."
|
||||
|
|
@ -1969,8 +1967,8 @@ msgstr ""
|
|||
" --format=ÖRNEKLEMEBİÇİMİ Örnekleme biçimi, olası değerler için\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" adresine bakın (öntanımlı değer: "
|
||||
"s16ne)\n"
|
||||
" adresine bakın (öntanımlı değer: s16ne)"
|
||||
"\n"
|
||||
" --channels=KANALLAR Kanal sayısı, mono için 1, stereo için "
|
||||
"2\n"
|
||||
" (öntanımlı değer: 2)\n"
|
||||
|
|
@ -1983,8 +1981,8 @@ msgstr ""
|
|||
" --fix-channels Kanal eşlemesini ve kanal sayısını "
|
||||
"akışın bağlı olduğu\n"
|
||||
" alıcı/kaynaktan alır.\n"
|
||||
" --no-remix Kanalları indirgemez ya da "
|
||||
"çoğaltamaz.\n"
|
||||
" --no-remix Kanalları indirgemez ya da çoğaltamaz."
|
||||
"\n"
|
||||
" --no-remap Ad yerine dizin ile kanalları eşler.\n"
|
||||
" --latency=BAYT Bayt cinsinden belirtilen gecikmeyi "
|
||||
"ister.\n"
|
||||
|
|
@ -2300,7 +2298,7 @@ msgstr ""
|
|||
#: src/utils/pacmd.c:143
|
||||
msgid "No PulseAudio daemon running, or not running as session daemon."
|
||||
msgstr ""
|
||||
"Çalışan PulseAudio art alan hizmeti yok veya bir oturum art alan hizmeti "
|
||||
"Çalışan PulseAudio arka plan programı yok veya bir oturum arka plan progamı "
|
||||
"olarak çalışmıyor."
|
||||
|
||||
#: src/utils/pacmd.c:148
|
||||
|
|
@ -2315,11 +2313,11 @@ msgstr "connect(): %s"
|
|||
|
||||
#: src/utils/pacmd.c:173
|
||||
msgid "Failed to kill PulseAudio daemon."
|
||||
msgstr "PulseAudio art alan hizmeti durdurulamadı."
|
||||
msgstr "PulseAudio arka plan programı durdurulamadı."
|
||||
|
||||
#: src/utils/pacmd.c:181
|
||||
msgid "Daemon not responding."
|
||||
msgstr "Art alan hizmeti yanıt vermiyor."
|
||||
msgstr "Arka plan programı yanıt vermiyor."
|
||||
|
||||
#: src/utils/pacmd.c:213 src/utils/pacmd.c:322 src/utils/pacmd.c:340
|
||||
#, c-format
|
||||
|
|
@ -3332,11 +3330,12 @@ msgid ""
|
|||
msgstr ""
|
||||
"%s [-D ekran] [-S sunucu] [-O alıcı] [-I kaynak] [-c dosya] [-d|-e|-i|-r]\n"
|
||||
"\n"
|
||||
" -d X11 ekranına bağlı geçerli PulseAudio verilerini göster (öntanımlı)\n"
|
||||
" -e X11 ekranına bağlı yerel PulseAudio verilerini dışa aktar\n"
|
||||
" -d X11 ekranına bağlı geçerli PulseAudio verilerini gösterir "
|
||||
"(öntanımlı)\n"
|
||||
" -e X11 ekranına bağlı yerel PulseAudio verilerini dışa aktarır\n"
|
||||
" -i X11 ekranından PulseAudio verilerini yerel çevresel değişkenlere ve "
|
||||
"çerez dosyalarına aktar\n"
|
||||
" -r X11 ekranından PulseAudio verilerini kaldır\n"
|
||||
"çerez dosyalarına aktarır.\n"
|
||||
" -r X11 ekranından PulseAudio verilerini kaldırır\n"
|
||||
|
||||
#: src/utils/pax11publish.c:91
|
||||
#, c-format
|
||||
|
|
|
|||
18
po/uk.po
18
po/uk.po
|
|
@ -7,7 +7,7 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-18 22:27+0000\n"
|
||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||
"Language-Team: Ukrainian <https://translate.fedoraproject.org/projects/"
|
||||
|
|
@ -1174,8 +1174,8 @@ msgstr ""
|
|||
"channel_map=<карта каналів> autoloaded=<визначити, чи слід завантажувати цей "
|
||||
"модуль у автоматичному режимі> use_volume_sharing=<yes або no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Еквалайзер на основі ШПФ на %s"
|
||||
|
|
@ -1242,14 +1242,14 @@ msgstr "Звук на @НАЗВАВУЗЛА@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Тунель для %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Тунель до %s/%s"
|
||||
|
|
@ -1601,11 +1601,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Некоректна адреса файла журналу."
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Вбудоване аудіо"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Модем"
|
||||
|
||||
|
|
|
|||
47
po/zh_CN.po
47
po/zh_CN.po
|
|
@ -12,9 +12,9 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio.master-tx\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2023-12-22 16:37+0000\n"
|
||||
"Last-Translator: Charles Lee <lchopn@gmail.com>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-12-04 09:16+0000\n"
|
||||
"Last-Translator: Lv Genggeng <lvgenggeng@uniontech.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
|
||||
"projects/pulseaudio/pulseaudio/zh_CN/>\n"
|
||||
"Language: zh_CN\n"
|
||||
|
|
@ -22,7 +22,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.3\n"
|
||||
"X-Generator: Weblate 4.9.1\n"
|
||||
"X-Launchpad-Export-Date: 2016-03-22 13:23+0000\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
|
|
@ -1083,8 +1083,8 @@ msgstr ""
|
|||
"format=<采样格式> rate=<采样率> channels=<声道数> channel_map=<声道映射> "
|
||||
"autoloaded=<若为自动加载则会设置> use_volume_sharing=<yes 或 no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "基于快速傅里叶变换的均衡器%s"
|
||||
|
|
@ -1147,14 +1147,14 @@ msgstr "@HOSTNAME@ 中的音频"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s 的通道"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "到远程信宿 %s/%s 的通道"
|
||||
|
|
@ -1498,11 +1498,11 @@ msgstr "尝试打开目标文件 '%s','%s.1','%s.2'…'%s.%d',但均失败
|
|||
msgid "Invalid log target."
|
||||
msgstr "无效的日志目标。"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "内置音频"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "调制解调器"
|
||||
|
||||
|
|
@ -1816,7 +1816,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() 失败:%s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1885,7 +1885,6 @@ msgid ""
|
|||
msgstr ""
|
||||
"%s [选项]\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
" -h, --help 显示此帮助\n"
|
||||
" --version 显示版本\n"
|
||||
"\n"
|
||||
|
|
@ -1898,21 +1897,21 @@ msgstr ""
|
|||
" -d, --device=设备名 要连接的信宿/信源名称\n"
|
||||
" -n, --client-name=名称 如何在服务器中调用此客户端\n"
|
||||
" --stream-name=名称 如何在服务器中调用这个流\n"
|
||||
" --volume=音量 指定初始(线性)音量,取值在0..."
|
||||
"65536之间\n"
|
||||
" --volume=音量 指定初始(线性)音量,取值在0...65536之"
|
||||
"间\n"
|
||||
" --rate=SAMPLERATE 采样频率(单位 Hz,默认为44100)\n"
|
||||
" --format=SAMPLEFORMAT 采样类型,s16le、s16be、u8、float32le "
|
||||
"之一\n"
|
||||
" float32be、ulaw、alaw、s32le、s32be "
|
||||
"中取(默认为 s16ne)\n"
|
||||
" --format=SAMPLEFORMAT 采样类型,s16le、s16be、u8、float32le 之"
|
||||
"一\n"
|
||||
" float32be、ulaw、alaw、s32le、s32be 中取"
|
||||
"(默认为 s16ne)\n"
|
||||
" --channels=CHANNELS 通道数,1为单声道,2为立体声(默认为2)\n"
|
||||
" --channel-map=CHANNELMAP 取代默认值的通道映射表\n"
|
||||
" --fix-format 从流连接的信宿中提取采样格式。\n"
|
||||
" --fix-rate 从流连接的信宿中提取采样率。\n"
|
||||
" --fix-channels 从流连接的信宿中提取通道数和通道映射表。"
|
||||
"\n"
|
||||
" --no-remix 不要对通道进行 upmix 或者 downmix 操作。"
|
||||
"\n"
|
||||
" --fix-channels 从流连接的信宿中提取通道数和通道映射"
|
||||
"表。\n"
|
||||
" --no-remix 不要对通道进行 upmix 或者 downmix 操"
|
||||
"作。\n"
|
||||
" --no-remap 根据下标而非名称来映射通道。\n"
|
||||
" --latency=BYTES 请求指定字节数的延迟。\n"
|
||||
" --process-time=BYTES 每次请求指定字节数的处理时间。\n"
|
||||
|
|
|
|||
31
po/zh_TW.po
31
po/zh_TW.po
|
|
@ -9,17 +9,16 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio Volume Control\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-04-09 01:53+0000\n"
|
||||
"Last-Translator: hsu zangmen <chzang55@gmail.com>\n"
|
||||
"Language-Team: Chinese (Traditional) <https://translate.fedoraproject.org/"
|
||||
"projects/pulseaudio/pulseaudio/zh_TW/>\n"
|
||||
"POT-Creation-Date: 2022-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2020-01-11 13:49+0800\n"
|
||||
"Last-Translator: pan93412 <pan93412@gmail.com>\n"
|
||||
"Language-Team: Chinese <zh-l10n@lists.linux.org.tw>\n"
|
||||
"Language: zh_TW\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 19.12.0\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.10.4\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -1084,8 +1083,8 @@ msgstr ""
|
|||
"sink> format=<取樣格式> rate=<取樣率> channels=<聲道數> channel_map=<聲道對應"
|
||||
"表> autoloaded=<設定此模組是否正被自動載入> use_volume_sharing=<yes 或 no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT 基礎等化器於 %s"
|
||||
|
|
@ -1149,14 +1148,14 @@ msgstr "音效位於 @HOSTNAME@"
|
|||
|
||||
#. TODO: old tunnel put here the remote sink_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#. TODO: old tunnel put here the remote source_name into stream name e.g. 'Null Output for lynxis@lazus'
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#: src/modules/module-tunnel-sink-new.c:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s 的穿隧道"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "前往 %s/%s 的穿隧道"
|
||||
|
|
@ -1502,11 +1501,11 @@ msgstr "試圖開啟目標檔「%s」、「%s.1」、「%s.2」...「%s.%d」,
|
|||
msgid "Invalid log target."
|
||||
msgstr "無效的紀錄目標。"
|
||||
|
||||
#: src/pulsecore/sink.c:3609
|
||||
#: src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "內部音效"
|
||||
|
||||
#: src/pulsecore/sink.c:3614
|
||||
#: src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "數據機"
|
||||
|
||||
|
|
@ -2752,11 +2751,11 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr "無法正確解析 list-handlers 訊息回應"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr "list-handlers 訊息回應內容不是 JSON 陣列"
|
||||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
|
|||
|
|
@ -17,14 +17,7 @@ print_map_file() {
|
|||
echo "};"
|
||||
}
|
||||
|
||||
print_def_file() {
|
||||
echo "EXPORTS"
|
||||
ctags -I ${CTAGS_IDENTIFIER_LIST} -f - --c-kinds=p "$@" | awk '/^pa_/ && !/(^pa_glib_|^pa_simple_)/ { print $1 }' | sort
|
||||
}
|
||||
TARGET_FILE=$1
|
||||
shift
|
||||
|
||||
MAP_FILE=$1
|
||||
DEF_FILE=$2
|
||||
shift 2
|
||||
|
||||
cd "${MESON_SOURCE_ROOT}/${MESON_SUBDIR}" && print_map_file "$@" > ${MAP_FILE}
|
||||
cd "${MESON_SOURCE_ROOT}/${MESON_SUBDIR}" && print_def_file "$@" > ${DEF_FILE}
|
||||
cd "${MESON_SOURCE_ROOT}/${MESON_SUBDIR}" && print_map_file "$@" > ${TARGET_FILE}
|
||||
|
|
|
|||
|
|
@ -116,13 +116,12 @@ _pactl() {
|
|||
modules samples clients message-handlers'
|
||||
local commands=(stat info list exit upload-sample play-sample remove-sample
|
||||
load-module unload-module move-sink-input move-source-output
|
||||
suspend-sink suspend-source set-card-profile get-default-sink
|
||||
set-default-sink set-sink-port get-default-source set-default-source
|
||||
set-source-port get-sink-volume set-sink-volume get-source-volume
|
||||
suspend-sink suspend-source set-card-profile set-default-sink
|
||||
set-sink-port set-default-source set-source-port set-sink-volume
|
||||
set-source-volume set-sink-input-volume set-source-output-volume
|
||||
get-sink-mute set-sink-mute get-source-mute set-source-mute
|
||||
set-sink-input-mute set-source-output-mute set-sink-formats
|
||||
set-port-latency-offset subscribe send-message help)
|
||||
set-sink-mute set-source-mute set-sink-input-mute
|
||||
set-source-output-mute set-sink-formats set-port-latency-offset
|
||||
subscribe send-message help)
|
||||
|
||||
_init_completion -n = || return
|
||||
preprev=${words[$cword-2]}
|
||||
|
|
@ -187,8 +186,6 @@ _pactl() {
|
|||
|
||||
remove-sample) ;; # TODO
|
||||
|
||||
get-default*) ;;
|
||||
|
||||
load-module)
|
||||
comps=$(__all_modules)
|
||||
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
|
||||
|
|
|
|||
|
|
@ -18,12 +18,10 @@ _devices() {
|
|||
if [[ $service == pactl || $service == pacmd ]]; then
|
||||
case $words[$((CURRENT - 1))] in
|
||||
set-sink-input-*) cmd=('sink-inputs');;
|
||||
get-sink-*) cmd=('sinks');;
|
||||
set-sink-*) cmd=('sinks');;
|
||||
set-default-sink) cmd=('sinks');;
|
||||
set-default-source) cmd=('sources');;
|
||||
set-source-output-*) cmd=('source-outputs');;
|
||||
get-source-*) cmd=('sources');;
|
||||
set-source-*) cmd=('sources');;
|
||||
suspend-sink) cmd=('sinks');;
|
||||
suspend-source) cmd=('sources');;
|
||||
|
|
@ -259,22 +257,16 @@ _pactl_completion() {
|
|||
'suspend-sink: suspend or resume a sink'
|
||||
'suspend-source: suspend or resume a source'
|
||||
'set-card-profile: set a card profile'
|
||||
'get-default-sink: get the default sink'
|
||||
'set-default-sink: set the default sink'
|
||||
'get-default-source: get the default source'
|
||||
'set-default-source: set the default source'
|
||||
'set-sink-port: set the sink port of a sink'
|
||||
'set-source-port: set the source port of a source'
|
||||
'set-port-latency-offset: set a latency offset on a port'
|
||||
'get-sink-volume: get the volume of a sink'
|
||||
'set-sink-volume: set the volume of a sink'
|
||||
'get-source-volume: get the volume of a source'
|
||||
'set-source-volume: set the volume of a source'
|
||||
'set-sink-input-volume: set the volume of a stream'
|
||||
'set-source-output-volume: set the volume of a recording stream'
|
||||
'get-sink-mute: get the mute status of a sink'
|
||||
'set-sink-mute: mute a sink'
|
||||
'get-source-mute: get the mute status of a source'
|
||||
'set-source-mute: mute a source'
|
||||
'set-sink-input-mute: mute a stream'
|
||||
'set-source-output-mute: mute a recording stream'
|
||||
|
|
@ -500,15 +492,11 @@ _pactl_completion() {
|
|||
set-default-source) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-sink-port) _set_sink_port_parameter;;
|
||||
set-source-port) _set_source_port_parameter;;
|
||||
get-sink-volume) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-sink-volume) if ((CURRENT == 2)); then _devices; fi;;
|
||||
get-source-volume) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-source-volume) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-sink-input-volume) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-source-output-volume) if ((CURRENT == 2)); then _devices; fi;;
|
||||
get-sink-mute) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-sink-mute) _set_sink_mute_parameter;;
|
||||
get-source-mute) if ((CURRENT == 2)); then _devices; fi;;
|
||||
set-source-mute) _set_source_mute_parameter;;
|
||||
set-sink-input-mute) _set_sink_input_mute_parameter;;
|
||||
set-source-output-mute) _set_source_output_mute_parameter;;
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ custom_target('system.pa',
|
|||
|
||||
if dbus_dep.found()
|
||||
install_data('pulseaudio-system.conf',
|
||||
install_dir : join_paths(datadir, 'dbus-1', 'system.d')
|
||||
install_dir : join_paths(sysconfdir, 'dbus-1', 'system.d')
|
||||
)
|
||||
endif
|
||||
|
||||
|
|
|
|||
|
|
@ -182,14 +182,9 @@ if host_machine.system() == 'windows'
|
|||
else
|
||||
libpulsecommon_sources += [
|
||||
'pulsecore/mutex-posix.c',
|
||||
'pulsecore/poll-posix.c',
|
||||
'pulsecore/thread-posix.c',
|
||||
'pulsecore/semaphore-posix.c',
|
||||
'pulsecore/thread-posix.c'
|
||||
]
|
||||
if host_machine.system() == 'darwin'
|
||||
libpulsecommon_sources += ['pulsecore/semaphore-osx.c']
|
||||
else
|
||||
libpulsecommon_sources += ['pulsecore/semaphore-posix.c']
|
||||
endif
|
||||
endif
|
||||
# FIXME: Do SIMD things
|
||||
|
||||
|
|
@ -210,7 +205,7 @@ else
|
|||
libm_dep, thread_dep, dl_dep, shm_dep, iconv_dep, sndfile_dep, dbus_dep,
|
||||
x11_dep, libsystemd_dep, glib_dep.partial_dependency(compile_args: true),
|
||||
gtk_dep.partial_dependency(compile_args: true), asyncns_dep, libintl_dep,
|
||||
platform_dep, platform_socket_dep, execinfo_dep, libatomic_ops_dep,
|
||||
platform_dep, platform_socket_dep, execinfo_dep,
|
||||
],
|
||||
implicit_include_directories : false)
|
||||
|
||||
|
|
|
|||
|
|
@ -175,9 +175,6 @@ ATTRS{idVendor}=="1395", ATTRS{idProduct}=="0300", ENV{PULSE_PROFILE_SET}="usb-g
|
|||
# Sennheiser GSP 670 USB headset
|
||||
ATTRS{idVendor}=="1395", ATTRS{idProduct}=="008a", ENV{PULSE_PROFILE_SET}="usb-gaming-headset.conf"
|
||||
|
||||
# Asus Xonar SE
|
||||
ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="189d", ENV{PULSE_PROFILE_SET}="asus-xonar-se.conf"
|
||||
|
||||
GOTO="pulseaudio_end"
|
||||
|
||||
LABEL="pulseaudio_check_pci"
|
||||
|
|
|
|||
|
|
@ -2838,7 +2838,7 @@ static int path_verify(pa_alsa_path *p) {
|
|||
if (p->device_port_type == PA_DEVICE_PORT_TYPE_UNKNOWN)
|
||||
p->device_port_type = map->type;
|
||||
if (!p->description)
|
||||
p->description = pa_xstrdup(_(map->description));
|
||||
p->description = pa_xstrdup(map->description);
|
||||
}
|
||||
|
||||
if (!p->description) {
|
||||
|
|
@ -2851,44 +2851,41 @@ static int path_verify(pa_alsa_path *p) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static char *get_data_path(const char *data_dir, const char *data_type, const char *fname) {
|
||||
char *result;
|
||||
static char *get_path_config_path(const char *paths_dir, const char *fname) {
|
||||
char *path_config_path;
|
||||
char *dir;
|
||||
char *data_home;
|
||||
pa_dynarray *data_dirs;
|
||||
|
||||
if (data_dir) {
|
||||
result = pa_maybe_prefix_path(fname, data_dir);
|
||||
if (access(result, R_OK) == 0)
|
||||
return result;
|
||||
if (paths_dir) {
|
||||
path_config_path = pa_maybe_prefix_path(fname, paths_dir);
|
||||
if (access(path_config_path, R_OK) == 0)
|
||||
return path_config_path;
|
||||
else
|
||||
pa_xfree(result);
|
||||
pa_xfree(path_config_path);
|
||||
}
|
||||
|
||||
#ifdef HAVE_RUNNING_FROM_BUILD_TREE
|
||||
if (pa_run_from_build_tree()) {
|
||||
dir = pa_sprintf_malloc(PA_SRCDIR "/modules/alsa/mixer/%s/", data_type);
|
||||
result = pa_maybe_prefix_path(fname, dir);
|
||||
pa_xfree(dir);
|
||||
|
||||
if (access(result, R_OK) == 0)
|
||||
return result;
|
||||
path_config_path = pa_maybe_prefix_path(fname, PA_SRCDIR "/modules/alsa/mixer/paths/");
|
||||
if (access(path_config_path, R_OK) == 0)
|
||||
return path_config_path;
|
||||
else
|
||||
pa_xfree(result);
|
||||
pa_xfree(path_config_path);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pa_get_data_home_dir(&data_home) == 0) {
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "%s", data_home, data_type);
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "paths", data_home);
|
||||
pa_xfree(data_home);
|
||||
|
||||
result = pa_maybe_prefix_path(fname, dir);
|
||||
path_config_path = pa_maybe_prefix_path(fname, dir);
|
||||
pa_xfree(dir);
|
||||
|
||||
if (access(result, R_OK) == 0)
|
||||
return result;
|
||||
if (access(path_config_path, R_OK) == 0)
|
||||
return path_config_path;
|
||||
else
|
||||
pa_xfree(result);
|
||||
pa_xfree(path_config_path);
|
||||
}
|
||||
|
||||
if (pa_get_data_dirs(&data_dirs) == 0) {
|
||||
|
|
@ -2896,27 +2893,24 @@ static char *get_data_path(const char *data_dir, const char *data_type, const ch
|
|||
const char *n;
|
||||
|
||||
PA_DYNARRAY_FOREACH(n, data_dirs, idx) {
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "%s", n, data_type);
|
||||
result = pa_maybe_prefix_path(fname, dir);
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "paths", n);
|
||||
path_config_path = pa_maybe_prefix_path(fname, dir);
|
||||
pa_xfree(dir);
|
||||
|
||||
if (access(result, R_OK) == 0) {
|
||||
if (access(path_config_path, R_OK) == 0) {
|
||||
pa_dynarray_free(data_dirs);
|
||||
return result;
|
||||
return path_config_path;
|
||||
}
|
||||
else {
|
||||
pa_xfree(result);
|
||||
pa_xfree(path_config_path);
|
||||
}
|
||||
}
|
||||
|
||||
pa_dynarray_free(data_dirs);
|
||||
}
|
||||
|
||||
dir = pa_sprintf_malloc(PA_ALSA_DATA_DIR PA_PATH_SEP "%s", data_type);
|
||||
result = pa_maybe_prefix_path(fname, dir);
|
||||
pa_xfree(dir);
|
||||
|
||||
return result;
|
||||
path_config_path = pa_maybe_prefix_path(fname, PA_ALSA_PATHS_DIR);
|
||||
return path_config_path;
|
||||
}
|
||||
|
||||
pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa_direction_t direction) {
|
||||
|
|
@ -2983,7 +2977,7 @@ pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa
|
|||
items[2].data = &p->description;
|
||||
items[3].data = &mute_during_activation;
|
||||
|
||||
fn = get_data_path(paths_dir, "paths", fname);
|
||||
fn = get_path_config_path(paths_dir, fname);
|
||||
|
||||
pa_log_info("Loading path config: %s", fn);
|
||||
|
||||
|
|
@ -4977,9 +4971,11 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
|
|||
if (!fname)
|
||||
fname = "default.conf";
|
||||
|
||||
fn = get_data_path(NULL, "profile-sets", fname);
|
||||
|
||||
pa_log_info("Loading profile set: %s", fn);
|
||||
fn = pa_maybe_prefix_path(fname,
|
||||
#ifdef HAVE_RUNNING_FROM_BUILD_TREE
|
||||
pa_run_from_build_tree() ? PA_SRCDIR "/modules/alsa/mixer/profile-sets/" :
|
||||
#endif
|
||||
PA_ALSA_PROFILE_SETS_DIR);
|
||||
|
||||
r = pa_config_parse(fn, NULL, items, NULL, false, ps);
|
||||
pa_xfree(fn);
|
||||
|
|
@ -5078,7 +5074,7 @@ static snd_pcm_t* mapping_open_pcm(pa_alsa_mapping *m,
|
|||
handle = pa_alsa_open_by_template(
|
||||
m->device_strings, dev_id, NULL, &try_ss,
|
||||
&try_map, mode, &try_period_size,
|
||||
&try_buffer_size, 0, NULL, NULL, NULL, NULL, exact_channels);
|
||||
&try_buffer_size, 0, NULL, NULL, exact_channels);
|
||||
if (handle && !exact_channels && m->channel_map.channels != try_map.channels) {
|
||||
char buf[PA_CHANNEL_MAP_SNPRINT_MAX];
|
||||
pa_log_debug("Channel map for mapping '%s' permanently changed to '%s'", m->name,
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ struct pa_alsa_mapping {
|
|||
pa_sink *sink;
|
||||
pa_source *source;
|
||||
|
||||
/* ucm device context */
|
||||
/* ucm device context*/
|
||||
pa_alsa_ucm_mapping_context ucm_context;
|
||||
};
|
||||
|
||||
|
|
@ -342,9 +342,6 @@ struct pa_alsa_profile {
|
|||
|
||||
pa_idxset *input_mappings;
|
||||
pa_idxset *output_mappings;
|
||||
|
||||
/* ucm device context */
|
||||
pa_alsa_ucm_profile_context ucm_context;
|
||||
};
|
||||
|
||||
struct pa_alsa_decibel_fix {
|
||||
|
|
|
|||
|
|
@ -1721,7 +1721,7 @@ static int sink_set_port_ucm_cb(pa_sink *s, pa_device_port *p) {
|
|||
else
|
||||
sync_mixer(u, p);
|
||||
|
||||
return pa_alsa_ucm_set_port(u->ucm_context, p);
|
||||
return pa_alsa_ucm_set_port(u->ucm_context, p, true);
|
||||
}
|
||||
|
||||
static int sink_set_port_cb(pa_sink *s, pa_device_port *p) {
|
||||
|
|
@ -2239,7 +2239,7 @@ static int setup_mixer(struct userdata *u, bool ignore_dB) {
|
|||
* will be NULL, but the UCM device enable sequence will still need to be
|
||||
* executed. */
|
||||
if (u->sink->active_port && u->ucm_context) {
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->sink->active_port) < 0)
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->sink->active_port, true) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -2527,9 +2527,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
|||
&ss, &map,
|
||||
SND_PCM_STREAM_PLAYBACK,
|
||||
&period_frames, &buffer_frames, tsched_frames,
|
||||
&b, &d,
|
||||
&u->supported_formats, &u->supported_rates,
|
||||
mapping)))
|
||||
&b, &d, mapping)))
|
||||
goto fail;
|
||||
|
||||
} else if ((dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
|
||||
|
|
@ -2543,9 +2541,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
|||
&ss, &map,
|
||||
SND_PCM_STREAM_PLAYBACK,
|
||||
&period_frames, &buffer_frames, tsched_frames,
|
||||
&b, &d,
|
||||
&u->supported_formats, &u->supported_rates,
|
||||
profile_set, &mapping)))
|
||||
&b, &d, profile_set, &mapping)))
|
||||
goto fail;
|
||||
|
||||
} else {
|
||||
|
|
@ -2556,9 +2552,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
|||
&ss, &map,
|
||||
SND_PCM_STREAM_PLAYBACK,
|
||||
&period_frames, &buffer_frames, tsched_frames,
|
||||
&b, &d,
|
||||
&u->supported_formats, &u->supported_rates,
|
||||
false)))
|
||||
&b, &d, false)))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -2604,11 +2598,13 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
|
|||
|
||||
u->verified_sample_spec = ss;
|
||||
|
||||
u->supported_formats = pa_alsa_get_supported_formats(u->pcm_handle, ss.format);
|
||||
if (!u->supported_formats) {
|
||||
pa_log_error("Failed to find any supported sample formats.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
u->supported_rates = pa_alsa_get_supported_rates(u->pcm_handle, ss.rate);
|
||||
if (!u->supported_rates) {
|
||||
pa_log_error("Failed to find any supported sample rates.");
|
||||
goto fail;
|
||||
|
|
|
|||
|
|
@ -1595,7 +1595,7 @@ static int source_set_port_ucm_cb(pa_source *s, pa_device_port *p) {
|
|||
else
|
||||
sync_mixer(u, p);
|
||||
|
||||
return pa_alsa_ucm_set_port(u->ucm_context, p);
|
||||
return pa_alsa_ucm_set_port(u->ucm_context, p, false);
|
||||
}
|
||||
|
||||
static int source_set_port_cb(pa_source *s, pa_device_port *p) {
|
||||
|
|
@ -1943,7 +1943,7 @@ static int setup_mixer(struct userdata *u, bool ignore_dB) {
|
|||
* will be NULL, but the UCM device enable sequence will still need to be
|
||||
* executed. */
|
||||
if (u->source->active_port && u->ucm_context) {
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->source->active_port) < 0)
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->source->active_port, false) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -2218,7 +2218,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
|
|||
&ss, &map,
|
||||
SND_PCM_STREAM_CAPTURE,
|
||||
&period_frames, &buffer_frames, tsched_frames,
|
||||
&b, &d, &u->supported_formats, &u->supported_rates, mapping)))
|
||||
&b, &d, mapping)))
|
||||
goto fail;
|
||||
|
||||
} else if ((dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
|
||||
|
|
@ -2232,7 +2232,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
|
|||
&ss, &map,
|
||||
SND_PCM_STREAM_CAPTURE,
|
||||
&period_frames, &buffer_frames, tsched_frames,
|
||||
&b, &d, &u->supported_formats, &u->supported_rates, profile_set, &mapping)))
|
||||
&b, &d, profile_set, &mapping)))
|
||||
goto fail;
|
||||
|
||||
} else {
|
||||
|
|
@ -2243,7 +2243,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
|
|||
&ss, &map,
|
||||
SND_PCM_STREAM_CAPTURE,
|
||||
&period_frames, &buffer_frames, tsched_frames,
|
||||
&b, &d, &u->supported_formats, &u->supported_rates, false)))
|
||||
&b, &d, false)))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -2279,11 +2279,13 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
|
|||
|
||||
u->verified_sample_spec = ss;
|
||||
|
||||
u->supported_formats = pa_alsa_get_supported_formats(u->pcm_handle, ss.format);
|
||||
if (!u->supported_formats) {
|
||||
pa_log_error("Failed to find any supported sample formats.");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
u->supported_rates = pa_alsa_get_supported_rates(u->pcm_handle, ss.rate);
|
||||
if (!u->supported_rates) {
|
||||
pa_log_error("Failed to find any supported sample rates.");
|
||||
goto fail;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -140,13 +140,12 @@ typedef struct pa_alsa_ucm_modifier pa_alsa_ucm_modifier;
|
|||
typedef struct pa_alsa_ucm_device pa_alsa_ucm_device;
|
||||
typedef struct pa_alsa_ucm_config pa_alsa_ucm_config;
|
||||
typedef struct pa_alsa_ucm_mapping_context pa_alsa_ucm_mapping_context;
|
||||
typedef struct pa_alsa_ucm_profile_context pa_alsa_ucm_profile_context;
|
||||
typedef struct pa_alsa_ucm_port_data pa_alsa_ucm_port_data;
|
||||
typedef struct pa_alsa_ucm_volume pa_alsa_ucm_volume;
|
||||
|
||||
int pa_alsa_ucm_query_profiles(pa_alsa_ucm_config *ucm, int card_index);
|
||||
pa_alsa_profile_set* pa_alsa_ucm_add_profile_set(pa_alsa_ucm_config *ucm, pa_channel_map *default_channel_map);
|
||||
int pa_alsa_ucm_set_profile(pa_alsa_ucm_config *ucm, pa_card *card, pa_alsa_profile *new_profile, pa_alsa_profile *old_profile);
|
||||
int pa_alsa_ucm_set_profile(pa_alsa_ucm_config *ucm, pa_card *card, const char *new_profile, const char *old_profile);
|
||||
|
||||
int pa_alsa_ucm_get_verb(snd_use_case_mgr_t *uc_mgr, const char *verb_name, const char *verb_desc, pa_alsa_ucm_verb **p_verb);
|
||||
|
||||
|
|
@ -158,14 +157,14 @@ void pa_alsa_ucm_add_ports(
|
|||
pa_card *card,
|
||||
snd_pcm_t *pcm_handle,
|
||||
bool ignore_dB);
|
||||
void pa_alsa_ucm_add_port(
|
||||
void pa_alsa_ucm_add_ports_combination(
|
||||
pa_hashmap *hash,
|
||||
pa_alsa_ucm_mapping_context *context,
|
||||
bool is_sink,
|
||||
pa_hashmap *ports,
|
||||
pa_card_profile *cp,
|
||||
pa_core *core);
|
||||
int pa_alsa_ucm_set_port(pa_alsa_ucm_mapping_context *context, pa_device_port *port);
|
||||
int pa_alsa_ucm_set_port(pa_alsa_ucm_mapping_context *context, pa_device_port *port, bool is_sink);
|
||||
|
||||
void pa_alsa_ucm_free(pa_alsa_ucm_config *ucm);
|
||||
void pa_alsa_ucm_mapping_context_free(pa_alsa_ucm_mapping_context *context);
|
||||
|
|
@ -222,8 +221,11 @@ struct pa_alsa_ucm_modifier {
|
|||
|
||||
pa_proplist *proplist;
|
||||
|
||||
pa_idxset *conflicting_devices;
|
||||
pa_idxset *supported_devices;
|
||||
int n_confdev;
|
||||
int n_suppdev;
|
||||
|
||||
const char **conflicting_devices;
|
||||
const char **supported_devices;
|
||||
|
||||
pa_direction_t action_direction;
|
||||
|
||||
|
|
@ -262,23 +264,21 @@ struct pa_alsa_ucm_mapping_context {
|
|||
pa_alsa_ucm_config *ucm;
|
||||
pa_direction_t direction;
|
||||
|
||||
pa_alsa_ucm_device *ucm_device;
|
||||
pa_alsa_ucm_modifier *ucm_modifier;
|
||||
};
|
||||
|
||||
struct pa_alsa_ucm_profile_context {
|
||||
pa_alsa_ucm_verb *verb;
|
||||
pa_idxset *ucm_devices;
|
||||
pa_idxset *ucm_modifiers;
|
||||
};
|
||||
|
||||
struct pa_alsa_ucm_port_data {
|
||||
pa_alsa_ucm_config *ucm;
|
||||
pa_device_port *core_port;
|
||||
|
||||
pa_alsa_ucm_device *device;
|
||||
/* A single port will be associated with multiple devices if it represents
|
||||
* a combination of devices. */
|
||||
pa_dynarray *devices; /* pa_alsa_ucm_device */
|
||||
|
||||
/* verb name -> pa_alsa_path for volume control */
|
||||
/* profile name -> pa_alsa_path for volume control */
|
||||
pa_hashmap *paths;
|
||||
/* Current path, set when activating verb */
|
||||
/* Current path, set when activating profile */
|
||||
pa_alsa_path *path;
|
||||
|
||||
/* ELD info */
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@
|
|||
#include <pulsecore/thread.h>
|
||||
#include <pulsecore/conf-parser.h>
|
||||
#include <pulsecore/core-rtclock.h>
|
||||
#include <pulsecore/strbuf.h>
|
||||
|
||||
#include "alsa-util.h"
|
||||
#include "alsa-mixer.h"
|
||||
|
|
@ -523,8 +522,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap,
|
||||
bool *use_tsched,
|
||||
pa_sample_format_t **query_supported_formats,
|
||||
unsigned int **query_supported_rates,
|
||||
pa_alsa_profile_set *ps,
|
||||
pa_alsa_mapping **mapping) {
|
||||
|
||||
|
|
@ -563,8 +560,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
|
|||
tsched_size,
|
||||
use_mmap,
|
||||
use_tsched,
|
||||
query_supported_formats,
|
||||
query_supported_rates,
|
||||
m);
|
||||
|
||||
if (pcm_handle) {
|
||||
|
|
@ -592,8 +587,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
|
|||
tsched_size,
|
||||
use_mmap,
|
||||
use_tsched,
|
||||
query_supported_formats,
|
||||
query_supported_rates,
|
||||
m);
|
||||
|
||||
if (pcm_handle) {
|
||||
|
|
@ -618,8 +611,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
|
|||
tsched_size,
|
||||
use_mmap,
|
||||
use_tsched,
|
||||
query_supported_formats,
|
||||
query_supported_rates,
|
||||
false);
|
||||
pa_xfree(d);
|
||||
|
||||
|
|
@ -640,8 +631,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap,
|
||||
bool *use_tsched,
|
||||
pa_sample_format_t **query_supported_formats,
|
||||
unsigned int **query_supported_rates,
|
||||
pa_alsa_mapping *m) {
|
||||
|
||||
snd_pcm_t *pcm_handle;
|
||||
|
|
@ -671,8 +660,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
|
|||
tsched_size,
|
||||
use_mmap,
|
||||
use_tsched,
|
||||
query_supported_formats,
|
||||
query_supported_rates,
|
||||
pa_channel_map_valid(&m->channel_map) /* Query the channel count if we don't know what we want */);
|
||||
|
||||
if (!pcm_handle)
|
||||
|
|
@ -696,8 +683,6 @@ snd_pcm_t *pa_alsa_open_by_device_string(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap,
|
||||
bool *use_tsched,
|
||||
pa_sample_format_t **query_supported_formats,
|
||||
unsigned int **query_supported_rates,
|
||||
bool require_exact_channel_number) {
|
||||
|
||||
int err;
|
||||
|
|
@ -725,12 +710,6 @@ snd_pcm_t *pa_alsa_open_by_device_string(
|
|||
|
||||
pa_log_debug("Managed to open %s", d);
|
||||
|
||||
if (query_supported_formats)
|
||||
*query_supported_formats = pa_alsa_get_supported_formats(pcm_handle, ss->format);
|
||||
|
||||
if (query_supported_rates)
|
||||
*query_supported_rates = pa_alsa_get_supported_rates(pcm_handle, ss->rate);
|
||||
|
||||
if ((err = pa_alsa_set_hw_params(
|
||||
pcm_handle,
|
||||
ss,
|
||||
|
|
@ -804,8 +783,6 @@ snd_pcm_t *pa_alsa_open_by_template(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap,
|
||||
bool *use_tsched,
|
||||
pa_sample_format_t **query_supported_formats,
|
||||
unsigned int **query_supported_rates,
|
||||
bool require_exact_channel_number) {
|
||||
|
||||
snd_pcm_t *pcm_handle;
|
||||
|
|
@ -827,8 +804,6 @@ snd_pcm_t *pa_alsa_open_by_template(
|
|||
tsched_size,
|
||||
use_mmap,
|
||||
use_tsched,
|
||||
query_supported_formats,
|
||||
query_supported_rates,
|
||||
require_exact_channel_number);
|
||||
|
||||
pa_xfree(d);
|
||||
|
|
@ -1431,31 +1406,13 @@ char *pa_alsa_get_reserve_name(const char *device) {
|
|||
return pa_sprintf_malloc("Audio%i", i);
|
||||
}
|
||||
|
||||
static void dump_supported_rates(unsigned int* values)
|
||||
{
|
||||
pa_strbuf *buf;
|
||||
char *str;
|
||||
int i;
|
||||
|
||||
buf = pa_strbuf_new();
|
||||
|
||||
for (i = 0; values[i]; i++) {
|
||||
pa_strbuf_printf(buf, " %u", values[i]);
|
||||
}
|
||||
|
||||
str = pa_strbuf_to_string_free(buf);
|
||||
pa_log_debug("Supported rates:%s", str);
|
||||
pa_xfree(str);
|
||||
}
|
||||
|
||||
unsigned int *pa_alsa_get_supported_rates(snd_pcm_t *pcm, unsigned int fallback_rate) {
|
||||
static unsigned int all_rates[] = { 8000, 11025, 12000,
|
||||
16000, 22050, 24000,
|
||||
32000, 44100, 48000,
|
||||
64000, 88200, 96000,
|
||||
128000, 176400, 192000,
|
||||
352800, 384000,
|
||||
705600, 768000 };
|
||||
384000 };
|
||||
bool supported[PA_ELEMENTSOF(all_rates)] = { false, };
|
||||
snd_pcm_hw_params_t *hwparams;
|
||||
unsigned int i, j, n, *rates = NULL;
|
||||
|
|
@ -1497,40 +1454,39 @@ unsigned int *pa_alsa_get_supported_rates(snd_pcm_t *pcm, unsigned int fallback_
|
|||
rates[1] = 0;
|
||||
}
|
||||
|
||||
dump_supported_rates(rates);
|
||||
return rates;
|
||||
}
|
||||
|
||||
pa_sample_format_t *pa_alsa_get_supported_formats(snd_pcm_t *pcm, pa_sample_format_t fallback_format) {
|
||||
static const snd_pcm_format_t format_trans_to_pcm[] = {
|
||||
[PA_SAMPLE_U8] = SND_PCM_FORMAT_U8,
|
||||
[PA_SAMPLE_ALAW] = SND_PCM_FORMAT_A_LAW,
|
||||
[PA_SAMPLE_ULAW] = SND_PCM_FORMAT_MU_LAW,
|
||||
[PA_SAMPLE_S16LE] = SND_PCM_FORMAT_S16_LE,
|
||||
[PA_SAMPLE_S16BE] = SND_PCM_FORMAT_S16_BE,
|
||||
[PA_SAMPLE_FLOAT32LE] = SND_PCM_FORMAT_FLOAT_LE,
|
||||
[PA_SAMPLE_FLOAT32BE] = SND_PCM_FORMAT_FLOAT_BE,
|
||||
[PA_SAMPLE_S32LE] = SND_PCM_FORMAT_S32_LE,
|
||||
[PA_SAMPLE_S32BE] = SND_PCM_FORMAT_S32_BE,
|
||||
[PA_SAMPLE_S24LE] = SND_PCM_FORMAT_S24_3LE,
|
||||
[PA_SAMPLE_S24BE] = SND_PCM_FORMAT_S24_3BE,
|
||||
[PA_SAMPLE_S24_32LE] = SND_PCM_FORMAT_S24_LE,
|
||||
[PA_SAMPLE_S24_32BE] = SND_PCM_FORMAT_S24_BE,
|
||||
static const snd_pcm_format_t format_trans_to_pa[] = {
|
||||
[SND_PCM_FORMAT_U8] = PA_SAMPLE_U8,
|
||||
[SND_PCM_FORMAT_A_LAW] = PA_SAMPLE_ALAW,
|
||||
[SND_PCM_FORMAT_MU_LAW] = PA_SAMPLE_ULAW,
|
||||
[SND_PCM_FORMAT_S16_LE] = PA_SAMPLE_S16LE,
|
||||
[SND_PCM_FORMAT_S16_BE] = PA_SAMPLE_S16BE,
|
||||
[SND_PCM_FORMAT_FLOAT_LE] = PA_SAMPLE_FLOAT32LE,
|
||||
[SND_PCM_FORMAT_FLOAT_BE] = PA_SAMPLE_FLOAT32BE,
|
||||
[SND_PCM_FORMAT_S32_LE] = PA_SAMPLE_S32LE,
|
||||
[SND_PCM_FORMAT_S32_BE] = PA_SAMPLE_S32BE,
|
||||
[SND_PCM_FORMAT_S24_3LE] = PA_SAMPLE_S24LE,
|
||||
[SND_PCM_FORMAT_S24_3BE] = PA_SAMPLE_S24BE,
|
||||
[SND_PCM_FORMAT_S24_LE] = PA_SAMPLE_S24_32LE,
|
||||
[SND_PCM_FORMAT_S24_BE] = PA_SAMPLE_S24_32BE,
|
||||
};
|
||||
static const pa_sample_format_t all_formats[] = {
|
||||
PA_SAMPLE_U8,
|
||||
PA_SAMPLE_ALAW,
|
||||
PA_SAMPLE_ULAW,
|
||||
PA_SAMPLE_S16LE,
|
||||
PA_SAMPLE_S16BE,
|
||||
PA_SAMPLE_FLOAT32LE,
|
||||
PA_SAMPLE_FLOAT32BE,
|
||||
PA_SAMPLE_S32LE,
|
||||
PA_SAMPLE_S32BE,
|
||||
PA_SAMPLE_S24LE,
|
||||
PA_SAMPLE_S24BE,
|
||||
PA_SAMPLE_S24_32LE,
|
||||
PA_SAMPLE_S24_32BE,
|
||||
static const snd_pcm_format_t all_formats[] = {
|
||||
SND_PCM_FORMAT_U8,
|
||||
SND_PCM_FORMAT_A_LAW,
|
||||
SND_PCM_FORMAT_MU_LAW,
|
||||
SND_PCM_FORMAT_S16_LE,
|
||||
SND_PCM_FORMAT_S16_BE,
|
||||
SND_PCM_FORMAT_FLOAT_LE,
|
||||
SND_PCM_FORMAT_FLOAT_BE,
|
||||
SND_PCM_FORMAT_S32_LE,
|
||||
SND_PCM_FORMAT_S32_BE,
|
||||
SND_PCM_FORMAT_S24_3LE,
|
||||
SND_PCM_FORMAT_S24_3BE,
|
||||
SND_PCM_FORMAT_S24_LE,
|
||||
SND_PCM_FORMAT_S24_BE,
|
||||
};
|
||||
bool supported[PA_ELEMENTSOF(all_formats)] = {
|
||||
false,
|
||||
|
|
@ -1548,7 +1504,7 @@ pa_sample_format_t *pa_alsa_get_supported_formats(snd_pcm_t *pcm, pa_sample_form
|
|||
}
|
||||
|
||||
for (i = 0, n = 0; i < PA_ELEMENTSOF(all_formats); i++) {
|
||||
if (snd_pcm_hw_params_test_format(pcm, hwparams, format_trans_to_pcm[all_formats[i]]) == 0) {
|
||||
if (snd_pcm_hw_params_test_format(pcm, hwparams, all_formats[i]) == 0) {
|
||||
supported[i] = true;
|
||||
n++;
|
||||
}
|
||||
|
|
@ -1559,7 +1515,7 @@ pa_sample_format_t *pa_alsa_get_supported_formats(snd_pcm_t *pcm, pa_sample_form
|
|||
|
||||
for (i = 0, j = 0; i < PA_ELEMENTSOF(all_formats); i++) {
|
||||
if (supported[i])
|
||||
formats[j++] = all_formats[i];
|
||||
formats[j++] = format_trans_to_pa[all_formats[i]];
|
||||
}
|
||||
|
||||
formats[j] = PA_SAMPLE_MAX;
|
||||
|
|
@ -1567,7 +1523,7 @@ pa_sample_format_t *pa_alsa_get_supported_formats(snd_pcm_t *pcm, pa_sample_form
|
|||
formats = pa_xnew(pa_sample_format_t, 2);
|
||||
|
||||
formats[0] = fallback_format;
|
||||
if ((ret = snd_pcm_hw_params_set_format(pcm, hwparams, format_trans_to_pcm[formats[0]])) < 0) {
|
||||
if ((ret = snd_pcm_hw_params_set_format(pcm, hwparams, format_trans_to_pa[formats[0]])) < 0) {
|
||||
pa_log_debug("snd_pcm_hw_params_set_format() failed: %s", pa_alsa_strerror(ret));
|
||||
pa_xfree(formats);
|
||||
return NULL;
|
||||
|
|
@ -1658,16 +1614,14 @@ static snd_mixer_elem_t *pa_alsa_mixer_find(snd_mixer_t *mixer,
|
|||
snd_ctl_elem_iface_t iface,
|
||||
const char *name,
|
||||
unsigned int index,
|
||||
unsigned int device,
|
||||
unsigned int subdevice) {
|
||||
unsigned int device) {
|
||||
snd_mixer_elem_t *elem;
|
||||
|
||||
for (elem = snd_mixer_first_elem(mixer); elem; elem = snd_mixer_elem_next(elem)) {
|
||||
snd_hctl_elem_t **_helem, *helem;
|
||||
snd_hctl_elem_t *helem;
|
||||
if (snd_mixer_elem_get_type(elem) != SND_MIXER_ELEM_PULSEAUDIO)
|
||||
continue;
|
||||
_helem = snd_mixer_elem_get_private(elem);
|
||||
helem = *_helem;
|
||||
helem = snd_mixer_elem_get_private(elem);
|
||||
if (snd_hctl_elem_get_interface(helem) != iface)
|
||||
continue;
|
||||
if (!pa_streq(snd_hctl_elem_get_name(helem), name))
|
||||
|
|
@ -1676,19 +1630,17 @@ static snd_mixer_elem_t *pa_alsa_mixer_find(snd_mixer_t *mixer,
|
|||
continue;
|
||||
if (snd_hctl_elem_get_device(helem) != device)
|
||||
continue;
|
||||
if (snd_hctl_elem_get_subdevice(helem) != subdevice)
|
||||
continue;
|
||||
return elem;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
snd_mixer_elem_t *pa_alsa_mixer_find_card(snd_mixer_t *mixer, struct pa_alsa_mixer_id *alsa_id, unsigned int device) {
|
||||
return pa_alsa_mixer_find(mixer, SND_CTL_ELEM_IFACE_CARD, alsa_id->name, alsa_id->index, device, 0);
|
||||
return pa_alsa_mixer_find(mixer, SND_CTL_ELEM_IFACE_CARD, alsa_id->name, alsa_id->index, device);
|
||||
}
|
||||
|
||||
snd_mixer_elem_t *pa_alsa_mixer_find_pcm(snd_mixer_t *mixer, const char *name, unsigned int device) {
|
||||
return pa_alsa_mixer_find(mixer, SND_CTL_ELEM_IFACE_PCM, name, 0, device, 0);
|
||||
return pa_alsa_mixer_find(mixer, SND_CTL_ELEM_IFACE_PCM, name, 0, device);
|
||||
}
|
||||
|
||||
static int mixer_class_compare(const snd_mixer_elem_t *c1, const snd_mixer_elem_t *c2)
|
||||
|
|
@ -1697,79 +1649,31 @@ static int mixer_class_compare(const snd_mixer_elem_t *c1, const snd_mixer_elem_
|
|||
return c1 == c2 ? 0 : (c1 > c2 ? 1 : -1);
|
||||
}
|
||||
|
||||
static void mixer_melem_free(snd_mixer_elem_t *elem)
|
||||
{
|
||||
snd_hctl_elem_t **_helem;
|
||||
_helem = snd_mixer_elem_get_private(elem);
|
||||
pa_xfree(_helem);
|
||||
}
|
||||
|
||||
static int mixer_class_event(snd_mixer_class_t *class, unsigned int mask,
|
||||
snd_hctl_elem_t *helem, snd_mixer_elem_t *melem)
|
||||
{
|
||||
int err;
|
||||
const char *name = snd_hctl_elem_get_name(helem);
|
||||
snd_hctl_elem_t **_helem;
|
||||
/* NOTE: The remove event is defined as '~0U`. */
|
||||
if (mask == SND_CTL_EVENT_MASK_REMOVE) {
|
||||
/* NOTE: Unless we remove the pointer to melem from the linked-list at
|
||||
* private_data of helem, an assertion will be hit in alsa-lib since
|
||||
* the list is not empty. */
|
||||
_helem = snd_mixer_elem_get_private(melem);
|
||||
*_helem = NULL;
|
||||
snd_mixer_elem_detach(melem, helem);
|
||||
} else if (mask & SND_CTL_EVENT_MASK_ADD) {
|
||||
if (mask & SND_CTL_EVENT_MASK_ADD) {
|
||||
snd_ctl_elem_iface_t iface = snd_hctl_elem_get_interface(helem);
|
||||
if (iface == SND_CTL_ELEM_IFACE_CARD || iface == SND_CTL_ELEM_IFACE_PCM) {
|
||||
snd_mixer_t *mixer = snd_mixer_class_get_mixer(class);
|
||||
snd_ctl_elem_iface_t iface = snd_hctl_elem_get_interface(helem);
|
||||
const char *name = snd_hctl_elem_get_name(helem);
|
||||
const int index = snd_hctl_elem_get_index(helem);
|
||||
const int device = snd_hctl_elem_get_device(helem);
|
||||
const int subdevice = snd_hctl_elem_get_subdevice(helem);
|
||||
snd_mixer_elem_t *new_melem;
|
||||
bool found = true;
|
||||
|
||||
new_melem = pa_alsa_mixer_find(mixer, iface, name, index, device, subdevice);
|
||||
if (!new_melem) {
|
||||
_helem = pa_xmalloc(sizeof(snd_hctl_elem_t *));
|
||||
*_helem = helem;
|
||||
/* Put the hctl pointer as our private data - it will be useful for callbacks */
|
||||
if ((err = snd_mixer_elem_new(&new_melem, SND_MIXER_ELEM_PULSEAUDIO, 0, _helem, mixer_melem_free)) < 0) {
|
||||
pa_log_warn("snd_mixer_elem_new failed: %s", pa_alsa_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
found = false;
|
||||
} else {
|
||||
_helem = snd_mixer_elem_get_private(new_melem);
|
||||
if (_helem) {
|
||||
char *s1, *s2;
|
||||
snd_ctl_elem_id_t *id1, *id2;
|
||||
snd_ctl_elem_id_alloca(&id1);
|
||||
snd_ctl_elem_id_alloca(&id2);
|
||||
snd_hctl_elem_get_id(helem, id1);
|
||||
snd_hctl_elem_get_id(*_helem, id2);
|
||||
s1 = snd_ctl_ascii_elem_id_get(id1);
|
||||
s2 = snd_ctl_ascii_elem_id_get(id2);
|
||||
pa_log_warn("mixer_class_event - duplicate mixer controls: %s | %s", s1, s2);
|
||||
free(s2);
|
||||
free(s1);
|
||||
return 0;
|
||||
}
|
||||
*_helem = helem;
|
||||
/* Put the hctl pointer as our private data - it will be useful for callbacks */
|
||||
if ((err = snd_mixer_elem_new(&new_melem, SND_MIXER_ELEM_PULSEAUDIO, 0, helem, NULL)) < 0) {
|
||||
pa_log_warn("snd_mixer_elem_new failed: %s", pa_alsa_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((err = snd_mixer_elem_attach(new_melem, helem)) < 0) {
|
||||
pa_log_warn("snd_mixer_elem_attach failed: %s", pa_alsa_strerror(err));
|
||||
snd_mixer_elem_free(melem);
|
||||
snd_mixer_elem_free(melem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
if ((err = snd_mixer_elem_add(new_melem, class)) < 0) {
|
||||
pa_log_warn("snd_mixer_elem_add failed: %s", pa_alsa_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
if ((err = snd_mixer_elem_add(new_melem, class)) < 0) {
|
||||
pa_log_warn("snd_mixer_elem_add failed: %s", pa_alsa_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,8 +67,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap, /* modified at return */
|
||||
bool *use_tsched, /* modified at return */
|
||||
pa_sample_format_t **query_supported_formats, /* modified at return */
|
||||
unsigned int **query_supported_rates, /* modified at return */
|
||||
pa_alsa_profile_set *ps,
|
||||
pa_alsa_mapping **mapping); /* modified at return */
|
||||
|
||||
|
|
@ -84,8 +82,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_mapping(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap, /* modified at return */
|
||||
bool *use_tsched, /* modified at return */
|
||||
pa_sample_format_t **query_supported_formats, /* modified at return */
|
||||
unsigned int **query_supported_rates, /* modified at return */
|
||||
pa_alsa_mapping *mapping);
|
||||
|
||||
/* Opens the explicit ALSA device */
|
||||
|
|
@ -100,8 +96,6 @@ snd_pcm_t *pa_alsa_open_by_device_string(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap, /* modified at return */
|
||||
bool *use_tsched, /* modified at return */
|
||||
pa_sample_format_t **query_supported_formats, /* modified at return */
|
||||
unsigned int **query_supported_rates, /* modified at return */
|
||||
bool require_exact_channel_number);
|
||||
|
||||
/* Opens the explicit ALSA device with a fallback list */
|
||||
|
|
@ -117,8 +111,6 @@ snd_pcm_t *pa_alsa_open_by_template(
|
|||
snd_pcm_uframes_t tsched_size,
|
||||
bool *use_mmap, /* modified at return */
|
||||
bool *use_tsched, /* modified at return */
|
||||
pa_sample_format_t **query_supported_formats, /* modified at return */
|
||||
unsigned int **query_supported_rates, /* modified at return */
|
||||
bool require_exact_channel_number);
|
||||
|
||||
void pa_alsa_dump(pa_log_level_t level, snd_pcm_t *pcm);
|
||||
|
|
|
|||
|
|
@ -1,91 +0,0 @@
|
|||
# This file is part of PulseAudio.
|
||||
#
|
||||
# PulseAudio is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 2.1 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# PulseAudio is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
; ASUS Xonar SE card.
|
||||
; This card has two devices for each rear and front panel jacks.
|
||||
;
|
||||
; See default.conf for an explanation on the directives used here.
|
||||
|
||||
[General]
|
||||
auto-profiles = yes
|
||||
|
||||
[Mapping analog-stereo-headset]
|
||||
device-strings = hw:%f,1
|
||||
channel-map = left,right
|
||||
paths-output = analog-output analog-output-headphones
|
||||
paths-input = analog-input-mic analog-input-headphone-mic analog-input-headset-mic
|
||||
priority = 15
|
||||
|
||||
[Mapping analog-stereo]
|
||||
device-strings = hw:%f,0
|
||||
channel-map = left,right
|
||||
paths-output = analog-output analog-output-speaker
|
||||
paths-input = analog-input analog-input-mic analog-input-linein
|
||||
priority = 14
|
||||
|
||||
[Mapping analog-surround-21]
|
||||
device-strings = surround21:%f
|
||||
channel-map = front-left,front-right,lfe
|
||||
paths-output = analog-output-speaker
|
||||
priority = 13
|
||||
direction = output
|
||||
|
||||
[Mapping analog-surround-40]
|
||||
device-strings = surround40:%f
|
||||
channel-map = front-left,front-right,rear-left,rear-right
|
||||
paths-output = analog-output-speaker
|
||||
priority = 12
|
||||
direction = output
|
||||
|
||||
[Mapping analog-surround-41]
|
||||
device-strings = surround41:%f
|
||||
channel-map = front-left,front-right,rear-left,rear-right,lfe
|
||||
paths-output = analog-output-speaker
|
||||
priority = 13
|
||||
direction = output
|
||||
|
||||
[Mapping analog-surround-50]
|
||||
device-strings = surround50:%f
|
||||
channel-map = front-left,front-right,rear-left,rear-right,front-center
|
||||
paths-output = analog-output-speaker
|
||||
priority = 12
|
||||
direction = output
|
||||
|
||||
[Mapping analog-surround-51]
|
||||
device-strings = surround51:%f
|
||||
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
|
||||
paths-output = analog-output-speaker
|
||||
priority = 13
|
||||
direction = output
|
||||
|
||||
[Mapping iec958-stereo]
|
||||
device-strings = iec958:%f
|
||||
channel-map = left,right
|
||||
paths-output = iec958-stereo-output
|
||||
priority = 5
|
||||
|
||||
[Mapping iec958-ac3-surround-40]
|
||||
device-strings = a52:%f
|
||||
channel-map = front-left,front-right,rear-left,rear-right
|
||||
paths-output = iec958-stereo-output
|
||||
priority = 2
|
||||
direction = output
|
||||
|
||||
[Mapping iec958-ac3-surround-51]
|
||||
device-strings = a52:%f
|
||||
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
|
||||
paths-output = iec958-stereo-output
|
||||
priority = 3
|
||||
direction = output
|
||||
|
|
@ -162,7 +162,7 @@ static void add_profiles(struct userdata *u, pa_hashmap *h, pa_hashmap *ports) {
|
|||
|
||||
PA_IDXSET_FOREACH(m, ap->output_mappings, idx) {
|
||||
if (u->use_ucm)
|
||||
pa_alsa_ucm_add_port(NULL, &m->ucm_context, true, ports, cp, u->core);
|
||||
pa_alsa_ucm_add_ports_combination(NULL, &m->ucm_context, true, ports, cp, u->core);
|
||||
else
|
||||
pa_alsa_path_set_add_ports(m->output_path_set, cp, ports, NULL, u->core);
|
||||
if (m->channel_map.channels > cp->max_sink_channels)
|
||||
|
|
@ -175,7 +175,7 @@ static void add_profiles(struct userdata *u, pa_hashmap *h, pa_hashmap *ports) {
|
|||
|
||||
PA_IDXSET_FOREACH(m, ap->input_mappings, idx) {
|
||||
if (u->use_ucm)
|
||||
pa_alsa_ucm_add_port(NULL, &m->ucm_context, false, ports, cp, u->core);
|
||||
pa_alsa_ucm_add_ports_combination(NULL, &m->ucm_context, false, ports, cp, u->core);
|
||||
else
|
||||
pa_alsa_path_set_add_ports(m->input_path_set, cp, ports, NULL, u->core);
|
||||
if (m->channel_map.channels > cp->max_source_channels)
|
||||
|
|
@ -249,7 +249,8 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
|
|||
|
||||
/* if UCM is available for this card then update the verb */
|
||||
if (u->use_ucm) {
|
||||
if (pa_alsa_ucm_set_profile(&u->ucm, c, nd->profile, od->profile) < 0) {
|
||||
if (pa_alsa_ucm_set_profile(&u->ucm, c, nd->profile ? nd->profile->name : NULL,
|
||||
od->profile ? od->profile->name : NULL) < 0) {
|
||||
ret = -1;
|
||||
goto finish;
|
||||
}
|
||||
|
|
@ -301,7 +302,7 @@ static void init_profile(struct userdata *u) {
|
|||
|
||||
if (d->profile && u->use_ucm) {
|
||||
/* Set initial verb */
|
||||
if (pa_alsa_ucm_set_profile(ucm, u->card, d->profile, NULL) < 0) {
|
||||
if (pa_alsa_ucm_set_profile(ucm, u->card, d->profile->name, NULL) < 0) {
|
||||
pa_log("Failed to set ucm profile %s", d->profile->name);
|
||||
return;
|
||||
}
|
||||
|
|
@ -370,7 +371,7 @@ struct temp_port_avail {
|
|||
|
||||
static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
|
||||
struct userdata *u = snd_mixer_elem_get_callback_private(melem);
|
||||
snd_hctl_elem_t **_elem = snd_mixer_elem_get_private(melem), *elem;
|
||||
snd_hctl_elem_t *elem = snd_mixer_elem_get_private(melem);
|
||||
snd_ctl_elem_value_t *elem_value;
|
||||
bool plugged_in;
|
||||
void *state;
|
||||
|
|
@ -380,8 +381,6 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
|
|||
pa_available_t active_available = PA_AVAILABLE_UNKNOWN;
|
||||
|
||||
pa_assert(u);
|
||||
pa_assert(_elem);
|
||||
elem = *_elem;
|
||||
|
||||
/* Changing the jack state may cause a port change, and a port change will
|
||||
* make the sink or source change the mixer settings. If there are multiple
|
||||
|
|
@ -564,18 +563,13 @@ static pa_device_port* find_port_with_eld_device(struct userdata *u, int device)
|
|||
|
||||
static int hdmi_eld_changed(snd_mixer_elem_t *melem, unsigned int mask) {
|
||||
struct userdata *u = snd_mixer_elem_get_callback_private(melem);
|
||||
snd_hctl_elem_t **_elem = snd_mixer_elem_get_private(melem), *elem;
|
||||
int device;
|
||||
snd_hctl_elem_t *elem = snd_mixer_elem_get_private(melem);
|
||||
int device = snd_hctl_elem_get_device(elem);
|
||||
const char *old_monitor_name;
|
||||
pa_device_port *p;
|
||||
pa_hdmi_eld eld;
|
||||
bool changed = false;
|
||||
|
||||
pa_assert(u);
|
||||
pa_assert(_elem);
|
||||
elem = *_elem;
|
||||
device = snd_hctl_elem_get_device(elem);
|
||||
|
||||
if (mask == SND_CTL_EVENT_MASK_REMOVE)
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ typedef struct pa_a2dp_endpoint_conf {
|
|||
/* A2DP codec id */
|
||||
pa_a2dp_codec_id id;
|
||||
|
||||
/* True if codec is bi-directional and supports backchannel */
|
||||
bool support_backchannel;
|
||||
|
||||
/* Returns true if the codec can be supported on the system */
|
||||
bool (*can_be_supported)(bool for_encoding);
|
||||
|
||||
|
|
|
|||
|
|
@ -556,6 +556,7 @@ static size_t decode_buffer_hd(void *codec_info, const uint8_t *input_buffer, si
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_aptx = {
|
||||
.id = { A2DP_CODEC_VENDOR, APTX_VENDOR_ID, APTX_CODEC_ID },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities,
|
||||
.choose_remote_endpoint = choose_remote_endpoint,
|
||||
|
|
@ -579,6 +580,7 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_aptx = {
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_aptx_hd = {
|
||||
.id = { A2DP_CODEC_VENDOR, APTX_HD_VENDOR_ID, APTX_HD_CODEC_ID },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities_hd,
|
||||
.choose_remote_endpoint = choose_remote_endpoint_hd,
|
||||
|
|
|
|||
|
|
@ -433,6 +433,7 @@ static size_t encode_buffer(void *codec_info, uint32_t timestamp, const uint8_t
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_hq = {
|
||||
.id = { A2DP_CODEC_VENDOR, LDAC_VENDOR_ID, LDAC_CODEC_ID },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities,
|
||||
.choose_remote_endpoint = choose_remote_endpoint,
|
||||
|
|
@ -455,6 +456,7 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_hq = {
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_sq = {
|
||||
.id = { A2DP_CODEC_VENDOR, LDAC_VENDOR_ID, LDAC_CODEC_ID },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities,
|
||||
.choose_remote_endpoint = choose_remote_endpoint,
|
||||
|
|
@ -477,6 +479,7 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_sq = {
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_mq = {
|
||||
.id = { A2DP_CODEC_VENDOR, LDAC_VENDOR_ID, LDAC_CODEC_ID },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities,
|
||||
.choose_remote_endpoint = choose_remote_endpoint,
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@
|
|||
#define SBC_BITPOOL_DEC_STEP 5
|
||||
#define SBC_BITPOOL_INC_STEP 1
|
||||
|
||||
#define SBC_SYNCWORD 0x9C
|
||||
|
||||
struct sbc_info {
|
||||
sbc_t sbc; /* Codec data */
|
||||
size_t codesize, frame_length; /* SBC Codesize, frame_length. We simply cache those values here */
|
||||
|
|
@ -56,12 +54,6 @@ struct sbc_info {
|
|||
|
||||
uint8_t nr_blocks;
|
||||
uint8_t nr_subbands;
|
||||
|
||||
bool boost_source_volume;
|
||||
/* Size of SBC frame fragment left over from previous decoding iteration */
|
||||
size_t frame_fragment_size;
|
||||
/* Maximum SBC frame size is 512 bytes when SBC compression ratio > 1 */
|
||||
uint8_t frame_fragment[512];
|
||||
};
|
||||
|
||||
static bool can_be_supported(bool for_encoding) {
|
||||
|
|
@ -116,24 +108,6 @@ static bool can_accept_capabilities_xq(const uint8_t *capabilities_buffer, uint8
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool can_accept_capabilities_faststream(const uint8_t *capabilities_buffer, uint8_t capabilities_size, bool for_encoding) {
|
||||
const a2dp_faststream_t *capabilities = (const a2dp_faststream_t *) capabilities_buffer;
|
||||
|
||||
if (capabilities_size != sizeof(*capabilities))
|
||||
return false;
|
||||
|
||||
if (!(capabilities->direction & (FASTSTREAM_DIRECTION_SINK | FASTSTREAM_DIRECTION_SOURCE)))
|
||||
return false;
|
||||
|
||||
if (!(capabilities->sink_frequency & (FASTSTREAM_SINK_SAMPLING_FREQ_44100 | FASTSTREAM_SINK_SAMPLING_FREQ_48000)))
|
||||
return false;
|
||||
|
||||
if (!(capabilities->source_frequency & FASTSTREAM_SOURCE_SAMPLING_FREQ_16000))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static const char *choose_remote_endpoint(const pa_hashmap *capabilities_hashmap, const pa_sample_spec *default_sample_spec, bool for_encoding) {
|
||||
const pa_a2dp_codec_capabilities *a2dp_capabilities;
|
||||
const char *key;
|
||||
|
|
@ -162,23 +136,6 @@ static const char *choose_remote_endpoint_xq(const pa_hashmap *capabilities_hash
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static const char *choose_remote_endpoint_faststream(const pa_hashmap *capabilities_hashmap, const pa_sample_spec *default_sample_spec, bool for_encoding) {
|
||||
const pa_a2dp_codec_capabilities *a2dp_capabilities;
|
||||
const char *key;
|
||||
void *state;
|
||||
|
||||
/* There is no preference, just choose random valid entry */
|
||||
PA_HASHMAP_FOREACH_KV(key, a2dp_capabilities, capabilities_hashmap, state) {
|
||||
pa_log_debug("choose_remote_endpoint_faststream checking peer endpoint '%s'", key);
|
||||
if (can_accept_capabilities_faststream(a2dp_capabilities->buffer, a2dp_capabilities->size, for_encoding))
|
||||
return key;
|
||||
}
|
||||
|
||||
pa_log_debug("choose_remote_endpoint_faststream matched no peer endpoint");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static uint8_t fill_capabilities(uint8_t capabilities_buffer[MAX_A2DP_CAPS_SIZE]) {
|
||||
a2dp_sbc_t *capabilities = (a2dp_sbc_t *) capabilities_buffer;
|
||||
|
||||
|
|
@ -369,46 +326,6 @@ static uint8_t fill_capabilities_xq(uint8_t capabilities_buffer[MAX_A2DP_CAPS_SI
|
|||
return sizeof(*capabilities);
|
||||
}
|
||||
|
||||
static uint8_t fill_capabilities_faststream(uint8_t capabilities_buffer[MAX_A2DP_CAPS_SIZE]) {
|
||||
a2dp_faststream_t *capabilities = (a2dp_faststream_t *) capabilities_buffer;
|
||||
|
||||
pa_zero(*capabilities);
|
||||
|
||||
capabilities->info = A2DP_SET_VENDOR_ID_CODEC_ID(FASTSTREAM_VENDOR_ID, FASTSTREAM_CODEC_ID);
|
||||
|
||||
capabilities->direction = FASTSTREAM_DIRECTION_SINK | FASTSTREAM_DIRECTION_SOURCE;
|
||||
capabilities->sink_frequency = FASTSTREAM_SINK_SAMPLING_FREQ_44100 | FASTSTREAM_SINK_SAMPLING_FREQ_48000;
|
||||
capabilities->source_frequency = FASTSTREAM_SOURCE_SAMPLING_FREQ_16000;
|
||||
|
||||
return sizeof(*capabilities);
|
||||
}
|
||||
|
||||
static bool is_configuration_valid_faststream(const uint8_t *config_buffer, uint8_t config_size) {
|
||||
const a2dp_faststream_t *config = (const a2dp_faststream_t *) config_buffer;
|
||||
|
||||
if (config_size != sizeof(*config)) {
|
||||
pa_log_error("Invalid size of config buffer");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(config->direction & (FASTSTREAM_DIRECTION_SINK | FASTSTREAM_DIRECTION_SOURCE))) {
|
||||
pa_log_error("Invalid FastStream direction in configuration");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (config->sink_frequency != FASTSTREAM_SINK_SAMPLING_FREQ_44100 && config->sink_frequency != FASTSTREAM_SINK_SAMPLING_FREQ_48000) {
|
||||
pa_log_error("Invalid FastStream sink sampling frequency in configuration");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (config->source_frequency != FASTSTREAM_SOURCE_SAMPLING_FREQ_16000) {
|
||||
pa_log_error("Invalid FastStream source sampling frequency in configuration");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool is_configuration_valid(const uint8_t *config_buffer, uint8_t config_size) {
|
||||
const a2dp_sbc_t *config = (const a2dp_sbc_t *) config_buffer;
|
||||
|
||||
|
|
@ -610,85 +527,6 @@ static uint8_t fill_preferred_configuration(const pa_sample_spec *default_sample
|
|||
return sizeof(*config);
|
||||
}
|
||||
|
||||
static uint8_t fill_preferred_configuration_faststream(const pa_sample_spec *default_sample_spec, const uint8_t *capabilities_buffer, uint8_t capabilities_size, uint8_t config_buffer[MAX_A2DP_CAPS_SIZE]) {
|
||||
a2dp_faststream_t *config = (a2dp_faststream_t *) config_buffer;
|
||||
const a2dp_faststream_t *capabilities = (const a2dp_faststream_t *) capabilities_buffer;
|
||||
int i;
|
||||
|
||||
static const struct {
|
||||
uint32_t rate;
|
||||
uint8_t cap;
|
||||
} sink_freq_table[] = {
|
||||
{ 44100U, FASTSTREAM_SINK_SAMPLING_FREQ_44100 },
|
||||
{ 48000U, FASTSTREAM_SINK_SAMPLING_FREQ_48000 }
|
||||
};
|
||||
|
||||
static const struct {
|
||||
uint32_t rate;
|
||||
uint8_t cap;
|
||||
} source_freq_table[] = {
|
||||
{ 16000U, FASTSTREAM_SOURCE_SAMPLING_FREQ_16000 }
|
||||
};
|
||||
|
||||
if (capabilities_size != sizeof(*capabilities)) {
|
||||
pa_log_error("Invalid size of FastStream capabilities buffer");
|
||||
return 0;
|
||||
}
|
||||
|
||||
pa_zero(*config);
|
||||
|
||||
/* Find the lowest freq that is at least as high as the requested sampling rate */
|
||||
for (i = 0; (unsigned) i < PA_ELEMENTSOF(sink_freq_table); i++)
|
||||
if (sink_freq_table[i].rate >= default_sample_spec->rate && (capabilities->sink_frequency & sink_freq_table[i].cap)) {
|
||||
config->sink_frequency = sink_freq_table[i].cap;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Match with endpoint capabilities */
|
||||
if ((unsigned) i == PA_ELEMENTSOF(sink_freq_table)) {
|
||||
for (--i; i >= 0; i--) {
|
||||
if (capabilities->sink_frequency & sink_freq_table[i].cap) {
|
||||
config->sink_frequency = sink_freq_table[i].cap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i < 0) {
|
||||
pa_log_error("Not suitable FastStream sink sample rate");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
pa_assert((unsigned) i < PA_ELEMENTSOF(sink_freq_table));
|
||||
|
||||
/* Only single frequency (for now?) */
|
||||
config->source_frequency = FASTSTREAM_SOURCE_SAMPLING_FREQ_16000;
|
||||
i = 0;
|
||||
|
||||
/* Match with endpoint capabilities */
|
||||
if ((unsigned) i == PA_ELEMENTSOF(source_freq_table)) {
|
||||
for (--i; i >= 0; i--) {
|
||||
if (capabilities->source_frequency & source_freq_table[i].cap) {
|
||||
config->source_frequency = source_freq_table[i].cap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i < 0) {
|
||||
pa_log_error("Not suitable FastStream source sample rate");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
pa_assert((unsigned) i < PA_ELEMENTSOF(source_freq_table));
|
||||
|
||||
config->direction = FASTSTREAM_DIRECTION_SINK | FASTSTREAM_DIRECTION_SOURCE;
|
||||
|
||||
config->info = A2DP_SET_VENDOR_ID_CODEC_ID(FASTSTREAM_VENDOR_ID, FASTSTREAM_CODEC_ID);
|
||||
|
||||
return sizeof(*config);
|
||||
}
|
||||
|
||||
static uint8_t fill_preferred_configuration_xq(const pa_sample_spec *default_sample_spec, const uint8_t *capabilities_buffer, uint8_t capabilities_size, uint8_t config_buffer[MAX_A2DP_CAPS_SIZE], uint32_t bitrate_cap) {
|
||||
a2dp_sbc_t *config = (a2dp_sbc_t *) config_buffer;
|
||||
const a2dp_sbc_t *capabilities = (const a2dp_sbc_t *) capabilities_buffer;
|
||||
|
|
@ -846,79 +684,6 @@ static void *init(bool for_encoding, bool for_backchannel, const uint8_t *config
|
|||
return sbc_info;
|
||||
}
|
||||
|
||||
static void *init_faststream(bool for_encoding, bool for_backchannel, const uint8_t *config_buffer, uint8_t config_size, pa_sample_spec *sample_spec, pa_core *core) {
|
||||
struct sbc_info *sbc_info;
|
||||
const a2dp_faststream_t *config = (const a2dp_faststream_t *) config_buffer;
|
||||
int ret;
|
||||
|
||||
pa_assert(config_size == sizeof(*config));
|
||||
|
||||
sbc_info = pa_xnew0(struct sbc_info, 1);
|
||||
|
||||
ret = sbc_init(&sbc_info->sbc, 0);
|
||||
if (ret != 0) {
|
||||
pa_xfree(sbc_info);
|
||||
pa_log_error("SBC initialization failed: %d", ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sample_spec->format = PA_SAMPLE_S16LE;
|
||||
|
||||
if (for_encoding != for_backchannel) {
|
||||
switch (config->sink_frequency) {
|
||||
case FASTSTREAM_SINK_SAMPLING_FREQ_44100:
|
||||
sbc_info->frequency = SBC_FREQ_44100;
|
||||
sample_spec->rate = 44100U;
|
||||
break;
|
||||
case FASTSTREAM_SINK_SAMPLING_FREQ_48000:
|
||||
sbc_info->frequency = SBC_FREQ_48000;
|
||||
sample_spec->rate = 48000U;
|
||||
break;
|
||||
default:
|
||||
pa_assert_not_reached();
|
||||
}
|
||||
|
||||
sample_spec->channels = 2;
|
||||
|
||||
sbc_info->mode = SBC_MODE_JOINT_STEREO;
|
||||
sbc_info->initial_bitpool = sbc_info->min_bitpool = sbc_info->max_bitpool = 29;
|
||||
} else {
|
||||
switch (config->source_frequency) {
|
||||
case FASTSTREAM_SOURCE_SAMPLING_FREQ_16000:
|
||||
sbc_info->frequency = SBC_FREQ_16000;
|
||||
sample_spec->rate = 16000U;
|
||||
break;
|
||||
default:
|
||||
pa_assert_not_reached();
|
||||
}
|
||||
|
||||
sample_spec->channels = 2;
|
||||
|
||||
sbc_info->mode = SBC_MODE_MONO;
|
||||
sbc_info->initial_bitpool = sbc_info->min_bitpool = sbc_info->max_bitpool = 32;
|
||||
}
|
||||
|
||||
sbc_info->allocation = SBC_AM_LOUDNESS;
|
||||
sbc_info->subbands = SBC_SB_8;
|
||||
sbc_info->nr_subbands = 8;
|
||||
sbc_info->blocks = SBC_BLK_16;
|
||||
sbc_info->nr_blocks = 16;
|
||||
|
||||
set_params(sbc_info);
|
||||
if (sbc_info->frame_length & 1)
|
||||
++sbc_info->frame_length;
|
||||
|
||||
pa_log_info("FastStream %s SBC parameters: allocation=%s, subbands=%u, blocks=%u, mode=%s bitpool=%u codesize=%u frame_length=%u",
|
||||
for_encoding ? "encoder" : "decoder",
|
||||
sbc_info->sbc.allocation ? "SNR" : "Loudness", sbc_info->sbc.subbands ? 8 : 4,
|
||||
(sbc_info->sbc.blocks+1)*4, sbc_info->sbc.mode == SBC_MODE_MONO ? "Mono" :
|
||||
sbc_info->sbc.mode == SBC_MODE_DUAL_CHANNEL ? "DualChannel" :
|
||||
sbc_info->sbc.mode == SBC_MODE_STEREO ? "Stereo" : "JointStereo",
|
||||
sbc_info->sbc.bitpool, (unsigned)sbc_info->codesize, (unsigned)sbc_info->frame_length);
|
||||
|
||||
return sbc_info;
|
||||
}
|
||||
|
||||
static void deinit(void *codec_info) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
|
||||
|
|
@ -944,12 +709,6 @@ static int reset(void *codec_info) {
|
|||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
int ret;
|
||||
|
||||
/* forget about source volume boost */
|
||||
sbc_info->boost_source_volume = false;
|
||||
|
||||
/* forget last saved frame fragment */
|
||||
sbc_info->frame_fragment_size = 0;
|
||||
|
||||
ret = sbc_reinit(&sbc_info->sbc, 0);
|
||||
if (ret != 0) {
|
||||
pa_log_error("SBC reinitialization failed: %d", ret);
|
||||
|
|
@ -963,25 +722,6 @@ static int reset(void *codec_info) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int reset_faststream(void *codec_info) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
int ret;
|
||||
|
||||
ret = sbc_reinit(&sbc_info->sbc, 0);
|
||||
if (ret != 0) {
|
||||
pa_log_error("SBC reinitialization failed: %d", ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* sbc_reinit() sets also default parameters, so reset them back */
|
||||
set_params(sbc_info);
|
||||
if (sbc_info->frame_length & 1)
|
||||
++sbc_info->frame_length;
|
||||
|
||||
sbc_info->seq_num = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static size_t get_block_size(void *codec_info, size_t link_mtu) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
size_t rtp_size = sizeof(struct rtp_header) + sizeof(struct rtp_payload);
|
||||
|
|
@ -1002,28 +742,6 @@ static size_t get_block_size(void *codec_info, size_t link_mtu) {
|
|||
return frame_count * sbc_info->codesize;
|
||||
}
|
||||
|
||||
static size_t get_write_block_size_faststream(void *codec_info, size_t link_mtu) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
size_t frame_count = link_mtu / sbc_info->frame_length;
|
||||
|
||||
/* 3 frames seem to work best, with minimal glitches */
|
||||
if (frame_count > 3)
|
||||
frame_count = 3;
|
||||
|
||||
return frame_count * sbc_info->codesize;
|
||||
}
|
||||
|
||||
static size_t get_read_block_size_faststream(void *codec_info, size_t link_mtu) {
|
||||
/* With SBC bitpool >= 29 and any combination of blocks, subbands
|
||||
* and channels maximum compression ratio 4:1 is achieved with
|
||||
* blocks=16, subbands=8, channels=2, bitpool=29
|
||||
*
|
||||
* Though smaller bitpools can yield higher compression ratio, faststream is
|
||||
* assumed to have fixed bitpool so maximum output size is link_mtu * 4.
|
||||
*/
|
||||
return link_mtu * 4;
|
||||
}
|
||||
|
||||
static size_t get_encoded_block_size(void *codec_info, size_t input_size) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
size_t rtp_size = sizeof(struct rtp_header) + sizeof(struct rtp_payload);
|
||||
|
|
@ -1034,15 +752,6 @@ static size_t get_encoded_block_size(void *codec_info, size_t input_size) {
|
|||
return (input_size / sbc_info->codesize) * sbc_info->frame_length + rtp_size;
|
||||
}
|
||||
|
||||
static size_t get_encoded_block_size_faststream(void *codec_info, size_t input_size) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
|
||||
/* input size should be aligned to codec input block size */
|
||||
pa_assert_fp(input_size % sbc_info->codesize == 0);
|
||||
|
||||
return (input_size / sbc_info->codesize) * sbc_info->frame_length;
|
||||
}
|
||||
|
||||
static size_t reduce_encoder_bitrate(void *codec_info, size_t write_link_mtu) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
uint8_t bitpool;
|
||||
|
|
@ -1151,72 +860,6 @@ static size_t encode_buffer(void *codec_info, uint32_t timestamp, const uint8_t
|
|||
return d - output_buffer;
|
||||
}
|
||||
|
||||
static size_t encode_buffer_faststream(void *codec_info, uint32_t timestamp, const uint8_t *input_buffer, size_t input_size, uint8_t *output_buffer, size_t output_size, size_t *processed) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
uint8_t *d;
|
||||
const uint8_t *p;
|
||||
size_t to_write, to_encode;
|
||||
uint8_t frame_count;
|
||||
|
||||
frame_count = 0;
|
||||
|
||||
p = input_buffer;
|
||||
to_encode = input_size;
|
||||
|
||||
d = output_buffer;
|
||||
to_write = output_size;
|
||||
|
||||
/* frame_count is only 4 bit number */
|
||||
while (PA_LIKELY(to_encode > 0 && to_write > 0)) {
|
||||
ssize_t written;
|
||||
ssize_t encoded;
|
||||
|
||||
encoded = sbc_encode(&sbc_info->sbc,
|
||||
p, to_encode,
|
||||
d, to_write,
|
||||
&written);
|
||||
|
||||
if (PA_UNLIKELY(encoded <= 0)) {
|
||||
pa_log_error("SBC encoding error (%li)", (long) encoded);
|
||||
break;
|
||||
}
|
||||
|
||||
if (PA_UNLIKELY(written < 0)) {
|
||||
pa_log_error("SBC encoding error (%li)", (long) written);
|
||||
break;
|
||||
}
|
||||
|
||||
while (written < sbc_info->frame_length && written < to_write)
|
||||
d[written++] = 0;
|
||||
|
||||
pa_assert_fp((size_t) encoded <= to_encode);
|
||||
pa_assert_fp((size_t) encoded == sbc_info->codesize);
|
||||
|
||||
pa_assert_fp((size_t) written <= to_write);
|
||||
pa_assert_fp((size_t) written == sbc_info->frame_length);
|
||||
|
||||
p += encoded;
|
||||
to_encode -= encoded;
|
||||
|
||||
d += written;
|
||||
to_write -= written;
|
||||
|
||||
frame_count++;
|
||||
}
|
||||
|
||||
PA_ONCE_BEGIN {
|
||||
pa_log_debug("Using SBC codec implementation: %s", pa_strnull(sbc_get_implementation_info(&sbc_info->sbc)));
|
||||
} PA_ONCE_END;
|
||||
|
||||
if (PA_UNLIKELY(frame_count == 0)) {
|
||||
*processed = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
*processed = p - input_buffer;
|
||||
return d - output_buffer;
|
||||
}
|
||||
|
||||
static size_t decode_buffer(void *codec_info, const uint8_t *input_buffer, size_t input_size, uint8_t *output_buffer, size_t output_size, size_t *processed) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
|
||||
|
|
@ -1281,146 +924,9 @@ static size_t decode_buffer(void *codec_info, const uint8_t *input_buffer, size_
|
|||
return d - output_buffer;
|
||||
}
|
||||
|
||||
static size_t decode_buffer_faststream(void *codec_info, const uint8_t *input_buffer, size_t input_size, uint8_t *output_buffer, size_t output_size, size_t *processed) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
|
||||
const uint8_t *p;
|
||||
uint8_t *d;
|
||||
size_t to_write, to_decode;
|
||||
pa_sample_spec decoded_sample_spec = {
|
||||
.format = PA_SAMPLE_S16LE,
|
||||
.channels = 2,
|
||||
.rate = 16000U
|
||||
};
|
||||
uint8_t decode_buffer[4096];
|
||||
uint8_t frame_buffer[4096];
|
||||
|
||||
to_decode = input_size;
|
||||
|
||||
/* append input buffer to fragment left from previous decode call */
|
||||
if (sbc_info->frame_fragment_size) {
|
||||
|
||||
if (sbc_info->frame_fragment_size + to_decode > sizeof(frame_buffer)) {
|
||||
pa_log_debug("FastStream SBC input (saved + incoming) size %lu larger than buffer size %lu, input truncated to fit",
|
||||
sbc_info->frame_fragment_size + to_decode, sizeof(frame_buffer));
|
||||
to_decode = sizeof(frame_buffer) - sbc_info->frame_fragment_size;
|
||||
}
|
||||
|
||||
memcpy(frame_buffer, sbc_info->frame_fragment, sbc_info->frame_fragment_size);
|
||||
memcpy(frame_buffer + sbc_info->frame_fragment_size, input_buffer, to_decode);
|
||||
|
||||
to_decode += sbc_info->frame_fragment_size;
|
||||
p = frame_buffer;
|
||||
|
||||
/* clear saved fragment */
|
||||
sbc_info->frame_fragment_size = 0;
|
||||
} else
|
||||
p = input_buffer;
|
||||
|
||||
d = output_buffer;
|
||||
to_write = output_size;
|
||||
|
||||
while (PA_LIKELY(to_decode > 0 && to_write > 0)) {
|
||||
size_t written = 0;
|
||||
ssize_t decoded;
|
||||
|
||||
/* skip to SBC sync word before attempting decode */
|
||||
if (*p != SBC_SYNCWORD) {
|
||||
++p;
|
||||
--to_decode;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (to_decode < sbc_info->frame_length) {
|
||||
pa_log_debug("FastStream SBC input %lu is too short (expected frame length %lu)", to_decode, sbc_info->frame_length);
|
||||
break;
|
||||
}
|
||||
|
||||
decoded = sbc_decode(&sbc_info->sbc,
|
||||
p, to_decode,
|
||||
decode_buffer, sizeof(decode_buffer),
|
||||
&written);
|
||||
|
||||
if (PA_UNLIKELY(decoded <= 0)) {
|
||||
/* sbc_decode returns -1 if input too short,
|
||||
* break from loop to save this frame fragment for next decode iteration */
|
||||
if (decoded == -1) {
|
||||
pa_log_debug("FastStream SBC decoding error (%li) input %lu is too short", (long) decoded, to_decode);
|
||||
break;
|
||||
}
|
||||
|
||||
/* otherwise failed to decode frame, skip to next SBC sync word */
|
||||
pa_log_error("FastStream SBC decoding error (%li)", (long) decoded);
|
||||
decoded = 1;
|
||||
} else {
|
||||
/* Reset codesize and frame_length to values found by decoder */
|
||||
sbc_info->codesize = sbc_get_codesize(&sbc_info->sbc);
|
||||
sbc_info->frame_length = sbc_get_frame_length(&sbc_info->sbc);
|
||||
|
||||
if (sbc_info->mode != sbc_info->sbc.mode)
|
||||
sbc_info->mode = sbc_info->sbc.mode;
|
||||
|
||||
if (sbc_info->frequency != sbc_info->sbc.frequency) {
|
||||
/* some devices unexpectedly return SBC frequency different from 16000
|
||||
* remember this, and keep incoming sample rate at 16000 */
|
||||
pa_log_debug("FastStream decoder detected SBC frequency %u, expected %u", sbc_info->sbc.frequency, sbc_info->frequency);
|
||||
sbc_info->frequency = sbc_info->sbc.frequency;
|
||||
|
||||
/* volume is too low for known devices with unexpected source SBC frequency */
|
||||
pa_log_debug("FastStream decoder requesting 20dB boost for source volume");
|
||||
sbc_info->boost_source_volume = true;
|
||||
}
|
||||
|
||||
if (sbc_info->sbc.mode == SBC_MODE_MONO) {
|
||||
const void *interleave_buf[2] = {decode_buffer, decode_buffer};
|
||||
/* mono->stereo conversion needs to fit into remaining output space */
|
||||
written = PA_MIN(to_write / 2, written);
|
||||
pa_interleave(interleave_buf, 2, d, pa_sample_size(&decoded_sample_spec), written / pa_sample_size(&decoded_sample_spec));
|
||||
written *= 2;
|
||||
} else
|
||||
memcpy(d, decode_buffer, written);
|
||||
}
|
||||
|
||||
pa_assert_fp((size_t) decoded <= to_decode);
|
||||
pa_assert_fp((size_t) written <= to_write);
|
||||
|
||||
p += decoded;
|
||||
to_decode -= decoded;
|
||||
|
||||
d += written;
|
||||
to_write -= written;
|
||||
}
|
||||
|
||||
if (to_decode) {
|
||||
if (to_decode > sizeof(sbc_info->frame_fragment)) {
|
||||
pa_log_debug("FastStream remaining SBC fragment size %lu larger than buffer size %lu, remainder truncated to fit",
|
||||
to_decode, sizeof(sbc_info->frame_fragment));
|
||||
p += to_decode - sizeof(sbc_info->frame_fragment);
|
||||
to_decode = sizeof(sbc_info->frame_fragment);
|
||||
}
|
||||
|
||||
pa_log_debug("FastStream saving SBC fragment size %lu for next decoding iteration", to_decode);
|
||||
memcpy(sbc_info->frame_fragment, p, to_decode);
|
||||
sbc_info->frame_fragment_size = to_decode;
|
||||
}
|
||||
|
||||
*processed = input_size;
|
||||
|
||||
return d - output_buffer;
|
||||
}
|
||||
|
||||
/* Boost sink backchannel mic volume by 20dB as it appears too quiet */
|
||||
double get_source_output_volume_factor_dB_faststream(void *codec_info) {
|
||||
struct sbc_info *sbc_info = (struct sbc_info *) codec_info;
|
||||
|
||||
if (sbc_info->boost_source_volume)
|
||||
return 20.;
|
||||
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc = {
|
||||
.id = { A2DP_CODEC_SBC, 0, 0 },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities,
|
||||
.choose_remote_endpoint = choose_remote_endpoint,
|
||||
|
|
@ -1458,6 +964,7 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc = {
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc_xq_453 = {
|
||||
.id = { A2DP_CODEC_SBC, 0, 0 },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities_xq,
|
||||
.choose_remote_endpoint = choose_remote_endpoint_xq,
|
||||
|
|
@ -1482,6 +989,7 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc_xq_453 = {
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc_xq_512 = {
|
||||
.id = { A2DP_CODEC_SBC, 0, 0 },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities_xq,
|
||||
.choose_remote_endpoint = choose_remote_endpoint_xq,
|
||||
|
|
@ -1506,6 +1014,7 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc_xq_512 = {
|
|||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc_xq_552 = {
|
||||
.id = { A2DP_CODEC_SBC, 0, 0 },
|
||||
.support_backchannel = false,
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities_xq,
|
||||
.choose_remote_endpoint = choose_remote_endpoint_xq,
|
||||
|
|
@ -1527,49 +1036,3 @@ const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_sbc_xq_552 = {
|
|||
.decode_buffer = decode_buffer,
|
||||
},
|
||||
};
|
||||
|
||||
/* FastStream codec is just SBC codec with fixed parameters.
|
||||
*
|
||||
* Sink stream parameters:
|
||||
* 48.0kHz or 44.1kHz,
|
||||
* Blocks 16,
|
||||
* Sub-bands 8,
|
||||
* Joint Stereo,
|
||||
* Allocation method Loudness,
|
||||
* Bitpool = 29
|
||||
* (data rate = 212kbps, packet size = (71+1)3 <= DM5 = 220, with 3 SBC frames).
|
||||
* SBC frame size is 71 bytes, but FastStream is zero-padded to the even size (72).
|
||||
*
|
||||
* Source stream parameters:
|
||||
* 16kHz,
|
||||
* Mono,
|
||||
* Blocks 16,
|
||||
* Sub-bands 8,
|
||||
* Allocation method Loudness,
|
||||
* Bitpool = 32
|
||||
* (data rate = 72kbps, packet size = 723 <= DM5 = 220, with 3 SBC frames).
|
||||
*/
|
||||
|
||||
const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_faststream = {
|
||||
.id = { A2DP_CODEC_VENDOR, FASTSTREAM_VENDOR_ID, FASTSTREAM_CODEC_ID },
|
||||
.can_be_supported = can_be_supported,
|
||||
.can_accept_capabilities = can_accept_capabilities_faststream,
|
||||
.choose_remote_endpoint = choose_remote_endpoint_faststream,
|
||||
.fill_capabilities = fill_capabilities_faststream,
|
||||
.is_configuration_valid = is_configuration_valid_faststream,
|
||||
.fill_preferred_configuration = fill_preferred_configuration_faststream,
|
||||
.bt_codec = {
|
||||
.name = "faststream",
|
||||
.description = "FastStream",
|
||||
.support_backchannel = true,
|
||||
.init = init_faststream,
|
||||
.deinit = deinit,
|
||||
.reset = reset_faststream,
|
||||
.get_read_block_size = get_read_block_size_faststream,
|
||||
.get_write_block_size = get_write_block_size_faststream,
|
||||
.get_encoded_block_size = get_encoded_block_size_faststream,
|
||||
.encode_buffer = encode_buffer_faststream,
|
||||
.decode_buffer = decode_buffer_faststream,
|
||||
.get_source_output_volume_factor_dB = get_source_output_volume_factor_dB_faststream,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ extern const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_hq;
|
|||
extern const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_sq;
|
||||
extern const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_ldac_eqmid_mq;
|
||||
#endif
|
||||
extern const pa_a2dp_endpoint_conf pa_a2dp_endpoint_conf_faststream;
|
||||
|
||||
/* This is list of supported codecs. Their order is important.
|
||||
* Codec with lower index has higher priority. */
|
||||
|
|
@ -70,7 +69,6 @@ static const pa_a2dp_endpoint_conf *pa_a2dp_endpoint_configurations[] = {
|
|||
&pa_a2dp_endpoint_conf_sbc_xq_453,
|
||||
&pa_a2dp_endpoint_conf_sbc_xq_512,
|
||||
&pa_a2dp_endpoint_conf_sbc_xq_552,
|
||||
&pa_a2dp_endpoint_conf_faststream,
|
||||
};
|
||||
|
||||
unsigned int pa_bluetooth_a2dp_endpoint_conf_count(void) {
|
||||
|
|
|
|||
|
|
@ -38,25 +38,15 @@
|
|||
|
||||
#include "bluez5-util.h"
|
||||
#include "bt-codec-msbc.h"
|
||||
#include "upower.h"
|
||||
|
||||
#define MANDATORY_CALL_INDICATORS \
|
||||
"(\"call\",(0-1))," \
|
||||
"(\"callsetup\",(0-3))," \
|
||||
"(\"callheld\",(0-2))" \
|
||||
|
||||
struct pa_bluetooth_backend {
|
||||
pa_core *core;
|
||||
pa_dbus_connection *connection;
|
||||
pa_bluetooth_discovery *discovery;
|
||||
pa_hook_slot *adapter_uuids_changed_slot;
|
||||
pa_hook_slot *host_battery_level_changed_slot;
|
||||
pa_upower_backend *upower;
|
||||
bool enable_shared_profiles;
|
||||
bool enable_hsp_hs;
|
||||
bool enable_hfp_hf;
|
||||
bool cmer_indicator_reporting_enabled;
|
||||
uint32_t cind_enabled_indicators;
|
||||
|
||||
PA_LLIST_HEAD(pa_dbus_pending, pending);
|
||||
};
|
||||
|
|
@ -67,7 +57,6 @@ struct transport_data {
|
|||
int sco_fd;
|
||||
pa_io_event *sco_io;
|
||||
pa_mainloop_api *mainloop;
|
||||
pa_bluetooth_backend *backend;
|
||||
};
|
||||
|
||||
struct hfp_config {
|
||||
|
|
@ -108,20 +97,6 @@ enum hfp_ag_features {
|
|||
HFP_AG_INDICATORS = 10,
|
||||
};
|
||||
|
||||
/*
|
||||
* Always keep this struct in sync with indicator discovery of AT+CIND=?
|
||||
* These indicators are used in bitflags and intentionally start at 1
|
||||
* since AT+CIND indicators start at index 1.
|
||||
*/
|
||||
typedef enum pa_bluetooth_ag_to_hf_indicators {
|
||||
CIND_CALL_INDICATOR = 1,
|
||||
CIND_CALL_SETUP_INDICATOR = 2,
|
||||
CIND_CALL_HELD_INDICATOR = 3,
|
||||
CIND_SERVICE_INDICATOR = 4,
|
||||
CIND_BATT_CHG_INDICATOR = 5,
|
||||
CIND_INDICATOR_MAX = 6
|
||||
} pa_bluetooth_ag_to_hf_indicators_t;
|
||||
|
||||
/* gateway features we support, which is as little as we can get away with */
|
||||
static uint32_t hfp_features =
|
||||
/* HFP 1.6 requires this */
|
||||
|
|
@ -614,13 +589,11 @@ static pa_volume_t set_source_volume(pa_bluetooth_transport *t, pa_volume_t volu
|
|||
static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf)
|
||||
{
|
||||
struct hfp_config *c = t->config;
|
||||
struct transport_data *trd = t->userdata;
|
||||
pa_bluetooth_backend *b = trd->backend;
|
||||
int indicator, mode, val;
|
||||
char *str;
|
||||
int indicator, val;
|
||||
char str[5];
|
||||
const char *r;
|
||||
size_t len;
|
||||
const char *state = NULL;
|
||||
const char *state;
|
||||
|
||||
/* first-time initialize selected codec to CVSD */
|
||||
if (c->selected_codec == 0)
|
||||
|
|
@ -635,47 +608,18 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
|
|||
c->state = 1;
|
||||
|
||||
return true;
|
||||
} else if (pa_startswith(buf, "AT+BIA=")) {
|
||||
/* Indicators start with index 1 and follow the order of the AT+CIND=? response */
|
||||
|
||||
str = pa_xstrdup(buf + 7);
|
||||
for (indicator = 1; (r = pa_split_in_place(str, ",\r\n", &len, &state)); indicator++) {
|
||||
/* Ignore updates to mandatory indicators which are always ON */
|
||||
if (indicator == CIND_CALL_INDICATOR
|
||||
|| indicator == CIND_CALL_SETUP_INDICATOR
|
||||
|| indicator == CIND_CALL_HELD_INDICATOR)
|
||||
continue;
|
||||
|
||||
/* Indicators may have no value and should be skipped */
|
||||
if (len == 0)
|
||||
continue;
|
||||
|
||||
if (len == 1 && r[0] == '1')
|
||||
b->cind_enabled_indicators |= (1 << indicator);
|
||||
else if (len == 1 && r[0] == '0')
|
||||
b->cind_enabled_indicators &= ~(1 << indicator);
|
||||
else {
|
||||
pa_log_error("Unable to parse indicator of AT+BIA command: %s", buf);
|
||||
rfcomm_write_response(fd, "ERROR");
|
||||
pa_xfree(str);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
pa_xfree(str);
|
||||
|
||||
return true;
|
||||
} else if (pa_startswith(buf, "AT+BAC=")) {
|
||||
} else if (sscanf(buf, "AT+BAC=%3s", str) == 1) {
|
||||
c->support_msbc = false;
|
||||
|
||||
state = NULL;
|
||||
|
||||
/* check if codec id 2 (mSBC) is in the list of supported codecs */
|
||||
str = pa_xstrdup(buf + 7);
|
||||
while ((r = pa_split_in_place(str, ",\r\n", &len, &state))) {
|
||||
while ((r = pa_split_in_place(str, ",", &len, &state))) {
|
||||
if (len == 1 && r[0] == '2') {
|
||||
c->support_msbc = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pa_xfree(str);
|
||||
|
||||
c->support_codec_negotiation = true;
|
||||
|
||||
|
|
@ -689,48 +633,24 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
|
|||
|
||||
return true;
|
||||
} else if (c->state == 1 && pa_startswith(buf, "AT+CIND=?")) {
|
||||
/* UPower backend available, declare support for more indicators */
|
||||
if (b->upower) {
|
||||
rfcomm_write_response(fd, "+CIND: "
|
||||
MANDATORY_CALL_INDICATORS ","
|
||||
"(\"service\",(0-1)),"
|
||||
"(\"battchg\",(0-5))");
|
||||
|
||||
/* Minimal indicators supported without any additional backend */
|
||||
} else {
|
||||
rfcomm_write_response(fd, "+CIND: "
|
||||
MANDATORY_CALL_INDICATORS ","
|
||||
"(\"service\",(0-1))");
|
||||
}
|
||||
/* we declare minimal no indicators */
|
||||
rfcomm_write_response(fd, "+CIND: "
|
||||
/* many indicators can be supported, only call and
|
||||
* callheld are mandatory, so that's all we reply */
|
||||
"(\"service\",(0-1)),"
|
||||
"(\"call\",(0-1)),"
|
||||
"(\"callsetup\",(0-3)),"
|
||||
"(\"callheld\",(0-2))");
|
||||
c->state = 2;
|
||||
|
||||
return true;
|
||||
} else if (c->state == 2 && pa_startswith(buf, "AT+CIND?")) {
|
||||
if (b->upower)
|
||||
rfcomm_write_response(fd, "+CIND: 0,0,0,0,%u", pa_upower_get_battery_level(b->upower));
|
||||
else
|
||||
rfcomm_write_response(fd, "+CIND: 0,0,0,0");
|
||||
rfcomm_write_response(fd, "+CIND: 0,0,0,0");
|
||||
c->state = 3;
|
||||
|
||||
return true;
|
||||
} else if ((c->state == 2 || c->state == 3) && pa_startswith(buf, "AT+CMER=")) {
|
||||
if (sscanf(buf, "AT+CMER=%d,%*d,%*d,%d", &mode, &val) == 2) {
|
||||
/* Bluetooth HFP spec only defines mode == 3 */
|
||||
if (mode != 3)
|
||||
pa_log_warn("Unexpected mode for AT+CMER: %d", mode);
|
||||
|
||||
/* Configure CMER event reporting */
|
||||
b->cmer_indicator_reporting_enabled = !!val;
|
||||
|
||||
pa_log_debug("Event indications enabled? %s", pa_yes_no(val));
|
||||
|
||||
rfcomm_write_response(fd, "OK");
|
||||
}
|
||||
else {
|
||||
pa_log_error("Unable to parse AT+CMER command: %s", buf);
|
||||
rfcomm_write_response(fd, "ERROR");
|
||||
return false;
|
||||
}
|
||||
rfcomm_write_response(fd, "OK");
|
||||
|
||||
if (c->support_codec_negotiation) {
|
||||
if (c->support_msbc && pa_bluetooth_discovery_get_enable_msbc(t->device->discovery)) {
|
||||
|
|
@ -818,62 +738,8 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
|
|||
return true;
|
||||
}
|
||||
|
||||
static int get_rfcomm_fd(pa_bluetooth_discovery *discovery) {
|
||||
struct pa_bluetooth_transport *t;
|
||||
struct transport_data *trd = NULL;
|
||||
void *state = NULL;
|
||||
|
||||
/* Find RFCOMM transport by checking if a HSP or HFP profile transport is available */
|
||||
while ((t = pa_hashmap_iterate(pa_bluetooth_discovery_get_transports(discovery), &state, NULL))) {
|
||||
/* Skip non-connected transports */
|
||||
if (!t || t->state == PA_BLUETOOTH_TRANSPORT_STATE_DISCONNECTED) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Break when an RFCOMM capable transport profile is available */
|
||||
if (t->profile == PA_BLUETOOTH_PROFILE_HFP_HF) {
|
||||
trd = t->userdata;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Skip if RFCOMM channel is not available yet */
|
||||
if (!trd) {
|
||||
pa_log_info("RFCOMM not available yet, skipping notification");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return trd->rfcomm_fd;
|
||||
}
|
||||
|
||||
static pa_hook_result_t host_battery_level_changed_cb(pa_bluetooth_discovery *y, const pa_upower_backend *u, pa_bluetooth_backend *b) {
|
||||
int rfcomm_fd;
|
||||
|
||||
pa_assert(y);
|
||||
pa_assert(u);
|
||||
pa_assert(b);
|
||||
|
||||
/* Get RFCOMM channel if available */
|
||||
rfcomm_fd = get_rfcomm_fd(y);
|
||||
if (rfcomm_fd < 0)
|
||||
return PA_HOOK_OK;
|
||||
|
||||
/* Notify HF about AG battery level change over RFCOMM */
|
||||
if (b->cmer_indicator_reporting_enabled && (b->cind_enabled_indicators & (1 << CIND_BATT_CHG_INDICATOR))) {
|
||||
rfcomm_write_response(rfcomm_fd, "+CIEV: %d,%d", CIND_BATT_CHG_INDICATOR, u->battery_level);
|
||||
pa_log_debug("HG notified of AG's battery level change");
|
||||
/* Skip notification if indicator is disabled or event reporting is completely disabled */
|
||||
} else
|
||||
pa_log_debug("Battery level change indicator disabled, skipping notification");
|
||||
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
static void rfcomm_io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void *userdata) {
|
||||
pa_bluetooth_transport *t = userdata;
|
||||
struct transport_data *trd = t->userdata;
|
||||
pa_bluetooth_backend *b = trd->backend;
|
||||
int i;
|
||||
|
||||
pa_assert(io);
|
||||
pa_assert(t);
|
||||
|
|
@ -889,130 +755,111 @@ static void rfcomm_io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_i
|
|||
}
|
||||
|
||||
if (events & PA_IO_EVENT_INPUT) {
|
||||
char rbuf[512];
|
||||
char buf[512];
|
||||
ssize_t len;
|
||||
int gain, dummy;
|
||||
bool do_reply = false;
|
||||
int vendor, product, version, features;
|
||||
char *buf = rbuf;
|
||||
int num;
|
||||
|
||||
len = pa_read(fd, rbuf, 511, NULL);
|
||||
len = pa_read(fd, buf, 511, NULL);
|
||||
if (len < 0) {
|
||||
pa_log_error("RFCOMM read error: %s", pa_cstrerror(errno));
|
||||
goto fail;
|
||||
}
|
||||
rbuf[len] = 0;
|
||||
pa_log_debug("RFCOMM << %s", rbuf);
|
||||
buf[len] = 0;
|
||||
pa_log_debug("RFCOMM << %s", buf);
|
||||
|
||||
while (buf[0]) {
|
||||
/* There are only four HSP AT commands:
|
||||
* AT+VGS=value: value between 0 and 15, sent by the HS to AG to set the speaker gain.
|
||||
* +VGS=value is sent by AG to HS as a response to an AT+VGS command or when the gain
|
||||
* is changed on the AG side.
|
||||
* AT+VGM=value: value between 0 and 15, sent by the HS to AG to set the microphone gain.
|
||||
* +VGM=value is sent by AG to HS as a response to an AT+VGM command or when the gain
|
||||
* is changed on the AG side.
|
||||
* AT+CKPD=200: Sent by HS when headset button is pressed.
|
||||
* RING: Sent by AG to HS to notify of an incoming call. It can safely be ignored because
|
||||
* it does not expect a reply. */
|
||||
if (sscanf(buf, "AT+VGS=%d", &gain) == 1 || sscanf(buf, "\r\n+VGM%*[=:]%d\r\n", &gain) == 1) {
|
||||
if (!t->set_sink_volume) {
|
||||
pa_log_debug("HS/HF peer supports speaker gain control");
|
||||
t->set_sink_volume = set_sink_volume;
|
||||
}
|
||||
|
||||
t->sink_volume = hsp_gain_to_volume(gain);
|
||||
pa_hook_fire(pa_bluetooth_discovery_hook(t->device->discovery, PA_BLUETOOTH_HOOK_TRANSPORT_SINK_VOLUME_CHANGED), t);
|
||||
do_reply = true;
|
||||
|
||||
} else if (sscanf(buf, "AT+VGM=%d", &gain) == 1 || sscanf(buf, "\r\n+VGS%*[=:]%d\r\n", &gain) == 1) {
|
||||
if (!t->set_source_volume) {
|
||||
pa_log_debug("HS/HF peer supports microphone gain control");
|
||||
t->set_source_volume = set_source_volume;
|
||||
}
|
||||
|
||||
t->source_volume = hsp_gain_to_volume(gain);
|
||||
pa_hook_fire(pa_bluetooth_discovery_hook(t->device->discovery, PA_BLUETOOTH_HOOK_TRANSPORT_SOURCE_VOLUME_CHANGED), t);
|
||||
do_reply = true;
|
||||
} else if (sscanf(buf, "AT+CKPD=%d", &dummy) == 1) {
|
||||
do_reply = true;
|
||||
} else if (sscanf(buf, "AT+XAPL=%04x-%04x-%04x,%d", &vendor, &product, &version, &features) == 4) {
|
||||
if (features & 0x2)
|
||||
/* claim, that we support battery status reports */
|
||||
rfcomm_write_response(fd, "+XAPL=iPhone,6");
|
||||
do_reply = true;
|
||||
} else if (sscanf(buf, "AT+IPHONEACCEV=%d", &num) == 1) {
|
||||
char *substr = buf, *keystr;
|
||||
int key, val, i;
|
||||
|
||||
do_reply = true;
|
||||
|
||||
for (i = 0; i < num; ++i) {
|
||||
keystr = strchr(substr, ',');
|
||||
if (!keystr) {
|
||||
pa_log_warn("%s misses key for argument #%d", buf, i);
|
||||
do_reply = false;
|
||||
break;
|
||||
}
|
||||
keystr++;
|
||||
substr = strchr(keystr, ',');
|
||||
if (!substr) {
|
||||
pa_log_warn("%s misses value for argument #%d", buf, i);
|
||||
do_reply = false;
|
||||
break;
|
||||
}
|
||||
substr++;
|
||||
|
||||
key = atoi(keystr);
|
||||
val = atoi(substr);
|
||||
|
||||
switch (key) {
|
||||
case 1:
|
||||
pa_log_debug("Battery Level: %d0%%", val + 1);
|
||||
pa_bluetooth_device_report_battery_level(t->device, (val + 1) * 10, "Apple accessory indication");
|
||||
break;
|
||||
case 2:
|
||||
pa_log_debug("Dock Status: %s", val ? "docked" : "undocked");
|
||||
break;
|
||||
default:
|
||||
pa_log_debug("Unexpected IPHONEACCEV key %#x", key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!do_reply)
|
||||
rfcomm_write_response(fd, "ERROR");
|
||||
} else if (t->config) { /* t->config is only non-null for hfp profile */
|
||||
do_reply = hfp_rfcomm_handle(fd, t, buf);
|
||||
} else {
|
||||
rfcomm_write_response(fd, "ERROR");
|
||||
do_reply = false;
|
||||
/* There are only four HSP AT commands:
|
||||
* AT+VGS=value: value between 0 and 15, sent by the HS to AG to set the speaker gain.
|
||||
* +VGS=value is sent by AG to HS as a response to an AT+VGS command or when the gain
|
||||
* is changed on the AG side.
|
||||
* AT+VGM=value: value between 0 and 15, sent by the HS to AG to set the microphone gain.
|
||||
* +VGM=value is sent by AG to HS as a response to an AT+VGM command or when the gain
|
||||
* is changed on the AG side.
|
||||
* AT+CKPD=200: Sent by HS when headset button is pressed.
|
||||
* RING: Sent by AG to HS to notify of an incoming call. It can safely be ignored because
|
||||
* it does not expect a reply. */
|
||||
if (sscanf(buf, "AT+VGS=%d", &gain) == 1 || sscanf(buf, "\r\n+VGM%*[=:]%d\r\n", &gain) == 1) {
|
||||
if (!t->set_sink_volume) {
|
||||
pa_log_debug("HS/HF peer supports speaker gain control");
|
||||
t->set_sink_volume = set_sink_volume;
|
||||
}
|
||||
|
||||
if (do_reply)
|
||||
rfcomm_write_response(fd, "OK");
|
||||
t->sink_volume = hsp_gain_to_volume(gain);
|
||||
pa_hook_fire(pa_bluetooth_discovery_hook(t->device->discovery, PA_BLUETOOTH_HOOK_TRANSPORT_SINK_VOLUME_CHANGED), t);
|
||||
do_reply = true;
|
||||
|
||||
if (buf[0] == '\r') /* in case it is the command with format \r\nCOMMAND\r\n, skip the starting \r */
|
||||
buf = buf + 1;
|
||||
} else if (sscanf(buf, "AT+VGM=%d", &gain) == 1 || sscanf(buf, "\r\n+VGS%*[=:]%d\r\n", &gain) == 1) {
|
||||
if (!t->set_source_volume) {
|
||||
pa_log_debug("HS/HF peer supports microphone gain control");
|
||||
t->set_source_volume = set_source_volume;
|
||||
}
|
||||
|
||||
buf = strstr(buf, "\r"); /* try to find the next AT command in the buf */
|
||||
if (!buf)
|
||||
break;
|
||||
else if (buf[1] == '\n')
|
||||
buf = buf + 2; /* skip \r\n */
|
||||
else
|
||||
buf = buf + 1; /* skip \r */
|
||||
t->source_volume = hsp_gain_to_volume(gain);
|
||||
pa_hook_fire(pa_bluetooth_discovery_hook(t->device->discovery, PA_BLUETOOTH_HOOK_TRANSPORT_SOURCE_VOLUME_CHANGED), t);
|
||||
do_reply = true;
|
||||
} else if (sscanf(buf, "AT+CKPD=%d", &dummy) == 1) {
|
||||
do_reply = true;
|
||||
} else if (sscanf(buf, "AT+XAPL=%04x-%04x-%04x,%d", &vendor, &product, &version, &features) == 4) {
|
||||
if (features & 0x2)
|
||||
/* claim, that we support battery status reports */
|
||||
rfcomm_write_response(fd, "+XAPL=iPhone,6");
|
||||
do_reply = true;
|
||||
} else if (sscanf(buf, "AT+IPHONEACCEV=%d", &num) == 1) {
|
||||
char *substr = buf, *keystr;
|
||||
int key, val, i;
|
||||
|
||||
do_reply = true;
|
||||
|
||||
for (i = 0; i < num; ++i) {
|
||||
keystr = strchr(substr, ',');
|
||||
if (!keystr) {
|
||||
pa_log_warn("%s misses key for argument #%d", buf, i);
|
||||
do_reply = false;
|
||||
break;
|
||||
}
|
||||
keystr++;
|
||||
substr = strchr(keystr, ',');
|
||||
if (!substr) {
|
||||
pa_log_warn("%s misses value for argument #%d", buf, i);
|
||||
do_reply = false;
|
||||
break;
|
||||
}
|
||||
substr++;
|
||||
|
||||
key = atoi(keystr);
|
||||
val = atoi(substr);
|
||||
|
||||
switch (key) {
|
||||
case 1:
|
||||
pa_log_notice("Battery Level: %d0%%", val + 1);
|
||||
pa_bluetooth_device_report_battery_level(t->device, (val + 1) * 10, "Apple accessory indication");
|
||||
break;
|
||||
case 2:
|
||||
pa_log_notice("Dock Status: %s", val ? "docked" : "undocked");
|
||||
break;
|
||||
default:
|
||||
pa_log_debug("Unexpected IPHONEACCEV key %#x", key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!do_reply)
|
||||
rfcomm_write_response(fd, "ERROR");
|
||||
} else if (t->config) { /* t->config is only non-null for hfp profile */
|
||||
do_reply = hfp_rfcomm_handle(fd, t, buf);
|
||||
} else {
|
||||
rfcomm_write_response(fd, "ERROR");
|
||||
do_reply = false;
|
||||
}
|
||||
|
||||
if (do_reply)
|
||||
rfcomm_write_response(fd, "OK");
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
fail:
|
||||
/* Service Connection lost, reset indicators and event reporting to default values */
|
||||
b->cmer_indicator_reporting_enabled = false;
|
||||
for (i = 1; i < CIND_INDICATOR_MAX; i++)
|
||||
b->cind_enabled_indicators |= (1 << i);
|
||||
|
||||
pa_bluetooth_transport_unlink(t);
|
||||
pa_bluetooth_transport_free(t);
|
||||
}
|
||||
|
|
@ -1175,7 +1022,6 @@ static DBusMessage *profile_new_connection(DBusConnection *conn, DBusMessage *m,
|
|||
trd = pa_xnew0(struct transport_data, 1);
|
||||
trd->rfcomm_fd = fd;
|
||||
trd->mainloop = b->core->mainloop;
|
||||
trd->backend = b;
|
||||
trd->rfcomm_io = trd->mainloop->io_new(b->core->mainloop, fd, PA_IO_EVENT_INPUT,
|
||||
rfcomm_io_callback, t);
|
||||
t->userdata = trd;
|
||||
|
|
@ -1342,7 +1188,6 @@ void pa_bluetooth_native_backend_enable_shared_profiles(pa_bluetooth_backend *na
|
|||
pa_bluetooth_backend *pa_bluetooth_native_backend_new(pa_core *c, pa_bluetooth_discovery *y, bool enable_shared_profiles) {
|
||||
pa_bluetooth_backend *backend;
|
||||
DBusError err;
|
||||
int i;
|
||||
|
||||
pa_log_debug("Bluetooth Headset Backend API support using the native backend");
|
||||
|
||||
|
|
@ -1366,10 +1211,6 @@ pa_bluetooth_backend *pa_bluetooth_native_backend_new(pa_core *c, pa_bluetooth_d
|
|||
pa_hook_connect(pa_bluetooth_discovery_hook(y, PA_BLUETOOTH_HOOK_ADAPTER_UUIDS_CHANGED), PA_HOOK_NORMAL,
|
||||
(pa_hook_cb_t) adapter_uuids_changed_cb, backend);
|
||||
|
||||
backend->host_battery_level_changed_slot =
|
||||
pa_hook_connect(pa_bluetooth_discovery_hook(y, PA_BLUETOOTH_HOOK_HOST_BATTERY_LEVEL_CHANGED), PA_HOOK_NORMAL,
|
||||
(pa_hook_cb_t) host_battery_level_changed_cb, backend);
|
||||
|
||||
if (!backend->enable_hsp_hs && !backend->enable_hfp_hf)
|
||||
pa_log_warn("Both HSP HS and HFP HF bluetooth profiles disabled in native backend. Native backend will not register for headset connections.");
|
||||
|
||||
|
|
@ -1379,16 +1220,6 @@ pa_bluetooth_backend *pa_bluetooth_native_backend_new(pa_core *c, pa_bluetooth_d
|
|||
if (backend->enable_shared_profiles)
|
||||
native_backend_apply_profile_registration_change(backend, true);
|
||||
|
||||
backend->upower = pa_upower_backend_new(c, y);
|
||||
|
||||
/* All CIND indicators are enabled by default until overriden by AT+BIA */
|
||||
for (i = 1; i < CIND_INDICATOR_MAX; i++)
|
||||
backend->cind_enabled_indicators |= (1 << i);
|
||||
|
||||
/* While all CIND indicators are enabled, event reporting is not enabled by default */
|
||||
backend->cmer_indicator_reporting_enabled = false;
|
||||
|
||||
|
||||
return backend;
|
||||
}
|
||||
|
||||
|
|
@ -1400,18 +1231,12 @@ void pa_bluetooth_native_backend_free(pa_bluetooth_backend *backend) {
|
|||
if (backend->adapter_uuids_changed_slot)
|
||||
pa_hook_slot_free(backend->adapter_uuids_changed_slot);
|
||||
|
||||
if (backend->host_battery_level_changed_slot)
|
||||
pa_hook_slot_free(backend->host_battery_level_changed_slot);
|
||||
|
||||
if (backend->enable_shared_profiles)
|
||||
native_backend_apply_profile_registration_change(backend, false);
|
||||
|
||||
if (backend->enable_hsp_hs)
|
||||
profile_done(backend, PA_BLUETOOTH_PROFILE_HSP_HS);
|
||||
|
||||
if (backend->upower)
|
||||
pa_upower_backend_free(backend->upower);
|
||||
|
||||
pa_dbus_connection_unref(backend->connection);
|
||||
|
||||
pa_xfree(backend);
|
||||
|
|
|
|||
|
|
@ -1202,13 +1202,6 @@ bool pa_bluetooth_discovery_get_enable_msbc(pa_bluetooth_discovery *y)
|
|||
return y->enable_msbc;
|
||||
}
|
||||
|
||||
pa_hashmap* pa_bluetooth_discovery_get_transports(pa_bluetooth_discovery *y) {
|
||||
pa_assert(y);
|
||||
pa_assert(PA_REFCNT_VALUE(y) > 0);
|
||||
|
||||
return y->transports;
|
||||
}
|
||||
|
||||
pa_bluetooth_device* pa_bluetooth_discovery_get_device_by_address(pa_bluetooth_discovery *y, const char *remote, const char *local) {
|
||||
pa_bluetooth_device *d;
|
||||
void *state = NULL;
|
||||
|
|
|
|||
|
|
@ -62,14 +62,12 @@ typedef struct pa_bluetooth_device pa_bluetooth_device;
|
|||
typedef struct pa_bluetooth_adapter pa_bluetooth_adapter;
|
||||
typedef struct pa_bluetooth_discovery pa_bluetooth_discovery;
|
||||
typedef struct pa_bluetooth_backend pa_bluetooth_backend;
|
||||
typedef struct pa_upower_backend pa_upower_backend;
|
||||
|
||||
typedef enum pa_bluetooth_hook {
|
||||
PA_BLUETOOTH_HOOK_ADAPTER_UUIDS_CHANGED, /* Call data: pa_bluetooth_adapter */
|
||||
PA_BLUETOOTH_HOOK_DEVICE_CONNECTION_CHANGED, /* Call data: pa_bluetooth_device */
|
||||
PA_BLUETOOTH_HOOK_DEVICE_UNLINK, /* Call data: pa_bluetooth_device */
|
||||
PA_BLUETOOTH_HOOK_DEVICE_BATTERY_LEVEL_CHANGED, /* Call data: pa_bluetooth_device */
|
||||
PA_BLUETOOTH_HOOK_HOST_BATTERY_LEVEL_CHANGED, /* Call data: pa_upower_backend */
|
||||
PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED, /* Call data: pa_bluetooth_transport */
|
||||
PA_BLUETOOTH_HOOK_TRANSPORT_SOURCE_VOLUME_CHANGED, /* Call data: pa_bluetooth_transport */
|
||||
PA_BLUETOOTH_HOOK_TRANSPORT_SINK_VOLUME_CHANGED, /* Call data: pa_bluetooth_transport */
|
||||
|
|
@ -247,5 +245,4 @@ void pa_bluetooth_discovery_set_ofono_running(pa_bluetooth_discovery *y, bool is
|
|||
bool pa_bluetooth_discovery_get_enable_native_hsp_hs(pa_bluetooth_discovery *y);
|
||||
bool pa_bluetooth_discovery_get_enable_native_hfp_hf(pa_bluetooth_discovery *y);
|
||||
bool pa_bluetooth_discovery_get_enable_msbc(pa_bluetooth_discovery *y);
|
||||
pa_hashmap* pa_bluetooth_discovery_get_transports(pa_bluetooth_discovery *y);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -26,9 +26,6 @@ typedef struct pa_bt_codec {
|
|||
/* Human readable codec description */
|
||||
const char *description;
|
||||
|
||||
/* True if codec is bi-directional and supports backchannel */
|
||||
bool support_backchannel;
|
||||
|
||||
/* Initialize codec, returns codec info data and set sample_spec,
|
||||
* for_encoding is true when codec_info is used for encoding,
|
||||
* for_backchannel is true when codec_info is used for backchannel */
|
||||
|
|
@ -67,7 +64,4 @@ typedef struct pa_bt_codec {
|
|||
* returns size of filled ouput_buffer and set processed to size of
|
||||
* processed input_buffer */
|
||||
size_t (*decode_buffer)(void *codec_info, const uint8_t *input_buffer, size_t input_size, uint8_t *output_buffer, size_t output_size, size_t *processed);
|
||||
|
||||
/* Get volume factor which needs to be applied to output samples */
|
||||
double (*get_source_output_volume_factor_dB)(void *codec_info);
|
||||
} pa_bt_codec;
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@ libbluez5_util_headers = [
|
|||
|
||||
if get_option('bluez5-native-headset')
|
||||
libbluez5_util_sources += [ 'backend-native.c' ]
|
||||
libbluez5_util_sources += [ 'upower.c' ]
|
||||
libbluez5_util_headers += [ 'upower.h' ]
|
||||
endif
|
||||
|
||||
if get_option('bluez5-ofono-headset')
|
||||
|
|
@ -37,7 +35,7 @@ libbluez5_util = shared_library('bluez5-util',
|
|||
c_args : [pa_c_args, server_c_args],
|
||||
link_args : [nodelete_link_args],
|
||||
include_directories : [configinc, topinc],
|
||||
dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, bluez_dep, dbus_dep, sbc_dep, libintl_dep, bluez5_gst_dep, bluez5_gstapp_dep, libm_dep],
|
||||
dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, bluez_dep, dbus_dep, sbc_dep, libintl_dep, bluez5_gst_dep, bluez5_gstapp_dep],
|
||||
install : true,
|
||||
install_rpath : privlibdir,
|
||||
install_dir : modlibexecdir,
|
||||
|
|
|
|||
|
|
@ -116,8 +116,6 @@ struct userdata {
|
|||
pa_hook_slot *sink_volume_changed_slot;
|
||||
pa_hook_slot *source_volume_changed_slot;
|
||||
|
||||
pa_hook_slot *source_output_new_hook_slot;
|
||||
|
||||
pa_bluetooth_discovery *discovery;
|
||||
pa_bluetooth_device *device;
|
||||
pa_bluetooth_transport *transport;
|
||||
|
|
@ -394,8 +392,6 @@ static int bt_process_render(struct userdata *u) {
|
|||
|
||||
if (processed != u->write_memchunk.length) {
|
||||
pa_log_error("Encoding error");
|
||||
pa_memblock_unref(u->write_memchunk.memblock);
|
||||
pa_memchunk_reset(&u->write_memchunk);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -539,7 +535,6 @@ static int bt_process_push(struct userdata *u) {
|
|||
|
||||
if (processed != (size_t) received) {
|
||||
pa_log_error("Decoding error");
|
||||
pa_memblock_unref(memchunk.memblock);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -966,12 +961,6 @@ static void source_setup_volume_callback(pa_source *s) {
|
|||
if (pa_bluetooth_profile_is_a2dp(u->profile) && !u->transport->device->avrcp_absolute_volume)
|
||||
return;
|
||||
|
||||
/* Do not use hardware volume controls for backchannel of A2DP sink */
|
||||
if (u->profile == PA_BLUETOOTH_PROFILE_A2DP_SINK) {
|
||||
pa_assert_fp(u->transport->bt_codec && u->transport->bt_codec->support_backchannel);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Remote volume control has to be supported for the callback to make sense,
|
||||
* otherwise this source should continue performing attenuation in software
|
||||
* without HW_VOLUME_CTL.
|
||||
|
|
@ -1040,12 +1029,6 @@ static int add_source(struct userdata *u) {
|
|||
|
||||
if (!u->transport_acquired)
|
||||
switch (u->profile) {
|
||||
case PA_BLUETOOTH_PROFILE_A2DP_SINK:
|
||||
if (u->bt_codec && u->bt_codec->support_backchannel)
|
||||
data.suspend_cause = PA_SUSPEND_USER;
|
||||
else
|
||||
pa_assert_not_reached();
|
||||
break;
|
||||
case PA_BLUETOOTH_PROFILE_A2DP_SOURCE:
|
||||
case PA_BLUETOOTH_PROFILE_HFP_AG:
|
||||
case PA_BLUETOOTH_PROFILE_HSP_AG:
|
||||
|
|
@ -1060,6 +1043,7 @@ static int add_source(struct userdata *u) {
|
|||
else
|
||||
pa_assert_not_reached();
|
||||
break;
|
||||
case PA_BLUETOOTH_PROFILE_A2DP_SINK:
|
||||
case PA_BLUETOOTH_PROFILE_OFF:
|
||||
pa_assert_not_reached();
|
||||
break;
|
||||
|
|
@ -1214,12 +1198,6 @@ static void sink_setup_volume_callback(pa_sink *s) {
|
|||
if (pa_bluetooth_profile_is_a2dp(u->profile) && !u->transport->device->avrcp_absolute_volume)
|
||||
return;
|
||||
|
||||
/* Do not use hardware volume controls for backchannel of A2DP source */
|
||||
if (u->profile == PA_BLUETOOTH_PROFILE_A2DP_SOURCE) {
|
||||
pa_assert_fp(u->transport->bt_codec && u->transport->bt_codec->support_backchannel);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Remote volume control has to be supported for the callback to make sense,
|
||||
* otherwise this sink should continue performing attenuation in software
|
||||
* without HW_VOLUME_CTL.
|
||||
|
|
@ -1344,7 +1322,6 @@ static pa_direction_t get_profile_direction(pa_bluetooth_profile_t p) {
|
|||
|
||||
/* Run from main thread */
|
||||
static int transport_config(struct userdata *u) {
|
||||
bool reverse_backchannel;
|
||||
pa_assert(u);
|
||||
pa_assert(u->transport);
|
||||
pa_assert(!u->bt_codec);
|
||||
|
|
@ -1357,18 +1334,15 @@ static int transport_config(struct userdata *u) {
|
|||
/* reset encoder buffer contents */
|
||||
u->encoder_buffer_used = 0;
|
||||
|
||||
/* forward encoding direction */
|
||||
reverse_backchannel = u->bt_codec->support_backchannel && !(get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT);
|
||||
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT) || u->bt_codec->support_backchannel) {
|
||||
u->encoder_info = u->bt_codec->init(true, reverse_backchannel, u->transport->config, u->transport->config_size, &u->encoder_sample_spec, u->core);
|
||||
if (get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT) {
|
||||
u->encoder_info = u->bt_codec->init(true, false, u->transport->config, u->transport->config_size, &u->encoder_sample_spec, u->core);
|
||||
|
||||
if (!u->encoder_info)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_INPUT) || u->bt_codec->support_backchannel) {
|
||||
u->decoder_info = u->bt_codec->init(false, reverse_backchannel, u->transport->config, u->transport->config_size, &u->decoder_sample_spec, u->core);
|
||||
if (get_profile_direction(u->profile) & PA_DIRECTION_INPUT) {
|
||||
u->decoder_info = u->bt_codec->init(false, false, u->transport->config, u->transport->config_size, &u->decoder_sample_spec, u->core);
|
||||
|
||||
if (!u->decoder_info) {
|
||||
if (u->encoder_info) {
|
||||
|
|
@ -1426,11 +1400,11 @@ static int init_profile(struct userdata *u) {
|
|||
|
||||
pa_assert(u->transport);
|
||||
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT) || u->bt_codec->support_backchannel)
|
||||
if (get_profile_direction (u->profile) & PA_DIRECTION_OUTPUT)
|
||||
if (add_sink(u) < 0)
|
||||
r = -1;
|
||||
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_INPUT) || u->bt_codec->support_backchannel)
|
||||
if (get_profile_direction (u->profile) & PA_DIRECTION_INPUT)
|
||||
if (add_source(u) < 0)
|
||||
r = -1;
|
||||
|
||||
|
|
@ -1549,8 +1523,8 @@ static void thread_func(void *userdata) {
|
|||
writable = true;
|
||||
|
||||
/* If we have a source, we let the source determine the timing
|
||||
* for the sink unless peer has not sent any data yet */
|
||||
if (have_source && u->read_index > 0) {
|
||||
* for the sink */
|
||||
if (have_source) {
|
||||
|
||||
/* If the stream is writable, send some data if necessary */
|
||||
if (writable) {
|
||||
|
|
@ -1631,15 +1605,13 @@ static void thread_func(void *userdata) {
|
|||
skip_bytes -= bytes_to_render;
|
||||
}
|
||||
|
||||
if (u->write_index > 0 && (get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT || u->bt_codec->support_backchannel)) {
|
||||
if (u->bt_codec->reduce_encoder_bitrate) {
|
||||
size_t new_write_block_size = u->bt_codec->reduce_encoder_bitrate(u->encoder_info, u->write_link_mtu);
|
||||
if (new_write_block_size) {
|
||||
u->write_block_size = new_write_block_size;
|
||||
handle_sink_block_size_change(u);
|
||||
}
|
||||
pa_gettimeofday(&tv_last_output_rate_change);
|
||||
if (u->write_index > 0 && (get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT)) {
|
||||
size_t new_write_block_size = u->bt_codec->reduce_encoder_bitrate(u->encoder_info, u->write_link_mtu);
|
||||
if (new_write_block_size) {
|
||||
u->write_block_size = new_write_block_size;
|
||||
handle_sink_block_size_change(u);
|
||||
}
|
||||
pa_gettimeofday(&tv_last_output_rate_change);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1663,12 +1635,6 @@ static void thread_func(void *userdata) {
|
|||
goto fail;
|
||||
|
||||
if (result) {
|
||||
if (have_source && u->read_index <= 0) {
|
||||
/* We have a source but peer has not sent any data yet, log this */
|
||||
if (pa_log_ratelimit(PA_LOG_DEBUG))
|
||||
pa_log_debug("Still no data received from source, sent one more block to sink");
|
||||
}
|
||||
|
||||
writable = false;
|
||||
have_written = true;
|
||||
}
|
||||
|
|
@ -1688,7 +1654,7 @@ static void thread_func(void *userdata) {
|
|||
sleep_for = time_passed < next_write_at ? next_write_at - time_passed : 0;
|
||||
/* pa_log("Sleeping for %lu; time passed %lu, next write at %lu", (unsigned long) sleep_for, (unsigned long) time_passed, (unsigned long)next_write_at); */
|
||||
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT || u->bt_codec->support_backchannel) && u->write_memchunk.memblock == NULL) {
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT) && u->write_memchunk.memblock == NULL) {
|
||||
/* bt_write_buffer() is keeping up with input, try increasing bitrate */
|
||||
if (u->bt_codec->increase_encoder_bitrate
|
||||
&& pa_timeval_age(&tv_last_output_rate_change) >= u->device->output_rate_refresh_interval_ms * PA_USEC_PER_MSEC) {
|
||||
|
|
@ -1920,10 +1886,10 @@ static pa_available_t get_port_availability(struct userdata *u, pa_direction_t d
|
|||
for (i = 0; i < PA_BLUETOOTH_PROFILE_COUNT; i++) {
|
||||
pa_bluetooth_transport *transport;
|
||||
|
||||
if (!(transport = u->device->transports[i]))
|
||||
if (!(get_profile_direction(i) & direction))
|
||||
continue;
|
||||
|
||||
if (!(get_profile_direction(i) & direction || (transport->bt_codec && transport->bt_codec->support_backchannel)))
|
||||
if (!(transport = u->device->transports[i]))
|
||||
continue;
|
||||
|
||||
switch(transport->state) {
|
||||
|
|
@ -2763,30 +2729,6 @@ static int device_process_msg(pa_msgobject *obj, int code, void *data, int64_t o
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Run from main thread */
|
||||
static pa_hook_result_t a2dp_source_output_fixate_hook_callback(pa_core *c, pa_source_output_new_data *new_data, struct userdata *u) {
|
||||
double volume_factor_dB;
|
||||
pa_cvolume cv;
|
||||
|
||||
pa_assert(c);
|
||||
pa_assert(new_data);
|
||||
pa_assert(u);
|
||||
|
||||
/* When transport is released, there is no decoder and no codec */
|
||||
if (!u->bt_codec || !u->decoder_info)
|
||||
return PA_HOOK_OK;
|
||||
|
||||
if (!u->bt_codec->get_source_output_volume_factor_dB)
|
||||
return PA_HOOK_OK;
|
||||
|
||||
volume_factor_dB = u->bt_codec->get_source_output_volume_factor_dB(u->decoder_info);
|
||||
|
||||
pa_cvolume_set(&cv, u->decoder_sample_spec.channels, pa_sw_volume_from_dB(volume_factor_dB));
|
||||
pa_source_output_new_data_apply_volume_factor_source(new_data, &cv);
|
||||
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
int pa__init(pa_module* m) {
|
||||
struct userdata *u;
|
||||
const char *path;
|
||||
|
|
@ -2868,8 +2810,6 @@ int pa__init(pa_module* m) {
|
|||
u->transport_source_volume_changed_slot =
|
||||
pa_hook_connect(pa_bluetooth_discovery_hook(u->discovery, PA_BLUETOOTH_HOOK_TRANSPORT_SOURCE_VOLUME_CHANGED), PA_HOOK_NORMAL, (pa_hook_cb_t) transport_source_volume_changed_cb, u);
|
||||
|
||||
u->source_output_new_hook_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_NEW], PA_HOOK_EARLY, (pa_hook_cb_t) a2dp_source_output_fixate_hook_callback, u);
|
||||
|
||||
if (add_card(u) < 0)
|
||||
goto fail;
|
||||
|
||||
|
|
@ -2933,9 +2873,6 @@ void pa__done(pa_module *m) {
|
|||
|
||||
stop_thread(u);
|
||||
|
||||
if (u->source_output_new_hook_slot)
|
||||
pa_hook_slot_free(u->source_output_new_hook_slot);
|
||||
|
||||
if (u->device_connection_changed_slot)
|
||||
pa_hook_slot_free(u->device_connection_changed_slot);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,300 +0,0 @@
|
|||
/***
|
||||
This file is part of PulseAudio.
|
||||
|
||||
Copyright 2022 Dylan Van Assche <me@dylanvanassche.be>
|
||||
|
||||
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, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
#include <pulsecore/core-error.h>
|
||||
#include <pulsecore/core-util.h>
|
||||
#include <pulsecore/dbus-shared.h>
|
||||
#include <pulsecore/log.h>
|
||||
#include <pulse/timeval.h>
|
||||
#include <pulse/rtclock.h>
|
||||
|
||||
#include "upower.h"
|
||||
|
||||
static pa_dbus_pending* send_and_add_to_pending(pa_upower_backend *backend, DBusMessage *m,
|
||||
DBusPendingCallNotifyFunction func, void *call_data) {
|
||||
|
||||
pa_dbus_pending *p;
|
||||
DBusPendingCall *call;
|
||||
|
||||
pa_assert(backend);
|
||||
pa_assert(m);
|
||||
|
||||
pa_assert_se(dbus_connection_send_with_reply(pa_dbus_connection_get(backend->connection), m, &call, -1));
|
||||
|
||||
p = pa_dbus_pending_new(pa_dbus_connection_get(backend->connection), m, call, backend, call_data);
|
||||
PA_LLIST_PREPEND(pa_dbus_pending, backend->pending, p);
|
||||
dbus_pending_call_set_notify(call, func, p, NULL);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
static void parse_percentage(pa_upower_backend *b, DBusMessageIter *i) {
|
||||
double percentage;
|
||||
unsigned int battery_level;
|
||||
|
||||
pa_assert(i);
|
||||
pa_assert(dbus_message_iter_get_arg_type(i) == DBUS_TYPE_DOUBLE);
|
||||
|
||||
dbus_message_iter_get_basic(i, &percentage);
|
||||
battery_level = (unsigned int) round(percentage / 20.0);
|
||||
|
||||
if (battery_level != b->battery_level) {
|
||||
b->battery_level = battery_level;
|
||||
pa_log_debug("AG battery level updated (%d/5)", b->battery_level);
|
||||
pa_hook_fire(pa_bluetooth_discovery_hook(b->discovery, PA_BLUETOOTH_HOOK_HOST_BATTERY_LEVEL_CHANGED), b);
|
||||
}
|
||||
}
|
||||
|
||||
static void get_percentage_reply(DBusPendingCall *pending, void *userdata) {
|
||||
pa_dbus_pending *p;
|
||||
pa_upower_backend *b;
|
||||
DBusMessage *r;
|
||||
DBusMessageIter arg_i, variant_i;
|
||||
|
||||
pa_assert(pending);
|
||||
pa_assert_se(p = userdata);
|
||||
pa_assert_se(b = p->context_data);
|
||||
pa_assert_se(r = dbus_pending_call_steal_reply(pending));
|
||||
|
||||
if (dbus_message_is_error(r, DBUS_ERROR_UNKNOWN_METHOD)) {
|
||||
pa_log_warn("UPower D-Bus Display Device not available");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (dbus_message_get_type(r) == DBUS_MESSAGE_TYPE_ERROR) {
|
||||
pa_log_error("Get() failed: %s: %s", dbus_message_get_error_name(r), pa_dbus_get_error_message(r));
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (!dbus_message_iter_init(r, &arg_i) || !pa_streq(dbus_message_get_signature(r), "v")) {
|
||||
pa_log_error("Invalid reply signature for Get()");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
dbus_message_iter_recurse(&arg_i, &variant_i);
|
||||
parse_percentage(b, &variant_i);
|
||||
|
||||
finish:
|
||||
dbus_message_unref(r);
|
||||
|
||||
PA_LLIST_REMOVE(pa_dbus_pending, b->pending, p);
|
||||
pa_dbus_pending_free(p);
|
||||
}
|
||||
|
||||
static const char *check_variant_property(DBusMessageIter *i) {
|
||||
const char *key;
|
||||
|
||||
pa_assert(i);
|
||||
|
||||
if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING) {
|
||||
pa_log_error("Property name not a string.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dbus_message_iter_get_basic(i, &key);
|
||||
|
||||
if (!dbus_message_iter_next(i)) {
|
||||
pa_log_error("Property value missing");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_VARIANT) {
|
||||
pa_log_error("Property value not a variant.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *m, void *data) {
|
||||
DBusError err;
|
||||
DBusMessage *m2;
|
||||
static const char* upower_device_interface = UPOWER_SERVICE UPOWER_DEVICE_INTERFACE;
|
||||
static const char* percentage_property = "Percentage";
|
||||
pa_upower_backend *b = data;
|
||||
const char *path, *interface, *member;
|
||||
|
||||
pa_assert(bus);
|
||||
pa_assert(m);
|
||||
pa_assert(b);
|
||||
|
||||
dbus_error_init(&err);
|
||||
|
||||
path = dbus_message_get_path(m);
|
||||
interface = dbus_message_get_interface(m);
|
||||
member = dbus_message_get_member(m);
|
||||
|
||||
pa_log_debug("dbus: path=%s, interface=%s, member=%s", path, interface, member);
|
||||
|
||||
/* UPower D-Bus status change */
|
||||
if (dbus_message_is_signal(m, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) {
|
||||
const char *name, *old_owner, *new_owner;
|
||||
|
||||
if (!dbus_message_get_args(m, &err,
|
||||
DBUS_TYPE_STRING, &name,
|
||||
DBUS_TYPE_STRING, &old_owner,
|
||||
DBUS_TYPE_STRING, &new_owner,
|
||||
DBUS_TYPE_INVALID)) {
|
||||
pa_log_error("Failed to parse " DBUS_INTERFACE_DBUS ".NameOwnerChanged: %s", err.message);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (pa_streq(name, UPOWER_SERVICE)) {
|
||||
|
||||
/* UPower disappeared from D-Bus */
|
||||
if (old_owner && *old_owner) {
|
||||
pa_log_debug("UPower disappeared from D-Bus");
|
||||
b->battery_level = 0;
|
||||
pa_hook_fire(pa_bluetooth_discovery_hook(b->discovery, PA_BLUETOOTH_HOOK_HOST_BATTERY_LEVEL_CHANGED), b);
|
||||
}
|
||||
|
||||
/* UPower appeared on D-Bus */
|
||||
if (new_owner && *new_owner) {
|
||||
pa_log_debug("UPower appeared on D-Bus");
|
||||
|
||||
/* Update battery level */
|
||||
pa_assert_se(m2 = dbus_message_new_method_call(UPOWER_SERVICE, UPOWER_DISPLAY_DEVICE_OBJECT, DBUS_INTERFACE_PROPERTIES, "Get"));
|
||||
pa_assert_se(dbus_message_append_args(m2,
|
||||
DBUS_TYPE_STRING, &upower_device_interface,
|
||||
DBUS_TYPE_STRING, &percentage_property,
|
||||
DBUS_TYPE_INVALID));
|
||||
send_and_add_to_pending(b, m2, get_percentage_reply, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
/* UPower battery level property updates */
|
||||
} else if (dbus_message_is_signal(m, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged")) {
|
||||
DBusMessageIter arg_i, element_i;
|
||||
|
||||
if (!dbus_message_iter_init(m, &arg_i) || !pa_streq(dbus_message_get_signature(m), "sa{sv}as")) {
|
||||
pa_log_error("Invalid signature found in PropertiesChanged");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Skip interface name */
|
||||
pa_assert_se(dbus_message_iter_next(&arg_i));
|
||||
pa_assert(dbus_message_iter_get_arg_type(&arg_i) == DBUS_TYPE_ARRAY);
|
||||
|
||||
dbus_message_iter_recurse(&arg_i, &element_i);
|
||||
|
||||
/* Parse UPower property updates */
|
||||
while (dbus_message_iter_get_arg_type(&element_i) == DBUS_TYPE_DICT_ENTRY) {
|
||||
DBusMessageIter dict_i, variant_i;
|
||||
const char *key;
|
||||
|
||||
dbus_message_iter_recurse(&element_i, &dict_i);
|
||||
|
||||
/* Retrieve property name */
|
||||
key = check_variant_property(&dict_i);
|
||||
if (key == NULL) {
|
||||
pa_log_error("Received invalid property!");
|
||||
break;
|
||||
}
|
||||
|
||||
dbus_message_iter_recurse(&dict_i, &variant_i);
|
||||
|
||||
if(pa_streq(path, UPOWER_DISPLAY_DEVICE_OBJECT)) {
|
||||
pa_log_debug("UPower Device property updated: %s", key);
|
||||
|
||||
if(pa_streq(key, "Percentage"))
|
||||
parse_percentage(b, &variant_i);
|
||||
}
|
||||
|
||||
dbus_message_iter_next(&element_i);
|
||||
}
|
||||
}
|
||||
|
||||
fail:
|
||||
dbus_error_free(&err);
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
}
|
||||
|
||||
unsigned int pa_upower_get_battery_level(pa_upower_backend *backend) {
|
||||
return backend->battery_level;
|
||||
}
|
||||
|
||||
pa_upower_backend *pa_upower_backend_new(pa_core *c, pa_bluetooth_discovery *d) {
|
||||
pa_upower_backend *backend;
|
||||
DBusError err;
|
||||
DBusMessage *m;
|
||||
static const char* upower_device_interface = UPOWER_SERVICE UPOWER_DEVICE_INTERFACE;
|
||||
static const char* percentage_property = "Percentage";
|
||||
|
||||
pa_log_debug("Native backend enabled UPower battery status reporting");
|
||||
|
||||
backend = pa_xnew0(pa_upower_backend, 1);
|
||||
backend->core = c;
|
||||
backend->discovery = d;
|
||||
|
||||
/* Get DBus connection */
|
||||
dbus_error_init(&err);
|
||||
if (!(backend->connection = pa_dbus_bus_get(c, DBUS_BUS_SYSTEM, &err))) {
|
||||
pa_log("Failed to get D-Bus connection: %s", err.message);
|
||||
dbus_error_free(&err);
|
||||
pa_xfree(backend);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Add filter callback for DBus connection */
|
||||
if (!dbus_connection_add_filter(pa_dbus_connection_get(backend->connection), filter_cb, backend, NULL)) {
|
||||
pa_log_error("Failed to add filter function");
|
||||
pa_dbus_connection_unref(backend->connection);
|
||||
pa_xfree(backend);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Register for battery level changes from UPower */
|
||||
if (pa_dbus_add_matches(pa_dbus_connection_get(backend->connection), &err,
|
||||
"type='signal',sender='" DBUS_SERVICE_DBUS "',interface='" DBUS_INTERFACE_DBUS "',member='NameOwnerChanged',"
|
||||
"arg0='" UPOWER_SERVICE "'",
|
||||
"type='signal',sender='" UPOWER_SERVICE "',interface='" DBUS_INTERFACE_PROPERTIES "',member='PropertiesChanged'",
|
||||
NULL) < 0) {
|
||||
pa_log("Failed to add UPower D-Bus matches: %s", err.message);
|
||||
dbus_connection_remove_filter(pa_dbus_connection_get(backend->connection), filter_cb, backend);
|
||||
pa_dbus_connection_unref(backend->connection);
|
||||
pa_xfree(backend);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Initialize battery level by requesting it from UPower */
|
||||
pa_assert_se(m = dbus_message_new_method_call(UPOWER_SERVICE, UPOWER_DISPLAY_DEVICE_OBJECT, DBUS_INTERFACE_PROPERTIES, "Get"));
|
||||
pa_assert_se(dbus_message_append_args(m,
|
||||
DBUS_TYPE_STRING, &upower_device_interface,
|
||||
DBUS_TYPE_STRING, &percentage_property,
|
||||
DBUS_TYPE_INVALID));
|
||||
send_and_add_to_pending(backend, m, get_percentage_reply, NULL);
|
||||
|
||||
return backend;
|
||||
}
|
||||
|
||||
void pa_upower_backend_free(pa_upower_backend *backend) {
|
||||
pa_assert(backend);
|
||||
|
||||
pa_dbus_free_pending_list(&backend->pending);
|
||||
|
||||
pa_dbus_connection_unref(backend->connection);
|
||||
|
||||
pa_xfree(backend);
|
||||
}
|
||||
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
/***
|
||||
This file is part of PulseAudio.
|
||||
|
||||
Copyright 2022 Dylan Van Assche <me@dylanvanassche.be>
|
||||
|
||||
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, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include "bluez5-util.h"
|
||||
|
||||
#define UPOWER_SERVICE "org.freedesktop.UPower"
|
||||
#define UPOWER_DEVICE_INTERFACE ".Device"
|
||||
#define UPOWER_DISPLAY_DEVICE_OBJECT "/org/freedesktop/UPower/devices/DisplayDevice"
|
||||
|
||||
struct pa_upower_backend {
|
||||
pa_core *core;
|
||||
pa_dbus_connection *connection;
|
||||
pa_bluetooth_discovery *discovery;
|
||||
unsigned int battery_level;
|
||||
|
||||
PA_LLIST_HEAD(pa_dbus_pending, pending);
|
||||
};
|
||||
|
||||
pa_upower_backend *pa_upower_backend_new(pa_core *c, pa_bluetooth_discovery *d);
|
||||
void pa_upower_backend_free(pa_upower_backend *backend);
|
||||
unsigned int pa_upower_get_battery_level(pa_upower_backend *backend);
|
||||
|
|
@ -3,28 +3,19 @@
|
|||
# even conditional ones).
|
||||
|
||||
# This library requires a symbol from module-echo-cancel, hence we need
|
||||
# '-Wl,--unresolved-symbols=ignore-in-object-files', or
|
||||
# '-Wl,-undefined,dynamic_lookup' on macOS, otherwise it fails
|
||||
# '-Wl,--unresolved-symbols=ignore-in-object-files' otherwise it fails
|
||||
# at link time.
|
||||
|
||||
add_languages('cpp')
|
||||
|
||||
libwebrtc_util_sources = [
|
||||
'webrtc.cc'
|
||||
]
|
||||
|
||||
if host_machine.system() == 'darwin'
|
||||
ignore_unresolved_symbols_link_args = ['-Wl,-undefined,dynamic_lookup']
|
||||
else
|
||||
ignore_unresolved_symbols_link_args = ['-Wl,--unresolved-symbols=ignore-in-object-files']
|
||||
endif
|
||||
|
||||
libwebrtc_util = shared_library('webrtc-util',
|
||||
libwebrtc_util_sources,
|
||||
cpp_args : [pa_c_args, server_c_args],
|
||||
include_directories : [configinc, topinc],
|
||||
dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libatomic_ops_dep, webrtc_dep, libintl_dep],
|
||||
link_args : [nodelete_link_args, ignore_unresolved_symbols_link_args],
|
||||
link_args : [nodelete_link_args, '-Wl,--unresolved-symbols=ignore-in-object-files'],
|
||||
install : true,
|
||||
install_rpath : privlibdir,
|
||||
install_dir : modlibexecdir,
|
||||
|
|
|
|||
|
|
@ -2370,6 +2370,8 @@ int main(int argc, char* argv[]) {
|
|||
}
|
||||
|
||||
u.ec->done(u.ec);
|
||||
u.ec->msg->dead = true;
|
||||
pa_echo_canceller_msg_unref(u.ec->msg);
|
||||
|
||||
out:
|
||||
if (u.captured_file)
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
Copyright 2011 Collabora Ltd.
|
||||
2015 Aldebaran SoftBank Group
|
||||
2020 Arun Raghavan <arun@asymptotic.io>
|
||||
2020 Eero Nurkkala <eero.nurkkala@offcode.fi>
|
||||
|
||||
Contributor: Arun Raghavan <mail@arunraghavan.net>
|
||||
|
||||
PulseAudio is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published
|
||||
|
|
@ -34,47 +34,80 @@ PA_C_DECL_BEGIN
|
|||
#include "echo-cancel.h"
|
||||
PA_C_DECL_END
|
||||
|
||||
#define WEBRTC_APM_DEBUG_DUMP 0
|
||||
|
||||
#include <modules/audio_processing/include/audio_processing.h>
|
||||
#include <webrtc/modules/audio_processing/include/audio_processing.h>
|
||||
#include <webrtc/modules/interface/module_common_types.h>
|
||||
#include <webrtc/system_wrappers/include/trace.h>
|
||||
|
||||
#define BLOCK_SIZE_US 10000
|
||||
|
||||
#define DEFAULT_HIGH_PASS_FILTER true
|
||||
#define DEFAULT_NOISE_SUPPRESSION true
|
||||
#define DEFAULT_TRANSIENT_NOISE_SUPPRESSION true
|
||||
#define DEFAULT_ANALOG_GAIN_CONTROL true
|
||||
#define DEFAULT_DIGITAL_GAIN_CONTROL false
|
||||
#define DEFAULT_MOBILE false
|
||||
#define DEFAULT_ROUTING_MODE "speakerphone"
|
||||
#define DEFAULT_COMFORT_NOISE true
|
||||
#define DEFAULT_DRIFT_COMPENSATION false
|
||||
#define DEFAULT_VAD false
|
||||
#define DEFAULT_VAD true
|
||||
#define DEFAULT_EXTENDED_FILTER false
|
||||
#define DEFAULT_INTELLIGIBILITY_ENHANCER false
|
||||
#define DEFAULT_EXPERIMENTAL_AGC false
|
||||
#define DEFAULT_AGC_START_VOLUME 85
|
||||
#define DEFAULT_POSTAMP_ENABLE false
|
||||
#define DEFAULT_POSTAMP_GAIN_DB 0
|
||||
#define DEFAULT_PREAMP_ENABLE false
|
||||
#define DEFAULT_PREAMP_GAIN_DB 0
|
||||
#define DEFAULT_BEAMFORMING false
|
||||
#define DEFAULT_TRACE false
|
||||
|
||||
#define WEBRTC_AGC_MAX_VOLUME 255
|
||||
#define WEBRTC_POSTAMP_GAIN_MAX_DB 90
|
||||
#define WEBRTC_PREAMP_GAIN_MAX_DB 90
|
||||
|
||||
static const char* const valid_modargs[] = {
|
||||
"agc_start_volume",
|
||||
"high_pass_filter",
|
||||
"noise_suppression",
|
||||
"analog_gain_control",
|
||||
"digital_gain_control",
|
||||
"high_pass_filter",
|
||||
"mobile",
|
||||
"noise_suppression",
|
||||
"post_amplifier",
|
||||
"post_amplifier_gain",
|
||||
"pre_amplifier",
|
||||
"pre_amplifier_gain",
|
||||
"transient_noise_suppression",
|
||||
"routing_mode",
|
||||
"comfort_noise",
|
||||
"drift_compensation",
|
||||
"voice_detection",
|
||||
"extended_filter",
|
||||
"intelligibility_enhancer",
|
||||
"experimental_agc",
|
||||
"agc_start_volume",
|
||||
"beamforming",
|
||||
"mic_geometry", /* documented in parse_mic_geometry() */
|
||||
"target_direction", /* documented in parse_mic_geometry() */
|
||||
"trace",
|
||||
NULL
|
||||
};
|
||||
|
||||
static int routing_mode_from_string(const char *rmode) {
|
||||
if (pa_streq(rmode, "quiet-earpiece-or-headset"))
|
||||
return webrtc::EchoControlMobile::kQuietEarpieceOrHeadset;
|
||||
else if (pa_streq(rmode, "earpiece"))
|
||||
return webrtc::EchoControlMobile::kEarpiece;
|
||||
else if (pa_streq(rmode, "loud-earpiece"))
|
||||
return webrtc::EchoControlMobile::kLoudEarpiece;
|
||||
else if (pa_streq(rmode, "speakerphone"))
|
||||
return webrtc::EchoControlMobile::kSpeakerphone;
|
||||
else if (pa_streq(rmode, "loud-speakerphone"))
|
||||
return webrtc::EchoControlMobile::kLoudSpeakerphone;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
class PaWebrtcTraceCallback : public webrtc::TraceCallback {
|
||||
void Print(webrtc::TraceLevel level, const char *message, int length)
|
||||
{
|
||||
if (level & webrtc::kTraceError || level & webrtc::kTraceCritical)
|
||||
pa_log("%s", message);
|
||||
else if (level & webrtc::kTraceWarning)
|
||||
pa_log_warn("%s", message);
|
||||
else if (level & webrtc::kTraceInfo)
|
||||
pa_log_info("%s", message);
|
||||
else
|
||||
pa_log_debug("%s", message);
|
||||
}
|
||||
};
|
||||
|
||||
static int webrtc_volume_from_pa(pa_volume_t v)
|
||||
{
|
||||
return (v * WEBRTC_AGC_MAX_VOLUME) / PA_VOLUME_NORM;
|
||||
|
|
@ -87,7 +120,8 @@ static pa_volume_t webrtc_volume_to_pa(int v)
|
|||
|
||||
static void webrtc_ec_fixate_spec(pa_sample_spec *rec_ss, pa_channel_map *rec_map,
|
||||
pa_sample_spec *play_ss, pa_channel_map *play_map,
|
||||
pa_sample_spec *out_ss, pa_channel_map *out_map)
|
||||
pa_sample_spec *out_ss, pa_channel_map *out_map,
|
||||
bool beamforming)
|
||||
{
|
||||
rec_ss->format = PA_SAMPLE_FLOAT32NE;
|
||||
play_ss->format = PA_SAMPLE_FLOAT32NE;
|
||||
|
|
@ -105,22 +139,110 @@ static void webrtc_ec_fixate_spec(pa_sample_spec *rec_ss, pa_channel_map *rec_ma
|
|||
*out_ss = *rec_ss;
|
||||
*out_map = *rec_map;
|
||||
|
||||
if (beamforming) {
|
||||
/* The beamformer gives us a single channel */
|
||||
out_ss->channels = 1;
|
||||
pa_channel_map_init_mono(out_map);
|
||||
}
|
||||
|
||||
/* Playback stream rate needs to be the same as capture */
|
||||
play_ss->rate = rec_ss->rate;
|
||||
}
|
||||
|
||||
static bool parse_point(const char **point, float (&f)[3]) {
|
||||
int ret, length;
|
||||
|
||||
ret = sscanf(*point, "%g,%g,%g%n", &f[0], &f[1], &f[2], &length);
|
||||
if (ret != 3)
|
||||
return false;
|
||||
|
||||
/* Consume the bytes we've read so far */
|
||||
*point += length;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool parse_mic_geometry(const char **mic_geometry, std::vector<webrtc::Point>& geometry) {
|
||||
/* The microphone geometry is expressed as cartesian point form:
|
||||
* x1,y1,z1,x2,y2,z2,...
|
||||
*
|
||||
* Where x1,y1,z1 is the position of the first microphone with regards to
|
||||
* the array's "center", x2,y2,z2 the position of the second, and so on.
|
||||
*
|
||||
* 'x' is the horizontal coordinate, with positive values being to the
|
||||
* right from the mic array's perspective.
|
||||
*
|
||||
* 'y' is the depth coordinate, with positive values being in front of the
|
||||
* array.
|
||||
*
|
||||
* 'z' is the vertical coordinate, with positive values being above the
|
||||
* array.
|
||||
*
|
||||
* All distances are in meters.
|
||||
*/
|
||||
|
||||
/* The target direction is expected to be in spherical point form:
|
||||
* a,e,r
|
||||
*
|
||||
* Where 'a' is the azimuth of the target point relative to the center of
|
||||
* the array, 'e' its elevation, and 'r' the radius.
|
||||
*
|
||||
* 0 radians azimuth is to the right of the array, and positive angles
|
||||
* move in a counter-clockwise direction.
|
||||
*
|
||||
* 0 radians elevation is horizontal w.r.t. the array, and positive
|
||||
* angles go upwards.
|
||||
*
|
||||
* radius is distance from the array center in meters.
|
||||
*/
|
||||
|
||||
long unsigned int i;
|
||||
float f[3];
|
||||
|
||||
for (i = 0; i < geometry.size(); i++) {
|
||||
if (!parse_point(mic_geometry, f)) {
|
||||
pa_log("Failed to parse channel %lu in mic_geometry", i);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Except for the last point, we should have a trailing comma */
|
||||
if (i != geometry.size() - 1) {
|
||||
if (**mic_geometry != ',') {
|
||||
pa_log("Failed to parse channel %lu in mic_geometry", i);
|
||||
return false;
|
||||
}
|
||||
|
||||
(*mic_geometry)++;
|
||||
}
|
||||
|
||||
pa_log_debug("Got mic #%lu position: (%g, %g, %g)", i, f[0], f[1], f[2]);
|
||||
|
||||
geometry[i].c[0] = f[0];
|
||||
geometry[i].c[1] = f[1];
|
||||
geometry[i].c[2] = f[2];
|
||||
}
|
||||
|
||||
if (**mic_geometry != '\0') {
|
||||
pa_log("Failed to parse mic_geometry value: more parameters than expected");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
||||
pa_sample_spec *rec_ss, pa_channel_map *rec_map,
|
||||
pa_sample_spec *play_ss, pa_channel_map *play_map,
|
||||
pa_sample_spec *out_ss, pa_channel_map *out_map,
|
||||
uint32_t *nframes, const char *args) {
|
||||
webrtc::AudioProcessing *apm = webrtc::AudioProcessingBuilder().Create();
|
||||
webrtc::AudioProcessing *apm = NULL;
|
||||
webrtc::ProcessingConfig pconfig;
|
||||
webrtc::AudioProcessing::Config config;
|
||||
bool hpf, ns, tns, agc, dgc, mobile, pre_amp, vad, post_amp;
|
||||
int i;
|
||||
uint32_t agc_start_volume, pre_amp_gain, post_amp_gain;
|
||||
webrtc::Config config;
|
||||
bool hpf, ns, agc, dgc, mobile, cn, vad, ext_filter, intelligibility, experimental_agc, beamforming;
|
||||
int rm = -1, i;
|
||||
uint32_t agc_start_volume;
|
||||
pa_modargs *ma;
|
||||
bool trace = false;
|
||||
|
||||
if (!(ma = pa_modargs_new(args, valid_modargs))) {
|
||||
pa_log("Failed to parse submodule arguments.");
|
||||
|
|
@ -139,12 +261,6 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
tns = DEFAULT_TRANSIENT_NOISE_SUPPRESSION;
|
||||
if (pa_modargs_get_value_boolean(ma, "transient_noise_suppression", &tns) < 0) {
|
||||
pa_log("Failed to parse transient_noise_suppression value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
agc = DEFAULT_ANALOG_GAIN_CONTROL;
|
||||
if (pa_modargs_get_value_boolean(ma, "analog_gain_control", &agc) < 0) {
|
||||
pa_log("Failed to parse analog_gain_control value");
|
||||
|
|
@ -162,36 +278,6 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
pre_amp = DEFAULT_PREAMP_ENABLE;
|
||||
if (pa_modargs_get_value_boolean(ma, "pre_amplifier", &pre_amp) < 0) {
|
||||
pa_log("Failed to parse pre_amplifier value");
|
||||
goto fail;
|
||||
}
|
||||
pre_amp_gain = DEFAULT_PREAMP_GAIN_DB;
|
||||
if (pa_modargs_get_value_u32(ma, "pre_amplifier_gain", &pre_amp_gain) < 0) {
|
||||
pa_log("Failed to parse pre_amplifier_gain value");
|
||||
goto fail;
|
||||
}
|
||||
if (pre_amp_gain > WEBRTC_PREAMP_GAIN_MAX_DB) {
|
||||
pa_log("Preamp gain must not exceed %u", WEBRTC_PREAMP_GAIN_MAX_DB);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
post_amp = DEFAULT_POSTAMP_ENABLE;
|
||||
if (pa_modargs_get_value_boolean(ma, "post_amplifier", &post_amp) < 0) {
|
||||
pa_log("Failed to parse post_amplifier value");
|
||||
goto fail;
|
||||
}
|
||||
post_amp_gain = DEFAULT_POSTAMP_GAIN_DB;
|
||||
if (pa_modargs_get_value_u32(ma, "post_amplifier_gain", &post_amp_gain) < 0) {
|
||||
pa_log("Failed to parse post_amplifier_gain value");
|
||||
goto fail;
|
||||
}
|
||||
if (post_amp_gain > WEBRTC_POSTAMP_GAIN_MAX_DB) {
|
||||
pa_log("Postamp gain must not exceed %u", WEBRTC_POSTAMP_GAIN_MAX_DB);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
mobile = DEFAULT_MOBILE;
|
||||
if (pa_modargs_get_value_boolean(ma, "mobile", &mobile) < 0) {
|
||||
pa_log("Failed to parse mobile value");
|
||||
|
|
@ -199,6 +285,33 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
}
|
||||
|
||||
ec->params.drift_compensation = DEFAULT_DRIFT_COMPENSATION;
|
||||
if (pa_modargs_get_value_boolean(ma, "drift_compensation", &ec->params.drift_compensation) < 0) {
|
||||
pa_log("Failed to parse drift_compensation value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (mobile) {
|
||||
if (ec->params.drift_compensation) {
|
||||
pa_log("Can't use drift_compensation in mobile mode");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if ((rm = routing_mode_from_string(pa_modargs_get_value(ma, "routing_mode", DEFAULT_ROUTING_MODE))) < 0) {
|
||||
pa_log("Failed to parse routing_mode value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
cn = DEFAULT_COMFORT_NOISE;
|
||||
if (pa_modargs_get_value_boolean(ma, "comfort_noise", &cn) < 0) {
|
||||
pa_log("Failed to parse cn value");
|
||||
goto fail;
|
||||
}
|
||||
} else {
|
||||
if (pa_modargs_get_value(ma, "comfort_noise", NULL) || pa_modargs_get_value(ma, "routing_mode", NULL)) {
|
||||
pa_log("The routing_mode and comfort_noise options are only valid with mobile=true");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
vad = DEFAULT_VAD;
|
||||
if (pa_modargs_get_value_boolean(ma, "voice_detection", &vad) < 0) {
|
||||
|
|
@ -206,6 +319,24 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
ext_filter = DEFAULT_EXTENDED_FILTER;
|
||||
if (pa_modargs_get_value_boolean(ma, "extended_filter", &ext_filter) < 0) {
|
||||
pa_log("Failed to parse extended_filter value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
intelligibility = DEFAULT_INTELLIGIBILITY_ENHANCER;
|
||||
if (pa_modargs_get_value_boolean(ma, "intelligibility_enhancer", &intelligibility) < 0) {
|
||||
pa_log("Failed to parse intelligibility_enhancer value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
experimental_agc = DEFAULT_EXPERIMENTAL_AGC;
|
||||
if (pa_modargs_get_value_boolean(ma, "experimental_agc", &experimental_agc) < 0) {
|
||||
pa_log("Failed to parse experimental_agc value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
agc_start_volume = DEFAULT_AGC_START_VOLUME;
|
||||
if (pa_modargs_get_value_u32(ma, "agc_start_volume", &agc_start_volume) < 0) {
|
||||
pa_log("Failed to parse agc_start_volume value");
|
||||
|
|
@ -217,7 +348,82 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
}
|
||||
ec->params.webrtc.agc_start_volume = agc_start_volume;
|
||||
|
||||
webrtc_ec_fixate_spec(rec_ss, rec_map, play_ss, play_map, out_ss, out_map);
|
||||
beamforming = DEFAULT_BEAMFORMING;
|
||||
if (pa_modargs_get_value_boolean(ma, "beamforming", &beamforming) < 0) {
|
||||
pa_log("Failed to parse beamforming value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (ext_filter)
|
||||
config.Set<webrtc::ExtendedFilter>(new webrtc::ExtendedFilter(true));
|
||||
if (intelligibility)
|
||||
pa_log_warn("The intelligibility enhancer is not currently supported");
|
||||
if (experimental_agc)
|
||||
config.Set<webrtc::ExperimentalAgc>(new webrtc::ExperimentalAgc(true, ec->params.webrtc.agc_start_volume));
|
||||
|
||||
trace = DEFAULT_TRACE;
|
||||
if (pa_modargs_get_value_boolean(ma, "trace", &trace) < 0) {
|
||||
pa_log("Failed to parse trace value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (trace) {
|
||||
webrtc::Trace::CreateTrace();
|
||||
webrtc::Trace::set_level_filter(webrtc::kTraceAll);
|
||||
ec->params.webrtc.trace_callback = new PaWebrtcTraceCallback();
|
||||
webrtc::Trace::SetTraceCallback((PaWebrtcTraceCallback *) ec->params.webrtc.trace_callback);
|
||||
}
|
||||
|
||||
webrtc_ec_fixate_spec(rec_ss, rec_map, play_ss, play_map, out_ss, out_map, beamforming);
|
||||
|
||||
/* We do this after fixate because we need the capture channel count */
|
||||
if (beamforming) {
|
||||
std::vector<webrtc::Point> geometry(rec_ss->channels);
|
||||
webrtc::SphericalPointf direction(0.0f, 0.0f, 0.0f);
|
||||
const char *mic_geometry, *target_direction;
|
||||
|
||||
if (!(mic_geometry = pa_modargs_get_value(ma, "mic_geometry", NULL))) {
|
||||
pa_log("mic_geometry must be set if beamforming is enabled");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!parse_mic_geometry(&mic_geometry, geometry)) {
|
||||
pa_log("Failed to parse mic_geometry value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if ((target_direction = pa_modargs_get_value(ma, "target_direction", NULL))) {
|
||||
float f[3];
|
||||
|
||||
if (!parse_point(&target_direction, f)) {
|
||||
pa_log("Failed to parse target_direction value");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (*target_direction != '\0') {
|
||||
pa_log("Failed to parse target_direction value: more parameters than expected");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#define IS_ZERO(f) ((f) < 0.000001 && (f) > -0.000001)
|
||||
|
||||
if (!IS_ZERO(f[1]) || !IS_ZERO(f[2])) {
|
||||
pa_log("The beamformer currently only supports targeting along the azimuth");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
direction.s[0] = f[0];
|
||||
direction.s[1] = f[1];
|
||||
direction.s[2] = f[2];
|
||||
}
|
||||
|
||||
if (!target_direction)
|
||||
config.Set<webrtc::Beamforming>(new webrtc::Beamforming(true, geometry));
|
||||
else
|
||||
config.Set<webrtc::Beamforming>(new webrtc::Beamforming(true, geometry, direction));
|
||||
}
|
||||
|
||||
apm = webrtc::AudioProcessing::Create(config);
|
||||
|
||||
pconfig = {
|
||||
webrtc::StreamConfig(rec_ss->rate, rec_ss->channels, false), /* input stream */
|
||||
|
|
@ -230,62 +436,46 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
if (pre_amp) {
|
||||
config.pre_amplifier.enabled = true;
|
||||
config.pre_amplifier.fixed_gain_factor = (float)pre_amp_gain;
|
||||
} else
|
||||
config.pre_amplifier.enabled = false;
|
||||
|
||||
if (hpf)
|
||||
config.high_pass_filter.enabled = true;
|
||||
else
|
||||
config.high_pass_filter.enabled = false;
|
||||
apm->high_pass_filter()->Enable(true);
|
||||
|
||||
config.echo_canceller.enabled = true;
|
||||
config.pipeline.multi_channel_capture = rec_ss->channels > 1;
|
||||
config.pipeline.multi_channel_render = play_ss->channels > 1;
|
||||
if (!mobile) {
|
||||
apm->echo_cancellation()->enable_drift_compensation(ec->params.drift_compensation);
|
||||
apm->echo_cancellation()->Enable(true);
|
||||
} else {
|
||||
apm->echo_control_mobile()->set_routing_mode(static_cast<webrtc::EchoControlMobile::RoutingMode>(rm));
|
||||
apm->echo_control_mobile()->enable_comfort_noise(cn);
|
||||
apm->echo_control_mobile()->Enable(true);
|
||||
}
|
||||
|
||||
if (!mobile)
|
||||
config.echo_canceller.mobile_mode = false;
|
||||
else
|
||||
config.echo_canceller.mobile_mode = true;
|
||||
if (ns) {
|
||||
apm->noise_suppression()->set_level(webrtc::NoiseSuppression::kHigh);
|
||||
apm->noise_suppression()->Enable(true);
|
||||
}
|
||||
|
||||
if (ns)
|
||||
config.noise_suppression.enabled = true;
|
||||
else
|
||||
config.noise_suppression.enabled = false;
|
||||
if (agc || dgc) {
|
||||
if (mobile && rm <= webrtc::EchoControlMobile::kEarpiece) {
|
||||
/* Maybe this should be a knob, but we've got a lot of knobs already */
|
||||
apm->gain_control()->set_mode(webrtc::GainControl::kFixedDigital);
|
||||
ec->params.webrtc.agc = false;
|
||||
} else if (dgc) {
|
||||
apm->gain_control()->set_mode(webrtc::GainControl::kAdaptiveDigital);
|
||||
ec->params.webrtc.agc = false;
|
||||
} else {
|
||||
apm->gain_control()->set_mode(webrtc::GainControl::kAdaptiveAnalog);
|
||||
if (apm->gain_control()->set_analog_level_limits(0, WEBRTC_AGC_MAX_VOLUME) !=
|
||||
webrtc::AudioProcessing::kNoError) {
|
||||
pa_log("Failed to initialise AGC");
|
||||
goto fail;
|
||||
}
|
||||
ec->params.webrtc.agc = true;
|
||||
}
|
||||
|
||||
if (tns)
|
||||
config.transient_suppression.enabled = true;
|
||||
else
|
||||
config.transient_suppression.enabled = false;
|
||||
|
||||
if (dgc) {
|
||||
ec->params.webrtc.agc = false;
|
||||
config.gain_controller1.enabled = true;
|
||||
if (mobile)
|
||||
config.gain_controller1.mode = webrtc::AudioProcessing::Config::GainController1::kFixedDigital;
|
||||
else
|
||||
config.gain_controller1.mode = webrtc::AudioProcessing::Config::GainController1::kAdaptiveDigital;
|
||||
} else if (agc) {
|
||||
ec->params.webrtc.agc = true;
|
||||
config.gain_controller1.enabled = true;
|
||||
config.gain_controller1.mode = webrtc::AudioProcessing::Config::GainController1::kAdaptiveAnalog;
|
||||
config.gain_controller1.analog_level_minimum = 0;
|
||||
config.gain_controller1.analog_level_maximum = WEBRTC_AGC_MAX_VOLUME;
|
||||
apm->gain_control()->Enable(true);
|
||||
}
|
||||
|
||||
if (vad)
|
||||
config.voice_detection.enabled = true;
|
||||
else
|
||||
config.voice_detection.enabled = false;
|
||||
|
||||
if (post_amp) {
|
||||
config.gain_controller2.enabled = true;
|
||||
config.gain_controller2.fixed_digital.gain_db = (float)post_amp_gain;
|
||||
config.gain_controller2.adaptive_digital.enabled = false;
|
||||
} else
|
||||
config.gain_controller2.enabled = false;
|
||||
apm->voice_detection()->Enable(true);
|
||||
|
||||
ec->params.webrtc.apm = apm;
|
||||
ec->params.webrtc.rec_ss = *rec_ss;
|
||||
|
|
@ -295,8 +485,6 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
*nframes = ec->params.webrtc.blocksize;
|
||||
ec->params.webrtc.first = true;
|
||||
|
||||
apm->ApplyConfig(config);
|
||||
|
||||
for (i = 0; i < rec_ss->channels; i++)
|
||||
ec->params.webrtc.rec_buffer[i] = pa_xnew(float, *nframes);
|
||||
for (i = 0; i < play_ss->channels; i++)
|
||||
|
|
@ -308,7 +496,10 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
fail:
|
||||
if (ma)
|
||||
pa_modargs_free(ma);
|
||||
if (apm)
|
||||
if (ec->params.webrtc.trace_callback) {
|
||||
webrtc::Trace::ReturnTrace();
|
||||
delete ((PaWebrtcTraceCallback *) ec->params.webrtc.trace_callback);
|
||||
} if (apm)
|
||||
delete apm;
|
||||
|
||||
return false;
|
||||
|
|
@ -324,6 +515,12 @@ void pa_webrtc_ec_play(pa_echo_canceller *ec, const uint8_t *play) {
|
|||
pa_deinterleave(play, (void **) buf, ss->channels, pa_sample_size(ss), n);
|
||||
|
||||
pa_assert_se(apm->ProcessReverseStream(buf, config, config, buf) == webrtc::AudioProcessing::kNoError);
|
||||
|
||||
/* FIXME: If ProcessReverseStream() makes any changes to the audio, such as
|
||||
* applying intelligibility enhancement, those changes don't have any
|
||||
* effect. This function is called at the source side, but the processing
|
||||
* would have to be done in the sink to be able to feed the processed audio
|
||||
* to speakers. */
|
||||
}
|
||||
|
||||
void pa_webrtc_ec_record(pa_echo_canceller *ec, const uint8_t *rec, uint8_t *out) {
|
||||
|
|
@ -341,7 +538,7 @@ void pa_webrtc_ec_record(pa_echo_canceller *ec, const uint8_t *rec, uint8_t *out
|
|||
if (ec->params.webrtc.agc) {
|
||||
pa_volume_t v = pa_echo_canceller_get_capture_volume(ec);
|
||||
old_volume = webrtc_volume_from_pa(v);
|
||||
apm->set_stream_analog_level(old_volume);
|
||||
apm->gain_control()->set_stream_analog_level(old_volume);
|
||||
}
|
||||
|
||||
apm->set_stream_delay_ms(0);
|
||||
|
|
@ -356,7 +553,7 @@ void pa_webrtc_ec_record(pa_echo_canceller *ec, const uint8_t *rec, uint8_t *out
|
|||
ec->params.webrtc.first = false;
|
||||
new_volume = ec->params.webrtc.agc_start_volume;
|
||||
} else {
|
||||
new_volume = apm->recommended_stream_analog_level();
|
||||
new_volume = apm->gain_control()->stream_analog_level();
|
||||
}
|
||||
|
||||
if (old_volume != new_volume)
|
||||
|
|
@ -367,6 +564,9 @@ void pa_webrtc_ec_record(pa_echo_canceller *ec, const uint8_t *rec, uint8_t *out
|
|||
}
|
||||
|
||||
void pa_webrtc_ec_set_drift(pa_echo_canceller *ec, float drift) {
|
||||
webrtc::AudioProcessing *apm = (webrtc::AudioProcessing*)ec->params.webrtc.apm;
|
||||
|
||||
apm->echo_cancellation()->set_stream_drift_samples(drift * ec->params.webrtc.blocksize);
|
||||
}
|
||||
|
||||
void pa_webrtc_ec_run(pa_echo_canceller *ec, const uint8_t *rec, const uint8_t *play, uint8_t *out) {
|
||||
|
|
@ -377,6 +577,11 @@ void pa_webrtc_ec_run(pa_echo_canceller *ec, const uint8_t *rec, const uint8_t *
|
|||
void pa_webrtc_ec_done(pa_echo_canceller *ec) {
|
||||
int i;
|
||||
|
||||
if (ec->params.webrtc.trace_callback) {
|
||||
webrtc::Trace::ReturnTrace();
|
||||
delete ((PaWebrtcTraceCallback *) ec->params.webrtc.trace_callback);
|
||||
}
|
||||
|
||||
if (ec->params.webrtc.apm) {
|
||||
delete (webrtc::AudioProcessing*)ec->params.webrtc.apm;
|
||||
ec->params.webrtc.apm = NULL;
|
||||
|
|
|
|||
|
|
@ -8,12 +8,15 @@ all_modules = [
|
|||
[ 'module-always-sink', 'module-always-sink.c' ],
|
||||
[ 'module-always-source', 'module-always-source.c' ],
|
||||
[ 'module-augment-properties', 'module-augment-properties.c' ],
|
||||
# [ 'module-bonjour-publish', 'macosx/module-bonjour-publish.c' ],
|
||||
[ 'module-card-restore', 'module-card-restore.c' ],
|
||||
[ 'module-cli', 'module-cli.c', [], [], [], libcli ],
|
||||
[ 'module-cli-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_TCP_SOCKETS'], [], libprotocol_cli ],
|
||||
[ 'module-cli-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_UNIX_SOCKETS'], [], libprotocol_cli ],
|
||||
[ 'module-combine', 'module-combine.c' ],
|
||||
[ 'module-combine-sink', 'module-combine-sink.c', [], [], [libatomic_ops_dep] ],
|
||||
[ 'module-combine-sink', 'module-combine-sink.c' ],
|
||||
# [ 'module-coreaudio-detect', 'macosx/module-coreaudio-detect.c' ],
|
||||
# [ 'module-coreaudio-device', 'macosx/module-coreaudio-device.c' ],
|
||||
[ 'module-default-device-restore', 'module-default-device-restore.c', [], [], [], libprotocol_native ],
|
||||
[ 'module-detect', 'module-detect.c' ],
|
||||
[ 'module-device-manager', 'module-device-manager.c', [], [], [], libprotocol_native ],
|
||||
|
|
@ -70,21 +73,11 @@ endif
|
|||
|
||||
if host_machine.system() != 'windows'
|
||||
all_modules += [
|
||||
[ 'module-rtp-recv', 'rtp/module-rtp-recv.c', [], [], [libatomic_ops_dep], librtp ],
|
||||
[ 'module-rtp-recv', 'rtp/module-rtp-recv.c', [], [], [], librtp ],
|
||||
[ 'module-rtp-send', 'rtp/module-rtp-send.c' , [], [], [], librtp ],
|
||||
]
|
||||
endif
|
||||
|
||||
if host_machine.system() == 'darwin'
|
||||
bonjour_dep = dependency('appleframeworks', modules : ['CoreFoundation'])
|
||||
coreaudio_dep = dependency('appleframeworks', modules : ['CoreAudio'])
|
||||
all_modules += [
|
||||
[ 'module-bonjour-publish', 'macosx/module-bonjour-publish.c', [], [], [bonjour_dep] ],
|
||||
[ 'module-coreaudio-detect', 'macosx/module-coreaudio-detect.c', [], [], [coreaudio_dep] ],
|
||||
[ 'module-coreaudio-device', 'macosx/module-coreaudio-device.c', [], [], [coreaudio_dep] ],
|
||||
]
|
||||
endif
|
||||
|
||||
# Modules enabled by headers
|
||||
|
||||
if cc.has_header('linux/input.h')
|
||||
|
|
@ -137,6 +130,7 @@ endif
|
|||
|
||||
if dbus_dep.found()
|
||||
all_modules += [
|
||||
[ 'module-console-kit', 'module-console-kit.c', [], [], [dbus_dep] ],
|
||||
[ 'module-dbus-protocol',
|
||||
[ 'dbus/iface-card.c', 'dbus/iface-card.h',
|
||||
'dbus/iface-card-profile.c', 'dbus/iface-card-profile.h',
|
||||
|
|
@ -153,12 +147,6 @@ if dbus_dep.found()
|
|||
[], [], [dbus_dep] ],
|
||||
[ 'module-rygel-media-server', 'module-rygel-media-server.c', [], [], [dbus_dep], libprotocol_http ],
|
||||
]
|
||||
|
||||
if not get_option('consolekit').disabled()
|
||||
all_modules += [
|
||||
[ 'module-console-kit', 'module-console-kit.c', [], [], [dbus_dep] ],
|
||||
]
|
||||
endif
|
||||
endif
|
||||
|
||||
if fftw_dep.found()
|
||||
|
|
@ -250,7 +238,7 @@ module_echo_cancel_sources = [
|
|||
]
|
||||
module_echo_cancel_orc_sources = []
|
||||
module_echo_cancel_flags = []
|
||||
module_echo_cancel_deps = [libatomic_ops_dep]
|
||||
module_echo_cancel_deps = []
|
||||
module_echo_cancel_libs = []
|
||||
|
||||
if get_option('adrian-aec')
|
||||
|
|
@ -305,18 +293,6 @@ all_modules += [
|
|||
# FIXME: meson doesn't support multiple RPATH arguments currently
|
||||
rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir)
|
||||
|
||||
if host_machine.system() != 'windows' and host_machine.system() != 'darwin'
|
||||
no_undefined_args = ['-Wl,--no-undefined']
|
||||
else
|
||||
no_undefined_args = []
|
||||
endif
|
||||
|
||||
module_suffix = []
|
||||
if host_machine.system() == 'darwin'
|
||||
# meson defaults to dylib but ltdl expects so
|
||||
module_suffix = 'so'
|
||||
endif
|
||||
|
||||
foreach m : all_modules
|
||||
name = m[0]
|
||||
sources = m[1]
|
||||
|
|
@ -334,9 +310,8 @@ foreach m : all_modules
|
|||
install_rpath : rpath_dirs,
|
||||
install_dir : modlibexecdir,
|
||||
dependencies : [thread_dep, libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libintl_dep, platform_dep, platform_socket_dep] + extra_deps,
|
||||
link_args : [nodelete_link_args, no_undefined_args],
|
||||
link_args : [nodelete_link_args, '-Wl,--no-undefined' ],
|
||||
link_with : extra_libs,
|
||||
name_prefix : '',
|
||||
name_suffix : module_suffix,
|
||||
implicit_include_directories : false)
|
||||
endforeach
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <pulse/rtclock.h>
|
||||
#include <pulse/timeval.h>
|
||||
|
|
@ -179,7 +178,7 @@ struct userdata {
|
|||
#ifdef USE_SMOOTHER_2
|
||||
pa_smoother_2 *smoother;
|
||||
#else
|
||||
pa_smoother *smoother;
|
||||
pa_smoother *smoother;
|
||||
#endif
|
||||
uint64_t counter;
|
||||
|
||||
|
|
@ -240,7 +239,7 @@ static uint32_t rate_controller(
|
|||
|
||||
/* Choose the rate that is nearer to base_rate */
|
||||
new_rate = new_rate_2;
|
||||
if (fabs(new_rate_1 - base_rate) < fabs(new_rate_2 - base_rate))
|
||||
if (abs(new_rate_1 - base_rate) < abs(new_rate_2 - base_rate))
|
||||
new_rate = new_rate_1;
|
||||
|
||||
return (uint32_t)(new_rate + 0.5);
|
||||
|
|
@ -1711,6 +1710,9 @@ int pa__init(pa_module*m) {
|
|||
PA_IDXSET_FOREACH(o, u->outputs, idx)
|
||||
output_verify(o);
|
||||
|
||||
if (u->adjust_time > 0)
|
||||
u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time, time_callback, u);
|
||||
|
||||
pa_modargs_free(ma);
|
||||
|
||||
return 0;
|
||||
|
|
@ -1733,9 +1735,6 @@ void pa__done(pa_module*m) {
|
|||
if (!(u = m->userdata))
|
||||
return;
|
||||
|
||||
if (u->sink && PA_SINK_IS_LINKED(u->sink->state))
|
||||
pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE);
|
||||
|
||||
pa_strlist_free(u->unlinked_slaves);
|
||||
|
||||
if (u->sink_put_slot)
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, void*
|
|||
|
||||
/* No default sink, nothing to move away, just set the new default */
|
||||
if (!c->default_sink) {
|
||||
pa_core_set_policy_default_sink(c, sink->name);
|
||||
pa_core_set_configured_default_sink(c, sink->name);
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, void*
|
|||
}
|
||||
|
||||
/* Actually do the switch to the new sink */
|
||||
pa_core_set_policy_default_sink(c, sink->name);
|
||||
pa_core_set_configured_default_sink(c, sink->name);
|
||||
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
|
@ -160,7 +160,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
|
|||
|
||||
/* No default source, nothing to move away, just set the new default */
|
||||
if (!c->default_source) {
|
||||
pa_core_set_policy_default_source(c, source->name);
|
||||
pa_core_set_configured_default_source(c, source->name);
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
||||
|
|
@ -176,7 +176,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
|
|||
}
|
||||
|
||||
/* Actually do the switch to the new source */
|
||||
pa_core_set_policy_default_source(c, source->name);
|
||||
pa_core_set_configured_default_source(c, source->name);
|
||||
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -253,14 +253,9 @@ static void thread_func(void *userdata) {
|
|||
pa_log_error("Could not write data into the stream ... ret = %i", ret);
|
||||
u->thread_mainloop_api->quit(u->thread_mainloop_api, TUNNEL_THREAD_FAILED_MAINLOOP);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Run the rtpoll to process messages that other modules (module-combine-sink,
|
||||
* module-loopback and module-rtp-recv) may have placed in the queue. */
|
||||
pa_rtpoll_set_timer_relative(u->rtpoll, 0);
|
||||
if (pa_rtpoll_run(u->rtpoll) < 0)
|
||||
goto fail;
|
||||
}
|
||||
fail:
|
||||
/* send a message to the ctl thread to ask it to either terminate us, or
|
||||
|
|
@ -701,13 +696,13 @@ static int do_init(pa_module *m) {
|
|||
u->msg = pa_msgobject_new(tunnel_msg);
|
||||
u->msg->parent.process_msg = tunnel_process_msg;
|
||||
|
||||
/* The rtpoll created here is only run for the sake of module-combine-sink. It must
|
||||
* exist to avoid crashes when module-tunnel-sink-new is used together with
|
||||
* module-loopback or module-combine-sink. Both modules base their asyncmsgq on the
|
||||
* rtpoll provided by the sink. module-loopback and combine-sink only work because
|
||||
* they call pa_asyncmsq_process_one() themselves. module-combine-sink does this
|
||||
* however only for the audio_inq, so without running the rtpoll, messages placed
|
||||
* in control_inq would never be executed. */
|
||||
/* The rtpoll created here is never run. It is only necessary to avoid crashes
|
||||
* when module-tunnel-sink-new is used together with module-loopback or
|
||||
* module-combine-sink. Both modules base their asyncmsq on the rtpoll provided
|
||||
* by the sink. module-loopback and combine-sink only work because they call
|
||||
* pa_asyncmsq_process_one() themselves. module_rtp_recv also uses the rtpoll,
|
||||
* but never calls pa_asyncmsq_process_one(), so it will not work in combination
|
||||
* with module-tunnel-sink-new. */
|
||||
u->rtpoll = pa_rtpoll_new();
|
||||
|
||||
default_sink_name = pa_sprintf_malloc("tunnel-sink-new.%s", remote_server);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue