mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
Compare commits
255 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eee0e8f22f | ||
|
|
b50c28af2c | ||
|
|
210f4742e7 | ||
|
|
53532e63bf | ||
|
|
6834e0041c | ||
|
|
329c05b04f | ||
|
|
76320675d8 | ||
|
|
d5b58d29ea | ||
|
|
511926ab4b | ||
|
|
f6e1124942 | ||
|
|
c7db9d60a6 | ||
|
|
7493990c84 | ||
|
|
79455f69f7 | ||
|
|
a1fef186d0 | ||
|
|
4fa2e83ac3 | ||
|
|
f081327511 | ||
|
|
d3f1e217e7 | ||
|
|
5a3b45cda1 | ||
|
|
b4b3889f3c | ||
|
|
6358bcdf15 | ||
|
|
1699a78f5b | ||
|
|
17e471868e | ||
|
|
1fbc6b0e0e | ||
|
|
98c7c9eafb | ||
|
|
20c853d84b | ||
|
|
7daeec45ff | ||
|
|
a6d0341209 | ||
|
|
6403e29230 | ||
|
|
7dce3ffcb6 | ||
|
|
a2d6f37bce | ||
|
|
92993fa4c2 | ||
|
|
73e9692118 | ||
|
|
e2e1aabc19 | ||
|
|
ca39322d5a | ||
|
|
8d7da0d505 | ||
|
|
8d12c147af | ||
|
|
c03faae6be | ||
|
|
5cd579acc3 | ||
|
|
0296a5cefc | ||
|
|
7c5c877a52 | ||
|
|
31f4c27a5c | ||
|
|
ed789a4dc2 | ||
|
|
93459a47c0 | ||
|
|
906362119e | ||
|
|
60a85fb304 | ||
|
|
3e2bb8a1ec | ||
|
|
8ef0d597a1 | ||
|
|
90124125de | ||
|
|
2c379c1a3d | ||
|
|
3b3f763380 | ||
|
|
cba313d8f5 | ||
|
|
3da5e62741 | ||
|
|
7341e5d16d | ||
|
|
246b3ecf60 | ||
|
|
398103a15a | ||
|
|
a14239d2dc | ||
|
|
e3d30f8020 | ||
|
|
5c65aa5c11 | ||
|
|
2502f98666 | ||
|
|
aa36bebf23 | ||
|
|
608d92e9a6 | ||
|
|
565c129e90 | ||
|
|
b30d1a0a45 | ||
|
|
5de032e69b | ||
|
|
1678ede2be | ||
|
|
22cef109b9 | ||
|
|
eacc110590 | ||
|
|
c3af288ab9 | ||
|
|
3230a92540 | ||
|
|
ea836fab31 | ||
|
|
ea0045e725 | ||
|
|
0e862b4508 | ||
|
|
3639b05767 | ||
|
|
d6b74207da | ||
|
|
5839e00127 | ||
|
|
ee3c2499fa | ||
|
|
aa395c4094 | ||
|
|
2ad14f33d8 | ||
|
|
874a609959 | ||
|
|
3b09ca3a15 | ||
|
|
c1990dd026 | ||
|
|
6c77b0191a | ||
|
|
84f5b742e3 | ||
|
|
21d7a63e8c | ||
|
|
5d7cd8bd0b | ||
|
|
26ccd1167a | ||
|
|
ed3d4f0837 | ||
|
|
f5cacd94ab | ||
|
|
1f020889c9 | ||
|
|
d7dc04e8f5 | ||
|
|
81a6cc4967 | ||
|
|
06ccfbb996 | ||
|
|
13ea94a1b6 | ||
|
|
13ef02da1b | ||
|
|
6abe0c58d2 | ||
|
|
63d38a6864 | ||
|
|
3e68ebf4ec | ||
|
|
217c0e90ef | ||
|
|
9b37e8d9dc | ||
|
|
e2b63d157f | ||
|
|
421cf15486 | ||
|
|
eb302240cc | ||
|
|
cb9b14c84b | ||
|
|
707c3b6864 | ||
|
|
6ec914182d | ||
|
|
43a543e84f | ||
|
|
e046e25b08 | ||
|
|
2dd87e4dd0 | ||
|
|
51ce576c70 | ||
|
|
89be4c6cd6 | ||
|
|
a3445976af | ||
|
|
6b8a6156b4 | ||
|
|
e2e5161175 | ||
|
|
940346a51f | ||
|
|
e3bf4223d2 | ||
|
|
d7806e93b7 | ||
|
|
996c84d497 | ||
|
|
7d66068eea | ||
|
|
01cca9fce7 | ||
|
|
7596337cac | ||
|
|
70b0f4e01a | ||
|
|
9b4625851b | ||
|
|
105328fe14 | ||
|
|
39834c4052 | ||
|
|
e6ffceb528 | ||
|
|
97cf85940c | ||
|
|
262baea15d | ||
|
|
0368430316 | ||
|
|
6f85dc39b1 | ||
|
|
f778345cad | ||
|
|
b8e10711d6 | ||
|
|
58d784ace2 | ||
|
|
5736a00e44 | ||
|
|
fec36f3508 | ||
|
|
095ad5f4f8 | ||
|
|
7d063d6544 | ||
|
|
84c53066c6 | ||
|
|
22bbb5b3ba | ||
|
|
b16b107171 | ||
|
|
e96d278bfc | ||
|
|
c8af4920f7 | ||
|
|
39ff05e96d | ||
|
|
86e9c90128 | ||
|
|
25bfdb3ab8 | ||
|
|
3e038c6d88 | ||
|
|
7005eafee3 | ||
|
|
45509ff9bc | ||
|
|
b74269016c | ||
|
|
b382a00f8b | ||
|
|
3aaeb5113d | ||
|
|
39b6a4c123 | ||
|
|
15e76a69bf | ||
|
|
5ab2b9cb0e | ||
|
|
aed52c507f | ||
|
|
b8e2198d34 | ||
|
|
9e85059c64 | ||
|
|
300db77922 | ||
|
|
5830e03036 | ||
|
|
5cefef591e | ||
|
|
f44cb36374 | ||
|
|
1cfa737823 | ||
|
|
6ae3961001 | ||
|
|
3e5db72ab7 | ||
|
|
86c5fbab57 | ||
|
|
8152f39603 | ||
|
|
f8b9010582 | ||
|
|
6473e9ed0e | ||
|
|
94dd7b4b7b | ||
|
|
33129c88dc | ||
|
|
c3eae5d00c | ||
|
|
96bd4e57b5 | ||
|
|
89ce6321bd | ||
|
|
47a6918739 | ||
|
|
e4517da353 | ||
|
|
0cbbc408ae | ||
|
|
37c72c2072 | ||
|
|
3c63f8e6dc | ||
|
|
e650c2b33e | ||
|
|
3349e1c471 | ||
|
|
3f9455411c | ||
|
|
f2b748e851 | ||
|
|
76e01b25f5 | ||
|
|
697a1a309a | ||
|
|
cddb9f144a | ||
|
|
0498e7a3d0 | ||
|
|
48f40352a6 | ||
|
|
45df212d66 | ||
|
|
68a0603d76 | ||
|
|
8fe50bbc31 | ||
|
|
8188b49bed | ||
|
|
518ca03019 | ||
|
|
6ec084e2b3 | ||
|
|
391dac58a9 | ||
|
|
c6bd6656a2 | ||
|
|
de8b0c1124 | ||
|
|
c789bc5fe3 | ||
|
|
1b031ecee6 | ||
|
|
3621731050 | ||
|
|
cca0d69375 | ||
|
|
b05e34e092 | ||
|
|
ff6010b80f | ||
|
|
ffbcf36854 | ||
|
|
9f725cafb8 | ||
|
|
dc027d69e8 | ||
|
|
9337d4b5b5 | ||
|
|
15f242aee5 | ||
|
|
dbe455ce95 | ||
|
|
932b72f417 | ||
|
|
0f6234e320 | ||
|
|
9360dce76d | ||
|
|
e8509ea85c | ||
|
|
f71eafe4d9 | ||
|
|
63d0db832c | ||
|
|
0b4af61ee7 | ||
|
|
07a9fcefba | ||
|
|
baa3d24b76 | ||
|
|
fd81201f28 | ||
|
|
81a051089f | ||
|
|
d1675df0cd | ||
|
|
eb870fcba9 | ||
|
|
5dd411190d | ||
|
|
e49da7bcd6 | ||
|
|
4821a0569e | ||
|
|
084d70a1e2 | ||
|
|
bf1708213b | ||
|
|
0789a8fb76 | ||
|
|
a50330a4a5 | ||
|
|
e8e2f4320c | ||
|
|
5245117781 | ||
|
|
0f26022843 | ||
|
|
638574c0b7 | ||
|
|
aa5ced3887 | ||
|
|
4527890416 | ||
|
|
9fc7064b9a | ||
|
|
880ff393f1 | ||
|
|
c83b345169 | ||
|
|
9b06e8fef4 | ||
|
|
d8c89de24d | ||
|
|
97d9c28579 | ||
|
|
ec668ac44b | ||
|
|
fb63e58931 | ||
|
|
def8eb074e | ||
|
|
4bdf4c9966 | ||
|
|
ffd7a60767 | ||
|
|
2270081fca | ||
|
|
089287caf1 | ||
|
|
82bbf2260c | ||
|
|
dd4dc5e8bc | ||
|
|
ee8bfb49ad | ||
|
|
823e46fba0 | ||
|
|
9f32b7d7ee | ||
|
|
d7a633df89 | ||
|
|
a8a2a31408 | ||
|
|
05c06afa58 | ||
|
|
b55bcc3df3 |
165 changed files with 20240 additions and 5051 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -37,3 +37,4 @@ 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
|
||||
# wayland/ci-templates repository which is the recommended way to set up CI
|
||||
# freedesktop/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,6 +10,15 @@
|
|||
# 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
|
||||
|
|
@ -19,22 +28,21 @@ 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: '2021-11-03-00'
|
||||
FDO_DISTRIBUTION_TAG: '2023-08-13-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: 'wayland/ci-templates'
|
||||
- project: 'freedesktop/ci-templates'
|
||||
ref: 'master'
|
||||
file: '/templates/ubuntu.yml'
|
||||
|
||||
build-container:
|
||||
extends: .fdo.container-ifnot-exists@ubuntu
|
||||
extends: .fdo.container-build@ubuntu
|
||||
stage: container
|
||||
variables:
|
||||
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
||||
|
|
@ -48,6 +56,7 @@ build-container:
|
|||
check
|
||||
curl
|
||||
dbus-x11
|
||||
doxygen
|
||||
g++
|
||||
gcc
|
||||
gettext
|
||||
|
|
@ -88,17 +97,19 @@ build-container:
|
|||
wget
|
||||
|
||||
build-meson:
|
||||
extends: .fdo.distribution-image@ubuntu
|
||||
stage: build
|
||||
image: $UBUNTU_IMAGE
|
||||
script:
|
||||
# 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
|
||||
# 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
|
||||
- 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 --werror
|
||||
- meson build -Dwebrtc-aec=enabled
|
||||
- cd build
|
||||
- ninja
|
||||
- ulimit -c 0 # don't dump core files on tests that are supposed to assert
|
||||
|
|
|
|||
92
NEWS
92
NEWS
|
|
@ -1,3 +1,95 @@
|
|||
PulseAudio 17.0
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
A bug fix release.
|
||||
|
||||
* Fix parsing of percentage volumes with decimal points in pactl
|
||||
* Fix crash with the "pacmd play-file" command when reads from the disk aren't frame-aligned
|
||||
* Fix module-rtp-recv sometimes thinking it's receiving an Opus stream when it's not
|
||||
* Fix frequent crashing in module-combine-sink, regression in 16.0
|
||||
* Fix crashing on 32-bit architectures when using the GStreamer codecs for LDAC and AptX
|
||||
|
||||
Contributors
|
||||
|
||||
Georg Chini
|
||||
Igor V. Kovalenko
|
||||
Jaechul Lee
|
||||
Jan Palus
|
||||
Sean Greenslade
|
||||
|
||||
|
||||
PulseAudio 16.0
|
||||
|
||||
Changes at a glance:
|
||||
|
|
|
|||
|
|
@ -174,7 +174,9 @@ 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.</p></optdesc>
|
||||
<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>
|
||||
</option>
|
||||
|
||||
<option>
|
||||
|
|
@ -189,7 +191,9 @@ 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.</p></optdesc>
|
||||
<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>
|
||||
</option>
|
||||
|
||||
<option>
|
||||
|
|
|
|||
|
|
@ -143,8 +143,10 @@ 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.</p><p>Note that defaults may be overridden by various policy modules
|
||||
or by specific stream configurations.</p></optdesc>
|
||||
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>
|
||||
</option>
|
||||
|
||||
<option>
|
||||
|
|
|
|||
44
meson.build
44
meson.build
|
|
@ -1,10 +1,12 @@
|
|||
project('pulseaudio', 'c', 'cpp',
|
||||
version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version')).stdout().strip(),
|
||||
project('pulseaudio', 'c',
|
||||
version : run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version'), check : false).stdout().strip(),
|
||||
meson_version : '>= 0.50.0',
|
||||
default_options : [ 'c_std=gnu11', 'cpp_std=c++11' ]
|
||||
default_options : [ 'c_std=gnu11', 'cpp_std=c++17' ]
|
||||
)
|
||||
|
||||
meson.add_dist_script('scripts/save-tarball-version.sh', meson.project_version())
|
||||
if not meson.is_subproject()
|
||||
meson.add_dist_script('scripts/save-tarball-version.sh', meson.project_version())
|
||||
endif
|
||||
|
||||
pa_version_str = meson.project_version()
|
||||
# For tarballs, the first split will do nothing, but for builds in git, we
|
||||
|
|
@ -25,7 +27,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, 2, 24]
|
||||
libpulse_version_info = [24, 3, 24]
|
||||
|
||||
# A simplified, synchronous, ABI-stable interface for client
|
||||
# applications, for the version info x:y:z always will hold x=z
|
||||
|
|
@ -148,7 +150,11 @@ 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())
|
||||
cdata.set_quoted('PA_SOEXT', '.so')
|
||||
if host_machine.system() == 'windows'
|
||||
cdata.set_quoted('PA_SOEXT', '.dll')
|
||||
else
|
||||
cdata.set_quoted('PA_SOEXT', '.so')
|
||||
endif
|
||||
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'))
|
||||
|
|
@ -160,8 +166,7 @@ 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_PATHS_DIR', join_paths(alsadatadir, 'paths'))
|
||||
cdata.set_quoted('PA_ALSA_PROFILE_SETS_DIR', join_paths(alsadatadir, 'profile-sets'))
|
||||
cdata.set_quoted('PA_ALSA_DATA_DIR', alsadatadir)
|
||||
cdata.set_quoted('DESKTOPFILEDIR', join_paths(datadir, 'applications'))
|
||||
cdata.set_quoted('PULSE_LOCALEDIR', localedir)
|
||||
cdata.set_quoted('GETTEXT_PACKAGE', 'pulseaudio')
|
||||
|
|
@ -185,6 +190,7 @@ 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)
|
||||
|
|
@ -424,7 +430,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'
|
||||
if host_machine.system() != 'windows' and host_machine.system() != 'darwin'
|
||||
nodelete_link_args = ['-Wl,-z,nodelete']
|
||||
else
|
||||
nodelete_link_args = []
|
||||
|
|
@ -433,6 +439,7 @@ 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
|
||||
|
|
@ -498,22 +505,24 @@ endif
|
|||
|
||||
need_libatomic_ops = false
|
||||
|
||||
atomictest = '''void func() {
|
||||
atomictest = '''int main() {
|
||||
volatile int atomic = 2;
|
||||
__sync_bool_compare_and_swap (&atomic, 2, 3);
|
||||
return 0;
|
||||
}
|
||||
'''
|
||||
|
||||
if cc.compiles(atomictest)
|
||||
if cc.links(atomictest)
|
||||
cdata.set('HAVE_ATOMIC_BUILTINS', 1)
|
||||
|
||||
newatomictest = '''void func() {
|
||||
newatomictest = '''int main() {
|
||||
int c = 0;
|
||||
__atomic_store_n(&c, 4, __ATOMIC_SEQ_CST);
|
||||
return 0;
|
||||
}
|
||||
'''
|
||||
|
||||
if(cc.compiles(newatomictest))
|
||||
if(cc.links(newatomictest))
|
||||
cdata.set('HAVE_ATOMIC_BUILTINS_MEMORY_MODEL', 1)
|
||||
endif
|
||||
|
||||
|
|
@ -681,7 +690,7 @@ if get_option('daemon')
|
|||
cdata.set('HAVE_ALSA_UCM', 1)
|
||||
endif
|
||||
|
||||
gio_dep = dependency('gio-2.0', version : '>= 2.26.0')
|
||||
gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : false)
|
||||
if get_option('gsettings').enabled()
|
||||
assert(gio_dep.found(), 'GSettings support needs glib I/O library (GIO)')
|
||||
cdata.set('HAVE_GSETTINGS', 1)
|
||||
|
|
@ -717,7 +726,7 @@ if get_option('daemon')
|
|||
cdata.set('HAVE_SOXR', 1)
|
||||
endif
|
||||
|
||||
webrtc_dep = dependency('webrtc-audio-processing', version : '>= 0.2', required : get_option('webrtc-aec'))
|
||||
webrtc_dep = dependency('webrtc-audio-processing-1', version : '>= 1.0', required : get_option('webrtc-aec'))
|
||||
if webrtc_dep.found()
|
||||
cdata.set('HAVE_WEBRTC', 1)
|
||||
endif
|
||||
|
|
@ -732,6 +741,10 @@ 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)
|
||||
|
|
@ -1001,6 +1014,7 @@ 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,6 +99,9 @@ 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')
|
||||
|
|
@ -166,7 +169,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,3 +49,7 @@ 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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tonnel vir %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Ingeboude oudio"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "আভ্যন্তৰীণ অ'ডিঅ'"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "মোডেম"
|
||||
|
||||
|
|
|
|||
225
po/be.po
225
po/be.po
|
|
@ -9,20 +9,22 @@ msgstr ""
|
|||
"Project-Id-Version: PulseAudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\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"
|
||||
"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"
|
||||
"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: Lokalize 2.0\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"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"\n"
|
||||
|
|
@ -97,70 +99,71 @@ 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] Паспрабаваць павысіць прыярытэт\n"
|
||||
" (nice)\n"
|
||||
" (даступна толькі карыстальніку "
|
||||
"root,\n"
|
||||
" з уключаным SUID ці з павышаным\n"
|
||||
" --high-priority[=BOOL] Паспрабаваць павысіць прыярытэт "
|
||||
"(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"
|
||||
" для магчымых значэнняў).\n"
|
||||
" (Глядзіце --dump-resample-methods "
|
||||
"для магчымых значэнняў).\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"
|
||||
|
|
@ -170,7 +173,8 @@ msgstr ""
|
|||
" -F, --file=НАЗВА_ФАЙЛА Выканаць азначаны сцэнарый.\n"
|
||||
" -C Адкрыць камандны радок у\n"
|
||||
" бягучым тэрмінале пасля запуску.\n"
|
||||
" -n Не загружаць агаданы файл сцэнарыю.\n"
|
||||
" -n Не загружаць прадвызначаны файл "
|
||||
"сцэнарыя.\n"
|
||||
|
||||
#: src/daemon/cmdline.c:246
|
||||
msgid "--daemonize expects boolean argument"
|
||||
|
|
@ -508,7 +512,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
|
||||
|
|
@ -536,7 +540,7 @@ msgstr "setsid() пацярпела няўдачу: %s"
|
|||
|
||||
#: src/daemon/main.c:1119
|
||||
msgid "Failed to get machine ID"
|
||||
msgstr "Не атрымалася атрымаць ідэнтыфікатар машыны"
|
||||
msgstr "Не ўдалося атрымаць ідэнтыфікатар машыны"
|
||||
|
||||
#: src/daemon/main.c:1145
|
||||
msgid ""
|
||||
|
|
@ -561,9 +565,8 @@ 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
|
||||
|
|
@ -696,14 +699,12 @@ msgid "Analog Output"
|
|||
msgstr "Аналагавы выхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2808
|
||||
#, fuzzy
|
||||
msgid "Headphones 2"
|
||||
msgstr "Навушнікі"
|
||||
msgstr "Навушнікі 2"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2809
|
||||
#, fuzzy
|
||||
msgid "Headphones Mono Output"
|
||||
msgstr "Аналагавы монавыхад"
|
||||
msgstr "Манавыхад навушнікаў"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2810
|
||||
msgid "Line Out"
|
||||
|
|
@ -711,7 +712,7 @@ msgstr "Лінейны выхад"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2811
|
||||
msgid "Analog Mono Output"
|
||||
msgstr "Аналагавы монавыхад"
|
||||
msgstr "Аналагавы манавыхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2812
|
||||
msgid "Speakers"
|
||||
|
|
@ -738,38 +739,32 @@ msgid "Multichannel Output"
|
|||
msgstr "Шматканальны выхад"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2818
|
||||
#, fuzzy
|
||||
msgid "Game Output"
|
||||
msgstr "%s выхад"
|
||||
msgstr "Выхад гульні"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2819 src/modules/alsa/alsa-mixer.c:2820
|
||||
#, fuzzy
|
||||
msgid "Chat Output"
|
||||
msgstr "%s выхад"
|
||||
msgstr "Выхад размовы"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2821
|
||||
#, fuzzy
|
||||
msgid "Chat Input"
|
||||
msgstr "%s уваход"
|
||||
msgstr "Уваход размовы"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
#, fuzzy
|
||||
msgid "Virtual Surround 7.1"
|
||||
msgstr "Віртуальны абʼёмны прыёмнік"
|
||||
msgstr "Віртуальны абʼёмны 7.1"
|
||||
|
||||
#: 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"
|
||||
|
|
@ -796,9 +791,8 @@ 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"
|
||||
|
|
@ -874,36 +868,35 @@ 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 ""
|
||||
msgstr "Размова, мона + аб'ёмны 7.1"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1177,8 +1170,8 @@ msgstr ""
|
|||
"autoloaded=<зададзены, калі гэты модуль загружаны аўтаматычна> "
|
||||
"use_volume_sharing=<yes ці no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1243,14 +1236,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Тунэль для %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Тунэль да %s/%s"
|
||||
|
|
@ -1260,7 +1253,6 @@ 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> "
|
||||
|
|
@ -1271,19 +1263,21 @@ msgid ""
|
|||
"this module is being loaded automatically> "
|
||||
msgstr ""
|
||||
"sink_name=<назва прыёмніка> sink_properties=<уласцівасці прыёмніка> "
|
||||
"master=<назва прыёмніка для фільтрацыі> format=<фармат сэмлаў> rate=<частата "
|
||||
"сэмлаў> channels=<number of channels> channel_map=<колькасць каналаў> "
|
||||
"use_volume_sharing=<yes ці no> force_flat_volume=<yes ці no> hrir=<шлях да "
|
||||
"left_hrir.wav> "
|
||||
"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=<задаецца, "
|
||||
"калі модуль загружаецца аўтаматычна> "
|
||||
|
||||
#: 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 ""
|
||||
msgstr "Стандартны профіль RAOP"
|
||||
|
||||
#: src/modules/reserve-wrap.c:149
|
||||
msgid "PulseAudio Sound Server"
|
||||
|
|
@ -1597,11 +1591,11 @@ msgstr "Не атрымалася адкрыць файлы журнала «%s
|
|||
msgid "Invalid log target."
|
||||
msgstr "Некарэктны журнал."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Убудаванае аўдыя"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Мадэм"
|
||||
|
||||
|
|
@ -1832,7 +1826,7 @@ msgstr "Паток перасунуты ў прыладу %s (%u, %sпрыпын
|
|||
|
||||
#: src/utils/pacat.c:393
|
||||
msgid "not "
|
||||
msgstr "не"
|
||||
msgstr "не "
|
||||
|
||||
#: src/utils/pacat.c:400
|
||||
#, c-format
|
||||
|
|
@ -1903,7 +1897,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
|
||||
|
|
@ -2368,7 +2362,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
|
||||
|
|
@ -2404,7 +2398,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
|
||||
|
|
@ -2453,15 +2447,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
|
||||
|
|
@ -2479,7 +2473,7 @@ msgstr "Лінейны ўваход"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr ""
|
||||
msgstr "Мікрафон"
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
|
|
@ -2492,11 +2486,11 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr ""
|
||||
msgstr "SPDIF"
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr ""
|
||||
msgstr "HDMI"
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
|
|
@ -2504,7 +2498,7 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
msgstr ""
|
||||
msgstr "USB"
|
||||
|
||||
#: src/utils/pactl.c:346
|
||||
#, fuzzy
|
||||
|
|
@ -2513,18 +2507,17 @@ 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
|
||||
|
|
@ -2571,13 +2564,13 @@ msgid "\tPorts:\n"
|
|||
msgstr "\tПарты:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (прыёмнікаў: %u, крыніц: %u, прыярытэт: %u, даступны: %s)\n"
|
||||
msgstr "\t\t%s: %s (тып: %s, прыярытэт: %u%s%s, %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
|
||||
|
|
@ -2593,7 +2586,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
|
||||
|
|
@ -2645,7 +2638,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
|
||||
|
|
@ -2667,7 +2660,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
|
||||
|
|
@ -2687,7 +2680,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
|
||||
|
|
@ -2744,7 +2737,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
|
||||
|
|
@ -2788,7 +2781,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
|
||||
|
|
@ -2832,7 +2825,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
|
||||
|
|
@ -2892,9 +2885,9 @@ msgid "list-handlers message response array element %d is not a JSON object"
|
|||
msgstr ""
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Failed to unload module: Module %s not loaded"
|
||||
msgstr "Не атрымалася выгрузіць модуль: модуль не загружаны"
|
||||
msgstr "Не ўдалося выгрузіць модуль: модуль %s не загружаны"
|
||||
|
||||
#: src/utils/pactl.c:1818
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -3268,7 +3261,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"
|
||||
|
|
@ -3423,7 +3416,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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1448,11 +1448,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "অভ্যন্তরীণ অডিও"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "মোডেম"
|
||||
|
||||
|
|
|
|||
49
po/ca.po
49
po/ca.po
|
|
@ -28,14 +28,17 @@ msgstr ""
|
|||
"Project-Id-Version: pulseaudio\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\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"
|
||||
"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"
|
||||
"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
|
||||
|
|
@ -704,25 +707,23 @@ msgstr "Entrada analògica"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2800
|
||||
msgid "Dock Microphone"
|
||||
msgstr ""
|
||||
msgstr "Micròfon de l'acoblador"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2802
|
||||
msgid "Headset Microphone"
|
||||
msgstr ""
|
||||
msgstr "Micròfon de l'auricular"
|
||||
|
||||
#: 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"
|
||||
msgstr "Auriculars 2"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2809
|
||||
#, fuzzy
|
||||
msgid "Headphones Mono Output"
|
||||
msgstr "Sortida mono analògica"
|
||||
msgstr "Sortida mono analògica dels auriculars"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2810
|
||||
msgid "Line Out"
|
||||
|
|
@ -879,7 +880,7 @@ msgstr "Envoltant digital 4.0 (IEC958/AC3)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4593
|
||||
msgid "Digital Surround 5.1 (IEC958/AC3)"
|
||||
msgstr "Envolvent digital 5.1 (IEC958/AC3)"
|
||||
msgstr "Envoltant digital 5.1 (IEC958/AC3)"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4594
|
||||
msgid "Digital Surround 5.1 (IEC958/DTS)"
|
||||
|
|
@ -895,11 +896,11 @@ msgstr "So envoltant digital 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
msgstr "Xat"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
msgstr "Joc"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
|
|
@ -1175,8 +1176,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1239,14 +1240,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Túnel per %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1447,7 +1448,7 @@ msgstr "Auxiliar 28"
|
|||
|
||||
#: src/pulse/channelmap.c:150
|
||||
msgid "Auxiliary 29"
|
||||
msgstr "Auxiliar 31"
|
||||
msgstr "Auxiliar 29"
|
||||
|
||||
#: src/pulse/channelmap.c:151
|
||||
msgid "Auxiliary 30"
|
||||
|
|
@ -1590,11 +1591,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Àudio intern"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Mòdem"
|
||||
|
||||
|
|
@ -2774,10 +2775,12 @@ 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 ""
|
||||
msgstr "la resposta del missatge de list-handlers no és una matriu de JSON"
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
|
|||
69
po/cs.po
69
po/cs.po
|
|
@ -10,16 +10,17 @@ 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-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"
|
||||
"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"
|
||||
"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: Gtranslator 2.91.7\n"
|
||||
"X-Generator: Weblate 5.3.1\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -561,6 +562,8 @@ 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."
|
||||
|
|
@ -859,11 +862,11 @@ msgstr "Digitální Surround 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
msgstr "Chat"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
msgstr "Hra"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
|
|
@ -887,7 +890,7 @@ msgstr "Duplexní stereo"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr ""
|
||||
msgstr "Mono 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
|
||||
|
|
@ -1158,8 +1161,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Ekvalizér používající FFT na %s"
|
||||
|
|
@ -1225,14 +1228,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel pro %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunel do %s/%s"
|
||||
|
|
@ -1582,11 +1585,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neplatný cíl pro záznam."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Vnitřní zvukový systém"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -2435,15 +2438,15 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr ""
|
||||
msgstr "dostupnost neznámá"
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
msgstr ""
|
||||
msgstr "dostupné"
|
||||
|
||||
#: src/utils/pactl.c:322
|
||||
msgid "not available"
|
||||
msgstr ""
|
||||
msgstr "není dostupné"
|
||||
|
||||
#: src/utils/pactl.c:331 src/utils/pactl.c:355
|
||||
#, fuzzy
|
||||
|
|
@ -2452,7 +2455,7 @@ msgstr "neznámo"
|
|||
|
||||
#: src/utils/pactl.c:332
|
||||
msgid "Aux"
|
||||
msgstr ""
|
||||
msgstr "Aux"
|
||||
|
||||
#: src/utils/pactl.c:335
|
||||
#, fuzzy
|
||||
|
|
@ -2461,7 +2464,7 @@ msgstr "Linkový vstup"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr ""
|
||||
msgstr "Mic"
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
|
|
@ -2470,23 +2473,23 @@ msgstr "Náhlavní souprava"
|
|||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
msgstr ""
|
||||
msgstr "Sluchátka do uší"
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr ""
|
||||
msgstr "SPDIF"
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr ""
|
||||
msgstr "HDMI"
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
msgstr ""
|
||||
msgstr "TV"
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
msgstr ""
|
||||
msgstr "USB"
|
||||
|
||||
#: src/utils/pactl.c:346
|
||||
#, fuzzy
|
||||
|
|
@ -2495,7 +2498,7 @@ msgstr "Vstup přes Bluetooth"
|
|||
|
||||
#: src/utils/pactl.c:352
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
msgstr "Síť"
|
||||
|
||||
#: src/utils/pactl.c:353
|
||||
#, fuzzy
|
||||
|
|
@ -2858,20 +2861,22 @@ msgstr "Selhalo volání read(): %s"
|
|||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
msgid "list-handlers message failed: %s"
|
||||
msgstr ""
|
||||
msgstr "list-handlers zpráva selhala: %s"
|
||||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
#, fuzzy
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr ""
|
||||
msgstr "odpověď na zprávu list-handlers nelze správně analyzovat"
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
#, fuzzy
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr ""
|
||||
msgstr "odpověď zprávy list-handlers není pole JSON"
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
msgid "list-handlers message response array element %d is not a JSON object"
|
||||
msgstr ""
|
||||
msgstr "prvek pole odpovědí list-handlers %d není objekt JSON"
|
||||
|
||||
#: src/utils/pactl.c:1800
|
||||
#, c-format
|
||||
|
|
@ -3238,6 +3243,8 @@ 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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-05-21 23:01+0000\n"
|
||||
"Last-Translator: scootergrisen <scootergrisen@gmail.com>\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"
|
||||
"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 4.6.2\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -175,13 +175,12 @@ 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 venter logniveau argument (enten numerisk i området 0..4 eller "
|
||||
"en af debug, info, notice, warn, error)."
|
||||
"--log-level forventer 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"
|
||||
|
|
@ -1133,8 +1132,8 @@ msgstr ""
|
|||
"channel_map=<kanalkort> autoloaded=<indstil hvis modulet indlæses "
|
||||
"automatisk> use_volume_sharing=<yes eller no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT-baseret equalizer på %s"
|
||||
|
|
@ -1200,14 +1199,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel for %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel til %s/%s"
|
||||
|
|
@ -1556,11 +1555,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ugyldigt logmål."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Indbygget lyd"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-12-05 21:16+0000\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2022-12-06 09:20+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.9.1\n"
|
||||
"X-Generator: Weblate 4.14.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
|
|
@ -188,7 +188,6 @@ 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)."
|
||||
|
|
@ -218,14 +217,12 @@ 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 ""
|
||||
|
|
@ -1152,8 +1149,8 @@ msgstr ""
|
|||
"autoloaded=<setzen, wenn dieses Modul automatisch geladen wird> "
|
||||
"use_volume_sharing=<yes oder no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1220,14 +1217,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel für %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel zu %s/%s"
|
||||
|
|
@ -1576,11 +1573,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Ungültiges Protokollziel."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Internes Audio"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -3160,7 +3157,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 angeben."
|
||||
msgstr "Sie müssen einen Quellennamen/-index 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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Internes Audio"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunelo por %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Integrita sono"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-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"
|
||||
"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"
|
||||
"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 4.12.2\n"
|
||||
"X-Generator: Weblate 5.11\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 "Chatti ulostulo"
|
||||
msgstr "Pikakeskustelun lähtö"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2821
|
||||
msgid "Chat Input"
|
||||
msgstr "Chatti sisääntulo"
|
||||
msgstr "Pikakeskustelun syöttö"
|
||||
|
||||
#: 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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunneli %s@%s:ta varten"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Sisäinen äänentoisto"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modeemi"
|
||||
|
||||
#: src/pulse/error.c:38
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
msgstr "Hyvä on"
|
||||
|
||||
#: 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 ""
|
||||
msgstr "Varoitus: Vastaanotettu enemmän cork-poistopyyntöjä kuin cork-pyyntöjä."
|
||||
|
||||
#: 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,24 +2007,29 @@ msgstr ""
|
|||
|
||||
#: src/utils/pacat.c:793
|
||||
msgid "Play back encoded audio files on a PulseAudio sound server."
|
||||
msgstr ""
|
||||
msgstr "Toista koodattuja äänitiedostoja PulseAudio-äänipalvelimella."
|
||||
|
||||
#: 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
|
||||
|
|
@ -2074,7 +2079,7 @@ msgstr "Tuntematon tiedostomuoto %s."
|
|||
|
||||
#: src/utils/pacat.c:1000
|
||||
msgid "Failed to parse the argument for --monitor-stream"
|
||||
msgstr ""
|
||||
msgstr "Argumentin --monitor-stream jäsentäminen epäonnistui"
|
||||
|
||||
#: src/utils/pacat.c:1011
|
||||
msgid "Invalid sample specification"
|
||||
|
|
@ -2204,7 +2209,7 @@ msgstr "NIMI|#N AVAIN=ARVO"
|
|||
|
||||
#: src/utils/pacmd.c:59
|
||||
msgid "#N KEY=VALUE"
|
||||
msgstr ""
|
||||
msgstr "#N AVAIN=ARVO"
|
||||
|
||||
#: src/utils/pacmd.c:61
|
||||
msgid "#N"
|
||||
|
|
@ -2228,7 +2233,7 @@ msgstr "TIEDOSTONIMI NIELU|#N"
|
|||
|
||||
#: src/utils/pacmd.c:69 src/utils/pactl.c:2645
|
||||
msgid "#N SINK|SOURCE"
|
||||
msgstr ""
|
||||
msgstr "#N SINKKI|LÄHDE"
|
||||
|
||||
#: src/utils/pacmd.c:71 src/utils/pacmd.c:77 src/utils/pacmd.c:78
|
||||
msgid "1|0"
|
||||
|
|
@ -2244,23 +2249,23 @@ msgstr "NIMI|#N PORT"
|
|||
|
||||
#: src/utils/pacmd.c:74 src/utils/pactl.c:2658
|
||||
msgid "CARD-NAME|CARD-#N PORT OFFSET"
|
||||
msgstr ""
|
||||
msgstr "KORTIN NIMI|KORTIN-#N PORTTI OFFSET"
|
||||
|
||||
#: src/utils/pacmd.c:75
|
||||
msgid "TARGET"
|
||||
msgstr ""
|
||||
msgstr "KOHDE"
|
||||
|
||||
#: src/utils/pacmd.c:76
|
||||
msgid "NUMERIC-LEVEL"
|
||||
msgstr ""
|
||||
msgstr "NUMEROTASO"
|
||||
|
||||
#: src/utils/pacmd.c:79
|
||||
msgid "FRAMES"
|
||||
msgstr ""
|
||||
msgstr "ÄÄNIRUUDUT"
|
||||
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659
|
||||
msgid "RECIPIENT MESSAGE [MESSAGE_PARAMETERS]"
|
||||
msgstr ""
|
||||
msgstr "VASTAAJAN VIESTI [MESSAGE_PARAMETERS]"
|
||||
|
||||
#: src/utils/pacmd.c:82
|
||||
#, c-format
|
||||
|
|
@ -2370,6 +2375,12 @@ 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
|
||||
|
|
@ -2396,7 +2407,7 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr ""
|
||||
msgstr "saatavuus tuntematon"
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
|
|
@ -2412,7 +2423,7 @@ msgstr "Tuntematon"
|
|||
|
||||
#: src/utils/pactl.c:332
|
||||
msgid "Aux"
|
||||
msgstr ""
|
||||
msgstr "Aux"
|
||||
|
||||
#: src/utils/pactl.c:335
|
||||
msgid "Line"
|
||||
|
|
@ -2420,27 +2431,27 @@ msgstr "Linja"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr ""
|
||||
msgstr "Mikrofoni"
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
msgid "Handset"
|
||||
msgstr ""
|
||||
msgstr "Luuri"
|
||||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
msgstr ""
|
||||
msgstr "Kuuloke"
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr ""
|
||||
msgstr "SPDIF"
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr ""
|
||||
msgstr "HDMI"
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
msgstr ""
|
||||
msgstr "TV"
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
|
|
@ -2511,11 +2522,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 ""
|
||||
msgstr "\t\t%s: %s (tyyppi: %s, prioriteetti: %u%s%s, %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
msgstr ""
|
||||
msgstr ", saatavuusryhmä: "
|
||||
|
||||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
|
|
@ -2653,6 +2664,7 @@ 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
|
||||
|
|
@ -2664,6 +2676,8 @@ 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
|
||||
|
|
@ -2671,11 +2685,13 @@ 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 ""
|
||||
msgstr "\t\t\tOsa profiilista (profiileista): %s"
|
||||
|
||||
#: src/utils/pactl.c:1290 src/utils/pactl.c:1954 src/utils/pactl.c:2022
|
||||
#, c-format
|
||||
|
|
@ -2812,7 +2828,7 @@ msgstr "Viestin lähetys epäonnistui: %s"
|
|||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
msgid "list-handlers message failed: %s"
|
||||
msgstr ""
|
||||
msgstr "listakäsittelijöiden viesti epäonnistui: %s"
|
||||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
|
|
@ -2826,6 +2842,7 @@ 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
|
||||
|
|
@ -2841,7 +2858,11 @@ 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
|
||||
|
|
@ -2878,7 +2899,7 @@ msgstr "lähde"
|
|||
|
||||
#: src/utils/pactl.c:2167
|
||||
msgid "sink-input"
|
||||
msgstr ""
|
||||
msgstr "nielun sisääntulo"
|
||||
|
||||
#: src/utils/pactl.c:2170
|
||||
msgid "source-output"
|
||||
|
|
@ -2894,7 +2915,7 @@ msgstr "asiakas"
|
|||
|
||||
#: src/utils/pactl.c:2179
|
||||
msgid "sample-cache"
|
||||
msgstr ""
|
||||
msgstr "näyte-välimuisti"
|
||||
|
||||
#: src/utils/pactl.c:2182
|
||||
msgid "server"
|
||||
|
|
@ -2902,12 +2923,12 @@ msgstr "palvelin"
|
|||
|
||||
#: src/utils/pactl.c:2185
|
||||
msgid "card"
|
||||
msgstr ""
|
||||
msgstr "kortti"
|
||||
|
||||
#: src/utils/pactl.c:2206
|
||||
#, c-format
|
||||
msgid "Event '%s' on %s #%u\n"
|
||||
msgstr ""
|
||||
msgstr "Tapahtuma '%s' %s #%u\n"
|
||||
|
||||
#: src/utils/pactl.c:2514
|
||||
msgid "Got SIGINT, exiting."
|
||||
|
|
@ -2919,7 +2940,7 @@ msgstr "Virheellinen äänenvoimakkuuden määritys"
|
|||
|
||||
#: src/utils/pactl.c:2581
|
||||
msgid "Volume outside permissible range.\n"
|
||||
msgstr ""
|
||||
msgstr "Äänenvoimakkuus sallitun alueen ulkopuolella.\n"
|
||||
|
||||
#: src/utils/pactl.c:2594
|
||||
msgid "Invalid number of volume specifications.\n"
|
||||
|
|
@ -2951,7 +2972,7 @@ msgstr "TIEDOSTONIMI [NIMI]"
|
|||
|
||||
#: src/utils/pactl.c:2641
|
||||
msgid "NAME [SINK]"
|
||||
msgstr ""
|
||||
msgstr "NIMI [NIELU]"
|
||||
|
||||
#: src/utils/pactl.c:2653
|
||||
msgid "NAME|#N VOLUME [VOLUME ...]"
|
||||
|
|
@ -2980,6 +3001,9 @@ 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
|
||||
|
|
@ -3023,7 +3047,7 @@ msgstr "Virheellinen muotoarvo ”%s”"
|
|||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
msgid "Specify nothing, or one of: %s"
|
||||
msgstr ""
|
||||
msgstr "Määritä tyhjäksi tai jokin seuraavista: %s"
|
||||
|
||||
#: src/utils/pactl.c:2788
|
||||
msgid "Please specify a sample file to load"
|
||||
|
|
@ -3179,6 +3203,8 @@ 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 ""
|
||||
|
|
@ -3194,7 +3220,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 ""
|
||||
msgstr "Latenssipoikkeamaa ei voitu jäsentää"
|
||||
|
||||
#: 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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2020-12-13 17:35+0000\n"
|
||||
"Last-Translator: Julien Humbert <julroy67@gmail.com>\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"
|
||||
"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.3.2\n"
|
||||
"X-Generator: Weblate 4.15.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
#, 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,6 +169,8 @@ 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 "
|
||||
|
|
@ -501,29 +503,23 @@ msgstr ""
|
|||
"plus précise en cours."
|
||||
|
||||
#: src/daemon/main.c:878
|
||||
#, fuzzy
|
||||
msgid "Running in system mode, but --disallow-exit not set."
|
||||
msgstr ""
|
||||
"Le démon s’exécute en mode système, mais --disallow-exit n’est pas défini !"
|
||||
msgstr "Exécution 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 ""
|
||||
"Le démon s’exécute en mode système, mais --disallow-module-loading n’est pas "
|
||||
"défini !"
|
||||
"Exécution 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 "Le démon s’exécute en mode système, désactivation forcée du mode SHM !"
|
||||
msgstr "Exécution 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 ""
|
||||
"Le démon s’exécute en mode système, désactivation forcée de la fermeture "
|
||||
"après délai d’inactivité !"
|
||||
"Exécution 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."
|
||||
|
|
@ -558,7 +554,6 @@ 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"
|
||||
|
|
@ -566,13 +561,11 @@ msgid ""
|
|||
"Documentation/User/WhatIsWrongWithSystemWide/ for an explanation why system "
|
||||
"mode is usually a bad idea."
|
||||
msgstr ""
|
||||
"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"
|
||||
"Ok, vous êtes en train d'exécuter PA en mode système. Assurez-vous que vous "
|
||||
"voulez vraiment faire cela.\n"
|
||||
"Veuillez lire http://www.freedesktop.org/wiki/Software/PulseAudio/"
|
||||
"Documentation/User/WhatIsWrongWithSystemWide/ pour comprendre pourquoi le "
|
||||
"mode système est généralement une mauvaise idée."
|
||||
"Documentation/User/WhatIsWrongWithSystemWide/ pour savoir pourquoi le mode "
|
||||
"système est généralement une mauvaise idée."
|
||||
|
||||
#: src/daemon/main.c:1161
|
||||
msgid "pa_pid_file_create() failed."
|
||||
|
|
@ -583,9 +576,8 @@ msgid "pa_core_new() failed."
|
|||
msgstr "Échec de pa_core_new()."
|
||||
|
||||
#: src/daemon/main.c:1268
|
||||
#, fuzzy
|
||||
msgid "command line arguments"
|
||||
msgstr "Trop de paramètres."
|
||||
msgstr "paramètres de la ligne de commande"
|
||||
|
||||
#: src/daemon/main.c:1275
|
||||
#, c-format
|
||||
|
|
@ -1184,8 +1176,8 @@ msgstr ""
|
|||
"autoloaded=<définir si ce module est chargé automatiquement> "
|
||||
"use_volume_sharing=<oui ou non> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr ""
|
||||
|
|
@ -1249,14 +1241,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel pour %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel vers %s/%s"
|
||||
|
|
@ -1606,11 +1598,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Cible du journal non valide."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio interne"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1858,11 +1850,10 @@ 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 bouchonnage que de "
|
||||
"requêtes de débouchonnage !"
|
||||
"Avertissement : il a été reçu davantage de requêtes de débouchonnage que de "
|
||||
"requêtes de 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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-09-01 12:04+0000\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2023-04-14 18:20+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.8\n"
|
||||
"X-Generator: Weblate 4.15.2\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; xa sexa un de debug, info, notice, warn, ou error)."
|
||||
"dentro do rango de 0-4 ou ben un destos valores: error, warn, notice, info, "
|
||||
"debug)."
|
||||
|
||||
#: 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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Túnel para %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Túnel a %s/%s"
|
||||
|
|
@ -1236,7 +1236,6 @@ 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> "
|
||||
|
|
@ -1247,9 +1246,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> "
|
||||
|
||||
|
|
@ -1576,11 +1575,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Obxectivo do rexistro incorrecto."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio interno"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Módem"
|
||||
|
||||
|
|
@ -1895,7 +1894,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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1974,8 +1973,10 @@ 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 dispositivo 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"
|
||||
" -n, --client-name=NAME Como chamar a este cliente no "
|
||||
"servidor\n"
|
||||
" --stream-name=NAME Como chamar a este fluxo no "
|
||||
|
|
@ -1984,12 +1985,10 @@ 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, unha de s16le, "
|
||||
"s16be, u8, float32le,\n"
|
||||
" float32be, ulaw, alaw, s32le, s32be, "
|
||||
"s24le, s24be,\n"
|
||||
" s24-32le, s24-32be (o predeterminado "
|
||||
"é s16ne)\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"
|
||||
" --channels=CHANNELS O número de canles, 1 para mono, 2 "
|
||||
"para estéreo\n"
|
||||
" (predeterminado é 2)\n"
|
||||
|
|
@ -2392,7 +2391,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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s\n"
|
||||
|
||||
|
|
@ -2473,22 +2472,18 @@ 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"
|
||||
|
||||
|
|
@ -2868,15 +2863,18 @@ 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 ""
|
||||
msgstr "A respostaa da mensaxe de list-handlers non é unha matriz de JSON"
|
||||
|
||||
#: 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
|
||||
|
|
@ -3040,7 +3038,7 @@ msgstr ""
|
|||
"poden usarse para especificar o destino, orixe e monitor predeterminados.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3056,6 +3054,9 @@ 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"
|
||||
|
|
@ -3072,9 +3073,9 @@ msgstr ""
|
|||
"Vinculado con libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Nome do fluxo «%s» incorrecto"
|
||||
msgstr "Formato do valor «%s» incorrecto"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3159,18 +3160,16 @@ 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 de destino"
|
||||
msgstr "Ten que especificar un nome/índice 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 para a fonte"
|
||||
msgstr "Ten que especificar un nome/índice de fonte"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
@ -3235,15 +3234,18 @@ 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 un nome/índice de destino e un nome de porto"
|
||||
msgstr ""
|
||||
"Debe especificar cando menos unha ruta de acceso ao obxecto e un nome de "
|
||||
"mensaxe"
|
||||
|
||||
#: 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 ""
|
||||
|
|
@ -3308,7 +3310,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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options] -- PROGRAM [ARGUMENTS ...]\n"
|
||||
"\n"
|
||||
|
|
@ -3320,7 +3322,9 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [opcións] ... \n"
|
||||
"%s [opcións] --PROGRAMA [ARGUMENTOS ...]... \n"
|
||||
"\n"
|
||||
"Suspende temporalmente PulseAudio mentres se executa o PROGRAMA.\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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "આંતરિક ઓડિયો"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1382,11 +1382,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "צליל פנימי"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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,6 +1160,8 @@ 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
|
||||
|
|
@ -1227,12 +1229,16 @@ 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
|
||||
|
|
@ -1583,11 +1589,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neispravno odredište zapisa."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609 src/pulsecore/sink.c:3600
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Ugrađeni zvuk"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614 src/pulsecore/sink.c:3605
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1904,7 +1910,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() neuspjelo: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1985,7 +1991,9 @@ msgstr ""
|
|||
" -s, --server=POSLUŽITELJ Naziv poslužitelja za "
|
||||
"povezivanje\n"
|
||||
" -d, --device=UREĐAJ Naziv slivnika/izvora za "
|
||||
"povezivanje\n"
|
||||
"povezivanje. Posebni nazivi @DEFAULT_SINK@, @DEFAULT_SOURCE@ i "
|
||||
"@DEFAULT_MONITOR@ mogu se koristiti za određivanje zadanog slivnika, izvora "
|
||||
"i nadgledanja.\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) "
|
||||
|
|
@ -1994,7 +2002,7 @@ msgstr ""
|
|||
" --format=FORMAT UZORKA Vrsta uzorka, pogledajte\n"
|
||||
" https://www.freedesktop.org/wiki/"
|
||||
"Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n"
|
||||
" za moguće vrijenosti (zadano je "
|
||||
" za moguće vrijednosti (zadano je "
|
||||
"s16ne)\n"
|
||||
" --channels=KANALI Broj kanala, 1 za mono, 2 za stereo\n"
|
||||
" (zadano 2)\n"
|
||||
|
|
@ -2002,14 +2010,14 @@ msgstr ""
|
|||
"umjesto zadanog\n"
|
||||
" --fix-format Uzima uzorak formata iz slivnika/"
|
||||
"izvora s kojim\n"
|
||||
" je tok povezan.\n"
|
||||
" je strujanje povezano.\n"
|
||||
" --fix-rate Uzima frekvenciju iz slivnika/izvora "
|
||||
"s kojim\n"
|
||||
" je tok povezan.\n"
|
||||
" je strujanje povezano.\n"
|
||||
" --fix-channels Uzima broj kanala i mapiranje "
|
||||
"kanala\n"
|
||||
" iz slivnika/izvora s kojim je tok "
|
||||
"povezan.\n"
|
||||
" iz slivnika/izvora s kojim je "
|
||||
"strujanje povezano.\n"
|
||||
" --no-remix Ne smanjuj ili pojačavaj kanale.\n"
|
||||
" --no-remap Mapiraj kanale prema sadržaju "
|
||||
"umjesto nazivu.\n"
|
||||
|
|
@ -2021,8 +2029,8 @@ msgstr ""
|
|||
"msek.\n"
|
||||
" --process-time-msec=MSEK Zahtijevaj određeno vrijeme procesa "
|
||||
"po zahtjevu u msek.\n"
|
||||
" --property=VLASNIŠTVO=VRIJEDNOST Postavi određeno vlasništvo "
|
||||
"za određenu vrijednost.\n"
|
||||
" --property=SVOJSTVO=VRIJEDNOST Postavi određeno svojstvo 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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-11-21 13:16+0000\n"
|
||||
"Last-Translator: . Ovari <ovari123@zoho.com>\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"
|
||||
"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.9\n"
|
||||
"X-Generator: Weblate 4.13\n"
|
||||
"X-Poedit-Language: Hungarian\n"
|
||||
"X-Poedit-Country: HUNGARY\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"\n"
|
||||
|
|
@ -187,7 +187,6 @@ 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)."
|
||||
|
|
@ -216,14 +215,13 @@ 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 ""
|
||||
|
|
@ -960,7 +958,7 @@ msgstr ""
|
|||
"más érték volt."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1183 src/modules/alsa/alsa-util.c:1277
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"snd_pcm_avail() returned a value that is exceptionally large: %lu byte (%lu "
|
||||
"ms).\n"
|
||||
|
|
@ -983,7 +981,7 @@ msgstr[1] ""
|
|||
"ezt a problémát az ALSA fejlesztői felé."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1249
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"snd_pcm_delay() returned a value that is exceptionally large: %li byte (%s"
|
||||
"%lu ms).\n"
|
||||
|
|
@ -1019,7 +1017,7 @@ msgstr ""
|
|||
"ezt a problémát az ALSA fejlesztői felé."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1339
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu byte "
|
||||
"(%lu ms).\n"
|
||||
|
|
@ -1163,8 +1161,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT alapú hangszínszabályzó ezen: %s"
|
||||
|
|
@ -1178,7 +1176,6 @@ 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 "
|
||||
|
|
@ -1197,7 +1194,8 @@ 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> "
|
||||
"elválasztott listája> autoloaded=<állítsa be ha a modul automatikusan "
|
||||
"töltődik be> "
|
||||
|
||||
#: src/modules/module-null-sink.c:46
|
||||
msgid "Clocked NULL sink"
|
||||
|
|
@ -1230,14 +1228,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Alagút ennek: %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Alagút ehhez: %s/%s"
|
||||
|
|
@ -1247,7 +1245,6 @@ 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> "
|
||||
|
|
@ -1262,6 +1259,7 @@ 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"
|
||||
|
|
@ -1546,7 +1544,7 @@ msgid "invalid"
|
|||
msgstr "érvénytelen"
|
||||
|
||||
#: src/pulsecore/core-util.c:1790
|
||||
#, fuzzy, c-format
|
||||
#, 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, "
|
||||
|
|
@ -1554,7 +1552,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ó "
|
||||
"PulseAudio-hoz root felhasználóként próbál csatlakozni a natív protokollon. "
|
||||
"PulseAudióhoz root felhasználóként próbál csatlakozni a natív protokollon. "
|
||||
"Ne tegye.)"
|
||||
|
||||
#: src/pulsecore/core-util.h:97
|
||||
|
|
@ -1586,11 +1584,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Érvénytelen naplózási cél."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Belső hangforrás"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1910,7 +1908,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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1977,7 +1975,7 @@ msgid ""
|
|||
" --monitor-stream=INDEX Record from the sink input with "
|
||||
"index INDEX.\n"
|
||||
msgstr ""
|
||||
"%s [KAPCSOLÓ]\n"
|
||||
"%s [KAPCSOLÓK]\n"
|
||||
"\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
|
|
@ -2020,8 +2018,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 "
|
||||
|
|
@ -2376,14 +2374,14 @@ msgid "Failed to get statistics: %s"
|
|||
msgstr "Nem sikerült a statisztika lekérdezése: %s"
|
||||
|
||||
#: src/utils/pactl.c:199
|
||||
#, fuzzy, c-format
|
||||
#, 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
|
||||
#, fuzzy, c-format
|
||||
#, 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"
|
||||
|
|
@ -2562,9 +2560,9 @@ msgid "\tPorts:\n"
|
|||
msgstr "\tPortok:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr "\t\t%s: %s (nyelők: %u, források: %u, prioritás: %u, elérhető: %s)\n"
|
||||
msgstr "\t\t%s: %s (típus: %s, prioritás: %u%s%s, %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
|
|
@ -2717,6 +2715,8 @@ 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
|
||||
#, fuzzy, c-format
|
||||
#, 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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3061,6 +3061,8 @@ 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"
|
||||
|
||||
|
|
@ -3159,18 +3161,16 @@ 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"
|
||||
msgstr "Meg kell adnia egy nyelő nevét/indexé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"
|
||||
msgstr "Meg kell adnia egy forrás nevét/indexét"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
@ -3235,15 +3235,17 @@ 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 a nyelő nevét vagy indexét, és egy port nevét"
|
||||
msgstr "Meg kell adnia legalább egy objektumútvonalat és egy üzenetnevet"
|
||||
|
||||
#: 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 ""
|
||||
|
|
@ -3309,7 +3311,7 @@ msgstr ""
|
|||
"FIGYELMEZTETÉS: A gyermek folyamat a következő szignállal fejeződött be: %u\n"
|
||||
|
||||
#: src/utils/pasuspender.c:228
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options] -- PROGRAM [ARGUMENTS ...]\n"
|
||||
"\n"
|
||||
|
|
@ -3321,7 +3323,9 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [KAPCSOLÓK] ... \n"
|
||||
"%s [KAPCSOLÓK] -- PROGRAM [ARGUMENTUMOK …]\n"
|
||||
"\n"
|
||||
"A PulseAudio ideiglenes felfüggesztése, amíg a PROGRAM fut.\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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-09-24 12:05+0000\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2024-11-03 10:40+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 4.8\n"
|
||||
"X-Generator: Weblate 5.8.2\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, fuzzy, c-format
|
||||
#, 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 awalan\n"
|
||||
" --fail[=BOOL] Keluar ketika awalan gagal\n"
|
||||
" -D, --daemonize[=BOOL] Jadikan daemon setelah awal mula\n"
|
||||
" --fail[=BOOL] Keluar ketika awal mula gagal\n"
|
||||
" --high-priority[=BOOL] Coba tata ke aras nice tinggi\n"
|
||||
" (hanya tersedia sebagai root, ketika "
|
||||
"SUID\n"
|
||||
|
|
@ -126,21 +126,19 @@ msgstr ""
|
|||
" atau RLIMIT_RTPRIO yang dinaikkan)\n"
|
||||
" --disallow-module-loading[=BOOL] Larang muat/bongkar modul yang "
|
||||
"diminta\n"
|
||||
" pengguna setelah awalan\n"
|
||||
" pengguna setelah awal mula\n"
|
||||
" --disallow-exit[=BOOL] Larang permintaan keluar dari "
|
||||
"pengguna\n"
|
||||
" --exit-idle-time=SECS Matikan daemon ketika menganggur "
|
||||
"dan\n"
|
||||
" waktu ini habis\n"
|
||||
" --module-idle-time=SECS Bongkar modul yang dimuat sendiri "
|
||||
"ketika\n"
|
||||
" menganggur dan waktu ini habis\n"
|
||||
" waktu ini berlalu\n"
|
||||
" --scache-idle-time=SECS Bongkar contoh yang dimuat sendiri "
|
||||
"ketika\n"
|
||||
" menganggur dan waktu ini habis\n"
|
||||
" menganggur dan waktu ini berlalu\n"
|
||||
" --log-level[=LEVEL] Naikkan atau tata aras kerincian\n"
|
||||
" -v Naikkan aras kerincian\n"
|
||||
" --log-target={auto,syslog,stderr} Nyatakan target log\n"
|
||||
" -v --verbose Naikkan aras kerincian\n"
|
||||
" --log-target={auto,syslog,stderr,file:PATH,newfile:PATH} \n"
|
||||
" Nyatakan target log\n"
|
||||
" --log-meta[=BOOL] Sertakan lokasi kode dalam pesan "
|
||||
"log\n"
|
||||
" --log-time[=BOOL] Sertakan penanda waktu dalam pesan "
|
||||
|
|
@ -159,8 +157,10 @@ 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 AWALAN:\n"
|
||||
"SKRIP AWAL MULA:\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,13 +179,12 @@ 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 debug, info, notice, warn, error)."
|
||||
"satu dari error, warn, notice, info, debug)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -591,12 +590,10 @@ 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"
|
||||
|
||||
|
|
@ -698,7 +695,6 @@ msgid "Headphones Mono Output"
|
|||
msgstr "Keluaran Mono Headphone"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2810
|
||||
#, fuzzy
|
||||
msgid "Line Out"
|
||||
msgstr "Jalur Keluar"
|
||||
|
||||
|
|
@ -731,9 +727,8 @@ msgid "Multichannel Output"
|
|||
msgstr "Keluaran Multikanal"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2818
|
||||
#, fuzzy
|
||||
msgid "Game Output"
|
||||
msgstr "Keluaran %s"
|
||||
msgstr "Keluaran Game"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2819 src/modules/alsa/alsa-mixer.c:2820
|
||||
msgid "Chat Output"
|
||||
|
|
@ -941,7 +936,7 @@ msgstr ""
|
|||
"mengembalikan 0 atau nilai lain < min_avail."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1183 src/modules/alsa/alsa-util.c:1277
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"snd_pcm_avail() returned a value that is exceptionally large: %lu byte (%lu "
|
||||
"ms).\n"
|
||||
|
|
@ -953,13 +948,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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"snd_pcm_delay() returned a value that is exceptionally large: %li byte (%s"
|
||||
"%lu ms).\n"
|
||||
|
|
@ -990,7 +985,7 @@ msgstr ""
|
|||
"kasus ini ke para pengembang ALSA."
|
||||
|
||||
#: src/modules/alsa/alsa-util.c:1339
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu byte "
|
||||
"(%lu ms).\n"
|
||||
|
|
@ -1002,8 +997,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."
|
||||
|
||||
|
|
@ -1043,37 +1038,30 @@ msgid "Phone"
|
|||
msgstr "Telepon"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2042
|
||||
#, fuzzy
|
||||
msgid "High Fidelity Playback (A2DP Sink)"
|
||||
msgstr "High Fidelity Playback (Muara A2DP)"
|
||||
msgstr "Putar High Fidelity (Muara A2DP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2054
|
||||
#, fuzzy
|
||||
msgid "High Fidelity Capture (A2DP Source)"
|
||||
msgstr "High Fidelity Capture (Sumber A2DP)"
|
||||
msgstr "Penangkapan High Fidelity (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 "Headset Audio Gateway (HSP/HFP)"
|
||||
msgstr "Gateway Audio Headset (HSP/HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2092
|
||||
#, fuzzy
|
||||
msgid "Handsfree Head Unit (HFP)"
|
||||
msgstr "Headset Head Unit (HSP/HFP)"
|
||||
msgstr "Unit Kepala Handsfree (HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2105
|
||||
#, fuzzy
|
||||
msgid "Handsfree Audio Gateway (HFP)"
|
||||
msgstr "Headset Audio Gateway (HSP/HFP)"
|
||||
msgstr "Gateway Audio Handsfree (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 "
|
||||
|
|
@ -1086,16 +1074,16 @@ msgid ""
|
|||
"loaded automatically> use_volume_sharing=<yes or no> use_master_format=<yes "
|
||||
"or no> "
|
||||
msgstr ""
|
||||
"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> "
|
||||
"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> "
|
||||
|
||||
#. add on profile
|
||||
#: src/modules/macosx/module-coreaudio-device.c:825
|
||||
|
|
@ -1116,7 +1104,6 @@ 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"
|
||||
|
||||
|
|
@ -1132,8 +1119,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Ekualiser berbasis FFT pada %s"
|
||||
|
|
@ -1147,7 +1134,6 @@ 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 "
|
||||
|
|
@ -1159,15 +1145,15 @@ msgid ""
|
|||
"separated list of output LADSPA port names> autoloaded=<set if this module "
|
||||
"is being loaded automatically> "
|
||||
msgstr ""
|
||||
"sink_name=<nama bagi muara> sink_properties=<properti bagi muara> "
|
||||
"sink_input_properties=<properti bagi masukan muara> master=<nama muara untuk "
|
||||
"sink_name=<nama muara> sink_properties=<properti muara> "
|
||||
"sink_input_properties=<properti 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 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> "
|
||||
"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> "
|
||||
|
||||
#: src/modules/module-null-sink.c:46
|
||||
msgid "Clocked NULL sink"
|
||||
|
|
@ -1200,14 +1186,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel untuk %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel ke %s/%s"
|
||||
|
|
@ -1557,11 +1543,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Target log tidak valid."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio Bawaan"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1876,7 +1862,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() gagal: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1955,7 +1941,9 @@ msgstr ""
|
|||
" -v, --verbose Aktifkan operasi cerewet\n"
|
||||
"\n"
|
||||
" -s, --server=SERVER Nama server untuk dihubungi\n"
|
||||
" -d, --device=DEVICE Nama muara/sumber 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"
|
||||
" -n, --client-name=NAME Bagaimana memanggil klien ini di "
|
||||
"server\n"
|
||||
" --stream-name=NAME Bagaimana memanggil stream ini di "
|
||||
|
|
@ -1964,35 +1952,34 @@ msgstr ""
|
|||
"jangkauan 0...65536\n"
|
||||
" --rate=SAMPLERATE Laju cuplikan dalam Hz (nilai baku "
|
||||
"44100)\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"
|
||||
" --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"
|
||||
" --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 "
|
||||
"stream\n"
|
||||
" --fix-format Ambil format cuplikan dari muara/"
|
||||
"sumber stream\n"
|
||||
" yang sedang tersambung.\n"
|
||||
" --fix-rate Ambil laju cuplikan dari muara "
|
||||
"stream\n"
|
||||
" --fix-rate Ambil laju cuplikan dari muara/"
|
||||
"sumber stream\n"
|
||||
" yang sedang tersambung.\n"
|
||||
" --fix-channels Ambil cacah kanal dan peta kanal "
|
||||
"dari muara stream\n"
|
||||
"dari muara/sumber 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"
|
||||
|
|
@ -2262,12 +2249,10 @@ msgid "TARGET"
|
|||
msgstr "TARGET"
|
||||
|
||||
#: src/utils/pacmd.c:76
|
||||
#, fuzzy
|
||||
msgid "NUMERIC-LEVEL"
|
||||
msgstr "NUMERIC-LEVEL"
|
||||
msgstr "ARAS-NUMERIK"
|
||||
|
||||
#: src/utils/pacmd.c:79
|
||||
#, fuzzy
|
||||
msgid "FRAMES"
|
||||
msgstr "BINGKAI"
|
||||
|
||||
|
|
@ -2434,9 +2419,8 @@ msgid "Aux"
|
|||
msgstr "Aux"
|
||||
|
||||
#: src/utils/pactl.c:335
|
||||
#, fuzzy
|
||||
msgid "Line"
|
||||
msgstr "Jalur Masuk"
|
||||
msgstr "Jalur"
|
||||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
|
|
@ -2526,7 +2510,7 @@ msgstr ""
|
|||
#: src/utils/pactl.c:706 src/utils/pactl.c:890 src/utils/pactl.c:1251
|
||||
#, c-format
|
||||
msgid "\tPorts:\n"
|
||||
msgstr "»Port:\n"
|
||||
msgstr "\tPort:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, c-format
|
||||
|
|
@ -2540,7 +2524,7 @@ msgstr ", grup ketersediaan: "
|
|||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
msgid "\tActive Port: %s\n"
|
||||
msgstr "»Port Aktif: %s\n"
|
||||
msgstr "\tPort Aktif: %s\n"
|
||||
|
||||
#: src/utils/pactl.c:721 src/utils/pactl.c:905
|
||||
#, c-format
|
||||
|
|
@ -3009,7 +2993,7 @@ msgstr ""
|
|||
"dapat dipakai untuk menyatakan muara, sumber, dan pemantau baku.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3026,6 +3010,8 @@ 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"
|
||||
|
|
@ -3042,9 +3028,9 @@ msgstr ""
|
|||
"Ditaut dengan libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Nama stream '%s' tak valid"
|
||||
msgstr "Nilai format '%s' tidak valid"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3276,7 +3262,7 @@ msgid "WARNING: Child process terminated by signal %u\n"
|
|||
msgstr "PERINGATAN: Proses anak diakhiri oleh sinyal %u\n"
|
||||
|
||||
#: src/utils/pasuspender.c:228
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options] -- PROGRAM [ARGUMENTS ...]\n"
|
||||
"\n"
|
||||
|
|
@ -3288,7 +3274,9 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [opsi] ... \n"
|
||||
"%s [opsi] -- PROGRAM [ARGUMEN ...]\n"
|
||||
"\n"
|
||||
"Sementara mensuspensi PulseAudio ketika PROGRAM berjalan.\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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-04-19 20:02+0000\n"
|
||||
"Last-Translator: Milo Casagrande <milo@milo.name>\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"
|
||||
"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 4.6\n"
|
||||
"X-Generator: Weblate 5.11.4\n"
|
||||
|
||||
# mamma mia che impressione
|
||||
#: src/daemon/cmdline.c:113
|
||||
|
|
@ -198,14 +198,12 @@ 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 richiede il livello di registro come argomento (sia "
|
||||
"nell'intervallo numerico 0..4 oppure uno tra debug, info, notice, warn, "
|
||||
"error)."
|
||||
"--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)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -1163,8 +1161,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Equalizzatore basato su FFT su %s"
|
||||
|
|
@ -1230,14 +1228,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel per %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunnel verso %s/%s"
|
||||
|
|
@ -1247,7 +1245,6 @@ 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> "
|
||||
|
|
@ -1590,11 +1587,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Destinazione di registrazione non valida."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Audio interno"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -2420,7 +2417,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 ""
|
||||
msgstr "%s\n"
|
||||
|
||||
#: src/utils/pactl.c:281
|
||||
#, c-format
|
||||
|
|
@ -2491,7 +2488,6 @@ msgid "Mic"
|
|||
msgstr "Mic"
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
msgid "Handset"
|
||||
msgstr "Cuffie con microfono"
|
||||
|
||||
|
|
@ -2586,7 +2582,6 @@ 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à: "
|
||||
|
||||
|
|
@ -2898,7 +2893,7 @@ msgstr "Invia messaggio non riuscito: %s"
|
|||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
msgid "list-handlers message failed: %s"
|
||||
msgstr ""
|
||||
msgstr "messaggio list-handlers non riuscito: %s"
|
||||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
|
|
@ -2912,6 +2907,8 @@ 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
|
||||
|
|
@ -3110,9 +3107,9 @@ msgstr ""
|
|||
"Link eseguito con libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Nome dello stream «%s» non valido"
|
||||
msgstr "Formato valore non valido '%s'"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3198,18 +3195,16 @@ 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 "È necessario specificare un nome di sink"
|
||||
msgstr "Devi specificare un nome/indice del 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 "È necessario specificare il nome di una sorgente"
|
||||
msgstr "Devi specificare un nome/indice sorgente"
|
||||
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
|
|
@ -3275,15 +3270,17 @@ 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 "È necessario specificare un nome/indice di sink e un nome di porta"
|
||||
msgstr ""
|
||||
"Devi specificare almeno un percorso dell'oggetto e un nome del messaggio"
|
||||
|
||||
#: 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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s のトンネル"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "%s/%s へのトンネル"
|
||||
|
|
@ -1560,11 +1560,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "無効なログターゲット。"
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "内部オーディオ"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1391,11 +1391,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Журнал мақсаты дұрыс емес."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Құрамындағы аудио"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ಆಂತರಿಕ ಆಡಿಯೊ"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-20 18:18+0000\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-06-14 13:17+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 4.12.2\n"
|
||||
"X-Generator: Weblate 5.11.4\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"
|
||||
"OPTIONS:\n"
|
||||
"옵션:\n"
|
||||
" --system[=BOOL] 시스템-전반의 인스턴스로 실행\n"
|
||||
" -D, --daemonize[=BOOL] 시작 후에 데몬화\n"
|
||||
" --fail[=BOOL] 시작이 실패 할 때에 종료\n"
|
||||
" --high-priority[=BOOL] 높은 수준으로 설정을 시도\n"
|
||||
" (root로만 사용 가능, SUID 또는\n"
|
||||
" 높은 RLIMIT_NICE일 때에)\n"
|
||||
" --realtime[=BOOL] Try to enable realtime scheduling\n"
|
||||
" --realtime[=BOOL] 실시간 스케쥴링 활성 시도\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] 잘못된 fragment 수 '%s'."
|
||||
msgstr "[%s:%u] 잘못된 조각 수 '%s'."
|
||||
|
||||
#: src/daemon/daemon-conf.c:450
|
||||
#, c-format
|
||||
msgid "[%s:%u] Invalid fragment size '%s'."
|
||||
msgstr "[%s:%u] 잘못된 fragment 크기 '%s'."
|
||||
msgstr "[%s:%u] 잘못된 조각 크기 '%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,8 +423,7 @@ msgstr "명령어 행 분석 실패."
|
|||
msgid ""
|
||||
"System mode refused for non-root user. Only starting the D-Bus server lookup "
|
||||
"service."
|
||||
msgstr ""
|
||||
"비 root 사용자에 대해 시스템 모드는 거부되었습니다. D-Bus 서버 검색 서비스만 "
|
||||
msgstr "non-root 사용자에게 시스템 방식이 거부되었습니다. D-Bus 서버 검색 서비스만 "
|
||||
"시작합니다."
|
||||
|
||||
#: src/daemon/main.c:788
|
||||
|
|
@ -436,12 +435,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 "Root 권한이 필요합니다."
|
||||
msgstr "루트 권한이 필요합니다."
|
||||
|
||||
#: src/daemon/main.c:827
|
||||
msgid "--start not supported for system instances."
|
||||
|
|
@ -450,24 +449,22 @@ msgstr "--start는 시스템 인스턴스에 대해 지원되지 않습니다."
|
|||
#: src/daemon/main.c:867
|
||||
#, c-format
|
||||
msgid "User-configured server at %s, refusing to start/autospawn."
|
||||
msgstr "%s에서 사용자 설정한 서버, start/autospawn을 거부하고 있습니다."
|
||||
msgstr "%s에 User-configured 서버, start/autospawn을 거부하고 있습니다."
|
||||
|
||||
#: src/daemon/main.c:873
|
||||
#, c-format
|
||||
msgid ""
|
||||
"User-configured server at %s, which appears to be local. Probing deeper."
|
||||
msgstr "%s에 사용자가 설정한 서버, 이는 로컬에 있습니다. 상세히 조사합니다."
|
||||
msgstr "%s에 User-configured 서버, 이는 로컬에 있습니다. 상세히 조사합니다."
|
||||
|
||||
#: 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."
|
||||
|
|
@ -659,7 +656,7 @@ msgstr "도킹스테이션 마이크"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2802
|
||||
msgid "Headset Microphone"
|
||||
msgstr "후면 마이크"
|
||||
msgstr "헤드셋 마이크"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2806
|
||||
msgid "Analog Output"
|
||||
|
|
@ -719,7 +716,7 @@ msgstr "대화 입력"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
msgid "Virtual Surround 7.1"
|
||||
msgstr "가상 서라운드 싱크"
|
||||
msgstr "가상 서라운드 7.1"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4563
|
||||
msgid "Analog Mono"
|
||||
|
|
@ -863,7 +860,7 @@ msgstr "스테레오 듀플렉스"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr "모노 Chat + 7.1 Surround"
|
||||
msgstr "모노 대화 + 7.1 서라운드"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1013,15 +1010,15 @@ msgstr "전화기"
|
|||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2042
|
||||
msgid "High Fidelity Playback (A2DP Sink)"
|
||||
msgstr "Hi-Fi 재생 (A2DP Sink)"
|
||||
msgstr "고음질 재생 (A2DP Sink)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2054
|
||||
msgid "High Fidelity Capture (A2DP Source)"
|
||||
msgstr "Hi-Fi 캡쳐 (A2DP Source)"
|
||||
msgstr "고음질 캡쳐 (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)"
|
||||
|
|
@ -1029,7 +1026,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)"
|
||||
|
|
@ -1092,8 +1089,8 @@ msgstr ""
|
|||
"channel_map=<채널 맵> autoloaded=<이 모듈이 자동으로 로드된다면 설정하십시오"
|
||||
"> use_volume_sharing=<yes 또는 no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "고속퓨리에변환 기반 이퀄라이저 동작 %s"
|
||||
|
|
@ -1157,14 +1154,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s 위한 터널"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "%s/%s가는 터널"
|
||||
|
|
@ -1478,9 +1475,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가 PluseAudio에 root 사용자로 연결을 시도할 때에 예를 "
|
||||
"들어 발생 할 수 있습니다. 그렇게 하지 않습니다.)"
|
||||
"XDG_RUNTIME_DIR (%s)는 우리(uid %d)가 아니라 uid %d가 소유합니다! (자체 "
|
||||
"통신규약을 통해 root 사용자로 root가 아닌 PluseAudio에 연결을 시도 할 때에 "
|
||||
"예시로 발생 할 수 있습니다. 그렇게 하지 않습니다.)"
|
||||
|
||||
#: src/pulsecore/core-util.h:97
|
||||
msgid "yes"
|
||||
|
|
@ -1511,17 +1508,17 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "잘못된 기록 대상."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "내장 오디오"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "모뎀"
|
||||
|
||||
#: src/pulse/error.c:38
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
msgstr "확인"
|
||||
|
||||
#: src/pulse/error.c:39
|
||||
msgid "Access denied"
|
||||
|
|
@ -1589,7 +1586,7 @@ msgstr "자료 없음"
|
|||
|
||||
#: src/pulse/error.c:55
|
||||
msgid "Incompatible protocol version"
|
||||
msgstr "호환되지 않는 통신규약 버전"
|
||||
msgstr "호환되지 않는 프로토콜 버전"
|
||||
|
||||
#: src/pulse/error.c:56
|
||||
msgid "Too large"
|
||||
|
|
@ -1908,11 +1905,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에서 초기(선형) 소리를 "
|
||||
|
|
@ -1925,29 +1922,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"
|
||||
|
|
@ -2441,7 +2438,7 @@ msgid ""
|
|||
"\tProperties:\n"
|
||||
"\t\t%s\n"
|
||||
msgstr ""
|
||||
"싱크 #%u\n"
|
||||
"Sink #%u\n"
|
||||
"\t상태: %s\n"
|
||||
"\t이름: %s\n"
|
||||
"\t설명: %s\n"
|
||||
|
|
@ -2450,10 +2447,10 @@ msgstr ""
|
|||
"\t채널 맵: %s\n"
|
||||
"\t소유자 모듈: %u\n"
|
||||
"\t무음: %s\n"
|
||||
"\t볼륨: %s%s%s\n"
|
||||
"\t균형 %0.2f\n"
|
||||
"\t기본 볼륨: %s%s%s\n"
|
||||
"\t모니터 소스: %s\n"
|
||||
"\t음량: %s\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t기본 음량: %s\n"
|
||||
"\t모니터 원천: %s\n"
|
||||
"\t지연시간: %0.0f usec, 설정 %0.0f usec\n"
|
||||
"\t플래그: %s%s%s%s%s%s%s\n"
|
||||
"\t속성:\n"
|
||||
|
|
@ -2510,7 +2507,7 @@ msgid ""
|
|||
"\tProperties:\n"
|
||||
"\t\t%s\n"
|
||||
msgstr ""
|
||||
"소스 #%u\n"
|
||||
"원천 #%u\n"
|
||||
"\t상태: %s\n"
|
||||
"\t이름: %s\n"
|
||||
"\t설명: %s\n"
|
||||
|
|
@ -2519,11 +2516,11 @@ msgstr ""
|
|||
"\t채널 맵: %s\n"
|
||||
"\t소유자 모듈: %u\n"
|
||||
"\t무음: %s\n"
|
||||
"\t볼륨: %s%s%s\n"
|
||||
"\t볼륨: %s\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t기본 볼륨: %s%s%s\n"
|
||||
"\t싱크 모니터: %s\n"
|
||||
"\t지연시간: %0.0f usec, 설정 %0.0f usec\n"
|
||||
"\t기본 볼륨: %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"
|
||||
|
|
@ -2673,8 +2670,7 @@ msgstr ""
|
|||
"\t코르크: %s\n"
|
||||
"\t무음: %s\n"
|
||||
"\t볼륨: %s\n"
|
||||
"\t %s\n"
|
||||
"\t균형 %0.2f\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t버퍼 지연 시간: %0.0f usec\n"
|
||||
"\t싱크 지연 시간: %0.0f usec\n"
|
||||
"\t리샘플링 방법: %s\n"
|
||||
|
|
@ -2751,8 +2747,7 @@ msgstr ""
|
|||
"\t샘플 사양: %s\n"
|
||||
"\t채널맵: %s\n"
|
||||
"\t볼륨: %s\n"
|
||||
"\t %s\n"
|
||||
"\t균형 %0.2f\n"
|
||||
"\t 균형 %0.2f\n"
|
||||
"\t길이: %0.1fs\n"
|
||||
"\t크기: %s\n"
|
||||
"\t레이지: %s\n"
|
||||
|
|
@ -3136,8 +3131,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 ""
|
||||
|
|
@ -3211,7 +3206,7 @@ msgid ""
|
|||
"to\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s [옵션] -- 프로그램 -[ 인수 ...]\n"
|
||||
"%s [옵션] -- 프로그램 -[ 인자 ...]\n"
|
||||
"\n"
|
||||
"프로그램이 동작 할 때에 일시적으로 PulseAudio를 중지합니다.\n"
|
||||
"\n"
|
||||
|
|
|
|||
107
po/lt.po
107
po/lt.po
|
|
@ -8,17 +8,18 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/"
|
||||
"issues/new\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"
|
||||
"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"
|
||||
"Language: lt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\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"
|
||||
"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"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -702,9 +703,8 @@ msgid "Analog Output"
|
|||
msgstr "Analoginė išvestis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2808
|
||||
#, fuzzy
|
||||
msgid "Headphones 2"
|
||||
msgstr "Ausinės"
|
||||
msgstr "Ausinės 2"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2809
|
||||
msgid "Headphones Mono Output"
|
||||
|
|
@ -751,28 +751,24 @@ msgid "Chat Output"
|
|||
msgstr "Pokalbio išvestis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2821
|
||||
#, fuzzy
|
||||
msgid "Chat Input"
|
||||
msgstr "Pokalbio išvestis"
|
||||
msgstr "Pokalbio įvestis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:2822
|
||||
#, fuzzy
|
||||
msgid "Virtual Surround 7.1"
|
||||
msgstr "Virtualus erdvinis rinktuvas"
|
||||
msgstr "Virtuali erdvinė 7.1"
|
||||
|
||||
#: 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"
|
||||
msgstr "Analoginė mono (kairioji)"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4565
|
||||
#, fuzzy
|
||||
msgid "Analog Mono (Right)"
|
||||
msgstr "Analoginė mono"
|
||||
msgstr "Analoginė mono (dešinioji)"
|
||||
|
||||
#. Note: Not translated to "Analog Stereo Input", because the source
|
||||
#. * name gets "Input" appended to it automatically, so adding "Input"
|
||||
|
|
@ -877,11 +873,11 @@ msgstr "Skaitmeninė erdvinė 5.1 (HDMI)"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4597
|
||||
msgid "Chat"
|
||||
msgstr ""
|
||||
msgstr "Pokalbis"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4598
|
||||
msgid "Game"
|
||||
msgstr ""
|
||||
msgstr "Žaidimas"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4732
|
||||
msgid "Analog Mono Duplex"
|
||||
|
|
@ -905,7 +901,7 @@ msgstr "Dvipusė stereo"
|
|||
|
||||
#: src/modules/alsa/alsa-mixer.c:4739
|
||||
msgid "Mono Chat + 7.1 Surround"
|
||||
msgstr ""
|
||||
msgstr "Mono pokalbis + 7.1 erdvinė"
|
||||
|
||||
#: src/modules/alsa/alsa-mixer.c:4740 src/modules/alsa/module-alsa-card.c:197
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2263
|
||||
|
|
@ -1102,19 +1098,16 @@ 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/HFP)"
|
||||
msgstr "Ausinių su mikrofonu garso tinklų sietuvas (HSP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2092
|
||||
#, fuzzy
|
||||
msgid "Handsfree Head Unit (HFP)"
|
||||
msgstr "Ausinių su mikrofonu pagrindinis įtaisas (HSP/HFP)"
|
||||
msgstr "Laisvų rankų įrangos pagrindinis įtaisas (HFP)"
|
||||
|
||||
#: src/modules/bluetooth/module-bluez5-device.c:2105
|
||||
#, fuzzy
|
||||
msgid "Handsfree Audio Gateway (HFP)"
|
||||
msgstr "Ausinių su mikrofonu garso tinklų sietuvas (HSP/HFP)"
|
||||
msgstr "Laisvų rankų įrangos garso tinklų sietuvas (HFP)"
|
||||
|
||||
#: src/modules/echo-cancel/module-echo-cancel.c:59
|
||||
msgid ""
|
||||
|
|
@ -1176,8 +1169,8 @@ msgstr ""
|
|||
"schema> autoloaded=<nustatyti ar šis modulis bus įkeliamas automatiškai> "
|
||||
"use_volume_sharing=<yes arba no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT pagrįstas glodintuvas ties %s"
|
||||
|
|
@ -1245,14 +1238,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunelis, skirtas %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Tunelis į %s/%s"
|
||||
|
|
@ -1603,11 +1596,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Neteisinga žurnalo paskirtis."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Įtaisytas garsas"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modemas"
|
||||
|
||||
|
|
@ -2416,9 +2409,9 @@ msgid "Failed to get server information: %s"
|
|||
msgstr "Nepavyko gauti serverio informacijos: %s"
|
||||
|
||||
#: src/utils/pactl.c:224 src/utils/pactl.c:236
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s %s\n"
|
||||
msgstr "%s\n"
|
||||
|
||||
#: src/utils/pactl.c:281
|
||||
#, c-format
|
||||
|
|
@ -2462,20 +2455,19 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:320
|
||||
msgid "availability unknown"
|
||||
msgstr ""
|
||||
msgstr "prieinamumas nežinomas"
|
||||
|
||||
#: src/utils/pactl.c:321
|
||||
msgid "available"
|
||||
msgstr ""
|
||||
msgstr "prieinama"
|
||||
|
||||
#: src/utils/pactl.c:322
|
||||
msgid "not available"
|
||||
msgstr ""
|
||||
msgstr "neprieinama"
|
||||
|
||||
#: 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"
|
||||
|
|
@ -2488,12 +2480,11 @@ msgstr "Įvadinė linija"
|
|||
|
||||
#: src/utils/pactl.c:336
|
||||
msgid "Mic"
|
||||
msgstr ""
|
||||
msgstr "Mikrofonas"
|
||||
|
||||
#: src/utils/pactl.c:338
|
||||
#, fuzzy
|
||||
msgid "Handset"
|
||||
msgstr "Ausinės su mikrofonu"
|
||||
msgstr "Telefono ragelis"
|
||||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
|
|
@ -2501,28 +2492,27 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
msgstr ""
|
||||
msgstr "SPDIF"
|
||||
|
||||
#: src/utils/pactl.c:341
|
||||
msgid "HDMI"
|
||||
msgstr ""
|
||||
msgstr "HDMI"
|
||||
|
||||
#: src/utils/pactl.c:342
|
||||
msgid "TV"
|
||||
msgstr ""
|
||||
msgstr "Televizorius"
|
||||
|
||||
#: src/utils/pactl.c:345
|
||||
msgid "USB"
|
||||
msgstr ""
|
||||
msgstr "USB"
|
||||
|
||||
#: src/utils/pactl.c:346
|
||||
#, fuzzy
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth įvestis"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
#: src/utils/pactl.c:352
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
msgstr "Tinklas"
|
||||
|
||||
#: src/utils/pactl.c:353
|
||||
#, fuzzy
|
||||
|
|
@ -2580,14 +2570,13 @@ msgid "\tPorts:\n"
|
|||
msgstr "\tPrievadai:\n"
|
||||
|
||||
#: src/utils/pactl.c:708 src/utils/pactl.c:892
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "\t\t%s: %s (type: %s, priority: %u%s%s, %s)\n"
|
||||
msgstr ""
|
||||
"\t\t%s: %s (rinktuvų: %u, šaltinių: %u, pirmenybė: %u, prieinama: %s)\n"
|
||||
msgstr "\t\t%s: %s (tipas: %s, pirmenybė: %u%s%s, %s)\n"
|
||||
|
||||
#: src/utils/pactl.c:710 src/utils/pactl.c:894 src/utils/pactl.c:1256
|
||||
msgid ", availability group: "
|
||||
msgstr ""
|
||||
msgstr ", prieinamumo grupė: "
|
||||
|
||||
#: src/utils/pactl.c:715 src/utils/pactl.c:899
|
||||
#, c-format
|
||||
|
|
@ -2880,9 +2869,9 @@ msgid "Failure: %s"
|
|||
msgstr "Triktis: %s"
|
||||
|
||||
#: src/utils/pactl.c:1667
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Send message failed: %s"
|
||||
msgstr "read() nepavyko: %s"
|
||||
msgstr "Nepavyko išsiųsti pranešimo: %s"
|
||||
|
||||
#: src/utils/pactl.c:1695
|
||||
#, c-format
|
||||
|
|
@ -2891,11 +2880,11 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr ""
|
||||
msgstr "nepavyko teisingai išnagrinėti list-handlers pranešimo atsako"
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr ""
|
||||
msgstr "list-handlers pranešimo atsakas nėra JSON masyvas"
|
||||
|
||||
#: 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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ഇന്റേര്ണല് ഓഡിയോ"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "आंतरीक ऑडिओ"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-03-30 23:01+0000\n"
|
||||
"Last-Translator: Pjotr Vertaalt <pjotrvertaalt@gmail.com>\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"
|
||||
"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.5.2\n"
|
||||
"X-Generator: Weblate 4.14.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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel voor %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Ingebouwde audio"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -2237,11 +2237,11 @@ msgstr "NUMERIEK-NIVEAU"
|
|||
|
||||
#: src/utils/pacmd.c:79
|
||||
msgid "FRAMES"
|
||||
msgstr ""
|
||||
msgstr "FRAMES"
|
||||
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659
|
||||
msgid "RECIPIENT MESSAGE [MESSAGE_PARAMETERS]"
|
||||
msgstr ""
|
||||
msgstr "ONTVANGER BERICHT [PARAMETERS_BERICHT]"
|
||||
|
||||
#: 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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "%s\n"
|
||||
msgstr "%s %s"
|
||||
msgstr "%s\n"
|
||||
|
||||
#: src/utils/pactl.c:281
|
||||
#, c-format
|
||||
|
|
@ -2416,7 +2416,7 @@ msgstr "Mic"
|
|||
|
||||
#: src/utils/pactl.c:338
|
||||
msgid "Handset"
|
||||
msgstr ""
|
||||
msgstr "Telefoon"
|
||||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
|
|
@ -2879,7 +2879,7 @@ msgstr "bron"
|
|||
|
||||
#: src/utils/pactl.c:2167
|
||||
msgid "sink-input"
|
||||
msgstr ""
|
||||
msgstr "afvoerinvoer"
|
||||
|
||||
#: src/utils/pactl.c:2170
|
||||
msgid "source-output"
|
||||
|
|
@ -2895,7 +2895,7 @@ msgstr "cliënt"
|
|||
|
||||
#: src/utils/pactl.c:2179
|
||||
msgid "sample-cache"
|
||||
msgstr ""
|
||||
msgstr "voorbeeldcache"
|
||||
|
||||
#: src/utils/pactl.c:2182
|
||||
msgid "server"
|
||||
|
|
@ -3017,9 +3017,9 @@ msgstr ""
|
|||
"Gelinkt met libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Ongeldige stroomnaam ‘%s’"
|
||||
msgstr "Ongeldige formaatwaarde ‘%s’"
|
||||
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
|
|
@ -3103,18 +3103,16 @@ 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 op te geven"
|
||||
msgstr "U dient een afvoernaam/-index 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 op te geven"
|
||||
msgstr "U dient een bronnaam/-index 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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunell for %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Innebygd lyd"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1474,11 +1474,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Àudio integrat"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ଆଭ୍ୟନ୍ତରୀଣ ଧ୍ୱନି"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "ਅੰਦਰੂਨੀ ਆਡੀਓ"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel dla %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Wbudowany dźwięk"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-08-04 08:04+0000\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2025-05-10 22:55+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 4.7.2\n"
|
||||
"X-Generator: Weblate 5.11.3\n"
|
||||
|
||||
#: src/daemon/cmdline.c:113
|
||||
#, c-format
|
||||
|
|
@ -193,13 +193,12 @@ 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 debug, info, notice, warn, error)."
|
||||
"0..4 seja algum entre error, warn, notice, info, debug)."
|
||||
|
||||
#: src/daemon/cmdline.c:277
|
||||
msgid "--high-priority expects boolean argument"
|
||||
|
|
@ -1162,8 +1161,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Equalizador baseado em FFT em %s"
|
||||
|
|
@ -1230,14 +1229,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Túnel para %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Túnel para %s/%s"
|
||||
|
|
@ -1587,11 +1586,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Alvo do log inválido."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Áudio interno"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1909,7 +1908,7 @@ msgid "pa_stream_update_timing_info() failed: %s"
|
|||
msgstr "pa_stream_update_timing_info() falhou: %s"
|
||||
|
||||
#: src/utils/pacat.c:676
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1988,62 +1987,58 @@ msgstr ""
|
|||
" -v, --verbose Habilita operações no modo "
|
||||
"detalhado\n"
|
||||
"\n"
|
||||
" -s, --server=SERVIDOR O nome do servidor a conectar-se\n"
|
||||
" -d, --device=DISPOSITIVO O nome do destino/fonte a conectar-"
|
||||
"se\n"
|
||||
" -s, --server=SERVIDOR O nome do servidor para se conectar\n"
|
||||
" -d, --device=DISPOSITIVO O nome do destino/fonte para se "
|
||||
"conectar\n"
|
||||
" -n, --client-name=NOME Como chamar este cliente no "
|
||||
"servidor\n"
|
||||
" --stream-name=NOME Como chamar este fluxo no servidor\n"
|
||||
" --volume=VOLUME Especifica a faixa (linear) inicial\n"
|
||||
" de volume no intervalo 0...65536\n"
|
||||
" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem, Hz (padrão "
|
||||
" --volume=VOLUME Especifica o volume (linear) inicial "
|
||||
"no intervalo 0...65536\n"
|
||||
" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem em Hz (padrão: "
|
||||
"44100)\n"
|
||||
" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, veja\n"
|
||||
" --format=FORMATO_DE_AMOSTRAGEM Formato da 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,\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 "
|
||||
" --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 "
|
||||
"bytes.\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"
|
||||
" --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"
|
||||
" --property=PROPRIEDADE=VALOR Define a propriedade especificada "
|
||||
"para\n"
|
||||
" o valor especificado.\n"
|
||||
"para 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.\n"
|
||||
"índice ÍNDICE.\n"
|
||||
|
||||
#: src/utils/pacat.c:793
|
||||
msgid "Play back encoded audio files on a PulseAudio sound server."
|
||||
|
|
@ -2876,11 +2871,12 @@ 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 list-handlers não pôde ser tratada corretamente"
|
||||
msgstr ""
|
||||
"a resposta da mensagem de 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 list-handlers não é um array JSON"
|
||||
msgstr "a resposta da mensagem de list-handlers não é um array JSON"
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
@ -3052,7 +3048,7 @@ msgstr ""
|
|||
"padrão.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" -h, --help Show this help\n"
|
||||
|
|
@ -3069,7 +3065,9 @@ msgstr ""
|
|||
" -h, --help Mostra esta ajuda\n"
|
||||
" --version Mostra a versão\n"
|
||||
"\n"
|
||||
" -s, --server=SERVIDOR Nome do servidor a ser conectado\n"
|
||||
" -f, --format=FORMATO O formato da saída. \"normal\" ou "
|
||||
"\"json\"\n"
|
||||
" -s, --server=SERVIDOR Nome do servidor para se conectar\n"
|
||||
" -n, --client-name=NOME Como chamar este cliente no "
|
||||
"servidor\n"
|
||||
|
||||
|
|
@ -3085,9 +3083,9 @@ msgstr ""
|
|||
"Vinculado com libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Nome do fluxo “%s” inválido"
|
||||
msgstr "Valor de formato “%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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094 src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097 src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356 src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370 src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697 src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715 src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1348,11 +1348,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-23 11:18+0000\n"
|
||||
"Last-Translator: Sergey A. <sw@atrus.ru>\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"
|
||||
"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 4.12.2\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.11.3\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."
|
||||
msgstr "Не удалось добавить bind-now-loader."
|
||||
|
||||
#: 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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "Эквалайзер на основе БПФ на %s"
|
||||
|
|
@ -1238,18 +1238,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: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
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Туннель для %s@%s"
|
||||
|
||||
#: 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
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Туннель к %s/%s"
|
||||
|
|
@ -1272,10 +1268,9 @@ 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"
|
||||
|
|
@ -1602,11 +1597,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Недопустимый журнал."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Встроенное аудио"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Модем"
|
||||
|
||||
|
|
@ -2042,8 +2037,8 @@ msgstr ""
|
|||
"байтах.\n"
|
||||
" --process-time=BYTES Запросить указанное время процесса "
|
||||
"на запрос в байтах.\n"
|
||||
" --latency-msec=MSEC Запросить указанную задержку в мсек."
|
||||
"\n"
|
||||
" --latency-msec=MSEC Запросить указанную задержку в "
|
||||
"мсек.\n"
|
||||
" --process-time-msec=MSEC Запросить указанное время процесса "
|
||||
"на запрос в мсек.\n"
|
||||
" --property=PROPERTY=VALUE Установить для указанного свойства "
|
||||
|
|
@ -2095,7 +2090,7 @@ msgstr ""
|
|||
"Скомпилировано с libpulse %s\n"
|
||||
"Скомпоновано с libpulse %s\n"
|
||||
|
||||
#: src/utils/pacat.c:852 src/utils/pactl.c:2731 src/utils/pactl.c:2720
|
||||
#: src/utils/pacat.c:852 src/utils/pactl.c:2731
|
||||
#, c-format
|
||||
msgid "Invalid client name '%s'"
|
||||
msgstr "Недопустимое имя клиента «%s»"
|
||||
|
|
@ -2168,7 +2163,7 @@ msgstr ""
|
|||
"Предупреждение: указанная спецификация отсчётов будет заменена спецификацией "
|
||||
"из файла."
|
||||
|
||||
#: src/utils/pacat.c:1091 src/utils/pactl.c:2806 src/utils/pactl.c:2794
|
||||
#: src/utils/pacat.c:1091 src/utils/pactl.c:2806
|
||||
msgid "Failed to determine sample specification from file."
|
||||
msgstr "Не удалось определить спецификацию отсчётов из файла."
|
||||
|
||||
|
|
@ -2204,7 +2199,7 @@ msgstr "воспроизведения"
|
|||
msgid "Failed to set media name."
|
||||
msgstr "Не удалось установить имя потока."
|
||||
|
||||
#: src/utils/pacat.c:1172 src/utils/pactl.c:3218 src/utils/pactl.c:3206
|
||||
#: src/utils/pacat.c:1172 src/utils/pactl.c:3218
|
||||
msgid "pa_mainloop_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_mainloop_new()."
|
||||
|
||||
|
|
@ -2212,11 +2207,11 @@ msgstr "Произошла ошибка при выполнении pa_mainloop_
|
|||
msgid "io_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении io_new()."
|
||||
|
||||
#: src/utils/pacat.c:1202 src/utils/pactl.c:3230 src/utils/pactl.c:3218
|
||||
#: src/utils/pacat.c:1202 src/utils/pactl.c:3230
|
||||
msgid "pa_context_new() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_context_new()."
|
||||
|
||||
#: src/utils/pacat.c:1210 src/utils/pactl.c:3236 src/utils/pactl.c:3224
|
||||
#: src/utils/pacat.c:1210 src/utils/pactl.c:3236
|
||||
#, c-format
|
||||
msgid "pa_context_connect() failed: %s"
|
||||
msgstr "Произошла ошибка при выполнении pa_context_connect(): %s"
|
||||
|
|
@ -2225,22 +2220,21 @@ 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/pactl.c:3229
|
||||
#: src/utils/pacat.c:1223 src/utils/pactl.c:3241
|
||||
msgid "pa_mainloop_run() failed."
|
||||
msgstr "Произошла ошибка при выполнении pa_mainloop_run()."
|
||||
|
||||
#: src/utils/pacmd.c:51 src/utils/pactl.c:2643 src/utils/pactl.c:2632
|
||||
#: src/utils/pacmd.c:51 src/utils/pactl.c:2643
|
||||
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:2633
|
||||
#: src/utils/pactl.c:2640 src/utils/pactl.c:2641
|
||||
#: src/utils/pactl.c:2651 src/utils/pactl.c:2652
|
||||
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:2631 src/utils/pactl.c:2638
|
||||
#: src/utils/pactl.c:2649
|
||||
msgid "NAME"
|
||||
msgstr "ИМЯ"
|
||||
|
||||
|
|
@ -2253,7 +2247,6 @@ 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"
|
||||
|
||||
|
|
@ -2289,7 +2282,7 @@ msgstr "ПУТЬ"
|
|||
msgid "FILENAME SINK|#N"
|
||||
msgstr "ИМЯ_ФАЙЛА АУДИОПРИЁМНИК|№"
|
||||
|
||||
#: src/utils/pacmd.c:69 src/utils/pactl.c:2645 src/utils/pactl.c:2634
|
||||
#: src/utils/pacmd.c:69 src/utils/pactl.c:2645
|
||||
msgid "#N SINK|SOURCE"
|
||||
msgstr "№ АУДИОПРИЁМНИК|ИСТОЧНИК"
|
||||
|
||||
|
|
@ -2297,15 +2290,15 @@ msgstr "№ АУДИОПРИЁМНИК|ИСТОЧНИК"
|
|||
msgid "1|0"
|
||||
msgstr "1|0"
|
||||
|
||||
#: src/utils/pacmd.c:72 src/utils/pactl.c:2647 src/utils/pactl.c:2636
|
||||
#: src/utils/pacmd.c:72 src/utils/pactl.c:2647
|
||||
msgid "CARD PROFILE"
|
||||
msgstr "ПЛАТА ПРОФИЛЬ"
|
||||
|
||||
#: src/utils/pacmd.c:73 src/utils/pactl.c:2650 src/utils/pactl.c:2639
|
||||
#: src/utils/pacmd.c:73 src/utils/pactl.c:2650
|
||||
msgid "NAME|#N PORT"
|
||||
msgstr "ИМЯ|№ ПОРТ"
|
||||
|
||||
#: src/utils/pacmd.c:74 src/utils/pactl.c:2658 src/utils/pactl.c:2647
|
||||
#: src/utils/pacmd.c:74 src/utils/pactl.c:2658
|
||||
msgid "CARD-NAME|CARD-#N PORT OFFSET"
|
||||
msgstr "ИМЯ_ПЛАТЫ|№_ПЛАТЫ ПОРТ ЗАДЕРЖКА"
|
||||
|
||||
|
|
@ -2321,7 +2314,7 @@ msgstr "ЧИСЛОВОЙ-УРОВЕНЬ"
|
|||
msgid "FRAMES"
|
||||
msgstr "КАДРОВ"
|
||||
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659 src/utils/pactl.c:2648
|
||||
#: src/utils/pacmd.c:80 src/utils/pactl.c:2659
|
||||
msgid "RECIPIENT MESSAGE [MESSAGE_PARAMETERS]"
|
||||
msgstr "СООБЩЕНИЕ ПОЛУЧАТЕЛЯ [ПАРАМЕТРЫ_СООБЩЕНИЯ]"
|
||||
|
||||
|
|
@ -2505,7 +2498,7 @@ msgstr "Гарнитура"
|
|||
|
||||
#: src/utils/pactl.c:339
|
||||
msgid "Earpiece"
|
||||
msgstr "Наушник"
|
||||
msgstr "Наушники-вкладыши"
|
||||
|
||||
#: src/utils/pactl.c:340
|
||||
msgid "SPDIF"
|
||||
|
|
@ -3019,15 +3012,15 @@ msgstr "Получен сигнал для остановки (SIGINT), выхо
|
|||
msgid "Invalid volume specification"
|
||||
msgstr "Недопустимое значение громкости"
|
||||
|
||||
#: src/utils/pactl.c:2581 src/utils/pactl.c:2570
|
||||
#: src/utils/pactl.c:2581
|
||||
msgid "Volume outside permissible range.\n"
|
||||
msgstr "Указанная громкость выходит за границы разрешённого диапазона.\n"
|
||||
|
||||
#: src/utils/pactl.c:2594 src/utils/pactl.c:2583
|
||||
#: src/utils/pactl.c:2594
|
||||
msgid "Invalid number of volume specifications.\n"
|
||||
msgstr "Недопустимое количество значений громкости.\n"
|
||||
|
||||
#: src/utils/pactl.c:2606 src/utils/pactl.c:2595
|
||||
#: src/utils/pactl.c:2606
|
||||
msgid "Inconsistent volume specification.\n"
|
||||
msgstr "Несогласованные способы указания значений громкости.\n"
|
||||
|
||||
|
|
@ -3039,46 +3032,43 @@ 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: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
|
||||
#: src/utils/pactl.c:2660
|
||||
msgid "[options]"
|
||||
msgstr "[параметры]"
|
||||
|
||||
#: src/utils/pactl.c:2638 src/utils/pactl.c:2627
|
||||
#: src/utils/pactl.c:2638
|
||||
msgid "[TYPE]"
|
||||
msgstr "[ТИП]"
|
||||
|
||||
#: src/utils/pactl.c:2640 src/utils/pactl.c:2629
|
||||
#: src/utils/pactl.c:2640
|
||||
msgid "FILENAME [NAME]"
|
||||
msgstr "ИМЯ_ФАЙЛА [ИМЯ]"
|
||||
|
||||
#: src/utils/pactl.c:2641 src/utils/pactl.c:2630
|
||||
#: src/utils/pactl.c:2641
|
||||
msgid "NAME [SINK]"
|
||||
msgstr "ИМЯ [АУДИОПРИЁМНИК]"
|
||||
|
||||
#: src/utils/pactl.c:2653 src/utils/pactl.c:2642
|
||||
#: src/utils/pactl.c:2653
|
||||
msgid "NAME|#N VOLUME [VOLUME ...]"
|
||||
msgstr "ИМЯ|№ ГРОМКОСТЬ [ГРОМКОСТЬ ...]"
|
||||
|
||||
#: src/utils/pactl.c:2654 src/utils/pactl.c:2643
|
||||
#: src/utils/pactl.c:2654
|
||||
msgid "#N VOLUME [VOLUME ...]"
|
||||
msgstr "№ ГРОМКОСТЬ [ГРОМКОСТЬ ...]"
|
||||
|
||||
#: src/utils/pactl.c:2655 src/utils/pactl.c:2644
|
||||
#: src/utils/pactl.c:2655
|
||||
msgid "NAME|#N 1|0|toggle"
|
||||
msgstr "ИМЯ|№ 1|0|toggle"
|
||||
|
||||
#: src/utils/pactl.c:2656 src/utils/pactl.c:2645
|
||||
#: src/utils/pactl.c:2656
|
||||
msgid "#N 1|0|toggle"
|
||||
msgstr "№ 1|0|toggle"
|
||||
|
||||
#: src/utils/pactl.c:2657 src/utils/pactl.c:2646
|
||||
#: src/utils/pactl.c:2657
|
||||
msgid "#N FORMATS"
|
||||
msgstr "№ ФОРМАТЫ"
|
||||
|
||||
#: src/utils/pactl.c:2661 src/utils/pactl.c:2650
|
||||
#: src/utils/pactl.c:2661
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
|
@ -3090,7 +3080,7 @@ msgstr ""
|
|||
"можно использовать для указания аудиоприёмника, источника и монитора, "
|
||||
"используемых по умолчанию.\n"
|
||||
|
||||
#: src/utils/pactl.c:2664 src/utils/pactl.c:2653
|
||||
#: src/utils/pactl.c:2664
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
|
@ -3113,7 +3103,7 @@ msgstr ""
|
|||
" -s, --server=СЕРВЕР Имя сервера для подключения\n"
|
||||
" -n, --client-name=ИМЯ Имя этого клиента на сервере\n"
|
||||
|
||||
#: src/utils/pactl.c:2707 src/utils/pactl.c:2696
|
||||
#: src/utils/pactl.c:2707
|
||||
#, c-format
|
||||
msgid ""
|
||||
"pactl %s\n"
|
||||
|
|
@ -3124,66 +3114,65 @@ msgstr ""
|
|||
"Скомпилировано с libpulse %s\n"
|
||||
"Скомпоновано с libpulse %s\n"
|
||||
|
||||
#: src/utils/pactl.c:2751 src/utils/pactl.c:2739
|
||||
#: src/utils/pactl.c:2751
|
||||
#, c-format
|
||||
msgid "Invalid format value '%s'"
|
||||
msgstr "Недопустимое значение формата «%s»"
|
||||
|
||||
#: src/utils/pactl.c:2778 src/utils/pactl.c:2766
|
||||
#: src/utils/pactl.c:2778
|
||||
#, c-format
|
||||
msgid "Specify nothing, or one of: %s"
|
||||
msgstr "Не указывайте ничего либо укажите одно из: %s"
|
||||
|
||||
#: src/utils/pactl.c:2788 src/utils/pactl.c:2776
|
||||
#: src/utils/pactl.c:2788
|
||||
msgid "Please specify a sample file to load"
|
||||
msgstr "Необходимо указать файл, из которого будет загружен сэмпл"
|
||||
|
||||
#: src/utils/pactl.c:2801 src/utils/pactl.c:2789
|
||||
#: src/utils/pactl.c:2801
|
||||
msgid "Failed to open sound file."
|
||||
msgstr "Не удалось открыть аудиофайл."
|
||||
|
||||
#: src/utils/pactl.c:2813 src/utils/pactl.c:2801
|
||||
#: src/utils/pactl.c:2813
|
||||
msgid "Warning: Failed to determine sample specification from file."
|
||||
msgstr "Предупреждение: не удалось определить спецификацию отсчётов из файла."
|
||||
|
||||
#: src/utils/pactl.c:2823 src/utils/pactl.c:2811
|
||||
#: src/utils/pactl.c:2823
|
||||
msgid "You have to specify a sample name to play"
|
||||
msgstr "Необходимо указать имя сэмпла для воспроизведения"
|
||||
|
||||
#: src/utils/pactl.c:2835 src/utils/pactl.c:2823
|
||||
#: src/utils/pactl.c:2835
|
||||
msgid "You have to specify a sample name to remove"
|
||||
msgstr "Необходимо указать имя сэмпла для удаления"
|
||||
|
||||
#: src/utils/pactl.c:2844 src/utils/pactl.c:2832
|
||||
#: src/utils/pactl.c:2844
|
||||
msgid "You have to specify a sink input index and a sink"
|
||||
msgstr "Необходимо указать номер входа аудиоприёмника и аудиоприёмник"
|
||||
|
||||
#: src/utils/pactl.c:2854 src/utils/pactl.c:2842
|
||||
#: src/utils/pactl.c:2854
|
||||
msgid "You have to specify a source output index and a source"
|
||||
msgstr "Необходимо указать номер выхода источника и источник"
|
||||
|
||||
#: src/utils/pactl.c:2869 src/utils/pactl.c:2857
|
||||
#: src/utils/pactl.c:2869
|
||||
msgid "You have to specify a module name and arguments."
|
||||
msgstr "Необходимо указать имя модуля и аргументы."
|
||||
|
||||
#: src/utils/pactl.c:2889 src/utils/pactl.c:2877
|
||||
#: src/utils/pactl.c:2889
|
||||
msgid "You have to specify a module index or name"
|
||||
msgstr "Необходимо указать номер или имя модуля"
|
||||
|
||||
#: src/utils/pactl.c:2902 src/utils/pactl.c:2890
|
||||
#: src/utils/pactl.c:2902
|
||||
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:2895
|
||||
#: src/utils/pactl.c:2915
|
||||
#: src/utils/pactl.c:2907 src/utils/pactl.c:2927
|
||||
msgid "Invalid suspend specification."
|
||||
msgstr ""
|
||||
"Недопустимое значение операции приостановки, ожидалось логическое значение."
|
||||
|
||||
#: src/utils/pactl.c:2922 src/utils/pactl.c:2910
|
||||
#: src/utils/pactl.c:2922
|
||||
msgid ""
|
||||
"You may not specify more than one source. You have to specify a boolean "
|
||||
"value."
|
||||
|
|
@ -3191,61 +3180,59 @@ msgstr ""
|
|||
"Нельзя указывать больше одного источника. Необходимо указать логическое "
|
||||
"значение."
|
||||
|
||||
#: src/utils/pactl.c:2939 src/utils/pactl.c:2927
|
||||
#: src/utils/pactl.c:2939
|
||||
msgid "You have to specify a card name/index and a profile name"
|
||||
msgstr "Необходимо указать имя или номер звуковой платы и имя профиля"
|
||||
|
||||
#: src/utils/pactl.c:2950 src/utils/pactl.c:2938
|
||||
#: src/utils/pactl.c:2950
|
||||
msgid "You have to specify a sink name/index and a port name"
|
||||
msgstr "Необходимо указать имя или номер аудиоприёмника и имя порта"
|
||||
|
||||
#: src/utils/pactl.c:2961 src/utils/pactl.c:2949
|
||||
#: src/utils/pactl.c:2961
|
||||
msgid "You have to specify a sink name"
|
||||
msgstr "Необходимо указать имя аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:2974 src/utils/pactl.c:2962
|
||||
#: src/utils/pactl.c:2974
|
||||
msgid "You have to specify a source name/index and a port name"
|
||||
msgstr "Необходимо указать имя или номер источника и имя порта"
|
||||
|
||||
#: src/utils/pactl.c:2985 src/utils/pactl.c:2973
|
||||
#: src/utils/pactl.c:2985
|
||||
msgid "You have to specify a source name"
|
||||
msgstr "Необходимо указать имя источника"
|
||||
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076 src/utils/pactl.c:2986
|
||||
#: src/utils/pactl.c:3064
|
||||
#: src/utils/pactl.c:2998 src/utils/pactl.c:3076
|
||||
msgid "You have to specify a sink name/index"
|
||||
msgstr "Необходимо указать имя или номер аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:3008 src/utils/pactl.c:2996
|
||||
#: src/utils/pactl.c:3008
|
||||
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:3009
|
||||
#: src/utils/pactl.c:3089
|
||||
#: src/utils/pactl.c:3021 src/utils/pactl.c:3101
|
||||
msgid "You have to specify a source name/index"
|
||||
msgstr "Необходимо указать имя или номер источника"
|
||||
|
||||
#: src/utils/pactl.c:3031 src/utils/pactl.c:3019
|
||||
#: src/utils/pactl.c:3031
|
||||
msgid "You have to specify a source name/index and a volume"
|
||||
msgstr "Необходимо указать имя или номер источника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3044 src/utils/pactl.c:3032
|
||||
#: src/utils/pactl.c:3044
|
||||
msgid "You have to specify a sink input index and a volume"
|
||||
msgstr "Необходимо указать номер входа аудиоприёмника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3049 src/utils/pactl.c:3037
|
||||
#: src/utils/pactl.c:3049
|
||||
msgid "Invalid sink input index"
|
||||
msgstr "Недопустимый номер входа аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:3060 src/utils/pactl.c:3048
|
||||
#: src/utils/pactl.c:3060
|
||||
msgid "You have to specify a source output index and a volume"
|
||||
msgstr "Необходимо указать номер выхода источника и громкость"
|
||||
|
||||
#: src/utils/pactl.c:3065 src/utils/pactl.c:3053
|
||||
#: src/utils/pactl.c:3065
|
||||
msgid "Invalid source output index"
|
||||
msgstr "Недопустимый номер выхода источника"
|
||||
|
||||
#: src/utils/pactl.c:3086 src/utils/pactl.c:3074
|
||||
#: src/utils/pactl.c:3086
|
||||
msgid ""
|
||||
"You have to specify a sink name/index and a mute action (0, 1, or 'toggle')"
|
||||
msgstr ""
|
||||
|
|
@ -3253,30 +3240,29 @@ 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:3079 src/utils/pactl.c:3104
|
||||
#: src/utils/pactl.c:3124 src/utils/pactl.c:3142
|
||||
#: src/utils/pactl.c:3154
|
||||
msgid "Invalid mute specification"
|
||||
msgstr "Недопустимое логическое значение выключения звука"
|
||||
|
||||
#: src/utils/pactl.c:3111 src/utils/pactl.c:3099
|
||||
#: src/utils/pactl.c:3111
|
||||
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:3114
|
||||
#: src/utils/pactl.c:3126
|
||||
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:3119
|
||||
#: src/utils/pactl.c:3131
|
||||
msgid "Invalid sink input index specification"
|
||||
msgstr "Недопустимый номер входа аудиоприёмника"
|
||||
msgstr "Недопустимая спецификация номера входа аудиоприёмника"
|
||||
|
||||
#: src/utils/pactl.c:3144 src/utils/pactl.c:3132
|
||||
#: src/utils/pactl.c:3144
|
||||
msgid ""
|
||||
"You have to specify a source output index and a mute action (0, 1, or "
|
||||
"'toggle')"
|
||||
|
|
@ -3284,15 +3270,15 @@ msgstr ""
|
|||
"Необходимо указать номер выхода источника и логическое значение выключения "
|
||||
"звука (0, 1 или «toggle»)"
|
||||
|
||||
#: src/utils/pactl.c:3149 src/utils/pactl.c:3137
|
||||
#: src/utils/pactl.c:3149
|
||||
msgid "Invalid source output index specification"
|
||||
msgstr "Недопустимый номер выхода источника"
|
||||
|
||||
#: src/utils/pactl.c:3162 src/utils/pactl.c:3150
|
||||
#: src/utils/pactl.c:3162
|
||||
msgid "You have to specify at least an object path and a message name"
|
||||
msgstr "Вы должны указать как минимум путь к объекту и имя сообщения"
|
||||
|
||||
#: src/utils/pactl.c:3160
|
||||
#: 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."
|
||||
|
|
@ -3300,7 +3286,7 @@ msgstr ""
|
|||
"Даны лишние аргументы, они будут проигнорированы. Обратите внимание, что все "
|
||||
"параметры сообщения должны быть предоставлены в виде одной строки."
|
||||
|
||||
#: src/utils/pactl.c:3182 src/utils/pactl.c:3170
|
||||
#: src/utils/pactl.c:3182
|
||||
msgid ""
|
||||
"You have to specify a sink index and a semicolon-separated list of supported "
|
||||
"formats"
|
||||
|
|
@ -3308,15 +3294,15 @@ msgstr ""
|
|||
"Необходимо указать номер аудиоприёмника и разделённый запятыми список "
|
||||
"поддерживаемых форматов"
|
||||
|
||||
#: src/utils/pactl.c:3194 src/utils/pactl.c:3182
|
||||
#: src/utils/pactl.c:3194
|
||||
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:3189
|
||||
#: src/utils/pactl.c:3201
|
||||
msgid "Could not parse latency offset"
|
||||
msgstr "Недопустимое значение задержки"
|
||||
|
||||
#: src/utils/pactl.c:3213 src/utils/pactl.c:3201
|
||||
#: src/utils/pactl.c:3213
|
||||
msgid "No valid command specified."
|
||||
msgstr "Имя команды не указано или не распознано."
|
||||
|
||||
|
|
@ -3480,134 +3466,134 @@ msgstr "Не удалось загрузить данные cookie.\n"
|
|||
msgid "Not yet implemented.\n"
|
||||
msgstr "Не реализовано.\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 ""
|
||||
#~ "%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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr ""
|
||||
|
|
@ -1382,11 +1382,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr ""
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunel pre %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Vstavaný zvuk"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Унутрашњи звук"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Unutrašnji zvuk"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Tunnel för %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Inbyggt ljud"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "உட்புற ஆடியோ"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr ""
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "అంతర్గత ఆడియో"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2022-05-18 22:27+0000\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+0300\n"
|
||||
"PO-Revision-Date: 2024-08-01 04:41+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 4.12.2\n"
|
||||
"X-Generator: Weblate 5.6.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 arka plan "
|
||||
"programını başlatır\n"
|
||||
" -k --kill Çalışan bir arka plan progamını "
|
||||
" --start Eğer çalışmıyorsa art alan hizmetini "
|
||||
"başlatır\n"
|
||||
" -k --kill Çalışan bir art alan hizmetini "
|
||||
"sonlandırır\n"
|
||||
" --check Çalışan bir arka plan programını "
|
||||
" --check Çalışan bir art alan hizmetini "
|
||||
"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 arka plan programı "
|
||||
" -D, --daemonize[=BOOL] Başladıktan sonra art alan hizmeti "
|
||||
"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"
|
||||
" arka plan programını sonlandırır\n"
|
||||
" art alan hizmetini 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 "Arka plan programı durdurulamadı: %s"
|
||||
msgstr "Art alan hizmeti 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 "Arka plan programını başlatma başarısız oldu."
|
||||
msgstr "Art alan hizmetini başlatma başarısız oldu."
|
||||
|
||||
#: src/daemon/main.c:987
|
||||
#, c-format
|
||||
|
|
@ -575,12 +575,14 @@ 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 arka plan "
|
||||
"programı başlatılamadı. Komutların kaynağı: %s"
|
||||
"Başlatma komutlarını çalıştırırken oluşan hatalar nedeniyle art alan hizmeti "
|
||||
"başlatılamadı. Komutların kaynağı: %s"
|
||||
|
||||
#: src/daemon/main.c:1280
|
||||
msgid "Daemon startup without any loaded modules, refusing to work."
|
||||
msgstr "Hiç yüklü modül olmadan arka plan programının çalışması reddediliyor."
|
||||
msgstr ""
|
||||
"Hiç modül yüklenmeden çalışmaya başlamayan art alan hizmeti, çalışmayı "
|
||||
"reddediyor."
|
||||
|
||||
#: src/daemon/pulseaudio.desktop.in:4
|
||||
msgid "PulseAudio Sound System"
|
||||
|
|
@ -1131,8 +1133,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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "%s üzerinde FFT tabanlı dengeleyici"
|
||||
|
|
@ -1199,14 +1201,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s için tünel"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "%s/%s tünel"
|
||||
|
|
@ -1556,11 +1558,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Geçersiz günlük hedefi."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Dahili Ses"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "Modem"
|
||||
|
||||
|
|
@ -1704,7 +1706,7 @@ msgstr "Akış boşaltma başarısız oldu: %s"
|
|||
|
||||
#: src/utils/pacat.c:139
|
||||
msgid "Playback stream drained."
|
||||
msgstr "Playback akışı boşaltıldı."
|
||||
msgstr "Oynatım akışı boşaltıldı."
|
||||
|
||||
#: src/utils/pacat.c:150
|
||||
msgid "Draining connection to server."
|
||||
|
|
@ -1967,8 +1969,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"
|
||||
|
|
@ -1981,8 +1983,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"
|
||||
|
|
@ -2298,7 +2300,7 @@ msgstr ""
|
|||
#: src/utils/pacmd.c:143
|
||||
msgid "No PulseAudio daemon running, or not running as session daemon."
|
||||
msgstr ""
|
||||
"Çalışan PulseAudio arka plan programı yok veya bir oturum arka plan progamı "
|
||||
"Çalışan PulseAudio art alan hizmeti yok veya bir oturum art alan hizmeti "
|
||||
"olarak çalışmıyor."
|
||||
|
||||
#: src/utils/pacmd.c:148
|
||||
|
|
@ -2313,11 +2315,11 @@ msgstr "connect(): %s"
|
|||
|
||||
#: src/utils/pacmd.c:173
|
||||
msgid "Failed to kill PulseAudio daemon."
|
||||
msgstr "PulseAudio arka plan programı durdurulamadı."
|
||||
msgstr "PulseAudio art alan hizmeti durdurulamadı."
|
||||
|
||||
#: src/utils/pacmd.c:181
|
||||
msgid "Daemon not responding."
|
||||
msgstr "Arka plan programı yanıt vermiyor."
|
||||
msgstr "Art alan hizmeti yanıt vermiyor."
|
||||
|
||||
#: src/utils/pacmd.c:213 src/utils/pacmd.c:322 src/utils/pacmd.c:340
|
||||
#, c-format
|
||||
|
|
@ -3330,12 +3332,11 @@ 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österir "
|
||||
"(öntanımlı)\n"
|
||||
" -e X11 ekranına bağlı yerel PulseAudio verilerini dışa aktarır\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"
|
||||
" -i X11 ekranından PulseAudio verilerini yerel çevresel değişkenlere ve "
|
||||
"çerez dosyalarına aktarır.\n"
|
||||
" -r X11 ekranından PulseAudio verilerini kaldırır\n"
|
||||
"çerez dosyalarına aktar\n"
|
||||
" -r X11 ekranından PulseAudio verilerini kaldı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-05-16 23:56+0300\n"
|
||||
"POT-Creation-Date: 2022-06-18 09:49+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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "Тунель для %s@%s"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "Тунель до %s/%s"
|
||||
|
|
@ -1601,11 +1601,11 @@ msgstr ""
|
|||
msgid "Invalid log target."
|
||||
msgstr "Некоректна адреса файла журналу."
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "Вбудоване аудіо"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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-05-16 23:56+0300\n"
|
||||
"PO-Revision-Date: 2021-12-04 09:16+0000\n"
|
||||
"Last-Translator: Lv Genggeng <lvgenggeng@uniontech.com>\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"
|
||||
"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 4.9.1\n"
|
||||
"X-Generator: Weblate 5.3\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:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, 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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s 的通道"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, 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:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "内置音频"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
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
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s [options]\n"
|
||||
"%s\n"
|
||||
|
|
@ -1885,6 +1885,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"%s [选项]\n"
|
||||
"%s\n"
|
||||
"\n"
|
||||
" -h, --help 显示此帮助\n"
|
||||
" --version 显示版本\n"
|
||||
"\n"
|
||||
|
|
@ -1897,21 +1898,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,16 +9,17 @@ 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-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"
|
||||
"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"
|
||||
"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
|
||||
|
|
@ -1083,8 +1084,8 @@ msgstr ""
|
|||
"sink> format=<取樣格式> rate=<取樣率> channels=<聲道數> channel_map=<聲道對應"
|
||||
"表> autoloaded=<設定此模組是否正被自動載入> use_volume_sharing=<yes 或 no> "
|
||||
|
||||
#: src/modules/module-equalizer-sink.c:1094
|
||||
#: src/modules/module-equalizer-sink.c:1217
|
||||
#: src/modules/module-equalizer-sink.c:1097
|
||||
#: src/modules/module-equalizer-sink.c:1220
|
||||
#, c-format
|
||||
msgid "FFT based equalizer on %s"
|
||||
msgstr "FFT 基礎等化器於 %s"
|
||||
|
|
@ -1148,14 +1149,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:356
|
||||
#: src/modules/module-tunnel-source-new.c:342
|
||||
#: src/modules/module-tunnel-sink-new.c:370
|
||||
#: src/modules/module-tunnel-source-new.c:354
|
||||
#, c-format
|
||||
msgid "Tunnel for %s@%s"
|
||||
msgstr "%s@%s 的穿隧道"
|
||||
|
||||
#: src/modules/module-tunnel-sink-new.c:697
|
||||
#: src/modules/module-tunnel-source-new.c:668
|
||||
#: src/modules/module-tunnel-sink-new.c:715
|
||||
#: src/modules/module-tunnel-source-new.c:684
|
||||
#, c-format
|
||||
msgid "Tunnel to %s/%s"
|
||||
msgstr "前往 %s/%s 的穿隧道"
|
||||
|
|
@ -1501,11 +1502,11 @@ msgstr "試圖開啟目標檔「%s」、「%s.1」、「%s.2」...「%s.%d」,
|
|||
msgid "Invalid log target."
|
||||
msgstr "無效的紀錄目標。"
|
||||
|
||||
#: src/pulsecore/sink.c:3600
|
||||
#: src/pulsecore/sink.c:3609
|
||||
msgid "Built-in Audio"
|
||||
msgstr "內部音效"
|
||||
|
||||
#: src/pulsecore/sink.c:3605
|
||||
#: src/pulsecore/sink.c:3614
|
||||
msgid "Modem"
|
||||
msgstr "數據機"
|
||||
|
||||
|
|
@ -2751,11 +2752,11 @@ msgstr ""
|
|||
|
||||
#: src/utils/pactl.c:1711 src/utils/pactl.c:1760
|
||||
msgid "list-handlers message response could not be parsed correctly"
|
||||
msgstr ""
|
||||
msgstr "無法正確解析 list-handlers 訊息回應"
|
||||
|
||||
#: src/utils/pactl.c:1718
|
||||
msgid "list-handlers message response is not a JSON array"
|
||||
msgstr ""
|
||||
msgstr "list-handlers 訊息回應內容不是 JSON 陣列"
|
||||
|
||||
#: src/utils/pactl.c:1729
|
||||
#, c-format
|
||||
|
|
|
|||
|
|
@ -17,7 +17,14 @@ print_map_file() {
|
|||
echo "};"
|
||||
}
|
||||
|
||||
TARGET_FILE=$1
|
||||
shift
|
||||
print_def_file() {
|
||||
echo "EXPORTS"
|
||||
ctags -I ${CTAGS_IDENTIFIER_LIST} -f - --c-kinds=p "$@" | awk '/^pa_/ && !/(^pa_glib_|^pa_simple_)/ { print $1 }' | sort
|
||||
}
|
||||
|
||||
cd "${MESON_SOURCE_ROOT}/${MESON_SUBDIR}" && print_map_file "$@" > ${TARGET_FILE}
|
||||
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}
|
||||
|
|
|
|||
|
|
@ -116,12 +116,13 @@ _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 set-default-sink
|
||||
set-sink-port set-default-source set-source-port set-sink-volume
|
||||
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
|
||||
set-source-volume set-sink-input-volume set-source-output-volume
|
||||
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)
|
||||
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)
|
||||
|
||||
_init_completion -n = || return
|
||||
preprev=${words[$cword-2]}
|
||||
|
|
@ -186,6 +187,8 @@ _pactl() {
|
|||
|
||||
remove-sample) ;; # TODO
|
||||
|
||||
get-default*) ;;
|
||||
|
||||
load-module)
|
||||
comps=$(__all_modules)
|
||||
COMPREPLY=($(compgen -W '${comps[*]}' -- "$cur"))
|
||||
|
|
@ -500,7 +503,7 @@ _pulseaudio()
|
|||
--start -k --kill --check --system= -D --daemonize= --fail= --high-priority=
|
||||
--realtime= --disallow-module-loading= --disallow-exit= --exit-idle-time=
|
||||
--scache-idle-time= --log-level= -v --log-target= --log-meta= --log-time=
|
||||
--log-backtrace= -p --dl-search-path= --resample-method= --use-pit-file=
|
||||
--log-backtrace= -p --dl-search-path= --resample-method= --use-pid-file=
|
||||
--no-cpu-limit= --disable-shm= --enable-memfd= -L --load= -F --file= -C -n'
|
||||
_init_completion -n = || return
|
||||
|
||||
|
|
|
|||
|
|
@ -18,10 +18,12 @@ _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');;
|
||||
|
|
@ -257,16 +259,22 @@ _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'
|
||||
|
|
@ -492,11 +500,15 @@ _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(sysconfdir, 'dbus-1', 'system.d')
|
||||
install_dir : join_paths(datadir, 'dbus-1', 'system.d')
|
||||
)
|
||||
endif
|
||||
|
||||
|
|
|
|||
|
|
@ -182,9 +182,14 @@ if host_machine.system() == 'windows'
|
|||
else
|
||||
libpulsecommon_sources += [
|
||||
'pulsecore/mutex-posix.c',
|
||||
'pulsecore/semaphore-posix.c',
|
||||
'pulsecore/thread-posix.c'
|
||||
'pulsecore/poll-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
|
||||
|
||||
|
|
@ -205,7 +210,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,
|
||||
platform_dep, platform_socket_dep, execinfo_dep, libatomic_ops_dep,
|
||||
],
|
||||
implicit_include_directories : false)
|
||||
|
||||
|
|
|
|||
|
|
@ -175,6 +175,9 @@ 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,41 +2851,44 @@ static int path_verify(pa_alsa_path *p) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static char *get_path_config_path(const char *paths_dir, const char *fname) {
|
||||
char *path_config_path;
|
||||
static char *get_data_path(const char *data_dir, const char *data_type, const char *fname) {
|
||||
char *result;
|
||||
char *dir;
|
||||
char *data_home;
|
||||
pa_dynarray *data_dirs;
|
||||
|
||||
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;
|
||||
if (data_dir) {
|
||||
result = pa_maybe_prefix_path(fname, data_dir);
|
||||
if (access(result, R_OK) == 0)
|
||||
return result;
|
||||
else
|
||||
pa_xfree(path_config_path);
|
||||
pa_xfree(result);
|
||||
}
|
||||
|
||||
#ifdef HAVE_RUNNING_FROM_BUILD_TREE
|
||||
if (pa_run_from_build_tree()) {
|
||||
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;
|
||||
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;
|
||||
else
|
||||
pa_xfree(path_config_path);
|
||||
pa_xfree(result);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pa_get_data_home_dir(&data_home) == 0) {
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "paths", data_home);
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "%s", data_home, data_type);
|
||||
pa_xfree(data_home);
|
||||
|
||||
path_config_path = pa_maybe_prefix_path(fname, dir);
|
||||
result = pa_maybe_prefix_path(fname, dir);
|
||||
pa_xfree(dir);
|
||||
|
||||
if (access(path_config_path, R_OK) == 0)
|
||||
return path_config_path;
|
||||
if (access(result, R_OK) == 0)
|
||||
return result;
|
||||
else
|
||||
pa_xfree(path_config_path);
|
||||
pa_xfree(result);
|
||||
}
|
||||
|
||||
if (pa_get_data_dirs(&data_dirs) == 0) {
|
||||
|
|
@ -2893,24 +2896,27 @@ static char *get_path_config_path(const char *paths_dir, const char *fname) {
|
|||
const char *n;
|
||||
|
||||
PA_DYNARRAY_FOREACH(n, data_dirs, idx) {
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "paths", n);
|
||||
path_config_path = pa_maybe_prefix_path(fname, dir);
|
||||
dir = pa_sprintf_malloc("%s" PA_PATH_SEP "alsa-mixer" PA_PATH_SEP "%s", n, data_type);
|
||||
result = pa_maybe_prefix_path(fname, dir);
|
||||
pa_xfree(dir);
|
||||
|
||||
if (access(path_config_path, R_OK) == 0) {
|
||||
if (access(result, R_OK) == 0) {
|
||||
pa_dynarray_free(data_dirs);
|
||||
return path_config_path;
|
||||
return result;
|
||||
}
|
||||
else {
|
||||
pa_xfree(path_config_path);
|
||||
pa_xfree(result);
|
||||
}
|
||||
}
|
||||
|
||||
pa_dynarray_free(data_dirs);
|
||||
}
|
||||
|
||||
path_config_path = pa_maybe_prefix_path(fname, PA_ALSA_PATHS_DIR);
|
||||
return path_config_path;
|
||||
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;
|
||||
}
|
||||
|
||||
pa_alsa_path* pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa_direction_t direction) {
|
||||
|
|
@ -2977,7 +2983,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_path_config_path(paths_dir, fname);
|
||||
fn = get_data_path(paths_dir, "paths", fname);
|
||||
|
||||
pa_log_info("Loading path config: %s", fn);
|
||||
|
||||
|
|
@ -4971,11 +4977,9 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel
|
|||
if (!fname)
|
||||
fname = "default.conf";
|
||||
|
||||
fn = pa_maybe_prefix_path(fname,
|
||||
#ifdef HAVE_RUNNING_FROM_BUILD_TREE
|
||||
pa_run_from_build_tree() ? PA_SRCDIR "/modules/alsa/mixer/profile-sets/" :
|
||||
#endif
|
||||
PA_ALSA_PROFILE_SETS_DIR);
|
||||
fn = get_data_path(NULL, "profile-sets", fname);
|
||||
|
||||
pa_log_info("Loading profile set: %s", fn);
|
||||
|
||||
r = pa_config_parse(fn, NULL, items, NULL, false, ps);
|
||||
pa_xfree(fn);
|
||||
|
|
@ -5074,7 +5078,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, exact_channels);
|
||||
&try_buffer_size, 0, NULL, NULL, 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,6 +342,9 @@ 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, true);
|
||||
return pa_alsa_ucm_set_port(u->ucm_context, p);
|
||||
}
|
||||
|
||||
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, true) < 0)
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->sink->active_port) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -2527,7 +2527,9 @@ 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, mapping)))
|
||||
&b, &d,
|
||||
&u->supported_formats, &u->supported_rates,
|
||||
mapping)))
|
||||
goto fail;
|
||||
|
||||
} else if ((dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
|
||||
|
|
@ -2541,7 +2543,9 @@ 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, profile_set, &mapping)))
|
||||
&b, &d,
|
||||
&u->supported_formats, &u->supported_rates,
|
||||
profile_set, &mapping)))
|
||||
goto fail;
|
||||
|
||||
} else {
|
||||
|
|
@ -2552,7 +2556,9 @@ 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, false)))
|
||||
&b, &d,
|
||||
&u->supported_formats, &u->supported_rates,
|
||||
false)))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -2598,13 +2604,11 @@ 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, false);
|
||||
return pa_alsa_ucm_set_port(u->ucm_context, p);
|
||||
}
|
||||
|
||||
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, false) < 0)
|
||||
if (pa_alsa_ucm_set_port(u->ucm_context, u->source->active_port) < 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, mapping)))
|
||||
&b, &d, &u->supported_formats, &u->supported_rates, 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, profile_set, &mapping)))
|
||||
&b, &d, &u->supported_formats, &u->supported_rates, 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, false)))
|
||||
&b, &d, &u->supported_formats, &u->supported_rates, false)))
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
@ -2279,13 +2279,11 @@ 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,12 +140,13 @@ 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, const char *new_profile, const char *old_profile);
|
||||
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_get_verb(snd_use_case_mgr_t *uc_mgr, const char *verb_name, const char *verb_desc, pa_alsa_ucm_verb **p_verb);
|
||||
|
||||
|
|
@ -157,14 +158,14 @@ void pa_alsa_ucm_add_ports(
|
|||
pa_card *card,
|
||||
snd_pcm_t *pcm_handle,
|
||||
bool ignore_dB);
|
||||
void pa_alsa_ucm_add_ports_combination(
|
||||
void pa_alsa_ucm_add_port(
|
||||
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, bool is_sink);
|
||||
int pa_alsa_ucm_set_port(pa_alsa_ucm_mapping_context *context, pa_device_port *port);
|
||||
|
||||
void pa_alsa_ucm_free(pa_alsa_ucm_config *ucm);
|
||||
void pa_alsa_ucm_mapping_context_free(pa_alsa_ucm_mapping_context *context);
|
||||
|
|
@ -221,11 +222,8 @@ struct pa_alsa_ucm_modifier {
|
|||
|
||||
pa_proplist *proplist;
|
||||
|
||||
int n_confdev;
|
||||
int n_suppdev;
|
||||
|
||||
const char **conflicting_devices;
|
||||
const char **supported_devices;
|
||||
pa_idxset *conflicting_devices;
|
||||
pa_idxset *supported_devices;
|
||||
|
||||
pa_direction_t action_direction;
|
||||
|
||||
|
|
@ -264,21 +262,23 @@ struct pa_alsa_ucm_mapping_context {
|
|||
pa_alsa_ucm_config *ucm;
|
||||
pa_direction_t direction;
|
||||
|
||||
pa_idxset *ucm_devices;
|
||||
pa_idxset *ucm_modifiers;
|
||||
pa_alsa_ucm_device *ucm_device;
|
||||
pa_alsa_ucm_modifier *ucm_modifier;
|
||||
};
|
||||
|
||||
struct pa_alsa_ucm_profile_context {
|
||||
pa_alsa_ucm_verb *verb;
|
||||
};
|
||||
|
||||
struct pa_alsa_ucm_port_data {
|
||||
pa_alsa_ucm_config *ucm;
|
||||
pa_device_port *core_port;
|
||||
|
||||
/* A single port will be associated with multiple devices if it represents
|
||||
* a combination of devices. */
|
||||
pa_dynarray *devices; /* pa_alsa_ucm_device */
|
||||
pa_alsa_ucm_device *device;
|
||||
|
||||
/* profile name -> pa_alsa_path for volume control */
|
||||
/* verb name -> pa_alsa_path for volume control */
|
||||
pa_hashmap *paths;
|
||||
/* Current path, set when activating profile */
|
||||
/* Current path, set when activating verb */
|
||||
pa_alsa_path *path;
|
||||
|
||||
/* ELD info */
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
#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"
|
||||
|
|
@ -522,6 +523,8 @@ 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) {
|
||||
|
||||
|
|
@ -560,6 +563,8 @@ 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) {
|
||||
|
|
@ -587,6 +592,8 @@ 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) {
|
||||
|
|
@ -611,6 +618,8 @@ 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);
|
||||
|
||||
|
|
@ -631,6 +640,8 @@ 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;
|
||||
|
|
@ -660,6 +671,8 @@ 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)
|
||||
|
|
@ -683,6 +696,8 @@ 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;
|
||||
|
|
@ -710,6 +725,12 @@ 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,
|
||||
|
|
@ -783,6 +804,8 @@ 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;
|
||||
|
|
@ -804,6 +827,8 @@ 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);
|
||||
|
|
@ -1406,13 +1431,31 @@ 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,
|
||||
384000 };
|
||||
352800, 384000,
|
||||
705600, 768000 };
|
||||
bool supported[PA_ELEMENTSOF(all_rates)] = { false, };
|
||||
snd_pcm_hw_params_t *hwparams;
|
||||
unsigned int i, j, n, *rates = NULL;
|
||||
|
|
@ -1454,39 +1497,40 @@ 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_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 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 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,
|
||||
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,
|
||||
};
|
||||
bool supported[PA_ELEMENTSOF(all_formats)] = {
|
||||
false,
|
||||
|
|
@ -1504,7 +1548,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, all_formats[i]) == 0) {
|
||||
if (snd_pcm_hw_params_test_format(pcm, hwparams, format_trans_to_pcm[all_formats[i]]) == 0) {
|
||||
supported[i] = true;
|
||||
n++;
|
||||
}
|
||||
|
|
@ -1515,7 +1559,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++] = format_trans_to_pa[all_formats[i]];
|
||||
formats[j++] = all_formats[i];
|
||||
}
|
||||
|
||||
formats[j] = PA_SAMPLE_MAX;
|
||||
|
|
@ -1523,7 +1567,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_pa[formats[0]])) < 0) {
|
||||
if ((ret = snd_pcm_hw_params_set_format(pcm, hwparams, format_trans_to_pcm[formats[0]])) < 0) {
|
||||
pa_log_debug("snd_pcm_hw_params_set_format() failed: %s", pa_alsa_strerror(ret));
|
||||
pa_xfree(formats);
|
||||
return NULL;
|
||||
|
|
@ -1614,14 +1658,16 @@ 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 device,
|
||||
unsigned int subdevice) {
|
||||
snd_mixer_elem_t *elem;
|
||||
|
||||
for (elem = snd_mixer_first_elem(mixer); elem; elem = snd_mixer_elem_next(elem)) {
|
||||
snd_hctl_elem_t *helem;
|
||||
snd_hctl_elem_t **_helem, *helem;
|
||||
if (snd_mixer_elem_get_type(elem) != SND_MIXER_ELEM_PULSEAUDIO)
|
||||
continue;
|
||||
helem = snd_mixer_elem_get_private(elem);
|
||||
_helem = snd_mixer_elem_get_private(elem);
|
||||
helem = *_helem;
|
||||
if (snd_hctl_elem_get_interface(helem) != iface)
|
||||
continue;
|
||||
if (!pa_streq(snd_hctl_elem_get_name(helem), name))
|
||||
|
|
@ -1630,17 +1676,19 @@ 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);
|
||||
return pa_alsa_mixer_find(mixer, SND_CTL_ELEM_IFACE_CARD, alsa_id->name, alsa_id->index, device, 0);
|
||||
}
|
||||
|
||||
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);
|
||||
return pa_alsa_mixer_find(mixer, SND_CTL_ELEM_IFACE_PCM, name, 0, device, 0);
|
||||
}
|
||||
|
||||
static int mixer_class_compare(const snd_mixer_elem_t *c1, const snd_mixer_elem_t *c2)
|
||||
|
|
@ -1649,31 +1697,79 @@ 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);
|
||||
if (mask & SND_CTL_EVENT_MASK_ADD) {
|
||||
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) {
|
||||
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;
|
||||
|
||||
/* 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;
|
||||
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;
|
||||
}
|
||||
|
||||
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 ((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 (!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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ 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 */
|
||||
|
||||
|
|
@ -82,6 +84,8 @@ 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 */
|
||||
|
|
@ -96,6 +100,8 @@ 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 */
|
||||
|
|
@ -111,6 +117,8 @@ 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);
|
||||
|
|
|
|||
91
src/modules/alsa/mixer/profile-sets/asus-xonar-se.conf
Normal file
91
src/modules/alsa/mixer/profile-sets/asus-xonar-se.conf
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# 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_ports_combination(NULL, &m->ucm_context, true, ports, cp, u->core);
|
||||
pa_alsa_ucm_add_port(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_ports_combination(NULL, &m->ucm_context, false, ports, cp, u->core);
|
||||
pa_alsa_ucm_add_port(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,8 +249,7 @@ 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 ? nd->profile->name : NULL,
|
||||
od->profile ? od->profile->name : NULL) < 0) {
|
||||
if (pa_alsa_ucm_set_profile(&u->ucm, c, nd->profile, od->profile) < 0) {
|
||||
ret = -1;
|
||||
goto finish;
|
||||
}
|
||||
|
|
@ -302,7 +301,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->name, NULL) < 0) {
|
||||
if (pa_alsa_ucm_set_profile(ucm, u->card, d->profile, NULL) < 0) {
|
||||
pa_log("Failed to set ucm profile %s", d->profile->name);
|
||||
return;
|
||||
}
|
||||
|
|
@ -371,7 +370,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);
|
||||
snd_hctl_elem_t **_elem = snd_mixer_elem_get_private(melem), *elem;
|
||||
snd_ctl_elem_value_t *elem_value;
|
||||
bool plugged_in;
|
||||
void *state;
|
||||
|
|
@ -381,6 +380,8 @@ 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
|
||||
|
|
@ -563,13 +564,18 @@ 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);
|
||||
int device = snd_hctl_elem_get_device(elem);
|
||||
snd_hctl_elem_t **_elem = snd_mixer_elem_get_private(melem), *elem;
|
||||
int device;
|
||||
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,9 +42,6 @@ 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,7 +556,6 @@ 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,
|
||||
|
|
@ -580,7 +579,6 @@ 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,
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#endif
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <pulsecore/log.h>
|
||||
#include <pulsecore/macro.h>
|
||||
|
|
@ -82,7 +83,7 @@ fail:
|
|||
static GstCaps *gst_create_caps_from_sample_spec(const pa_sample_spec *ss) {
|
||||
gchar *sample_format;
|
||||
GstCaps *caps;
|
||||
int channel_mask;
|
||||
uint64_t channel_mask;
|
||||
|
||||
switch (ss->format) {
|
||||
case PA_SAMPLE_S16LE:
|
||||
|
|
|
|||
|
|
@ -433,7 +433,6 @@ 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,
|
||||
|
|
@ -456,7 +455,6 @@ 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,
|
||||
|
|
@ -479,7 +477,6 @@ 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,6 +39,8 @@
|
|||
#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 */
|
||||
|
|
@ -54,6 +56,12 @@ 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) {
|
||||
|
|
@ -108,6 +116,24 @@ 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;
|
||||
|
|
@ -136,6 +162,23 @@ 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;
|
||||
|
||||
|
|
@ -326,6 +369,46 @@ 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;
|
||||
|
||||
|
|
@ -527,6 +610,85 @@ 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;
|
||||
|
|
@ -684,6 +846,79 @@ 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;
|
||||
|
||||
|
|
@ -709,6 +944,12 @@ 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);
|
||||
|
|
@ -722,6 +963,25 @@ 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);
|
||||
|
|
@ -742,6 +1002,28 @@ 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);
|
||||
|
|
@ -752,6 +1034,15 @@ 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;
|
||||
|
|
@ -860,6 +1151,72 @@ 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;
|
||||
|
||||
|
|
@ -924,9 +1281,146 @@ 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,
|
||||
|
|
@ -964,7 +1458,6 @@ 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,
|
||||
|
|
@ -989,7 +1482,6 @@ 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,
|
||||
|
|
@ -1014,7 +1506,6 @@ 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,
|
||||
|
|
@ -1036,3 +1527,49 @@ 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,6 +52,7 @@ 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. */
|
||||
|
|
@ -69,6 +70,7 @@ 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,15 +38,25 @@
|
|||
|
||||
#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);
|
||||
};
|
||||
|
|
@ -57,6 +67,7 @@ struct transport_data {
|
|||
int sco_fd;
|
||||
pa_io_event *sco_io;
|
||||
pa_mainloop_api *mainloop;
|
||||
pa_bluetooth_backend *backend;
|
||||
};
|
||||
|
||||
struct hfp_config {
|
||||
|
|
@ -97,6 +108,20 @@ 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 */
|
||||
|
|
@ -589,11 +614,13 @@ 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;
|
||||
int indicator, val;
|
||||
char str[5];
|
||||
struct transport_data *trd = t->userdata;
|
||||
pa_bluetooth_backend *b = trd->backend;
|
||||
int indicator, mode, val;
|
||||
char *str;
|
||||
const char *r;
|
||||
size_t len;
|
||||
const char *state;
|
||||
const char *state = NULL;
|
||||
|
||||
/* first-time initialize selected codec to CVSD */
|
||||
if (c->selected_codec == 0)
|
||||
|
|
@ -608,18 +635,47 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
|
|||
c->state = 1;
|
||||
|
||||
return true;
|
||||
} else if (sscanf(buf, "AT+BAC=%3s", str) == 1) {
|
||||
} 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=")) {
|
||||
c->support_msbc = false;
|
||||
|
||||
state = NULL;
|
||||
|
||||
/* check if codec id 2 (mSBC) is in the list of supported codecs */
|
||||
while ((r = pa_split_in_place(str, ",", &len, &state))) {
|
||||
str = pa_xstrdup(buf + 7);
|
||||
while ((r = pa_split_in_place(str, ",\r\n", &len, &state))) {
|
||||
if (len == 1 && r[0] == '2') {
|
||||
c->support_msbc = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pa_xfree(str);
|
||||
|
||||
c->support_codec_negotiation = true;
|
||||
|
||||
|
|
@ -633,24 +689,48 @@ 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=?")) {
|
||||
/* 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))");
|
||||
/* 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))");
|
||||
}
|
||||
c->state = 2;
|
||||
|
||||
return true;
|
||||
} else if (c->state == 2 && pa_startswith(buf, "AT+CIND?")) {
|
||||
rfcomm_write_response(fd, "+CIND: 0,0,0,0");
|
||||
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");
|
||||
c->state = 3;
|
||||
|
||||
return true;
|
||||
} else if ((c->state == 2 || c->state == 3) && pa_startswith(buf, "AT+CMER=")) {
|
||||
rfcomm_write_response(fd, "OK");
|
||||
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;
|
||||
}
|
||||
|
||||
if (c->support_codec_negotiation) {
|
||||
if (c->support_msbc && pa_bluetooth_discovery_get_enable_msbc(t->device->discovery)) {
|
||||
|
|
@ -738,8 +818,62 @@ 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);
|
||||
|
|
@ -755,111 +889,130 @@ static void rfcomm_io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_i
|
|||
}
|
||||
|
||||
if (events & PA_IO_EVENT_INPUT) {
|
||||
char buf[512];
|
||||
char rbuf[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, buf, 511, NULL);
|
||||
len = pa_read(fd, rbuf, 511, NULL);
|
||||
if (len < 0) {
|
||||
pa_log_error("RFCOMM read error: %s", pa_cstrerror(errno));
|
||||
goto fail;
|
||||
}
|
||||
buf[len] = 0;
|
||||
pa_log_debug("RFCOMM << %s", buf);
|
||||
rbuf[len] = 0;
|
||||
pa_log_debug("RFCOMM << %s", rbuf);
|
||||
|
||||
/* 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;
|
||||
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;
|
||||
}
|
||||
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);
|
||||
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;
|
||||
|
||||
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;
|
||||
} 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;
|
||||
}
|
||||
}
|
||||
if (!do_reply)
|
||||
|
||||
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");
|
||||
} 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;
|
||||
}
|
||||
do_reply = false;
|
||||
}
|
||||
|
||||
if (do_reply)
|
||||
rfcomm_write_response(fd, "OK");
|
||||
if (do_reply)
|
||||
rfcomm_write_response(fd, "OK");
|
||||
|
||||
if (buf[0] == '\r') /* in case it is the command with format \r\nCOMMAND\r\n, skip the starting \r */
|
||||
buf = buf + 1;
|
||||
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
@ -1022,6 +1175,7 @@ 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;
|
||||
|
|
@ -1188,6 +1342,7 @@ 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");
|
||||
|
||||
|
|
@ -1211,6 +1366,10 @@ 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.");
|
||||
|
||||
|
|
@ -1220,6 +1379,16 @@ 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;
|
||||
}
|
||||
|
||||
|
|
@ -1231,12 +1400,18 @@ 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,6 +1202,13 @@ 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,12 +62,14 @@ 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 */
|
||||
|
|
@ -245,4 +247,5 @@ 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,6 +26,9 @@ 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 */
|
||||
|
|
@ -64,4 +67,7 @@ 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,6 +16,8 @@ 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')
|
||||
|
|
@ -35,7 +37,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],
|
||||
dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, bluez_dep, dbus_dep, sbc_dep, libintl_dep, bluez5_gst_dep, bluez5_gstapp_dep, libm_dep],
|
||||
install : true,
|
||||
install_rpath : privlibdir,
|
||||
install_dir : modlibexecdir,
|
||||
|
|
|
|||
|
|
@ -116,6 +116,8 @@ 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;
|
||||
|
|
@ -392,6 +394,8 @@ 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;
|
||||
}
|
||||
|
||||
|
|
@ -535,6 +539,7 @@ 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;
|
||||
}
|
||||
|
||||
|
|
@ -961,6 +966,12 @@ 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.
|
||||
|
|
@ -1029,6 +1040,12 @@ 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:
|
||||
|
|
@ -1043,7 +1060,6 @@ 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;
|
||||
|
|
@ -1198,6 +1214,12 @@ 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.
|
||||
|
|
@ -1322,6 +1344,7 @@ 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);
|
||||
|
|
@ -1334,15 +1357,18 @@ static int transport_config(struct userdata *u) {
|
|||
/* reset encoder buffer contents */
|
||||
u->encoder_buffer_used = 0;
|
||||
|
||||
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);
|
||||
/* 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 (!u->encoder_info)
|
||||
return -1;
|
||||
}
|
||||
|
||||
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 ((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 (!u->decoder_info) {
|
||||
if (u->encoder_info) {
|
||||
|
|
@ -1400,11 +1426,11 @@ static int init_profile(struct userdata *u) {
|
|||
|
||||
pa_assert(u->transport);
|
||||
|
||||
if (get_profile_direction (u->profile) & PA_DIRECTION_OUTPUT)
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT) || u->bt_codec->support_backchannel)
|
||||
if (add_sink(u) < 0)
|
||||
r = -1;
|
||||
|
||||
if (get_profile_direction (u->profile) & PA_DIRECTION_INPUT)
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_INPUT) || u->bt_codec->support_backchannel)
|
||||
if (add_source(u) < 0)
|
||||
r = -1;
|
||||
|
||||
|
|
@ -1523,8 +1549,8 @@ static void thread_func(void *userdata) {
|
|||
writable = true;
|
||||
|
||||
/* If we have a source, we let the source determine the timing
|
||||
* for the sink */
|
||||
if (have_source) {
|
||||
* for the sink unless peer has not sent any data yet */
|
||||
if (have_source && u->read_index > 0) {
|
||||
|
||||
/* If the stream is writable, send some data if necessary */
|
||||
if (writable) {
|
||||
|
|
@ -1605,13 +1631,15 @@ static void thread_func(void *userdata) {
|
|||
skip_bytes -= bytes_to_render;
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
}
|
||||
pa_gettimeofday(&tv_last_output_rate_change);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1635,6 +1663,12 @@ 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;
|
||||
}
|
||||
|
|
@ -1654,7 +1688,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->write_memchunk.memblock == NULL) {
|
||||
if ((get_profile_direction(u->profile) & PA_DIRECTION_OUTPUT || u->bt_codec->support_backchannel) && 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) {
|
||||
|
|
@ -1886,10 +1920,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 (!(get_profile_direction(i) & direction))
|
||||
if (!(transport = u->device->transports[i]))
|
||||
continue;
|
||||
|
||||
if (!(transport = u->device->transports[i]))
|
||||
if (!(get_profile_direction(i) & direction || (transport->bt_codec && transport->bt_codec->support_backchannel)))
|
||||
continue;
|
||||
|
||||
switch(transport->state) {
|
||||
|
|
@ -2729,6 +2763,30 @@ 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;
|
||||
|
|
@ -2810,6 +2868,8 @@ 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;
|
||||
|
||||
|
|
@ -2873,6 +2933,9 @@ 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);
|
||||
|
||||
|
|
|
|||
300
src/modules/bluetooth/upower.c
Normal file
300
src/modules/bluetooth/upower.c
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
/***
|
||||
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);
|
||||
}
|
||||
|
||||
39
src/modules/bluetooth/upower.h
Normal file
39
src/modules/bluetooth/upower.h
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#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,19 +3,28 @@
|
|||
# even conditional ones).
|
||||
|
||||
# This library requires a symbol from module-echo-cancel, hence we need
|
||||
# '-Wl,--unresolved-symbols=ignore-in-object-files' otherwise it fails
|
||||
# '-Wl,--unresolved-symbols=ignore-in-object-files', or
|
||||
# '-Wl,-undefined,dynamic_lookup' on macOS, 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, '-Wl,--unresolved-symbols=ignore-in-object-files'],
|
||||
link_args : [nodelete_link_args, ignore_unresolved_symbols_link_args],
|
||||
install : true,
|
||||
install_rpath : privlibdir,
|
||||
install_dir : modlibexecdir,
|
||||
|
|
|
|||
|
|
@ -2370,8 +2370,6 @@ 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
|
||||
|
||||
Contributor: Arun Raghavan <mail@arunraghavan.net>
|
||||
2020 Arun Raghavan <arun@asymptotic.io>
|
||||
2020 Eero Nurkkala <eero.nurkkala@offcode.fi>
|
||||
|
||||
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,80 +34,47 @@ PA_C_DECL_BEGIN
|
|||
#include "echo-cancel.h"
|
||||
PA_C_DECL_END
|
||||
|
||||
#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 WEBRTC_APM_DEBUG_DUMP 0
|
||||
|
||||
#include <modules/audio_processing/include/audio_processing.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 true
|
||||
#define DEFAULT_EXTENDED_FILTER false
|
||||
#define DEFAULT_INTELLIGIBILITY_ENHANCER false
|
||||
#define DEFAULT_EXPERIMENTAL_AGC false
|
||||
#define DEFAULT_VAD false
|
||||
#define DEFAULT_AGC_START_VOLUME 85
|
||||
#define DEFAULT_BEAMFORMING false
|
||||
#define DEFAULT_TRACE false
|
||||
#define DEFAULT_POSTAMP_ENABLE false
|
||||
#define DEFAULT_POSTAMP_GAIN_DB 0
|
||||
#define DEFAULT_PREAMP_ENABLE false
|
||||
#define DEFAULT_PREAMP_GAIN_DB 0
|
||||
|
||||
#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[] = {
|
||||
"high_pass_filter",
|
||||
"noise_suppression",
|
||||
"agc_start_volume",
|
||||
"analog_gain_control",
|
||||
"digital_gain_control",
|
||||
"high_pass_filter",
|
||||
"mobile",
|
||||
"routing_mode",
|
||||
"comfort_noise",
|
||||
"drift_compensation",
|
||||
"noise_suppression",
|
||||
"post_amplifier",
|
||||
"post_amplifier_gain",
|
||||
"pre_amplifier",
|
||||
"pre_amplifier_gain",
|
||||
"transient_noise_suppression",
|
||||
"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;
|
||||
|
|
@ -120,8 +87,7 @@ 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,
|
||||
bool beamforming)
|
||||
pa_sample_spec *out_ss, pa_channel_map *out_map)
|
||||
{
|
||||
rec_ss->format = PA_SAMPLE_FLOAT32NE;
|
||||
play_ss->format = PA_SAMPLE_FLOAT32NE;
|
||||
|
|
@ -139,110 +105,22 @@ 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 = NULL;
|
||||
webrtc::AudioProcessing *apm = webrtc::AudioProcessingBuilder().Create();
|
||||
webrtc::ProcessingConfig pconfig;
|
||||
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;
|
||||
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;
|
||||
pa_modargs *ma;
|
||||
bool trace = false;
|
||||
|
||||
if (!(ma = pa_modargs_new(args, valid_modargs))) {
|
||||
pa_log("Failed to parse submodule arguments.");
|
||||
|
|
@ -261,6 +139,12 @@ 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");
|
||||
|
|
@ -278,6 +162,36 @@ 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");
|
||||
|
|
@ -285,33 +199,6 @@ 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) {
|
||||
|
|
@ -319,24 +206,6 @@ 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");
|
||||
|
|
@ -348,82 +217,7 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
}
|
||||
ec->params.webrtc.agc_start_volume = agc_start_volume;
|
||||
|
||||
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);
|
||||
webrtc_ec_fixate_spec(rec_ss, rec_map, play_ss, play_map, out_ss, out_map);
|
||||
|
||||
pconfig = {
|
||||
webrtc::StreamConfig(rec_ss->rate, rec_ss->channels, false), /* input stream */
|
||||
|
|
@ -436,46 +230,62 @@ 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)
|
||||
apm->high_pass_filter()->Enable(true);
|
||||
config.high_pass_filter.enabled = true;
|
||||
else
|
||||
config.high_pass_filter.enabled = false;
|
||||
|
||||
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);
|
||||
}
|
||||
config.echo_canceller.enabled = true;
|
||||
config.pipeline.multi_channel_capture = rec_ss->channels > 1;
|
||||
config.pipeline.multi_channel_render = play_ss->channels > 1;
|
||||
|
||||
if (ns) {
|
||||
apm->noise_suppression()->set_level(webrtc::NoiseSuppression::kHigh);
|
||||
apm->noise_suppression()->Enable(true);
|
||||
}
|
||||
if (!mobile)
|
||||
config.echo_canceller.mobile_mode = false;
|
||||
else
|
||||
config.echo_canceller.mobile_mode = true;
|
||||
|
||||
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 (ns)
|
||||
config.noise_suppression.enabled = true;
|
||||
else
|
||||
config.noise_suppression.enabled = false;
|
||||
|
||||
apm->gain_control()->Enable(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;
|
||||
}
|
||||
|
||||
if (vad)
|
||||
apm->voice_detection()->Enable(true);
|
||||
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;
|
||||
|
||||
ec->params.webrtc.apm = apm;
|
||||
ec->params.webrtc.rec_ss = *rec_ss;
|
||||
|
|
@ -485,6 +295,8 @@ 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++)
|
||||
|
|
@ -496,10 +308,7 @@ bool pa_webrtc_ec_init(pa_core *c, pa_echo_canceller *ec,
|
|||
fail:
|
||||
if (ma)
|
||||
pa_modargs_free(ma);
|
||||
if (ec->params.webrtc.trace_callback) {
|
||||
webrtc::Trace::ReturnTrace();
|
||||
delete ((PaWebrtcTraceCallback *) ec->params.webrtc.trace_callback);
|
||||
} if (apm)
|
||||
if (apm)
|
||||
delete apm;
|
||||
|
||||
return false;
|
||||
|
|
@ -515,12 +324,6 @@ 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) {
|
||||
|
|
@ -538,7 +341,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->gain_control()->set_stream_analog_level(old_volume);
|
||||
apm->set_stream_analog_level(old_volume);
|
||||
}
|
||||
|
||||
apm->set_stream_delay_ms(0);
|
||||
|
|
@ -553,7 +356,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->gain_control()->stream_analog_level();
|
||||
new_volume = apm->recommended_stream_analog_level();
|
||||
}
|
||||
|
||||
if (old_volume != new_volume)
|
||||
|
|
@ -564,9 +367,6 @@ 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) {
|
||||
|
|
@ -577,11 +377,6 @@ 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,15 +8,12 @@ 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' ],
|
||||
# [ 'module-coreaudio-detect', 'macosx/module-coreaudio-detect.c' ],
|
||||
# [ 'module-coreaudio-device', 'macosx/module-coreaudio-device.c' ],
|
||||
[ 'module-combine-sink', 'module-combine-sink.c', [], [], [libatomic_ops_dep] ],
|
||||
[ '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 ],
|
||||
|
|
@ -73,11 +70,21 @@ endif
|
|||
|
||||
if host_machine.system() != 'windows'
|
||||
all_modules += [
|
||||
[ 'module-rtp-recv', 'rtp/module-rtp-recv.c', [], [], [], librtp ],
|
||||
[ 'module-rtp-recv', 'rtp/module-rtp-recv.c', [], [], [libatomic_ops_dep], 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')
|
||||
|
|
@ -130,7 +137,6 @@ 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',
|
||||
|
|
@ -147,6 +153,12 @@ 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()
|
||||
|
|
@ -238,7 +250,7 @@ module_echo_cancel_sources = [
|
|||
]
|
||||
module_echo_cancel_orc_sources = []
|
||||
module_echo_cancel_flags = []
|
||||
module_echo_cancel_deps = []
|
||||
module_echo_cancel_deps = [libatomic_ops_dep]
|
||||
module_echo_cancel_libs = []
|
||||
|
||||
if get_option('adrian-aec')
|
||||
|
|
@ -293,6 +305,18 @@ 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]
|
||||
|
|
@ -310,8 +334,9 @@ 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, '-Wl,--no-undefined' ],
|
||||
link_args : [nodelete_link_args, no_undefined_args],
|
||||
link_with : extra_libs,
|
||||
name_prefix : '',
|
||||
name_suffix : module_suffix,
|
||||
implicit_include_directories : false)
|
||||
endforeach
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <pulse/rtclock.h>
|
||||
#include <pulse/timeval.h>
|
||||
|
|
@ -178,7 +179,7 @@ struct userdata {
|
|||
#ifdef USE_SMOOTHER_2
|
||||
pa_smoother_2 *smoother;
|
||||
#else
|
||||
pa_smoother *smoother;
|
||||
pa_smoother *smoother;
|
||||
#endif
|
||||
uint64_t counter;
|
||||
|
||||
|
|
@ -239,7 +240,7 @@ static uint32_t rate_controller(
|
|||
|
||||
/* Choose the rate that is nearer to base_rate */
|
||||
new_rate = new_rate_2;
|
||||
if (abs(new_rate_1 - base_rate) < abs(new_rate_2 - base_rate))
|
||||
if (fabs(new_rate_1 - base_rate) < fabs(new_rate_2 - base_rate))
|
||||
new_rate = new_rate_1;
|
||||
|
||||
return (uint32_t)(new_rate + 0.5);
|
||||
|
|
@ -1710,9 +1711,6 @@ 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;
|
||||
|
|
@ -1735,6 +1733,9 @@ 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_configured_default_sink(c, sink->name);
|
||||
pa_core_set_policy_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_configured_default_sink(c, sink->name);
|
||||
pa_core_set_policy_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_configured_default_source(c, source->name);
|
||||
pa_core_set_policy_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_configured_default_source(c, source->name);
|
||||
pa_core_set_policy_default_source(c, source->name);
|
||||
|
||||
return PA_HOOK_OK;
|
||||
}
|
||||
|
|
|
|||
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