From f32977831a0d0a76131680635b497c6ccc0bb9d8 Mon Sep 17 00:00:00 2001 From: Rafael Fontenelle Date: Sat, 18 Jul 2020 15:12:15 +0000 Subject: [PATCH 001/872] Update Brazilian Portuguese translation --- po/pt_BR.po | 542 +++++++++++++++++++++++++++++----------------------- 1 file changed, 308 insertions(+), 234 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index 82b36edae..6008f9d28 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues\n" -"POT-Creation-Date: 2020-04-20 03:32+0000\n" -"PO-Revision-Date: 2020-04-20 11:43-0300\n" +"POT-Creation-Date: 2020-06-17 15:28+0000\n" +"PO-Revision-Date: 2020-07-18 12:08-0300\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" @@ -520,173 +520,172 @@ msgstr "Sistema de som PulseAudio" #: src/daemon/pulseaudio.desktop.in:5 msgid "Start the PulseAudio Sound System" -msgstr "Iniciar o sistema de som PulseAudio" +msgstr "Inicie o sistema de som PulseAudio" -#: src/modules/alsa/alsa-mixer.c:2544 +#: src/modules/alsa/alsa-mixer.c:2621 msgid "Input" msgstr "Entrada" -#: src/modules/alsa/alsa-mixer.c:2545 +#: src/modules/alsa/alsa-mixer.c:2622 msgid "Docking Station Input" msgstr "Entrada da base de encaixe" -#: src/modules/alsa/alsa-mixer.c:2546 +#: src/modules/alsa/alsa-mixer.c:2623 msgid "Docking Station Microphone" msgstr "Microfone de estação de base de encaixe" -#: src/modules/alsa/alsa-mixer.c:2547 +#: src/modules/alsa/alsa-mixer.c:2624 msgid "Docking Station Line In" msgstr "Entrada de linha de estação de base de encaixe" -#: src/modules/alsa/alsa-mixer.c:2548 src/modules/alsa/alsa-mixer.c:2639 +#: src/modules/alsa/alsa-mixer.c:2625 src/modules/alsa/alsa-mixer.c:2716 msgid "Line In" msgstr "Entrada de linha" -#: src/modules/alsa/alsa-mixer.c:2549 src/modules/alsa/alsa-mixer.c:2633 -#: src/modules/bluetooth/module-bluez5-device.c:1788 +#: src/modules/alsa/alsa-mixer.c:2626 src/modules/alsa/alsa-mixer.c:2710 +#: src/modules/bluetooth/module-bluez5-device.c:1792 msgid "Microphone" msgstr "Microfone" -#: src/modules/alsa/alsa-mixer.c:2550 src/modules/alsa/alsa-mixer.c:2634 +#: src/modules/alsa/alsa-mixer.c:2627 src/modules/alsa/alsa-mixer.c:2711 msgid "Front Microphone" msgstr "Microfone frontal" -#: src/modules/alsa/alsa-mixer.c:2551 src/modules/alsa/alsa-mixer.c:2635 +#: src/modules/alsa/alsa-mixer.c:2628 src/modules/alsa/alsa-mixer.c:2712 msgid "Rear Microphone" msgstr "Microfone traseiro" -#: src/modules/alsa/alsa-mixer.c:2552 +#: src/modules/alsa/alsa-mixer.c:2629 msgid "External Microphone" msgstr "Microfone externo" -#: src/modules/alsa/alsa-mixer.c:2553 src/modules/alsa/alsa-mixer.c:2637 +#: src/modules/alsa/alsa-mixer.c:2630 src/modules/alsa/alsa-mixer.c:2714 msgid "Internal Microphone" msgstr "Microfone interno" -#: src/modules/alsa/alsa-mixer.c:2554 src/modules/alsa/alsa-mixer.c:2640 +#: src/modules/alsa/alsa-mixer.c:2631 src/modules/alsa/alsa-mixer.c:2717 +#: src/utils/pactl.c:258 msgid "Radio" msgstr "Rádio" -#: src/modules/alsa/alsa-mixer.c:2555 src/modules/alsa/alsa-mixer.c:2641 +#: src/modules/alsa/alsa-mixer.c:2632 src/modules/alsa/alsa-mixer.c:2718 +#: src/utils/pactl.c:259 msgid "Video" msgstr "Vídeo" # https://pt.wikipedia.org/wiki/Controle_autom%C3%A1tico_de_ganho -#: src/modules/alsa/alsa-mixer.c:2556 +#: src/modules/alsa/alsa-mixer.c:2633 msgid "Automatic Gain Control" msgstr "Controle automático de ganho" # https://pt.wikipedia.org/wiki/Controle_autom%C3%A1tico_de_ganho -#: src/modules/alsa/alsa-mixer.c:2557 +#: src/modules/alsa/alsa-mixer.c:2634 msgid "No Automatic Gain Control" msgstr "Sem controle automático de ganho" # Este contexto de Boost é "reforço" no áudio, e não "impulso". -#: src/modules/alsa/alsa-mixer.c:2558 +#: src/modules/alsa/alsa-mixer.c:2635 msgid "Boost" msgstr "Reforço" # Este contexto de Boost é "reforço" no áudio, e não "impulso". -#: src/modules/alsa/alsa-mixer.c:2559 +#: src/modules/alsa/alsa-mixer.c:2636 msgid "No Boost" msgstr "Sem reforço" -#: src/modules/alsa/alsa-mixer.c:2560 +#: src/modules/alsa/alsa-mixer.c:2637 msgid "Amplifier" msgstr "Amplificador" -#: src/modules/alsa/alsa-mixer.c:2561 +#: src/modules/alsa/alsa-mixer.c:2638 msgid "No Amplifier" msgstr "Sem amplificador" # Este contexto de Boost é "reforço" no áudio, e não "impulso". -#: src/modules/alsa/alsa-mixer.c:2562 +#: src/modules/alsa/alsa-mixer.c:2639 msgid "Bass Boost" msgstr "Reforço de graves" # Este contexto de Boost é "reforço" no áudio, e não "impulso". -#: src/modules/alsa/alsa-mixer.c:2563 +#: src/modules/alsa/alsa-mixer.c:2640 msgid "No Bass Boost" msgstr "Sem reforço de graves" -#: src/modules/alsa/alsa-mixer.c:2564 -#: src/modules/bluetooth/module-bluez5-device.c:1795 +#: src/modules/alsa/alsa-mixer.c:2641 +#: src/modules/bluetooth/module-bluez5-device.c:1800 src/utils/pactl.c:248 msgid "Speaker" msgstr "Auto-falante" -#: src/modules/alsa/alsa-mixer.c:2565 src/modules/alsa/alsa-mixer.c:2643 +#: src/modules/alsa/alsa-mixer.c:2642 src/modules/alsa/alsa-mixer.c:2720 +#: src/utils/pactl.c:249 msgid "Headphones" msgstr "Fones de ouvido" -#: src/modules/alsa/alsa-mixer.c:2632 +#: src/modules/alsa/alsa-mixer.c:2709 msgid "Analog Input" msgstr "Entrada analógica" -#: src/modules/alsa/alsa-mixer.c:2636 +#: src/modules/alsa/alsa-mixer.c:2713 msgid "Dock Microphone" msgstr "Microfone de base de encaixe" -#: src/modules/alsa/alsa-mixer.c:2638 +#: src/modules/alsa/alsa-mixer.c:2715 msgid "Headset Microphone" msgstr "Microfone de headset" -#: src/modules/alsa/alsa-mixer.c:2642 +#: src/modules/alsa/alsa-mixer.c:2719 msgid "Analog Output" msgstr "Saída analógica" -#: src/modules/alsa/alsa-mixer.c:2644 +#: src/modules/alsa/alsa-mixer.c:2721 msgid "Headphones Mono Output" msgstr "Saída analógica fones de ouvido" -#: src/modules/alsa/alsa-mixer.c:2645 -msgid "LFE on Separate Mono Output" -msgstr "Saída monofônica separada em LFE" - -#: src/modules/alsa/alsa-mixer.c:2646 +#: src/modules/alsa/alsa-mixer.c:2722 msgid "Line Out" msgstr "Saída de linha" -#: src/modules/alsa/alsa-mixer.c:2647 +#: src/modules/alsa/alsa-mixer.c:2723 msgid "Analog Mono Output" msgstr "Saída analógica monofônica" -#: src/modules/alsa/alsa-mixer.c:2648 +#: src/modules/alsa/alsa-mixer.c:2724 msgid "Speakers" msgstr "Alto-falantes" -#: src/modules/alsa/alsa-mixer.c:2649 +#: src/modules/alsa/alsa-mixer.c:2725 msgid "HDMI / DisplayPort" msgstr "HDMI / DisplayPort" -#: src/modules/alsa/alsa-mixer.c:2650 +#: src/modules/alsa/alsa-mixer.c:2726 msgid "Digital Output (S/PDIF)" msgstr "Saída digital (S/PDIF)" -#: src/modules/alsa/alsa-mixer.c:2651 +#: src/modules/alsa/alsa-mixer.c:2727 msgid "Digital Input (S/PDIF)" msgstr "Entrada digital (S/PDIF)" -#: src/modules/alsa/alsa-mixer.c:2652 +#: src/modules/alsa/alsa-mixer.c:2728 msgid "Digital Passthrough (S/PDIF)" msgstr "Conversor digital (S/PDIF)" -#: src/modules/alsa/alsa-mixer.c:2653 +#: src/modules/alsa/alsa-mixer.c:2729 msgid "Multichannel Input" msgstr "Entrada multicanal" -#: src/modules/alsa/alsa-mixer.c:2654 +#: src/modules/alsa/alsa-mixer.c:2730 msgid "Multichannel Output" msgstr "Saída multicanal" -#: src/modules/alsa/alsa-mixer.c:2655 +#: src/modules/alsa/alsa-mixer.c:2731 msgid "Game Output" msgstr "Saída de jogo" -#: src/modules/alsa/alsa-mixer.c:2656 +#: src/modules/alsa/alsa-mixer.c:2732 msgid "Chat Output" msgstr "Saída de bate-papo" -#: src/modules/alsa/alsa-mixer.c:4225 +#: src/modules/alsa/alsa-mixer.c:4355 msgid "Analog Mono" msgstr "Monofônico analógico" @@ -695,127 +694,127 @@ msgstr "Monofônico analógico" #. * here would lead to the source name to become "Analog Stereo Input #. * Input". The same logic applies to analog-stereo-output, #. * multichannel-input and multichannel-output. -#: src/modules/alsa/alsa-mixer.c:4226 src/modules/alsa/alsa-mixer.c:4234 -#: src/modules/alsa/alsa-mixer.c:4235 +#: src/modules/alsa/alsa-mixer.c:4356 src/modules/alsa/alsa-mixer.c:4364 +#: src/modules/alsa/alsa-mixer.c:4365 msgid "Analog Stereo" msgstr "Estéreo analógico" -#: src/modules/alsa/alsa-mixer.c:4227 src/pulse/channelmap.c:103 +#: src/modules/alsa/alsa-mixer.c:4357 src/pulse/channelmap.c:103 #: src/pulse/channelmap.c:771 msgid "Mono" msgstr "Mono" -#: src/modules/alsa/alsa-mixer.c:4228 src/pulse/channelmap.c:775 +#: src/modules/alsa/alsa-mixer.c:4358 src/pulse/channelmap.c:775 msgid "Stereo" msgstr "Estéreo" -#: src/modules/alsa/alsa-mixer.c:4236 src/modules/alsa/alsa-mixer.c:4237 +#: src/modules/alsa/alsa-mixer.c:4366 src/modules/alsa/alsa-mixer.c:4367 msgid "Multichannel" msgstr "Multicanal" -#: src/modules/alsa/alsa-mixer.c:4238 +#: src/modules/alsa/alsa-mixer.c:4368 msgid "Analog Surround 2.1" msgstr "Surround analógico 2.1" -#: src/modules/alsa/alsa-mixer.c:4239 +#: src/modules/alsa/alsa-mixer.c:4369 msgid "Analog Surround 3.0" msgstr "Surround analógico 3.0" -#: src/modules/alsa/alsa-mixer.c:4240 +#: src/modules/alsa/alsa-mixer.c:4370 msgid "Analog Surround 3.1" msgstr "Surround analógico 3.1" -#: src/modules/alsa/alsa-mixer.c:4241 +#: src/modules/alsa/alsa-mixer.c:4371 msgid "Analog Surround 4.0" msgstr "Surround analógico 4.0" -#: src/modules/alsa/alsa-mixer.c:4242 +#: src/modules/alsa/alsa-mixer.c:4372 msgid "Analog Surround 4.1" msgstr "Surround analógico 4.1" -#: src/modules/alsa/alsa-mixer.c:4243 +#: src/modules/alsa/alsa-mixer.c:4373 msgid "Analog Surround 5.0" msgstr "Surround analógico 5.0" -#: src/modules/alsa/alsa-mixer.c:4244 +#: src/modules/alsa/alsa-mixer.c:4374 msgid "Analog Surround 5.1" msgstr "Surround analógico 5.1" -#: src/modules/alsa/alsa-mixer.c:4245 +#: src/modules/alsa/alsa-mixer.c:4375 msgid "Analog Surround 6.0" msgstr "Surround analógico 6.0" -#: src/modules/alsa/alsa-mixer.c:4246 +#: src/modules/alsa/alsa-mixer.c:4376 msgid "Analog Surround 6.1" msgstr "Surround analógico 6.1" -#: src/modules/alsa/alsa-mixer.c:4247 +#: src/modules/alsa/alsa-mixer.c:4377 msgid "Analog Surround 7.0" msgstr "Surround analógico 7.0" -#: src/modules/alsa/alsa-mixer.c:4248 +#: src/modules/alsa/alsa-mixer.c:4378 msgid "Analog Surround 7.1" msgstr "Surround analógico 7.1" -#: src/modules/alsa/alsa-mixer.c:4249 +#: src/modules/alsa/alsa-mixer.c:4379 msgid "Digital Stereo (IEC958)" msgstr "Estéreo digital (IEC958)" -#: src/modules/alsa/alsa-mixer.c:4250 +#: src/modules/alsa/alsa-mixer.c:4380 msgid "Digital Passthrough (IEC958)" msgstr "Conversor digital (IEC958)" -#: src/modules/alsa/alsa-mixer.c:4251 +#: src/modules/alsa/alsa-mixer.c:4381 msgid "Digital Surround 4.0 (IEC958/AC3)" msgstr "Surround digital 4.0 (IEC958/AC3)" -#: src/modules/alsa/alsa-mixer.c:4252 +#: src/modules/alsa/alsa-mixer.c:4382 msgid "Digital Surround 5.1 (IEC958/AC3)" msgstr "Surround digital 5.1 (IEC958/AC3)" -#: src/modules/alsa/alsa-mixer.c:4253 +#: src/modules/alsa/alsa-mixer.c:4383 msgid "Digital Surround 5.1 (IEC958/DTS)" msgstr "Surround digital 5.1 (IEC958/DTS)" -#: src/modules/alsa/alsa-mixer.c:4254 +#: src/modules/alsa/alsa-mixer.c:4384 msgid "Digital Stereo (HDMI)" msgstr "Estéreo digital (HDMI)" -#: src/modules/alsa/alsa-mixer.c:4255 +#: src/modules/alsa/alsa-mixer.c:4385 msgid "Digital Surround 5.1 (HDMI)" msgstr "Surround digital 5.1 (HDMI)" -#: src/modules/alsa/alsa-mixer.c:4388 +#: src/modules/alsa/alsa-mixer.c:4518 msgid "Analog Mono Duplex" msgstr "Duplex monofônico analógico" -#: src/modules/alsa/alsa-mixer.c:4389 +#: src/modules/alsa/alsa-mixer.c:4519 msgid "Analog Stereo Duplex" msgstr "Duplex estéreo analógico" -#: src/modules/alsa/alsa-mixer.c:4390 +#: src/modules/alsa/alsa-mixer.c:4520 msgid "Digital Stereo Duplex (IEC958)" msgstr "Duplex estéreo digital (IEC958)" -#: src/modules/alsa/alsa-mixer.c:4391 +#: src/modules/alsa/alsa-mixer.c:4521 msgid "Multichannel Duplex" msgstr "Duplex multicanal" -#: src/modules/alsa/alsa-mixer.c:4392 +#: src/modules/alsa/alsa-mixer.c:4522 msgid "Stereo Duplex" msgstr "Duplex estéreo" -#: src/modules/alsa/alsa-mixer.c:4393 src/modules/alsa/module-alsa-card.c:188 -#: src/modules/bluetooth/module-bluez5-device.c:2043 +#: src/modules/alsa/alsa-mixer.c:4523 src/modules/alsa/module-alsa-card.c:188 +#: src/modules/bluetooth/module-bluez5-device.c:2053 msgid "Off" msgstr "Desligado" -#: src/modules/alsa/alsa-mixer.c:4492 +#: src/modules/alsa/alsa-mixer.c:4622 #, c-format msgid "%s Output" msgstr "Saída %s" -#: src/modules/alsa/alsa-mixer.c:4500 +#: src/modules/alsa/alsa-mixer.c:4630 #, c-format msgid "%s Input" msgstr "Entrada %s" @@ -896,62 +895,60 @@ msgstr[1] "" "snd_pcm_mmap_begin() retornou um valor que é excepcionalmente grande: %lu bytes (%lu ms).\n" "É mais provável que isso seja um erro no driver “%s” do ALSA. Por favor, relate esse problema aos desenvolvedores do ALSA." -#: src/modules/bluetooth/module-bluez5-device.c:1772 -#: src/modules/bluetooth/module-bluez5-device.c:1794 -#: src/modules/bluetooth/module-bluez5-device.c:1800 -#: src/modules/bluetooth/module-bluez5-device.c:1826 +#: src/modules/bluetooth/module-bluez5-device.c:1773 +#: src/modules/bluetooth/module-bluez5-device.c:1799 +#: src/modules/bluetooth/module-bluez5-device.c:1806 msgid "Bluetooth Input" msgstr "Entrada Bluetooth" -#: src/modules/bluetooth/module-bluez5-device.c:1773 -#: src/modules/bluetooth/module-bluez5-device.c:1789 -#: src/modules/bluetooth/module-bluez5-device.c:1827 +#: src/modules/bluetooth/module-bluez5-device.c:1774 +#: src/modules/bluetooth/module-bluez5-device.c:1793 msgid "Bluetooth Output" msgstr "Saída Bluetooth" # Fone de ouvido não se encaixa como tradução aqui, pois há ou pode haver microfone junto. -#: src/modules/bluetooth/module-bluez5-device.c:1778 +#: src/modules/bluetooth/module-bluez5-device.c:1780 src/utils/pactl.c:252 msgid "Headset" msgstr "Headset" # Desconheço tradução comum para esta palavra. -#: src/modules/bluetooth/module-bluez5-device.c:1783 +#: src/modules/bluetooth/module-bluez5-device.c:1786 src/utils/pactl.c:263 msgid "Handsfree" msgstr "Handsfree" -#: src/modules/bluetooth/module-bluez5-device.c:1801 +#: src/modules/bluetooth/module-bluez5-device.c:1807 msgid "Headphone" msgstr "Fones de ouvido" -#: src/modules/bluetooth/module-bluez5-device.c:1806 +#: src/modules/bluetooth/module-bluez5-device.c:1813 src/utils/pactl.c:262 msgid "Portable" msgstr "Portátil" -#: src/modules/bluetooth/module-bluez5-device.c:1811 +#: src/modules/bluetooth/module-bluez5-device.c:1819 src/utils/pactl.c:264 msgid "Car" msgstr "Carro" -#: src/modules/bluetooth/module-bluez5-device.c:1816 +#: src/modules/bluetooth/module-bluez5-device.c:1825 src/utils/pactl.c:265 msgid "HiFi" msgstr "HiFi" -#: src/modules/bluetooth/module-bluez5-device.c:1821 +#: src/modules/bluetooth/module-bluez5-device.c:1831 src/utils/pactl.c:266 msgid "Phone" msgstr "Telefone" -#: src/modules/bluetooth/module-bluez5-device.c:1868 +#: src/modules/bluetooth/module-bluez5-device.c:1878 msgid "High Fidelity Playback (A2DP Sink)" msgstr "Reprodução de alta fidelidade (Destino A2DP)" -#: src/modules/bluetooth/module-bluez5-device.c:1880 +#: src/modules/bluetooth/module-bluez5-device.c:1890 msgid "High Fidelity Capture (A2DP Source)" msgstr "Captura de alta fidelidade (Fonte A2DP)" -#: src/modules/bluetooth/module-bluez5-device.c:1892 +#: src/modules/bluetooth/module-bluez5-device.c:1902 msgid "Headset Head Unit (HSP/HFP)" msgstr "Unidade de headset (HSP/HFP)" -#: src/modules/bluetooth/module-bluez5-device.c:1905 +#: src/modules/bluetooth/module-bluez5-device.c:1915 msgid "Headset Audio Gateway (HSP/HFP)" msgstr "Gateway de Áudio do Headset (HSP/HFP)" @@ -1011,7 +1008,7 @@ msgstr "Destino nulo temporizado" msgid "Null Output" msgstr "Saída nula" -#: src/modules/module-null-sink.c:345 src/utils/pactl.c:1058 +#: src/modules/module-null-sink.c:345 src/utils/pactl.c:1094 #, c-format msgid "Failed to set format: invalid format string %s" msgstr "Falha ao definir formato: string %s de formato inválida" @@ -1058,7 +1055,7 @@ msgstr "sink_name= sink_properties= ma msgid "Unknown device model" msgstr "Modelo desconhecido de dispositivo" -#: src/modules/raop/raop-sink.c:653 +#: src/modules/raop/raop-sink.c:655 msgid "RAOP standard profile" msgstr "Perfil padrão RAOP" @@ -1647,7 +1644,7 @@ msgstr "Falha ao definir o fluxo de monitoração: %s" msgid "pa_stream_connect_record() failed: %s" msgstr "pa_stream_connect_record() falhou: %s" -#: src/utils/pacat.c:514 src/utils/pactl.c:1454 +#: src/utils/pacat.c:514 src/utils/pactl.c:1490 #, c-format msgid "Connection failure: %s" msgstr "Falha na conexão: %s" @@ -1705,9 +1702,9 @@ msgid "" " --stream-name=NAME How to call this stream on the server\n" " --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n" " --rate=SAMPLERATE The sample rate in Hz (defaults to 44100)\n" -" --format=SAMPLEFORMAT The sample type, one of s16le, s16be, u8, float32le,\n" -" float32be, ulaw, alaw, s32le, s32be, s24le, s24be,\n" -" s24-32le, s24-32be (defaults to s16ne)\n" +" --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" @@ -1748,19 +1745,19 @@ msgstr "" " --volume=VOLUME Especifica a faixa (linear) inicial\n" " de volume no intervalo 0...65536\n" " --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem, Hz (padrão 44100)\n" -" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, um de s16le,\n" -" s16be, u8, float32le, float32be,\n" -" ulaw, alaw, s32le, s32be, s24le, s24be\n" -" s24-32le, s24-32be (padrão s16ne)\n" +" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, veja\n" +" https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SupportedAudioFormats/\n" +" para valores possíveis (padrão: s16ne)\n" " --channels=CANAIS O número de canais, 1 para mono,\n" -" 2 para estéreo (o padrão é 2)\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 destino/fonte\n" -" onde o fluxo está 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" @@ -1810,7 +1807,7 @@ msgstr "" "Compilado com libpulse %s\n" "Vinculado com libpulse %s\n" -#: src/utils/pacat.c:852 src/utils/pactl.c:1656 +#: src/utils/pacat.c:852 src/utils/pactl.c:1692 #, c-format msgid "Invalid client name '%s'" msgstr "Nome do cliente “%s” inválido" @@ -1879,7 +1876,7 @@ msgstr "Falha ao abrir o arquivo de áudio." msgid "Warning: specified sample specification will be overwritten with specification from file." msgstr "Aviso: a especificação de amostragem especificada será sobrescrita pela especificação do arquivo." -#: src/utils/pacat.c:1079 src/utils/pactl.c:1720 +#: src/utils/pacat.c:1079 src/utils/pactl.c:1756 msgid "Failed to determine sample specification from file." msgstr "Falha ao determinar a especificação de amostragem a partir do arquivo." @@ -1912,7 +1909,7 @@ msgstr "playback" msgid "Failed to set media name." msgstr "Falha ao definir o nome da mídia." -#: src/utils/pacat.c:1160 src/utils/pactl.c:2070 +#: src/utils/pacat.c:1160 src/utils/pactl.c:2106 msgid "pa_mainloop_new() failed." msgstr "pa_mainloop_new() falhou." @@ -1920,11 +1917,11 @@ msgstr "pa_mainloop_new() falhou." msgid "io_new() failed." msgstr "io_new() falhou." -#: src/utils/pacat.c:1190 src/utils/pactl.c:2082 +#: src/utils/pacat.c:1190 src/utils/pactl.c:2118 msgid "pa_context_new() failed." msgstr "pa_context_new() falhou." -#: src/utils/pacat.c:1198 src/utils/pactl.c:2088 +#: src/utils/pacat.c:1198 src/utils/pactl.c:2124 #, c-format msgid "pa_context_connect() failed: %s" msgstr "pa_context_new() falhou: %s" @@ -1933,20 +1930,20 @@ msgstr "pa_context_new() falhou: %s" msgid "pa_context_rttime_new() failed." msgstr "pa_context_rttime_new() falhou." -#: src/utils/pacat.c:1211 src/utils/pactl.c:2093 +#: src/utils/pacat.c:1211 src/utils/pactl.c:2129 msgid "pa_mainloop_run() failed." msgstr "pa_mainloop_run() falhou." -#: src/utils/pacmd.c:51 src/utils/pactl.c:1578 +#: src/utils/pacmd.c:51 src/utils/pactl.c:1614 msgid "NAME [ARGS ...]" msgstr "NOME [ARGS ...]" -#: src/utils/pacmd.c:52 src/utils/pacmd.c:60 src/utils/pactl.c:1579 +#: src/utils/pacmd.c:52 src/utils/pacmd.c:60 src/utils/pactl.c:1615 msgid "NAME|#N" msgstr "NOME|#N" -#: src/utils/pacmd.c:53 src/utils/pacmd.c:63 src/utils/pactl.c:1577 -#: src/utils/pactl.c:1583 +#: src/utils/pacmd.c:53 src/utils/pacmd.c:63 src/utils/pactl.c:1613 +#: src/utils/pactl.c:1619 msgid "NAME" msgstr "NOME" @@ -1958,7 +1955,7 @@ msgstr "NOME|#N VOLUME" msgid "#N VOLUME" msgstr "#N VOLUME" -#: src/utils/pacmd.c:56 src/utils/pacmd.c:70 src/utils/pactl.c:1581 +#: src/utils/pacmd.c:56 src/utils/pacmd.c:70 src/utils/pactl.c:1617 msgid "NAME|#N 1|0" msgstr "NOME|#N 1|0" @@ -1994,7 +1991,7 @@ msgstr "NOME_DE_CAMINHO" msgid "FILENAME SINK|#N" msgstr "NOME_DE_ARQUIVO DESTINO|#N" -#: src/utils/pacmd.c:69 src/utils/pactl.c:1580 +#: src/utils/pacmd.c:69 src/utils/pactl.c:1616 msgid "#N SINK|SOURCE" msgstr "#N DESTINO|FONTE" @@ -2002,15 +1999,15 @@ msgstr "#N DESTINO|FONTE" msgid "1|0" msgstr "1|0" -#: src/utils/pacmd.c:72 src/utils/pactl.c:1582 +#: src/utils/pacmd.c:72 src/utils/pactl.c:1618 msgid "CARD PROFILE" msgstr "PLACA PERFIL" -#: src/utils/pacmd.c:73 src/utils/pactl.c:1584 +#: src/utils/pacmd.c:73 src/utils/pactl.c:1620 msgid "NAME|#N PORT" msgstr "NOME|#N PORTA" -#: src/utils/pacmd.c:74 src/utils/pactl.c:1590 +#: src/utils/pacmd.c:74 src/utils/pactl.c:1626 msgid "CARD-NAME|CARD-#N PORT OFFSET" msgstr "NOME-PLACA|PLACA-#N PORTA POSIÇÃO" @@ -2156,12 +2153,72 @@ msgstr "" "Fonte padrão: %s\n" "Cookie: %04x:%04x\n" -#: src/utils/pactl.c:261 src/utils/pactl.c:908 src/utils/pactl.c:986 +#: src/utils/pactl.c:237 +msgid ", available" +msgstr ", disponível" + +#: src/utils/pactl.c:238 +msgid ", not available" +msgstr ", não disponível" + +#: src/utils/pactl.c:246 src/utils/pactl.c:270 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/utils/pactl.c:247 +msgid "Aux" +msgstr "Aux" + +#: src/utils/pactl.c:250 +msgid "Line" +msgstr "Linha" + +#: src/utils/pactl.c:251 +msgid "Mic" +msgstr "Mic" + +#: src/utils/pactl.c:253 +msgid "Handset" +msgstr "Monofone" + +#: src/utils/pactl.c:254 +msgid "Earpiece" +msgstr "Fone de ouvido" + +#: src/utils/pactl.c:255 +msgid "SPDIF" +msgstr "SPDIF" + +#: src/utils/pactl.c:256 +msgid "HDMI" +msgstr "HDMI" + +#: src/utils/pactl.c:257 +msgid "TV" +msgstr "TV" + +#: src/utils/pactl.c:260 +msgid "USB" +msgstr "USB" + +#: src/utils/pactl.c:261 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: src/utils/pactl.c:267 +msgid "Network" +msgstr "Rede" + +#: src/utils/pactl.c:268 +msgid "Analog" +msgstr "Analógico" + +#: src/utils/pactl.c:292 src/utils/pactl.c:944 src/utils/pactl.c:1022 #, c-format msgid "Failed to get sink information: %s" msgstr "Falha ao obter informações do destino: %s" -#: src/utils/pactl.c:287 +#: src/utils/pactl.c:318 #, c-format msgid "" "Sink #%u\n" @@ -2200,27 +2257,36 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:331 src/utils/pactl.c:437 src/utils/pactl.c:598 +#: src/utils/pactl.c:362 src/utils/pactl.c:470 src/utils/pactl.c:633 #, c-format msgid "\tPorts:\n" msgstr "\tPortas:\n" -#: src/utils/pactl.c:338 src/utils/pactl.c:444 +#: src/utils/pactl.c:364 src/utils/pactl.c:472 +#, c-format +msgid "\t\t%s: %s (type: %s, priority: %u%s%s%s)\n" +msgstr "\t\t%s: %s (tipo: %s, prioridade: %u%s%s%s)\n" + +#: src/utils/pactl.c:366 src/utils/pactl.c:474 src/utils/pactl.c:638 +msgid ", available group: " +msgstr ", grupo disponível: " + +#: src/utils/pactl.c:371 src/utils/pactl.c:479 #, c-format msgid "\tActive Port: %s\n" msgstr "\tPorta ativa: %s\n" -#: src/utils/pactl.c:344 src/utils/pactl.c:450 +#: src/utils/pactl.c:377 src/utils/pactl.c:485 #, c-format msgid "\tFormats:\n" msgstr "\tFormatos:\n" -#: src/utils/pactl.c:368 src/utils/pactl.c:928 src/utils/pactl.c:1001 +#: src/utils/pactl.c:401 src/utils/pactl.c:964 src/utils/pactl.c:1037 #, c-format msgid "Failed to get source information: %s" msgstr "Falha ao obter informações da fonte: %s" -#: src/utils/pactl.c:394 +#: src/utils/pactl.c:427 #, c-format msgid "" "Source #%u\n" @@ -2259,20 +2325,20 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:422 src/utils/pactl.c:492 src/utils/pactl.c:535 -#: src/utils/pactl.c:577 src/utils/pactl.c:675 src/utils/pactl.c:676 -#: src/utils/pactl.c:687 src/utils/pactl.c:745 src/utils/pactl.c:746 -#: src/utils/pactl.c:757 src/utils/pactl.c:808 src/utils/pactl.c:809 -#: src/utils/pactl.c:815 +#: src/utils/pactl.c:455 src/utils/pactl.c:527 src/utils/pactl.c:570 +#: src/utils/pactl.c:612 src/utils/pactl.c:711 src/utils/pactl.c:712 +#: src/utils/pactl.c:723 src/utils/pactl.c:781 src/utils/pactl.c:782 +#: src/utils/pactl.c:793 src/utils/pactl.c:844 src/utils/pactl.c:845 +#: src/utils/pactl.c:851 msgid "n/a" msgstr "n/d" -#: src/utils/pactl.c:461 src/utils/pactl.c:865 +#: src/utils/pactl.c:496 src/utils/pactl.c:901 #, c-format msgid "Failed to get module information: %s" msgstr "Falha ao obter informações do módulo: %s" -#: src/utils/pactl.c:484 +#: src/utils/pactl.c:519 #, c-format msgid "" "Module #%u\n" @@ -2289,12 +2355,12 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:503 +#: src/utils/pactl.c:538 #, c-format msgid "Failed to get client information: %s" msgstr "Falha ao obter informações do cliente: %s" -#: src/utils/pactl.c:529 +#: src/utils/pactl.c:564 #, c-format msgid "" "Client #%u\n" @@ -2309,12 +2375,12 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:546 +#: src/utils/pactl.c:581 #, c-format msgid "Failed to get card information: %s" msgstr "Falha ao obter informações da placa: %s" -#: src/utils/pactl.c:569 +#: src/utils/pactl.c:604 #, c-format msgid "" "Card #%u\n" @@ -2331,22 +2397,27 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:585 +#: src/utils/pactl.c:620 #, c-format msgid "\tProfiles:\n" msgstr "\tPerfis:\n" -#: src/utils/pactl.c:587 +#: src/utils/pactl.c:622 #, c-format msgid "\t\t%s: %s (sinks: %u, sources: %u, priority: %u, available: %s)\n" msgstr "\t\t%s: %s (destino: %u, fontes: %u, prioridade: %u, disponível: %s)\n" -#: src/utils/pactl.c:592 +#: src/utils/pactl.c:627 #, c-format msgid "\tActive Profile: %s\n" msgstr "\tPerfil ativo: %s\n" -#: src/utils/pactl.c:606 +#: src/utils/pactl.c:636 +#, c-format +msgid "\t\t%s: %s (type: %s, priority: %u, latency offset: % usec%s%s%s)\n" +msgstr "\t\t%s: %s (tipo: %s, prioridade: %u, mudança da latência: % usec%s%s%s)\n" + +#: src/utils/pactl.c:642 #, c-format msgid "" "\t\t\tProperties:\n" @@ -2355,17 +2426,17 @@ msgstr "" "\t\t\tPropriedades:\n" "\t\t\t\t%s\n" -#: src/utils/pactl.c:611 +#: src/utils/pactl.c:647 #, c-format msgid "\t\t\tPart of profile(s): %s" msgstr "\t\t\tParte de perfil/perfis: %s" -#: src/utils/pactl.c:628 src/utils/pactl.c:948 src/utils/pactl.c:1016 +#: src/utils/pactl.c:664 src/utils/pactl.c:984 src/utils/pactl.c:1052 #, c-format msgid "Failed to get sink input information: %s" msgstr "Falha ao obter informações da entrada do destino: %s" -#: src/utils/pactl.c:657 +#: src/utils/pactl.c:693 #, c-format msgid "" "Sink Input #%u\n" @@ -2404,12 +2475,12 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:698 src/utils/pactl.c:968 src/utils/pactl.c:1031 +#: src/utils/pactl.c:734 src/utils/pactl.c:1004 src/utils/pactl.c:1067 #, c-format msgid "Failed to get source output information: %s" msgstr "Falha ao obter informações da saída da fonte: %s" -#: src/utils/pactl.c:727 +#: src/utils/pactl.c:763 #, c-format msgid "" "Source Output #%u\n" @@ -2448,12 +2519,12 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:768 +#: src/utils/pactl.c:804 #, c-format msgid "Failed to get sample information: %s" msgstr "Falha ao obter informações sobre a amostragem: %s" -#: src/utils/pactl.c:795 +#: src/utils/pactl.c:831 #, c-format msgid "" "Sample #%u\n" @@ -2482,152 +2553,152 @@ msgstr "" "\tPropriedades:\n" "\t\t%s\n" -#: src/utils/pactl.c:823 src/utils/pactl.c:833 +#: src/utils/pactl.c:859 src/utils/pactl.c:869 #, c-format msgid "Failure: %s" msgstr "Falha: %s" -#: src/utils/pactl.c:872 +#: src/utils/pactl.c:908 #, c-format msgid "Failed to unload module: Module %s not loaded" msgstr "Falha ao descarregar o módulo: módulo %s não carregado" -#: src/utils/pactl.c:890 +#: src/utils/pactl.c:926 #, c-format msgid "Failed to set volume: You tried to set volumes for %d channel, whereas channel(s) supported = %d\n" msgid_plural "Failed to set volume: You tried to set volumes for %d channels, whereas channel(s) supported = %d\n" msgstr[0] "Falha ao definir volume: Você tentou definir volumes para %d canal, havendo suporte ao(s) canal(is) = %d\n" msgstr[1] "Falha ao definir volume: Você tentou definir volumes para %d canais, havendo suporte ao(s) canal(is) = %d\n" -#: src/utils/pactl.c:1101 +#: src/utils/pactl.c:1137 #, c-format msgid "Failed to upload sample: %s" msgstr "Falha ao enviar a amostragem: %s" -#: src/utils/pactl.c:1118 +#: src/utils/pactl.c:1154 msgid "Premature end of file" msgstr "Fim prematuro do arquivo" -#: src/utils/pactl.c:1138 +#: src/utils/pactl.c:1174 msgid "new" msgstr "novo" -#: src/utils/pactl.c:1141 +#: src/utils/pactl.c:1177 msgid "change" msgstr "alterar" -#: src/utils/pactl.c:1144 +#: src/utils/pactl.c:1180 msgid "remove" msgstr "remover" -#: src/utils/pactl.c:1147 src/utils/pactl.c:1182 +#: src/utils/pactl.c:1183 src/utils/pactl.c:1218 msgid "unknown" msgstr "desconhecido" -#: src/utils/pactl.c:1155 +#: src/utils/pactl.c:1191 msgid "sink" msgstr "destino" -#: src/utils/pactl.c:1158 +#: src/utils/pactl.c:1194 msgid "source" msgstr "fonte" -#: src/utils/pactl.c:1161 +#: src/utils/pactl.c:1197 msgid "sink-input" msgstr "entrada-destino" -#: src/utils/pactl.c:1164 +#: src/utils/pactl.c:1200 msgid "source-output" msgstr "saída-fonte" -#: src/utils/pactl.c:1167 +#: src/utils/pactl.c:1203 msgid "module" msgstr "módulo" -#: src/utils/pactl.c:1170 +#: src/utils/pactl.c:1206 msgid "client" msgstr "cliente" -#: src/utils/pactl.c:1173 +#: src/utils/pactl.c:1209 msgid "sample-cache" msgstr "cache-amostragem" -#: src/utils/pactl.c:1176 +#: src/utils/pactl.c:1212 msgid "server" msgstr "servidor" -#: src/utils/pactl.c:1179 +#: src/utils/pactl.c:1215 msgid "card" msgstr "placa" -#: src/utils/pactl.c:1188 +#: src/utils/pactl.c:1224 #, c-format msgid "Event '%s' on %s #%u\n" msgstr "Evento “%s” em %s #%u\n" -#: src/utils/pactl.c:1460 +#: src/utils/pactl.c:1496 msgid "Got SIGINT, exiting." msgstr "SIGINT recebido, saindo." -#: src/utils/pactl.c:1493 +#: src/utils/pactl.c:1529 msgid "Invalid volume specification" msgstr "Especificação de volume inválida" -#: src/utils/pactl.c:1516 +#: src/utils/pactl.c:1552 msgid "Volume outside permissible range.\n" msgstr "Volume fora da faixa admissível.\n" -#: src/utils/pactl.c:1529 +#: src/utils/pactl.c:1565 msgid "Invalid number of volume specifications.\n" msgstr "Número de especificações de volume inválido.\n" -#: src/utils/pactl.c:1541 +#: src/utils/pactl.c:1577 msgid "Inconsistent volume specification.\n" msgstr "Especificação de volume inconsistente.\n" -#: src/utils/pactl.c:1571 src/utils/pactl.c:1572 src/utils/pactl.c:1573 -#: src/utils/pactl.c:1574 src/utils/pactl.c:1575 src/utils/pactl.c:1576 -#: src/utils/pactl.c:1577 src/utils/pactl.c:1578 src/utils/pactl.c:1579 -#: src/utils/pactl.c:1580 src/utils/pactl.c:1581 src/utils/pactl.c:1582 -#: src/utils/pactl.c:1583 src/utils/pactl.c:1584 src/utils/pactl.c:1585 -#: src/utils/pactl.c:1586 src/utils/pactl.c:1587 src/utils/pactl.c:1588 -#: src/utils/pactl.c:1589 src/utils/pactl.c:1590 src/utils/pactl.c:1591 +#: src/utils/pactl.c:1607 src/utils/pactl.c:1608 src/utils/pactl.c:1609 +#: src/utils/pactl.c:1610 src/utils/pactl.c:1611 src/utils/pactl.c:1612 +#: src/utils/pactl.c:1613 src/utils/pactl.c:1614 src/utils/pactl.c:1615 +#: src/utils/pactl.c:1616 src/utils/pactl.c:1617 src/utils/pactl.c:1618 +#: src/utils/pactl.c:1619 src/utils/pactl.c:1620 src/utils/pactl.c:1621 +#: src/utils/pactl.c:1622 src/utils/pactl.c:1623 src/utils/pactl.c:1624 +#: src/utils/pactl.c:1625 src/utils/pactl.c:1626 src/utils/pactl.c:1627 msgid "[options]" msgstr "[opções]" -#: src/utils/pactl.c:1573 +#: src/utils/pactl.c:1609 msgid "[TYPE]" msgstr "[TIPO]" -#: src/utils/pactl.c:1575 +#: src/utils/pactl.c:1611 msgid "FILENAME [NAME]" msgstr "NOME_DE_ARQUIVO [NOME]" -#: src/utils/pactl.c:1576 +#: src/utils/pactl.c:1612 msgid "NAME [SINK]" msgstr "NOME [DESTINO]" -#: src/utils/pactl.c:1585 +#: src/utils/pactl.c:1621 msgid "NAME|#N VOLUME [VOLUME ...]" msgstr "NOME|#N VOLUME [VOLUME ...]" -#: src/utils/pactl.c:1586 +#: src/utils/pactl.c:1622 msgid "#N VOLUME [VOLUME ...]" msgstr "#N VOLUME [VOLUME ...]" -#: src/utils/pactl.c:1587 +#: src/utils/pactl.c:1623 msgid "NAME|#N 1|0|toggle" msgstr "NOME|#N 1|0|toggle" -#: src/utils/pactl.c:1588 +#: src/utils/pactl.c:1624 msgid "#N 1|0|toggle" msgstr "#N 1|0|toggle" -#: src/utils/pactl.c:1589 +#: src/utils/pactl.c:1625 msgid "#N FORMATS" msgstr "#N FORMATOS" -#: src/utils/pactl.c:1592 +#: src/utils/pactl.c:1628 #, c-format msgid "" "\n" @@ -2638,7 +2709,7 @@ msgstr "" "Os nomes especiais @DEFAULT_SINK@, @DEFAULT_SOURCE@ e @DEFAULT_MONITOR@\n" "podem ser usados para especificar o destino, a fonte e a monitoração padrão.\n" -#: src/utils/pactl.c:1595 +#: src/utils/pactl.c:1631 #, c-format msgid "" "\n" @@ -2655,7 +2726,7 @@ msgstr "" " -s, --server=SERVIDOR Nome do servidor a ser conectado\n" " -n, --client-name=NOME Como chamar este cliente no servidor\n" -#: src/utils/pactl.c:1636 +#: src/utils/pactl.c:1672 #, c-format msgid "" "pactl %s\n" @@ -2666,145 +2737,145 @@ msgstr "" "Compilado com libpulse %s\n" "Vinculado com libpulse %s\n" -#: src/utils/pactl.c:1692 +#: src/utils/pactl.c:1728 #, c-format msgid "Specify nothing, or one of: %s" msgstr "Especifique nada ou uma de: %s" -#: src/utils/pactl.c:1702 +#: src/utils/pactl.c:1738 msgid "Please specify a sample file to load" msgstr "Por favor, especifique um arquivo de amostragem a ser carregado" -#: src/utils/pactl.c:1715 +#: src/utils/pactl.c:1751 msgid "Failed to open sound file." msgstr "Falha ao abrir o arquivo de som." -#: src/utils/pactl.c:1727 +#: src/utils/pactl.c:1763 msgid "Warning: Failed to determine sample specification from file." msgstr "Aviso: Falha ao determinar a especificação da amostragem a partir do arquivo." -#: src/utils/pactl.c:1737 +#: src/utils/pactl.c:1773 msgid "You have to specify a sample name to play" msgstr "Você deve especificar um nome para amostra a ser reproduzida" -#: src/utils/pactl.c:1749 +#: src/utils/pactl.c:1785 msgid "You have to specify a sample name to remove" msgstr "Você deve especificar um nome para a amostra a ser removida" -#: src/utils/pactl.c:1758 +#: src/utils/pactl.c:1794 msgid "You have to specify a sink input index and a sink" msgstr "Você deve especificar a entrada do destino e um destino" -#: src/utils/pactl.c:1768 +#: src/utils/pactl.c:1804 msgid "You have to specify a source output index and a source" msgstr "Você deve especificar um índice de saída da fonte e uma fonte" -#: src/utils/pactl.c:1783 +#: src/utils/pactl.c:1819 msgid "You have to specify a module name and arguments." msgstr "Você deve especificar um nome para o módulo e seus argumentos." -#: src/utils/pactl.c:1803 +#: src/utils/pactl.c:1839 msgid "You have to specify a module index or name" msgstr "Você deve especificar um nome ou índice do módulo" -#: src/utils/pactl.c:1816 +#: src/utils/pactl.c:1852 msgid "You may not specify more than one sink. You have to specify a boolean value." msgstr "Você não pode especificar mais de um destino. Você deve especificar um valor booleano." -#: src/utils/pactl.c:1821 src/utils/pactl.c:1841 +#: src/utils/pactl.c:1857 src/utils/pactl.c:1877 msgid "Invalid suspend specification." msgstr "Especificação de suspensão inválida." -#: src/utils/pactl.c:1836 +#: src/utils/pactl.c:1872 msgid "You may not specify more than one source. You have to specify a boolean value." msgstr "Você não pode especificar mais de uma fonte. Você deve especificar um valor booleano." -#: src/utils/pactl.c:1853 +#: src/utils/pactl.c:1889 msgid "You have to specify a card name/index and a profile name" msgstr "Você deve especificar um nome/índice para a placa e um nome de perfil" -#: src/utils/pactl.c:1864 +#: src/utils/pactl.c:1900 msgid "You have to specify a sink name/index and a port name" msgstr "Você deve especificar um nome/índice do destino e o nome da porta" -#: src/utils/pactl.c:1875 +#: src/utils/pactl.c:1911 msgid "You have to specify a sink name" msgstr "Você deve especificar um nome de destino" -#: src/utils/pactl.c:1885 +#: src/utils/pactl.c:1921 msgid "You have to specify a source name/index and a port name" msgstr "Você deve especificar um nome/índice da fonte e o nome da porta" -#: src/utils/pactl.c:1896 +#: src/utils/pactl.c:1932 msgid "You have to specify a source name" msgstr "Você deve especificar um nome de fonte" -#: src/utils/pactl.c:1906 +#: src/utils/pactl.c:1942 msgid "You have to specify a sink name/index and a volume" msgstr "Você deve especificar um nome/índice do destino e um volume" -#: src/utils/pactl.c:1919 +#: src/utils/pactl.c:1955 msgid "You have to specify a source name/index and a volume" msgstr "Você deve especificar um nome/índice da fonte e um volume" -#: src/utils/pactl.c:1932 +#: src/utils/pactl.c:1968 msgid "You have to specify a sink input index and a volume" msgstr "Você deve especificar um índice de entrada para o destino e um volume" -#: src/utils/pactl.c:1937 +#: src/utils/pactl.c:1973 msgid "Invalid sink input index" msgstr "Índice de entrada de destino inválido" -#: src/utils/pactl.c:1948 +#: src/utils/pactl.c:1984 msgid "You have to specify a source output index and a volume" msgstr "Você deve especificar um índice de saída da fonte e um volume" -#: src/utils/pactl.c:1953 +#: src/utils/pactl.c:1989 msgid "Invalid source output index" msgstr "Índice de saída de fonte inválido" -#: src/utils/pactl.c:1964 +#: src/utils/pactl.c:2000 msgid "You have to specify a sink name/index and a mute action (0, 1, or 'toggle')" msgstr "Você deve especificar um nome/índice do destino e uma ação de mudo (0, 1 ou “toogle”)" -#: src/utils/pactl.c:1969 src/utils/pactl.c:1984 src/utils/pactl.c:2004 -#: src/utils/pactl.c:2022 +#: src/utils/pactl.c:2005 src/utils/pactl.c:2020 src/utils/pactl.c:2040 +#: src/utils/pactl.c:2058 msgid "Invalid mute specification" msgstr "Especificação de mudo inválida" -#: src/utils/pactl.c:1979 +#: src/utils/pactl.c:2015 msgid "You have to specify a source name/index and a mute action (0, 1, or 'toggle')" msgstr "Você deve especificar um nome/índice da fonte e uma ação de mudo (0, 1 ou “toogle”)" -#: src/utils/pactl.c:1994 +#: src/utils/pactl.c:2030 msgid "You have to specify a sink input index and a mute action (0, 1, or 'toggle')" msgstr "Você deve especificar um índice de entrada do destino e uma ação de mudo (0, 1 ou “toogle”)" -#: src/utils/pactl.c:1999 +#: src/utils/pactl.c:2035 msgid "Invalid sink input index specification" msgstr "Especificação do índice de entrada de destino inválida" -#: src/utils/pactl.c:2012 +#: src/utils/pactl.c:2048 msgid "You have to specify a source output index and a mute action (0, 1, or 'toggle')" msgstr "Você deve especificar um índice de saída de fonte e uma ação de mudo (0, 1 ou “toogle”)" -#: src/utils/pactl.c:2017 +#: src/utils/pactl.c:2053 msgid "Invalid source output index specification" msgstr "Especificação do índice de saída de fonte inválida" -#: src/utils/pactl.c:2034 +#: src/utils/pactl.c:2070 msgid "You have to specify a sink index and a semicolon-separated list of supported formats" msgstr "Você deve especificar um índice do destino e uma lista separada por ponto-e-vírgulas de formatos aceitos" -#: src/utils/pactl.c:2046 +#: src/utils/pactl.c:2082 msgid "You have to specify a card name/index, a port name and a latency offset" msgstr "Você deve especificar nome/índice de uma placa, um nome de porta e uma mudança de latência" -#: src/utils/pactl.c:2053 +#: src/utils/pactl.c:2089 msgid "Could not parse latency offset" msgstr "Não foi possível analisar a mudança da latência" -#: src/utils/pactl.c:2065 +#: src/utils/pactl.c:2101 msgid "No valid command specified." msgstr "Nenhum comando válido especificado." @@ -2963,6 +3034,9 @@ msgstr "Falha ao carregar os dados do cookie\n" msgid "Not yet implemented.\n" msgstr "Não implementado ainda.\n" +#~ msgid "LFE on Separate Mono Output" +#~ msgstr "Saída monofônica separada em LFE" + #~ msgid "Failed to initialize daemon." #~ msgstr "Falha em iniciar o daemon." @@ -3474,4 +3548,4 @@ msgstr "Não implementado ainda.\n" #~ msgstr "', ou eleve o RLIMIT_NICE/RLIMIT_RTPRIO dos limites do recurso para este usuário." #~ msgid "socketpair(): %s" -#~ msgstr "socketpair(): %s" +#~ msgstr "socketpair(): %s" \ No newline at end of file From b5a6365f1862512fc7cf447f68983358e474e8f7 Mon Sep 17 00:00:00 2001 From: zhaochengyi Date: Sat, 18 Jul 2020 16:47:40 +0800 Subject: [PATCH 002/872] pulsecore: Add exception judgment to fix the crash when playing music When playing music for a period of time, the Shared Memory is frequently accessed, and occasionally read/write errors occur, which causes the program to crash [Current thread is 1 (Thread 0xffff86823010 (LWP 2841))] (gdb) bt 0 0x0000ffff8702a714 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 1 0x0000ffff870188e8 in __GI_abort () at abort.c:79 2 0x0000ffff873b5728 in do_read (p=p@entry=0x3673a170, re=re@entry=0x3673a338) at pulsecore/pstream.c:856 3 0x0000ffff873b7fd8 in do_pstream_read_write (p=0x3673a170) at pulsecore/pstream.c:248 4 0x0000ffff873b8368 in srb_callback (srb=, userdata=0x3673a170) at pulsecore/pstream.c:287 5 0x0000ffff873b8bec in srbchannel_rwloop (sr=0x36766ae0) at pulsecore/srbchannel.c:190 6 0x0000ffff87339c70 in dispatch_pollfds (m=0x36670db0) at pulse/mainloop.c:655 7 0x0000ffff87339c70 in pa_mainloop_dispatch (m=m@entry=0x36670db0) at pulse/mainloop.c:898 8 0x0000ffff8733a01c in pa_mainloop_iterate (m=0x36670db0, block=, retval=0xffffd9683030) at pulse/mainloop.c:929 9 0x0000ffff8733a0d8 in pa_mainloop_run (m=m@entry=0x36670db0, retval=retval@entry=0xffffd9683030) at pulse/mainloop.c:945 10 0x0000000000406894 in main (argc=, argv=) at daemon/main.c:1144 Signed-off-by: zhaochengyi --- src/pulsecore/pstream.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pulsecore/pstream.c b/src/pulsecore/pstream.c index 3b94a3adf..eb7050828 100644 --- a/src/pulsecore/pstream.c +++ b/src/pulsecore/pstream.c @@ -244,8 +244,16 @@ static void do_pstream_read_write(pa_pstream *p) { p->mainloop->defer_enable(p->defer_event, 0); if (!p->dead && p->srb) { - do_write(p); - while (!p->dead && do_read(p, &p->readsrb) == 0); + int r = 0; + + if(do_write(p) < 0) + goto fail; + + while (!p->dead && r == 0) { + r = do_read(p, &p->readsrb); + if (r < 0) + goto fail; + } } if (!p->dead && pa_iochannel_is_readable(p->io)) { From 5c0ad422a818520337108acd700b1b4744588260 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Mon, 13 Jul 2020 12:42:14 +0300 Subject: [PATCH 003/872] remap_neon: use register r12 instead of r7 When the Thumb instructions set is used and frame pointers are enabled (-fno-omit-frame-pointer), r7 can't be used, because it's used for the frame pointer. Trying to use r7 caused the compilation to fail. Thanks to Andre McCurdy for suggesting[1] this fix, all I had to do was to test that it works. The code builds now, and cpu-remap-test also succeeds. [1] https://lists.openembedded.org/g/openembedded-core/message/136786 --- src/pulsecore/remap_neon.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c index ca3b95b48..6f71345f8 100644 --- a/src/pulsecore/remap_neon.c +++ b/src/pulsecore/remap_neon.c @@ -52,11 +52,15 @@ static void remap_mono_to_stereo_float32ne_generic_arm(pa_remap_t *m, float *dst __asm__ __volatile__ ( "ldm %[src]!, {r4,r6} \n\t" "mov r5, r4 \n\t" - "mov r7, r6 \n\t" - "stm %[dst]!, {r4-r7} \n\t" + + /* We use r12 instead of r7 here, because r7 is reserved for the + * frame pointer when using Thumb. */ + "mov r12, r6 \n\t" + + "stm %[dst]!, {r4-r6,r12} \n\t" : [dst] "+r" (dst), [src] "+r" (src) /* output operands */ : /* input operands */ - : "memory", "r4", "r5", "r6", "r7" /* clobber list */ + : "memory", "r4", "r5", "r6", "r12" /* clobber list */ ); } From 9dd7f48b4911cbf35ee1f4ddb4a04a930c7ef4f9 Mon Sep 17 00:00:00 2001 From: Eero Nurkkala Date: Tue, 21 Jul 2020 11:13:01 +0300 Subject: [PATCH 004/872] tests: hashmap-test.c: fix memory leak When compiled with ASAN: -O1 -fsanitize=address -fno-omit-frame-pointer, the following issue is seen: ==14272==ERROR: LeakSanitizer: detected memory leaks Direct leak of 1072 byte(s) in 1 object(s) allocated from: #0 0x7f0180966d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) #1 0x7f018039f043 in pa_xmalloc0 pulse/xmalloc.c:74 #2 0x7f01803c5cc8 in pa_hashmap_new_full pulsecore/hashmap.c:61 #3 0x7f01803c5df9 in pa_hashmap_new pulsecore/hashmap.c:76 #4 0x556ee75ff7f4 in remove_all_test tests/hashmap-test.c:96 #5 0x556ee7602965 in srunner_run (/home/eenurkka/pulse/pulseaudio/src/.libs/hashmap-test+0x6965) SUMMARY: AddressSanitizer: 1072 byte(s) leaked in 1 allocation(s). Fix it by freeing the resource properly. Signed-off-by: Eero Nurkkala --- src/tests/hashmap-test.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/hashmap-test.c b/src/tests/hashmap-test.c index 39d3e8502..f460bd434 100644 --- a/src/tests/hashmap-test.c +++ b/src/tests/hashmap-test.c @@ -108,6 +108,8 @@ START_TEST(remove_all_test) if ((size = pa_hashmap_size(map)) != 0) { ck_abort_msg("Hashmap has wrong size; got %u, want 0", size); } + + pa_hashmap_free(map); } END_TEST From 1f1fb8eb6b3e9ce9a6d7b382f48ddb2349d98be6 Mon Sep 17 00:00:00 2001 From: Eero Nurkkala Date: Tue, 21 Jul 2020 11:22:39 +0300 Subject: [PATCH 005/872] tests: cpu-remap-test.c: fix memory leaks When compiled with ASAN: -O1 -fsanitize=address -fno-omit-frame-pointer, the following issues are seen: ==17217==ERROR: LeakSanitizer: detected memory leaks Direct leak of 32 byte(s) in 1 object(s) allocated from: #0 0x7fceba414b40 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb40) #1 0x7fceb9b3eac9 in pa_xmalloc pulse/xmalloc.c:63 #2 0x7fceb9b3ed22 in pa_xmemdup pulse/xmalloc.c:94 #3 0x7fceb9e1eed5 in _pa_xnewdup_internal pulse/xmalloc.h:86 #4 0x7fceb9e1eed5 in init_remap_c pulsecore/remap.c:580 #5 0x7fceb9e1efe5 in pa_init_remap_func pulsecore/remap.c:608 #6 0x5574e72422b7 in remap_init2_test_channels tests/cpu-remap-test.c:303 #7 0x5574e7242420 in rearrange_special_test tests/cpu-remap-test.c:345 #8 0x5574e7245ce5 in srunner_run (/home/eenurkka/pulse/pulseaudio/src/.libs/cpu-remap-test+0x9ce5) ... SUMMARY: AddressSanitizer: 192 byte(s) leaked in 6 allocation(s). Fix those issues by freeing the allocated resources properly. Signed-off-by: Eero Nurkkala --- src/tests/cpu-remap-test.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tests/cpu-remap-test.c b/src/tests/cpu-remap-test.c index 7e2b7a498..28c3b34b2 100644 --- a/src/tests/cpu-remap-test.c +++ b/src/tests/cpu-remap-test.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "runtime-test-util.h" @@ -290,7 +291,7 @@ static void remap_init2_test_channels( bool rearrange) { pa_cpu_info cpu_info = { PA_CPU_UNDEFINED, {}, false }; - pa_remap_t remap_orig, remap_func; + pa_remap_t remap_orig, remap_func = {0}; cpu_info.force_generic_code = true; pa_remap_func_init(&cpu_info); @@ -303,6 +304,8 @@ static void remap_init2_test_channels( pa_init_remap_func(&remap_func); remap_test_channels(&remap_func, &remap_orig); + + pa_xfree(remap_func.state); } START_TEST (remap_special_test) { From 414644dff1abd32294db3be1fde001f56ec9e65a Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Wed, 22 Jul 2020 13:28:47 +0300 Subject: [PATCH 006/872] device-port: send sink and source change events when availability changes The lack of change events caused GUIs to not update the port status. Related bug report: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/941 --- src/pulsecore/device-port.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c index 07761365e..416bb1a8a 100644 --- a/src/pulsecore/device-port.c +++ b/src/pulsecore/device-port.c @@ -107,8 +107,20 @@ void pa_device_port_set_available(pa_device_port *p, pa_available_t status) { * be created before port objects, and then p->card could be non-NULL for * the whole lifecycle of pa_device_port. */ if (p->card && p->card->linked) { + pa_sink *sink; + pa_source *source; + pa_subscription_post(p->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE, p->card->index); + + sink = pa_device_port_get_sink(p); + source = pa_device_port_get_source(p); + if (sink) + pa_subscription_post(p->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, sink->index); + if (source) + pa_subscription_post(p->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, source->index); + pa_hook_fire(&p->core->hooks[PA_CORE_HOOK_PORT_AVAILABLE_CHANGED], p); + /* A sink or source whose active port is unavailable can't be the * default sink/source, so port availability changes may affect the * default sink/source choice. */ @@ -118,9 +130,6 @@ void pa_device_port_set_available(pa_device_port *p, pa_available_t status) { pa_core_update_default_source(p->core); if (p->direction == PA_DIRECTION_OUTPUT) { - pa_sink *sink; - - sink = pa_device_port_get_sink(p); if (sink && p == sink->active_port) { if (sink->active_port->available == PA_AVAILABLE_NO) { if (p->core->rescue_streams) @@ -129,9 +138,6 @@ void pa_device_port_set_available(pa_device_port *p, pa_available_t status) { pa_core_move_streams_to_newly_available_preferred_sink(p->core, sink); } } else { - pa_source *source; - - source = pa_device_port_get_source(p); if (source && p == source->active_port) { if (source->active_port->available == PA_AVAILABLE_NO) { if (p->core->rescue_streams) From 680d7bb976f1ea5ecbec40413bef2f4b863c6ded Mon Sep 17 00:00:00 2001 From: Tomasz Kontusz Date: Sun, 19 Jul 2020 15:06:55 +0200 Subject: [PATCH 007/872] alsa-mixer: Fix well-known descriptions for steelseries game/chat outputs --- src/modules/alsa/alsa-mixer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 0ab9b8180..5805ffd4d 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -2728,8 +2728,8 @@ static int path_verify(pa_alsa_path *p) { { "iec958-passthrough-output", N_("Digital Passthrough (S/PDIF)"), PA_DEVICE_PORT_TYPE_SPDIF }, { "multichannel-input", N_("Multichannel Input"), PA_DEVICE_PORT_TYPE_LINE }, { "multichannel-output", N_("Multichannel Output"), PA_DEVICE_PORT_TYPE_LINE }, - { "steelseries-arctis-5-output-game", N_("Game Output"), PA_DEVICE_PORT_TYPE_HEADSET }, - { "steelseries-arctis-5-output-chat", N_("Chat Output"), PA_DEVICE_PORT_TYPE_HEADSET }, + { "steelseries-arctis-output-game-common", N_("Game Output"), PA_DEVICE_PORT_TYPE_HEADSET }, + { "steelseries-arctis-output-chat-common", N_("Chat Output"), PA_DEVICE_PORT_TYPE_HEADSET }, }; pa_alsa_element *e; From 9696e1079123b47eb2fbfd55a078ca73e8f9c608 Mon Sep 17 00:00:00 2001 From: Tomasz Kontusz Date: Mon, 20 Jul 2020 17:55:18 +0200 Subject: [PATCH 008/872] alsa-mixer: Remove unused iec958-passthrough* descriptions They were unused since 20f1fa17bebe086cb9cff09a5157dc7ca009ba61. --- src/modules/alsa/alsa-mixer.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 5805ffd4d..ae2a93f2f 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -2725,7 +2725,6 @@ static int path_verify(pa_alsa_path *p) { { "hdmi-output", N_("HDMI / DisplayPort"), PA_DEVICE_PORT_TYPE_HDMI }, { "iec958-stereo-output", N_("Digital Output (S/PDIF)"), PA_DEVICE_PORT_TYPE_SPDIF }, { "iec958-stereo-input", N_("Digital Input (S/PDIF)"), PA_DEVICE_PORT_TYPE_SPDIF }, - { "iec958-passthrough-output", N_("Digital Passthrough (S/PDIF)"), PA_DEVICE_PORT_TYPE_SPDIF }, { "multichannel-input", N_("Multichannel Input"), PA_DEVICE_PORT_TYPE_LINE }, { "multichannel-output", N_("Multichannel Output"), PA_DEVICE_PORT_TYPE_LINE }, { "steelseries-arctis-output-game-common", N_("Game Output"), PA_DEVICE_PORT_TYPE_HEADSET }, @@ -4377,7 +4376,6 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { { "analog-surround-70", N_("Analog Surround 7.0") }, { "analog-surround-71", N_("Analog Surround 7.1") }, { "iec958-stereo", N_("Digital Stereo (IEC958)") }, - { "iec958-passthrough", N_("Digital Passthrough (IEC958)") }, { "iec958-ac3-surround-40", N_("Digital Surround 4.0 (IEC958/AC3)") }, { "iec958-ac3-surround-51", N_("Digital Surround 5.1 (IEC958/AC3)") }, { "iec958-dts-surround-51", N_("Digital Surround 5.1 (IEC958/DTS)") }, From 8482b62b0aae3dbca8aac767d411ac4dd9c93342 Mon Sep 17 00:00:00 2001 From: Tomasz Kontusz Date: Wed, 22 Jul 2020 07:45:22 +0200 Subject: [PATCH 009/872] alsa-mixer: add description-key to Mappings and Profiles --- src/modules/alsa/alsa-mixer.c | 33 +++++++++++++++++++++++++++++++-- src/modules/alsa/alsa-mixer.h | 2 ++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index ae2a93f2f..318a3eca6 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -3714,6 +3714,7 @@ static void mapping_free(pa_alsa_mapping *m) { pa_xfree(m->name); pa_xfree(m->description); + pa_xfree(m->description_key); pa_proplist_free(m->proplist); @@ -3740,6 +3741,7 @@ static void profile_free(pa_alsa_profile *p) { pa_xfree(p->name); pa_xfree(p->description); + pa_xfree(p->description_key); pa_xfree(p->input_name); pa_xfree(p->output_name); @@ -4014,6 +4016,30 @@ static int mapping_parse_description(pa_config_parser_state *state) { return 0; } +static int mapping_parse_description_key(pa_config_parser_state *state) { + pa_alsa_profile_set *ps; + pa_alsa_profile *p; + pa_alsa_mapping *m; + + pa_assert(state); + + ps = state->userdata; + + if ((m = pa_alsa_mapping_get(ps, state->section))) { + pa_xfree(m->description_key); + m->description_key = pa_xstrdup(state->rvalue); + } else if ((p = profile_get(ps, state->section))) { + pa_xfree(p->description_key); + p->description_key = pa_xstrdup(state->rvalue); + } else { + pa_log("[%s:%u] Section name %s invalid.", state->filename, state->lineno, state->section); + return -1; + } + + return 0; +} + + static int mapping_parse_priority(pa_config_parser_state *state) { pa_alsa_profile_set *ps; pa_alsa_profile *p; @@ -4382,6 +4408,7 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { { "hdmi-stereo", N_("Digital Stereo (HDMI)") }, { "hdmi-surround-51", N_("Digital Surround 5.1 (HDMI)") }, }; + const char *description_key = m->description_key ? m->description_key : m->name; pa_assert(m); @@ -4402,7 +4429,7 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { } if (!m->description) - m->description = pa_xstrdup(lookup_description(m->name, + m->description = pa_xstrdup(lookup_description(description_key, well_known_descriptions, PA_ELEMENTSOF(well_known_descriptions))); @@ -4520,6 +4547,7 @@ static int profile_verify(pa_alsa_profile *p) { { "output:unknown-stereo+input:unknown-stereo", N_("Stereo Duplex") }, { "off", N_("Off") } }; + const char *description_key = p->description_key ? p->description_key : p->name; pa_assert(p); @@ -4601,7 +4629,7 @@ static int profile_verify(pa_alsa_profile *p) { } if (!p->description) - p->description = pa_xstrdup(lookup_description(p->name, + p->description = pa_xstrdup(lookup_description(description_key, well_known_descriptions, PA_ELEMENTSOF(well_known_descriptions))); @@ -4725,6 +4753,7 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel /* Shared by [Mapping ...] and [Profile ...] */ { "description", mapping_parse_description, NULL, NULL }, + { "description-key", mapping_parse_description_key,NULL, NULL }, { "priority", mapping_parse_priority, NULL, NULL }, { "fallback", mapping_parse_fallback, NULL, NULL }, diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h index 88fc4d3eb..a7d0ddce9 100644 --- a/src/modules/alsa/alsa-mixer.h +++ b/src/modules/alsa/alsa-mixer.h @@ -281,6 +281,7 @@ struct pa_alsa_mapping { char *name; char *description; + char *description_key; unsigned priority; pa_alsa_direction_t direction; /* These are copied over to the resultant sink/source */ @@ -322,6 +323,7 @@ struct pa_alsa_profile { char *name; char *description; + char *description_key; unsigned priority; char *input_name; From 47d811224dc70ab2f04b3714cbc36ae3f3650b0a Mon Sep 17 00:00:00 2001 From: Tomasz Kontusz Date: Sun, 12 Jul 2020 14:53:14 +0200 Subject: [PATCH 010/872] alsa-mixer: add support for Astro A50 gaming headset --- src/modules/alsa/90-pulseaudio.rules | 2 ++ src/modules/alsa/alsa-mixer.c | 2 ++ .../steelseries-arctis-common-usb-audio.conf | 4 +-- .../profile-sets/usb-gaming-headset.conf | 33 ++++++++++++++----- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/modules/alsa/90-pulseaudio.rules b/src/modules/alsa/90-pulseaudio.rules index fa43cb802..eff3ea66d 100644 --- a/src/modules/alsa/90-pulseaudio.rules +++ b/src/modules/alsa/90-pulseaudio.rules @@ -119,6 +119,8 @@ ATTRS{idVendor}=="1038", ATTRS{idProduct}=="1294", ENV{PULSE_PROFILE_SET}="usb-g ATTRS{idVendor}=="1038", ATTRS{idProduct}=="1730", ENV{PULSE_PROFILE_SET}="usb-gaming-headset.conf" # Lucidsound LS31 ATTRS{idVendor}=="2f12", ATTRS{idProduct}=="0109", ENV{PULSE_PROFILE_SET}="usb-gaming-headset.conf" +# ID 9886:002c is for the Astro A50 Gen4 +ATTRS{idVendor}=="9886", ATTRS{idProduct}=="002c", ENV{PULSE_PROFILE_SET}="usb-gaming-headset.conf" # ID 1038:1250 is for the Arctis 5 # ID 1037:12aa is for the Arctis 5 2019 diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 318a3eca6..11551a7bf 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -4407,6 +4407,8 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { { "iec958-dts-surround-51", N_("Digital Surround 5.1 (IEC958/DTS)") }, { "hdmi-stereo", N_("Digital Stereo (HDMI)") }, { "hdmi-surround-51", N_("Digital Surround 5.1 (HDMI)") }, + { "gaming-headset-chat", N_("Chat") }, + { "gaming-headset-game", N_("Game") }, }; const char *description_key = m->description_key ? m->description_key : m->name; diff --git a/src/modules/alsa/mixer/profile-sets/steelseries-arctis-common-usb-audio.conf b/src/modules/alsa/mixer/profile-sets/steelseries-arctis-common-usb-audio.conf index 5f11ed1e2..0c589175f 100644 --- a/src/modules/alsa/mixer/profile-sets/steelseries-arctis-common-usb-audio.conf +++ b/src/modules/alsa/mixer/profile-sets/steelseries-arctis-common-usb-audio.conf @@ -2,7 +2,7 @@ auto-profiles = yes [Mapping analog-chat] -description = Chat +description-key = gaming-headset-chat device-strings = hw:%f,0,0 channel-map = left,right paths-input = analog-input-mic @@ -10,7 +10,7 @@ paths-output = steelseries-arctis-output-chat-common intended-roles = phone [Mapping analog-game] -description = Game +description-key = gaming-headset-game device-strings = hw:%f,1,0 channel-map = left,right paths-output = steelseries-arctis-output-game-common diff --git a/src/modules/alsa/mixer/profile-sets/usb-gaming-headset.conf b/src/modules/alsa/mixer/profile-sets/usb-gaming-headset.conf index f48b44f03..adda54d5a 100644 --- a/src/modules/alsa/mixer/profile-sets/usb-gaming-headset.conf +++ b/src/modules/alsa/mixer/profile-sets/usb-gaming-headset.conf @@ -14,36 +14,51 @@ # along with PulseAudio; if not, see . ; USB gaming headset. -; These headsets usually have two output devices. The first one is mono, -; meant for voice audio, and the second one is stereo, meant for everything -; else. The purpose of this unusual design is to provide separate volume +; These headsets usually have two output devices. The first one is meant +; for voice audio, and the second one is meant for everything else. +; The purpose of this unusual design is to provide separate volume ; controls for voice and other audio, which can be useful in gaming. ; ; Works with: ; Steelseries Arctis 7 ; Steelseries Arctis Pro Wireless. ; Lucidsound LS31 +; Astro A50 ; ; See default.conf for an explanation on the directives used here. [General] auto-profiles = yes -[Mapping analog-mono] +[Mapping mono-chat] +description-key = gaming-headset-chat device-strings = hw:%f,0,0 channel-map = mono paths-output = usb-gaming-headset-output-mono paths-input = usb-gaming-headset-input intended-roles = phone -[Mapping analog-stereo] +[Mapping stereo-chat] +description-key = gaming-headset-chat +device-strings = hw:%f,0,0 +channel-map = left,right +paths-output = usb-gaming-headset-output-stereo +paths-input = usb-gaming-headset-input +intended-roles = phone + +[Mapping stereo-game] +description-key = gaming-headset-game device-strings = hw:%f,1,0 channel-map = left,right paths-output = usb-gaming-headset-output-stereo direction = output -[Profile output:analog-mono+output:analog-stereo+input:analog-mono] -output-mappings = analog-mono analog-stereo -input-mappings = analog-mono +[Profile output:mono-chat+output:stereo-game+input:mono-chat] +output-mappings = mono-chat stereo-game +input-mappings = mono-chat +priority = 5100 + +[Profile output:stereo-game+output:stereo-chat+input:mono-chat] +output-mappings = stereo-game stereo-chat +input-mappings = mono-chat priority = 5100 -skip-probe = yes From 4d1e5686194d5c6671e3023b5e55a4043d6e1824 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 3 Aug 2020 09:58:39 +0200 Subject: [PATCH 011/872] alsa-util: fix check for digit Fix the check for a digit by checking if the value is between the *character* '0' (not *value* 0) and '9'. --- src/modules/alsa/alsa-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c index d86f43c10..02e6ff1c3 100644 --- a/src/modules/alsa/alsa-util.c +++ b/src/modules/alsa/alsa-util.c @@ -1752,7 +1752,7 @@ snd_mixer_t *pa_alsa_open_mixer_by_name(pa_hashmap *mixers, const char *dev, boo if (!pm && pa_strneq(dev, "hw:", 3)) { const char *s = dev + 3; int card_index; - while (*s && *s >= 0 && *s <= '9') s++; + while (*s && *s >= '0' && *s <= '9') s++; if (*s == '\0' && pa_atoi(dev + 3, &card_index) >= 0) { PA_HASHMAP_FOREACH_KV(dev2, pm, mixers, state) { if (pm->card_index == card_index) { From 99db8038de96f4ce043f88bfb3a5b000a6c4ee22 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Tue, 4 Aug 2020 14:42:59 +0300 Subject: [PATCH 012/872] build-sys: Build atomic-test only if pthread_setaffinity_np() is available The function seems to be essential to the test, so the test has to be disabled entirely if pthread_setaffinity_np() is not available. Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/850 --- configure.ac | 4 +++- src/Makefile.am | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index a30772ac6..a708d6d5b 100644 --- a/configure.ac +++ b/configure.ac @@ -561,10 +561,12 @@ AC_FUNC_GETGROUPS AC_CHECK_FUNCS_ONCE([chmod chown fstat fchown fchmod clock_gettime getaddrinfo getgrgid_r getgrnam_r \ getpwnam_r getpwuid_r gettimeofday getuid mlock nanosleep \ pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \ - sigaction sleep symlink sysconf uname pthread_setaffinity_np pthread_getname_np pthread_setname_np]) + sigaction sleep symlink sysconf uname pthread_getname_np pthread_setname_np]) AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0]) AC_SUBST(HAVE_MKFIFO) AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1") +AC_CHECK_FUNCS([pthread_setaffinity_np], [HAVE_PTHREAD_SETAFFINITY_NP=1], [HAVE_PTHREAD_SETAFFINITY_NP=0]) +AM_CONDITIONAL(HAVE_PTHREAD_SETAFFINITY_NP, test "x$HAVE_PTHREAD_SETAFFINITY_NP" = "x1") # X/OPEN AC_CHECK_FUNCS_ONCE([readlink]) diff --git a/src/Makefile.am b/src/Makefile.am index 5b0186b9e..1ee899789 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -296,8 +296,7 @@ TESTS_norun = \ sig2str-test \ stripnul \ echo-cancel-test \ - lo-latency-test \ - atomic-test + lo-latency-test # These tests need a running pulseaudio daemon TESTS_daemon = \ @@ -316,6 +315,11 @@ TESTS_default += \ usergroup-test endif +if HAVE_PTHREAD_SETAFFINITY_NP +TESTS_norun += \ + atomic-test +endif + if HAVE_SYS_EVENTFD_H TESTS_default += \ srbchannel-test From 7742c9aa50f5435873dda0118c5ce90398633082 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Tue, 4 Aug 2020 14:44:38 +0300 Subject: [PATCH 013/872] meson: Build atomic-test The test was missing from the build system. --- src/tests/meson.build | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tests/meson.build b/src/tests/meson.build index 4f2ca9395..f0500467f 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -160,6 +160,13 @@ if cc.has_header_symbol('signal.h', 'SIGXCPU') ] endif +if cc.has_function('pthread_setaffinity_np', dependencies : thread_dep) + norun_tests += [ + [ 'atomic-test', 'atomic-test.c', + [ check_dep, libpulsecommon_dep ] ] + ] +endif + if alsa_dep.found() norun_tests += [ [ 'alsa-time-test', 'alsa-time-test.c', [ alsa_dep ] ] From 9636c2940b3c76714922932d1d30ce226eb8f037 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Tue, 4 Aug 2020 11:38:41 +0300 Subject: [PATCH 014/872] udev: fix too long card name with HyperX Cloud Orbit S Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/820 --- src/modules/alsa/90-pulseaudio.rules | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/alsa/90-pulseaudio.rules b/src/modules/alsa/90-pulseaudio.rules index eff3ea66d..1614a1685 100644 --- a/src/modules/alsa/90-pulseaudio.rules +++ b/src/modules/alsa/90-pulseaudio.rules @@ -131,6 +131,16 @@ ATTRS{idVendor}=="1038", ATTRS{idProduct}=="1252", ENV{PULSE_PROFILE_SET}="steel ATTRS{idVendor}=="147a", ATTRS{idProduct}=="e055", ENV{PULSE_PROFILE_SET}="cmedia-high-speed-true-hdaudio.conf" +# HyperX Cloud Orbit S has three modes. Each mode has a separate product ID. +# ID_SERIAL for this device is the device name + mode repeated three times. +# ID_SERIAL is used for the ID_ID property, and the ID_ID property is used in +# the card name in PulseAudio. The resulting card name is too long for the name +# length limit, so we set a more sensible ID_ID here (the same as the default +# ID_ID, but without repetition in the serial part). +ATTRS{idVendor}=="0951", ATTRS{idProduct}=="16ff", ENV{ID_ID}="usb-HyperX_Cloud_Orbit_S_2Ch-$env{ID_USB_INTERFACE_NUM}" +ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1702", ENV{ID_ID}="usb-HyperX_Cloud_Orbit_S_Hi-Res_2Ch-$env{ID_USB_INTERFACE_NUM}" +ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1703", ENV{ID_ID}="usb-HyperX_Cloud_Orbit_S_3D_8Ch-$env{ID_USB_INTERFACE_NUM}" + GOTO="pulseaudio_end" LABEL="pulseaudio_firewire_quirk" From e153fb870618b1dcf65f6fce1667ea76acc5a28b Mon Sep 17 00:00:00 2001 From: Kai-Heng Feng Date: Tue, 4 Aug 2020 00:20:02 +0800 Subject: [PATCH 015/872] alsa-mixer: Recognize USB audio jack mixer UAC v2 and v3 support insertion control (jack detection), and the created jack mixers have "- Input" suffix and "- Output" suffix for input jack and output jack, respectively. Add these jacks so we don't always need to rely on UCM or PulseAudio profile-set. --- src/modules/alsa/mixer/paths/analog-input-linein.conf | 3 +++ src/modules/alsa/mixer/paths/analog-input-mic.conf | 3 +++ src/modules/alsa/mixer/paths/analog-output-headphones.conf | 3 +++ src/modules/alsa/mixer/paths/analog-output-speaker.conf | 3 +++ 4 files changed, 12 insertions(+) diff --git a/src/modules/alsa/mixer/paths/analog-input-linein.conf b/src/modules/alsa/mixer/paths/analog-input-linein.conf index 8163ffb2c..cf2079074 100644 --- a/src/modules/alsa/mixer/paths/analog-input-linein.conf +++ b/src/modules/alsa/mixer/paths/analog-input-linein.conf @@ -28,6 +28,9 @@ required-any = any state.plugged = unknown state.unplugged = unknown +[Jack Line - Input] +required-any = any + [Element Capture] switch = mute volume = merge diff --git a/src/modules/alsa/mixer/paths/analog-input-mic.conf b/src/modules/alsa/mixer/paths/analog-input-mic.conf index 123439b6c..53c03c820 100644 --- a/src/modules/alsa/mixer/paths/analog-input-mic.conf +++ b/src/modules/alsa/mixer/paths/analog-input-mic.conf @@ -29,6 +29,9 @@ required-any = any state.plugged = unknown state.unplugged = unknown +[Jack Mic - Input] +required-any = any + [Element Capture] switch = mute volume = merge diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf index d2147c50f..d4ad7777d 100644 --- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf +++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf @@ -52,6 +52,9 @@ state.unplugged = unknown [Jack Headphone Mic] required-any = any +[Jack Headphone - Output] +required-any = any + [Element Hardware Master] switch = mute volume = merge diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-speaker.conf index 6f9968e1f..27a3983d5 100644 --- a/src/modules/alsa/mixer/paths/analog-output-speaker.conf +++ b/src/modules/alsa/mixer/paths/analog-output-speaker.conf @@ -69,6 +69,9 @@ required-any = any state.plugged = unknown state.unplugged = unknown +[Jack Speaker - Output] +required-any = any + [Element Hardware Master] switch = mute volume = merge From 628f068788094053c2a760f6a2211297b19d4f48 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Thu, 6 Aug 2020 14:34:56 +0300 Subject: [PATCH 016/872] gitignore: Ignore hashmap-test --- src/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/src/.gitignore b/src/.gitignore index aa7b5715f..3197482f0 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -49,6 +49,7 @@ flist-test format-test get-binary-name-test gtk-test +hashmap-test hook-list-test interpol-test ipacl-test From af5ae60b333d743cff941620c51e3cb2a9aee64a Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Sun, 9 Aug 2020 03:28:52 +0200 Subject: [PATCH 017/872] meson: Add missing thread_dep to atomic-test Otherwise it won't link. /usr/bin/ld: /tmp/atomic-test.uzrv5D.ltrans0.ltrans.o: undefined reference to symbol 'pthread_setaffinity_np@@GLIBC_2.3.4' --- src/tests/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/meson.build b/src/tests/meson.build index f0500467f..5caf3abe6 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -163,7 +163,7 @@ endif if cc.has_function('pthread_setaffinity_np', dependencies : thread_dep) norun_tests += [ [ 'atomic-test', 'atomic-test.c', - [ check_dep, libpulsecommon_dep ] ] + [ check_dep, libpulsecommon_dep, thread_dep ] ] ] endif From b657cff40078564e97d05663166a091832d588a6 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Sun, 2 Aug 2020 17:43:03 +0200 Subject: [PATCH 018/872] build: Make alsadatadir configurable Pipewire has started shipping copies of PulseAudio's ALSA card profiles. It would be useful if both projects could share the same profiles and this patch is a step toward that. --- configure.ac | 8 ++++++++ meson.build | 7 ++++++- meson_options.txt | 3 +++ src/Makefile.am | 4 ++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index a708d6d5b..b96bf2808 100644 --- a/configure.ac +++ b/configure.ac @@ -1511,6 +1511,13 @@ AC_ARG_WITH( AC_SUBST(modlibexecdir) AX_DEFINE_DIR(PA_DLSEARCHPATH, modlibexecdir, [Modules dir]) +AC_ARG_WITH( + [alsa-data-dir], + AS_HELP_STRING([--with-alsa-data-dir],[Directory for ALSA card profiles (defaults to ${datadir}/pulseaudio/alsa-mixer)]), + [alsadatadir=$withval], [alsadatadir="${datadir}/pulseaudio/alsa-mixer"]) + +AC_SUBST(alsadatadir) + AC_ARG_WITH( [udev-rules-dir], AS_HELP_STRING([--with-udev-rules-dir],[Directory where to install udev rules to (defaults to /lib/udev/rules.d)]), @@ -1656,6 +1663,7 @@ echo " sysconfdir: ${sysconfdir} localstatedir: ${localstatedir} modlibexecdir: ${modlibexecdir} + alsadatadir: ${alsadatadir} System Runtime Path: ${PA_SYSTEM_RUNTIME_PATH} System State Path: ${PA_SYSTEM_STATE_PATH} System Config Path: ${PA_SYSTEM_CONFIG_PATH} diff --git a/meson.build b/meson.build index b055a92c8..a40846479 100644 --- a/meson.build +++ b/meson.build @@ -66,7 +66,11 @@ localedir = join_paths(prefix, get_option('localedir')) localstatedir = join_paths(prefix, get_option('localstatedir')) sysconfdir = join_paths(prefix, get_option('sysconfdir')) privlibdir = join_paths(libdir, 'pulseaudio') -alsadatadir = join_paths(datadir, 'pulseaudio', 'alsa-mixer') + +alsadatadir = get_option('alsadatadir') +if alsadatadir == '' + alsadatadir = join_paths(datadir, 'pulseaudio', 'alsa-mixer') +endif pkgconfigdir = join_paths(libdir, 'pkgconfig') pulselibexecdir = join_paths(libexecdir, 'pulse') @@ -788,6 +792,7 @@ summary = [ 'sysconfdir: @0@'.format(sysconfdir), 'localstatedir: @0@'.format(localstatedir), 'modlibexecdir: @0@'.format(modlibexecdir), + 'alsadatadir: @0@'.format(alsadatadir), 'System Runtime Path: @0@'.format(cdata.get_unquoted('PA_SYSTEM_RUNTIME_PATH')), 'System State Path: @0@'.format(cdata.get_unquoted('PA_SYSTEM_STATE_PATH')), 'System Config Path: @0@'.format(cdata.get_unquoted('PA_SYSTEM_CONFIG_PATH')), diff --git a/meson_options.txt b/meson_options.txt index c11b67ea8..8f8a383ec 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -51,6 +51,9 @@ option('pulsedsp-location', option('modlibexecdir', type : 'string', description : 'Specify location where modules will be installed') +option('alsadatadir', + type : 'string', + description : 'Directory for ALSA card profiles (defaults to ${datadir}/pulseaudio/alsa-mixer)') option('systemduserunitdir', type : 'string', description : 'Directory for systemd user service files') diff --git a/src/Makefile.am b/src/Makefile.am index 1ee899789..f9f26f520 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,8 +28,8 @@ if HAVE_X11 xdgautostartdir=$(sysconfdir)/xdg/autostart endif if HAVE_ALSA -alsaprofilesetsdir=$(datadir)/pulseaudio/alsa-mixer/profile-sets -alsapathsdir=$(datadir)/pulseaudio/alsa-mixer/paths +alsaprofilesetsdir=$(alsadatadir)/profile-sets +alsapathsdir=$(alsadatadir)/paths endif if HAVE_DBUS dbuspolicydir=$(sysconfdir)/dbus-1/system.d From 1ae8097b8b69c1ce6053c60e46f750e93f67c439 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 5 Aug 2020 18:38:19 -0700 Subject: [PATCH 019/872] modules: fix wrong formats under 32-bit Signed-off-by: Rosen Penev --- src/modules/module-loopback.c | 6 +++--- src/modules/raop/raop-client.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c index ed559e4c7..871f01166 100644 --- a/src/modules/module-loopback.c +++ b/src/modules/module-loopback.c @@ -401,7 +401,7 @@ static void adjust_rates(struct userdata *u) { /* Drop or insert samples if fast_adjust_threshold_msec was specified and the latency difference is too large. */ if (u->fast_adjust_threshold > 0 && abs(latency_difference) > u->fast_adjust_threshold) { - pa_log_debug ("Latency difference larger than %lu msec, skipping or inserting samples.", u->fast_adjust_threshold / PA_USEC_PER_MSEC); + pa_log_debug ("Latency difference larger than %" PRIu64 " msec, skipping or inserting samples.", u->fast_adjust_threshold / PA_USEC_PER_MSEC); pa_asyncmsgq_send(u->sink_input->sink->asyncmsgq, PA_MSGOBJECT(u->sink_input), SINK_INPUT_MESSAGE_FAST_ADJUST, NULL, current_source_sink_latency, NULL); @@ -539,13 +539,13 @@ static void memblockq_adjust(struct userdata *u, int64_t latency_offset_usec, bo if (current_memblockq_length > requested_memblockq_length) { /* Drop audio from queue */ buffer_correction = current_memblockq_length - requested_memblockq_length; - pa_log_info("Dropping %lu usec of audio from queue", pa_bytes_to_usec(buffer_correction, &u->sink_input->sample_spec)); + pa_log_info("Dropping %" PRIu64 " usec of audio from queue", pa_bytes_to_usec(buffer_correction, &u->sink_input->sample_spec)); pa_memblockq_drop(u->memblockq, buffer_correction); } else if (current_memblockq_length < requested_memblockq_length && allow_push) { /* Add silence to queue */ buffer_correction = requested_memblockq_length - current_memblockq_length; - pa_log_info("Adding %lu usec of silence to queue", pa_bytes_to_usec(buffer_correction, &u->sink_input->sample_spec)); + pa_log_info("Adding %" PRIu64 " usec of silence to queue", pa_bytes_to_usec(buffer_correction, &u->sink_input->sample_spec)); pa_memblockq_seek(u->memblockq, (int64_t)buffer_correction, PA_SEEK_RELATIVE, true); } } diff --git a/src/modules/raop/raop-client.c b/src/modules/raop/raop-client.c index 85dea55e5..885b3f157 100644 --- a/src/modules/raop/raop-client.c +++ b/src/modules/raop/raop-client.c @@ -669,7 +669,7 @@ static size_t handle_udp_timing_packet(pa_raop_client *c, const uint8_t packet[] payload = packet[1] ^ 0x80; switch (payload) { case PAYLOAD_TIMING_REQUEST: - pa_log_debug("Sending timing packet at %lu", rci); + pa_log_debug("Sending timing packet at %" PRIu64 , rci); written = send_udp_timing_packet(c, data, rci); break; case PAYLOAD_TIMING_REPLY: From ceaa69d71f757bb99b4b8a6f6af7beeafb4a9e71 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 5 Aug 2020 18:32:03 -0700 Subject: [PATCH 020/872] raop-crypto: add missing header Fixes compilation without deprecated OpenSSL APIs. Signed-off-by: Rosen Penev --- src/modules/raop/raop-crypto.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/raop/raop-crypto.c b/src/modules/raop/raop-crypto.c index 83a862cdb..710e93c82 100644 --- a/src/modules/raop/raop-crypto.c +++ b/src/modules/raop/raop-crypto.c @@ -30,6 +30,7 @@ #include #include #include +#include #include From dd70c3c5890ce27b9ba4bd041dea4a01c3e1fc0f Mon Sep 17 00:00:00 2001 From: Kai-Heng Feng Date: Thu, 6 Aug 2020 17:17:27 +0800 Subject: [PATCH 021/872] module-alsa-card: Set a minimum profile priority if it's not set If the profile is generated from UCM, the priority won't be set so it stays as 0. Assume a card has two available profiles, when the selected one becomes unavailable, module-switch-on-port-available's find_best_profile() should pick the next available one. However, since the priority is 0, the "off" profile was chosen instead of the available one. So let's set the priority to 1 to make profile that is available has higher priority than "off" profile. --- src/modules/alsa/module-alsa-card.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c index c5852b43d..d312fb5d9 100644 --- a/src/modules/alsa/module-alsa-card.c +++ b/src/modules/alsa/module-alsa-card.c @@ -144,7 +144,7 @@ static void add_profiles(struct userdata *u, pa_hashmap *h, pa_hashmap *ports) { uint32_t idx; cp = pa_card_profile_new(ap->name, ap->description, sizeof(struct profile_data)); - cp->priority = ap->priority; + cp->priority = ap->priority ? ap->priority : 1; cp->input_name = pa_xstrdup(ap->input_name); cp->output_name = pa_xstrdup(ap->output_name); From 1781031c8b9cf986fd343e9e18c8415a059df168 Mon Sep 17 00:00:00 2001 From: Sanchayan Maity Date: Tue, 28 Jul 2020 14:11:05 +0530 Subject: [PATCH 022/872] modules: rtp-gstreamer: Fix RTP sound lag In the current scenario of reading samples from the appsink, it is observed that we do not actually read all the data available in the appsink to read. This results in a choppy sound or heard as gaps in the playback. The underlying reason for this happening is as follows. Let's say the appsink new sample callback is called 2-3 times, but, with the underlying fdsem post machinery when pa_rtp_recv eventually gets called, there would be those 2-3 samples to read. However, we were only reading one sample in the current implementation. Fix this by reading all samples from the appsink in a loop, coalescing them and then writing to the memchunk. Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/889 Signed-off-by: Sanchayan Maity --- src/modules/rtp/rtp-gstreamer.c | 86 ++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 24 deletions(-) diff --git a/src/modules/rtp/rtp-gstreamer.c b/src/modules/rtp/rtp-gstreamer.c index 3ee77cb7f..0db330958 100644 --- a/src/modules/rtp/rtp-gstreamer.c +++ b/src/modules/rtp/rtp-gstreamer.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #define MAKE_ELEMENT_NAMED(v, e, n) \ @@ -438,36 +439,73 @@ fail: /* Called from I/O thread context */ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, uint32_t *rtp_tstamp, struct timeval *tstamp) { GstSample *sample = NULL; + GstBufferList *buf_list; + GstAdapter *adapter; GstBuffer *buf; GstMapInfo info; - void *data; + uint8_t *data; + uint64_t data_len = 0; if (!process_bus_messages(c)) goto fail; - sample = gst_app_sink_pull_sample(GST_APP_SINK(c->appsink)); - if (!sample) { - pa_log_warn("Could not get any more data"); - goto fail; + adapter = gst_adapter_new(); + pa_assert(adapter); + + while (true) { + sample = gst_app_sink_try_pull_sample(GST_APP_SINK(c->appsink), 0); + if (!sample) + break; + + buf = gst_sample_get_buffer(sample); + + if (GST_BUFFER_IS_DISCONT(buf)) + pa_log_info("Discontinuity detected, possibly lost some packets"); + + if (!gst_buffer_map(buf, &info, GST_MAP_READ)) { + pa_log_info("Failed to map buffer"); + gst_sample_unref(sample); + goto fail; + } + + data_len += info.size; + /* We need the buffer to be valid longer than the sample, which will + * be valid only for the duration of this loop. + * + * To do this, increase the ref count. Ownership is transferred to the + * adapter in gst_adapter_push. + */ + gst_buffer_ref(buf); + gst_adapter_push(adapter, buf); + gst_buffer_unmap(buf, &info); + + gst_sample_unref(sample); } - buf = gst_sample_get_buffer(sample); + buf_list = gst_adapter_take_buffer_list(adapter, data_len); + pa_assert(buf_list); - if (GST_BUFFER_IS_DISCONT(buf)) - pa_log_info("Discontinuity detected, possibly lost some packets"); + pa_assert(pa_mempool_block_size_max(pool) >= data_len); - if (!gst_buffer_map(buf, &info, GST_MAP_READ)) - goto fail; - - pa_assert(pa_mempool_block_size_max(pool) >= info.size); - - chunk->memblock = pa_memblock_new(pool, info.size); + chunk->memblock = pa_memblock_new(pool, data_len); chunk->index = 0; - chunk->length = info.size; + chunk->length = data_len; + + data = (uint8_t *) pa_memblock_acquire_chunk(chunk); + + for (int i = 0; i < gst_buffer_list_length(buf_list); i++) { + buf = gst_buffer_list_get(buf_list, i); + + if (!gst_buffer_map(buf, &info, GST_MAP_READ)) { + gst_buffer_list_unref(buf_list); + goto fail; + } + + memcpy(data, info.data, info.size); + data += info.size; + gst_buffer_unmap(buf, &info); + } - data = pa_memblock_acquire_chunk(chunk); - /* TODO: we could probably just provide an allocator and avoid a memcpy */ - memcpy(data, info.data, info.size); pa_memblock_release(chunk->memblock); /* When buffer-mode = none, the buffer PTS is the RTP timestamp, converted @@ -475,17 +513,17 @@ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, uint32_ * wraparound-corrected, and the DTS is the pipeline clock timestamp from * when the buffer was acquired at the source (this is actually the running * time which is why we need to add base time). */ - *rtp_tstamp = gst_util_uint64_scale_int(GST_BUFFER_PTS(buf), c->ss.rate, GST_SECOND) & 0xFFFFFFFFU; - pa_timeval_rtstore(tstamp, (GST_BUFFER_DTS(buf) + gst_element_get_base_time(c->pipeline)) / GST_USECOND, false); + *rtp_tstamp = gst_util_uint64_scale_int(GST_BUFFER_PTS(gst_buffer_list_get(buf_list, 0)), c->ss.rate, GST_SECOND) & 0xFFFFFFFFU; + pa_timeval_rtstore(tstamp, (GST_BUFFER_DTS(gst_buffer_list_get(buf_list, 0)) + gst_element_get_base_time(c->pipeline)) / GST_USECOND, false); - gst_buffer_unmap(buf, &info); - gst_sample_unref(sample); + gst_buffer_list_unref(buf_list); + gst_object_unref(adapter); return 0; fail: - if (sample) - gst_sample_unref(sample); + if (adapter) + gst_object_unref(adapter); if (chunk->memblock) pa_memblock_unref(chunk->memblock); From 6fce5b2eac085dc6f7ca105c0750b691e405d7e0 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Mon, 10 Aug 2020 19:38:07 +0300 Subject: [PATCH 023/872] build-sys: Configure doxygen.conf.in a bit differently This change prepares for adding a doxygen target to the Meson build system. The DOXYGEN_OUTPUT_DIRECTORY substitution variable is needed so that the output will go to the build directory. I also replaced @srcdir@ with @top_srcdir@. I think it looks cleaner, since the ".." parent directory traversal is avoided. It also happened to make writing the Meson rules easier. --- configure.ac | 7 +++++ doxygen/doxygen.conf.in | 64 ++++++++++++++++++++--------------------- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/configure.ac b/configure.ac index b96bf2808..8b2d6318f 100644 --- a/configure.ac +++ b/configure.ac @@ -1552,6 +1552,13 @@ fi AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"]) +# Substitute the variable with an empty string. This makes the output go to the +# directory where doxygen is run (which is the doxygen directory under the +# build directory). Substituting a variable with a constant value wouldn't +# otherwise make sense, but the substitution variable needs to exist, because +# we substitute a different value when using Meson. +AC_SUBST([DOXYGEN_OUTPUT_DIRECTORY], []) + AC_CONFIG_FILES([ Makefile src/Makefile diff --git a/doxygen/doxygen.conf.in b/doxygen/doxygen.conf.in index c195e7b28..a97c16543 100644 --- a/doxygen/doxygen.conf.in +++ b/doxygen/doxygen.conf.in @@ -52,7 +52,7 @@ PROJECT_LOGO = # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = +OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIRECTORY@ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output @@ -668,37 +668,37 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = @srcdir@/../src/pulse/channelmap.h \ - @srcdir@/../src/pulse/context.h \ - @srcdir@/../src/pulse/def.h \ - @srcdir@/../src/pulse/direction.h \ - @srcdir@/../src/pulse/error.h \ - @srcdir@/../src/pulse/ext-stream-restore.h \ - @srcdir@/../src/pulse/ext-device-manager.h \ - @srcdir@/../src/pulse/ext-device-restore.h \ - @srcdir@/../src/pulse/format.h \ - @srcdir@/../src/pulse/gccmacro.h \ - @srcdir@/../src/pulse/glib-mainloop.h \ - @srcdir@/../src/pulse/introspect.h \ - @srcdir@/../src/pulse/mainloop-api.h \ - @srcdir@/../src/pulse/mainloop-signal.h \ - @srcdir@/../src/pulse/mainloop.h \ - @srcdir@/../src/pulse/operation.h \ - @srcdir@/../src/pulse/proplist.h \ - @srcdir@/../src/pulse/pulseaudio.h \ - @srcdir@/../src/pulse/rtclock.h \ - @srcdir@/../src/pulse/sample.h \ - @srcdir@/../src/pulse/scache.h \ - @srcdir@/../src/pulse/simple.h \ - @srcdir@/../src/pulse/stream.h \ - @srcdir@/../src/pulse/subscribe.h \ - @srcdir@/../src/pulse/thread-mainloop.h \ - @srcdir@/../src/pulse/timeval.h \ - @srcdir@/../src/pulse/utf8.h \ - @srcdir@/../src/pulse/util.h \ - @srcdir@/../src/pulse/version.h \ - @srcdir@/../src/pulse/volume.h \ - @srcdir@/../src/pulse/xmalloc.h +INPUT = @top_srcdir@/src/pulse/channelmap.h \ + @top_srcdir@/src/pulse/context.h \ + @top_srcdir@/src/pulse/def.h \ + @top_srcdir@/src/pulse/direction.h \ + @top_srcdir@/src/pulse/error.h \ + @top_srcdir@/src/pulse/ext-stream-restore.h \ + @top_srcdir@/src/pulse/ext-device-manager.h \ + @top_srcdir@/src/pulse/ext-device-restore.h \ + @top_srcdir@/src/pulse/format.h \ + @top_srcdir@/src/pulse/gccmacro.h \ + @top_srcdir@/src/pulse/glib-mainloop.h \ + @top_srcdir@/src/pulse/introspect.h \ + @top_srcdir@/src/pulse/mainloop-api.h \ + @top_srcdir@/src/pulse/mainloop-signal.h \ + @top_srcdir@/src/pulse/mainloop.h \ + @top_srcdir@/src/pulse/operation.h \ + @top_srcdir@/src/pulse/proplist.h \ + @top_srcdir@/src/pulse/pulseaudio.h \ + @top_srcdir@/src/pulse/rtclock.h \ + @top_srcdir@/src/pulse/sample.h \ + @top_srcdir@/src/pulse/scache.h \ + @top_srcdir@/src/pulse/simple.h \ + @top_srcdir@/src/pulse/stream.h \ + @top_srcdir@/src/pulse/subscribe.h \ + @top_srcdir@/src/pulse/thread-mainloop.h \ + @top_srcdir@/src/pulse/timeval.h \ + @top_srcdir@/src/pulse/utf8.h \ + @top_srcdir@/src/pulse/util.h \ + @top_srcdir@/src/pulse/version.h \ + @top_srcdir@/src/pulse/volume.h \ + @top_srcdir@/src/pulse/xmalloc.h # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is From 2c790e193730f17b70734a26a417f46189fbc6c0 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Mon, 10 Aug 2020 19:47:45 +0300 Subject: [PATCH 024/872] meson: Add doxygen target The documentation can be generated with "ninja -C build doxygen". The output will go to "doxygen/html" under the build directory. --- doxygen/meson.build | 10 ++++++++++ meson.build | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 doxygen/meson.build diff --git a/doxygen/meson.build b/doxygen/meson.build new file mode 100644 index 000000000..afc0e4989 --- /dev/null +++ b/doxygen/meson.build @@ -0,0 +1,10 @@ +cdata.set('DOXYGEN_OUTPUT_DIRECTORY', meson.current_build_dir()) + +doxygen_conf = configure_file( + input : 'doxygen.conf.in', + output : 'doxygen.conf', + configuration : cdata, +) + +run_target('doxygen', + command : ['doxygen', doxygen_conf]) diff --git a/meson.build b/meson.build index a40846479..88d02bd49 100644 --- a/meson.build +++ b/meson.build @@ -151,6 +151,7 @@ cdata.set_quoted('DESKTOPFILEDIR', join_paths(datadir, 'applications')) cdata.set_quoted('PULSE_LOCALEDIR', localedir) cdata.set_quoted('GETTEXT_PACKAGE', 'pulseaudio') cdata.set('ENABLE_NLS', 1) +cdata.set('top_srcdir', meson.source_root()) # Platform specifics # First some defaults to keep config file generation happy @@ -699,6 +700,7 @@ check_dep = dependency('check', version : '>= 0.9.10', required : get_option('te # Subdirs +subdir('doxygen') subdir('po') if get_option('man') subdir('man') From 0ce3008605e5f644fac4bb5edbb1443110201ec1 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Wed, 17 Jun 2020 08:14:18 +0300 Subject: [PATCH 025/872] Improve the port available_group and type documentation --- PROTOCOL | 6 +- .../mixer/paths/analog-output.conf.common | 2 + src/pulse/def.h | 4 +- src/pulse/introspect.h | 76 +++++++++++++++++-- 4 files changed, 80 insertions(+), 8 deletions(-) diff --git a/PROTOCOL b/PROTOCOL index 6d3a3c7c0..0b18edf03 100644 --- a/PROTOCOL +++ b/PROTOCOL @@ -429,7 +429,11 @@ Added two values to the pa_encoding_t enum: ## v34, implemented by >= 14.0 -Added available_group and type fields to the device port info. +New fields in the port introspection data (duplicated for all port types: +sink, source and card ports): + + string available_group + uint32 type #### If you just changed the protocol, read this ## module-tunnel depends on the sink/source/sink-input/source-input protocol diff --git a/src/modules/alsa/mixer/paths/analog-output.conf.common b/src/modules/alsa/mixer/paths/analog-output.conf.common index 7bf346346..31d4b447b 100644 --- a/src/modules/alsa/mixer/paths/analog-output.conf.common +++ b/src/modules/alsa/mixer/paths/analog-output.conf.common @@ -53,6 +53,8 @@ ; [General] +; type = ... # The device type. It's highly recommended to set a type for every path. +; # See parse_type() in alsa-mixer.c for supported values. ; priority = ... # Priority for this path ; description-key = ... # The path description is looked up from a table in path_verify() in ; # src/modules/alsa/alsa-mixer.c. By default the path name (i.e. the file name diff --git a/src/pulse/def.h b/src/pulse/def.h index 2e5a5ec37..4097bd89c 100644 --- a/src/pulse/def.h +++ b/src/pulse/def.h @@ -1070,7 +1070,9 @@ typedef enum pa_port_available { /** \endcond */ #endif -/** Port type. \since 14.0 */ +/** Port type. New types can be added in the future, so applications should + * gracefully handle situations where a type identifier doesn't match any item + * in this enumeration. \since 14.0 */ typedef enum pa_device_port_type { PA_DEVICE_PORT_TYPE_UNKNOWN = 0, PA_DEVICE_PORT_TYPE_AUX = 1, diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h index 89685b501..657510747 100644 --- a/src/pulse/introspect.h +++ b/src/pulse/introspect.h @@ -229,8 +229,31 @@ typedef struct pa_sink_port_info { const char *description; /**< Description of this port */ uint32_t priority; /**< The higher this value is, the more useful this port is as a default. */ int available; /**< A flags (see #pa_port_available), indicating availability status of this port. \since 2.0 */ - const char *available_group; /**< A string indentifier which determine the group of devices handling the available state simultaneously. \since 14.0 */ - uint32_t type; /**< Port device type (PA_PORT_DEVICE_TYPE). \since 14.0 */ + const char *available_group; /**< An indentifier for the group of ports that share their availability status with + * each other. This is meant especially for handling cases where one 3.5 mm connector + * is used for headphones, headsets and microphones, and the hardware can only tell + * that something was plugged in but not what exactly. In this situation the ports for + * all those devices share their availability status, and PulseAudio can't tell which + * one is actually plugged in, and some application may ask the user what was plugged + * in. Such applications should get a list of all card ports and compare their + * `available_group` fields. Ports that have the same group are those that need + * input from the user to determine which device was plugged in. The application should + * then activate the user-chosen port. + * + * May be NULL, in which case the port is not part of any availability group (which is + * the same as having a group with only one member). + * + * The group identifier must be treated as an opaque identifier. The string may look + * like an ALSA control name, but applications must not assume any such relationship. + * The group naming scheme can change without a warning. + * + * Since one group can include both input and output ports, the grouping should be done + * using pa_card_port_info instead of pa_sink_port_info, but this field is duplicated + * also in pa_sink_port_info (and pa_source_port_info) in case someone finds that + * convenient. + * + * \since 14.0 */ + uint32_t type; /**< Port type, see #pa_device_port_type. \since 14.0 */ } pa_sink_port_info; /** Stores information about sinks. Please note that this structure @@ -311,8 +334,31 @@ typedef struct pa_source_port_info { const char *description; /**< Description of this port */ uint32_t priority; /**< The higher this value is, the more useful this port is as a default. */ int available; /**< A flags (see #pa_port_available), indicating availability status of this port. \since 2.0 */ - const char *available_group; /**< A string indentifier which determine the group of devices handling the available state simultaneously. \since 14.0 */ - uint32_t type; /**< Port device type (PA_PORT_DEVICE_TYPE). \since 14.0 */ + const char *available_group; /**< An indentifier for the group of ports that share their availability status with + * each other. This is meant especially for handling cases where one 3.5 mm connector + * is used for headphones, headsets and microphones, and the hardware can only tell + * that something was plugged in but not what exactly. In this situation the ports for + * all those devices share their availability status, and PulseAudio can't tell which + * one is actually plugged in, and some application may ask the user what was plugged + * in. Such applications should get a list of all card ports and compare their + * `available_group` fields. Ports that have the same group are those that need + * input from the user to determine which device was plugged in. The application should + * then activate the user-chosen port. + * + * May be NULL, in which case the port is not part of any availability group (which is + * the same as having a group with only one member). + * + * The group identifier must be treated as an opaque identifier. The string may look + * like an ALSA control name, but applications must not assume any such relationship. + * The group naming scheme can change without a warning. + * + * Since one group can include both input and output ports, the grouping should be done + * using pa_card_port_info instead of pa_source_port_info, but this field is duplicated + * also in pa_source_port_info (and pa_sink_port_info) in case someone finds that + * convenient. + * + * \since 14.0 */ + uint32_t type; /**< Port type, see #pa_device_port_type. \since 14.0 */ } pa_source_port_info; /** Stores information about sources. Please note that this structure @@ -513,8 +559,26 @@ typedef struct pa_card_port_info { pa_proplist *proplist; /**< Property list */ int64_t latency_offset; /**< Latency offset of the port that gets added to the sink/source latency when the port is active. \since 3.0 */ pa_card_profile_info2** profiles2; /**< Array of pointers to available profiles, or NULL. Array is terminated by an entry set to NULL. \since 5.0 */ - const char *available_group; /**< A string indentifier which determine the group of devices handling the available state simultaneously. \since 14.0 */ - uint32_t type; /**< Port device type (PA_PORT_DEVICE_TYPE). \since 14.0 */ + const char *available_group; /**< An indentifier for the group of ports that share their availability status with + * each other. This is meant especially for handling cases where one 3.5 mm connector + * is used for headphones, headsets and microphones, and the hardware can only tell + * that something was plugged in but not what exactly. In this situation the ports for + * all those devices share their availability status, and PulseAudio can't tell which + * one is actually plugged in, and some application may ask the user what was plugged + * in. Such applications should get a list of all card ports and compare their + * `available_group` fields. Ports that have the same group are those that need + * input from the user to determine which device was plugged in. The application should + * then activate the user-chosen port. + * + * May be NULL, in which case the port is not part of any availability group (which is + * the same as having a group with only one member). + * + * The group identifier must be treated as an opaque identifier. The string may look + * like an ALSA control name, but applications must not assume any such relationship. + * The group naming scheme can change without a warning. + * + * \since 14.0 */ + uint32_t type; /**< Port type, see #pa_device_port_type. \since 14.0 */ } pa_card_port_info; /** Stores information about cards. Please note that this structure From 1b44b44c75dab41a58a8c4803e65e7ffcb58077a Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Tue, 21 Jul 2020 10:26:43 +0300 Subject: [PATCH 026/872] alsa-mixer: Fix mapping_group_available() logic There were three bugs: 1) j->state_plugged was set to PA_AVAILABLE_UNKNOWN too early. It must be set only after we have found that the jack is shared by two ports. The result of setting it too early was that no jack ever could have the PA_AVAILABLE_YES status. 2) The inner jack loop iterated through p->jacks instead of p2->jacks, so the code didn't compare jacks between two ports at all. As a result all ports were put in the same availability group. 3) The inner jack loop checked j->state_plugged instead of j2->state_plugged. The result was that the speaker port, which uses the Headphone jack to toggle between unknown and unavailable, was put in the same group with the headphone port. --- src/modules/alsa/alsa-mixer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 11551a7bf..758bef22e 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -4291,14 +4291,14 @@ static void mapping_group_available(pa_hashmap *paths) if (!j->has_control || j->state_plugged == PA_AVAILABLE_NO) continue; has_control = true; - j->state_plugged = PA_AVAILABLE_UNKNOWN; PA_HASHMAP_FOREACH(p2, paths, state2) { if (p2 == p) break; - PA_LLIST_FOREACH(j2, p->jacks) { - if (!j2->has_control || j->state_plugged == PA_AVAILABLE_NO) + PA_LLIST_FOREACH(j2, p2->jacks) { + if (!j2->has_control || j2->state_plugged == PA_AVAILABLE_NO) continue; if (pa_streq(j->name, j2->name)) { + j->state_plugged = PA_AVAILABLE_UNKNOWN; j2->state_plugged = PA_AVAILABLE_UNKNOWN; found = p2->available_group; break; From af42b3eb6f6ff9d19715b1e008343a25a1008051 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Wed, 17 Jun 2020 08:40:16 +0300 Subject: [PATCH 027/872] Rename "available group" to "availability group" "Availability group" is more clear about what the field is about. Credits to Arun Raghavan for coming up with the better name. --- PROTOCOL | 2 +- src/modules/alsa/alsa-mixer.c | 12 ++++++------ src/modules/alsa/alsa-mixer.h | 2 +- src/modules/alsa/alsa-ucm.c | 2 +- src/modules/module-tunnel.c | 2 +- src/pulse/introspect.c | 12 ++++++------ src/pulse/introspect.h | 12 ++++++------ src/pulsecore/device-port.c | 14 +++++++------- src/pulsecore/device-port.h | 6 +++--- src/pulsecore/protocol-native.c | 6 +++--- src/utils/pactl.c | 10 +++++----- 11 files changed, 40 insertions(+), 40 deletions(-) diff --git a/PROTOCOL b/PROTOCOL index 0b18edf03..4307898c2 100644 --- a/PROTOCOL +++ b/PROTOCOL @@ -432,7 +432,7 @@ Added two values to the pa_encoding_t enum: New fields in the port introspection data (duplicated for all port types: sink, source and card ports): - string available_group + string availability_group uint32 type #### If you just changed the protocol, read this diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 758bef22e..b22fba7ee 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -758,7 +758,7 @@ void pa_alsa_path_free(pa_alsa_path *p) { } pa_proplist_free(p->proplist); - pa_xfree(p->available_group); + pa_xfree(p->availability_group); pa_xfree(p->name); pa_xfree(p->description); pa_xfree(p->description_key); @@ -4276,7 +4276,7 @@ fail: } /* the logic is simple: if we see the jack in multiple paths */ -/* assign all those jacks to one available_group */ +/* assign all those jacks to one availability_group */ static void mapping_group_available(pa_hashmap *paths) { void *state, *state2; @@ -4300,7 +4300,7 @@ static void mapping_group_available(pa_hashmap *paths) if (pa_streq(j->name, j2->name)) { j->state_plugged = PA_AVAILABLE_UNKNOWN; j2->state_plugged = PA_AVAILABLE_UNKNOWN; - found = p2->available_group; + found = p2->availability_group; break; } } @@ -4311,9 +4311,9 @@ static void mapping_group_available(pa_hashmap *paths) if (!has_control) continue; if (!found) { - p->available_group = pa_sprintf_malloc("Legacy %d", num); + p->availability_group = pa_sprintf_malloc("Legacy %d", num); } else { - p->available_group = pa_xstrdup(found); + p->availability_group = pa_xstrdup(found); } if (!found) num++; @@ -5173,7 +5173,7 @@ static pa_device_port* device_port_alsa_init(pa_hashmap *ports, /* card ports */ pa_device_port_new_data_set_description(&port_data, description); pa_device_port_new_data_set_direction(&port_data, path->direction == PA_ALSA_DIRECTION_OUTPUT ? PA_DIRECTION_OUTPUT : PA_DIRECTION_INPUT); pa_device_port_new_data_set_type(&port_data, path->device_port_type); - pa_device_port_new_data_set_available_group(&port_data, path->available_group); + pa_device_port_new_data_set_availability_group(&port_data, path->availability_group); p = pa_device_port_new(core, &port_data, sizeof(pa_alsa_port_data)); pa_device_port_new_data_done(&port_data); diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h index a7d0ddce9..905e3128b 100644 --- a/src/modules/alsa/alsa-mixer.h +++ b/src/modules/alsa/alsa-mixer.h @@ -211,7 +211,7 @@ struct pa_alsa_path { char *name; char *description_key; char *description; - char *available_group; + char *availability_group; pa_device_port_type_t device_port_type; unsigned priority; bool autodetect_eld_device; diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c index c32d3c121..b63ae364f 100644 --- a/src/modules/alsa/alsa-ucm.c +++ b/src/modules/alsa/alsa-ucm.c @@ -1065,7 +1065,7 @@ static void ucm_add_port_combination( pa_device_port_new_data_set_type(&port_data, type); pa_device_port_new_data_set_direction(&port_data, is_sink ? PA_DIRECTION_OUTPUT : PA_DIRECTION_INPUT); if (jack) - pa_device_port_new_data_set_available_group(&port_data, jack->name); + pa_device_port_new_data_set_availability_group(&port_data, jack->name); port = pa_device_port_new(core, &port_data, sizeof(pa_alsa_ucm_port_data)); pa_device_port_new_data_done(&port_data); diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c index bb4ae489e..4c384eec5 100644 --- a/src/modules/module-tunnel.c +++ b/src/modules/module-tunnel.c @@ -1040,7 +1040,7 @@ static int read_ports(struct userdata *u, pa_tagstruct *t) { return -PA_ERR_PROTOCOL; } if (u->version >= 34 && - (pa_tagstruct_gets(t, &s) < 0 || /* available_group */ + (pa_tagstruct_gets(t, &s) < 0 || /* availability group */ pa_tagstruct_getu32(t, &priority) < 0)) { /* device port type */ pa_log("Parse failure"); return -PA_ERR_PROTOCOL; diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c index b19c3fd25..3027f38ed 100644 --- a/src/pulse/introspect.c +++ b/src/pulse/introspect.c @@ -219,10 +219,10 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u goto fail; i.ports[j]->available = av; } - i.ports[j]->available_group = NULL; + i.ports[j]->availability_group = NULL; i.ports[j]->type = PA_DEVICE_PORT_TYPE_UNKNOWN; if (o->context->version >= 34) { - if (pa_tagstruct_gets(t, &i.ports[j]->available_group) < 0 || + if (pa_tagstruct_gets(t, &i.ports[j]->availability_group) < 0 || pa_tagstruct_getu32(t, &i.ports[j]->type) < 0) goto fail; } @@ -499,10 +499,10 @@ static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command, goto fail; i.ports[j]->available = av; } - i.ports[j]->available_group = NULL; + i.ports[j]->availability_group = NULL; i.ports[j]->type = PA_DEVICE_PORT_TYPE_UNKNOWN; if (o->context->version >= 34) { - if (pa_tagstruct_gets(t, &i.ports[j]->available_group) < 0 || + if (pa_tagstruct_gets(t, &i.ports[j]->availability_group) < 0 || pa_tagstruct_getu32(t, &i.ports[j]->type)) goto fail; } @@ -879,11 +879,11 @@ static int fill_card_port_info(pa_context *context, pa_tagstruct* t, pa_card_inf port->type = PA_DEVICE_PORT_TYPE_UNKNOWN; if (context->version >= 34) { - if (pa_tagstruct_gets(t, &port->available_group) < 0 || + if (pa_tagstruct_gets(t, &port->availability_group) < 0 || pa_tagstruct_getu32(t, &port->type) < 0) return -PA_ERR_PROTOCOL; } else - port->available_group = NULL; + port->availability_group = NULL; } return 0; diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h index 657510747..8fff1ac77 100644 --- a/src/pulse/introspect.h +++ b/src/pulse/introspect.h @@ -229,14 +229,14 @@ typedef struct pa_sink_port_info { const char *description; /**< Description of this port */ uint32_t priority; /**< The higher this value is, the more useful this port is as a default. */ int available; /**< A flags (see #pa_port_available), indicating availability status of this port. \since 2.0 */ - const char *available_group; /**< An indentifier for the group of ports that share their availability status with + const char *availability_group; /**< An indentifier for the group of ports that share their availability status with * each other. This is meant especially for handling cases where one 3.5 mm connector * is used for headphones, headsets and microphones, and the hardware can only tell * that something was plugged in but not what exactly. In this situation the ports for * all those devices share their availability status, and PulseAudio can't tell which * one is actually plugged in, and some application may ask the user what was plugged * in. Such applications should get a list of all card ports and compare their - * `available_group` fields. Ports that have the same group are those that need + * `availability_group` fields. Ports that have the same group are those that need * input from the user to determine which device was plugged in. The application should * then activate the user-chosen port. * @@ -334,14 +334,14 @@ typedef struct pa_source_port_info { const char *description; /**< Description of this port */ uint32_t priority; /**< The higher this value is, the more useful this port is as a default. */ int available; /**< A flags (see #pa_port_available), indicating availability status of this port. \since 2.0 */ - const char *available_group; /**< An indentifier for the group of ports that share their availability status with + const char *availability_group; /**< An indentifier for the group of ports that share their availability status with * each other. This is meant especially for handling cases where one 3.5 mm connector * is used for headphones, headsets and microphones, and the hardware can only tell * that something was plugged in but not what exactly. In this situation the ports for * all those devices share their availability status, and PulseAudio can't tell which * one is actually plugged in, and some application may ask the user what was plugged * in. Such applications should get a list of all card ports and compare their - * `available_group` fields. Ports that have the same group are those that need + * `availability_group` fields. Ports that have the same group are those that need * input from the user to determine which device was plugged in. The application should * then activate the user-chosen port. * @@ -559,14 +559,14 @@ typedef struct pa_card_port_info { pa_proplist *proplist; /**< Property list */ int64_t latency_offset; /**< Latency offset of the port that gets added to the sink/source latency when the port is active. \since 3.0 */ pa_card_profile_info2** profiles2; /**< Array of pointers to available profiles, or NULL. Array is terminated by an entry set to NULL. \since 5.0 */ - const char *available_group; /**< An indentifier for the group of ports that share their availability status with + const char *availability_group; /**< An indentifier for the group of ports that share their availability status with * each other. This is meant especially for handling cases where one 3.5 mm connector * is used for headphones, headsets and microphones, and the hardware can only tell * that something was plugged in but not what exactly. In this situation the ports for * all those devices share their availability status, and PulseAudio can't tell which * one is actually plugged in, and some application may ask the user what was plugged * in. Such applications should get a list of all card ports and compare their - * `available_group` fields. Ports that have the same group are those that need + * `availability_group` fields. Ports that have the same group are those that need * input from the user to determine which device was plugged in. The application should * then activate the user-chosen port. * diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c index 416bb1a8a..8263c9e9b 100644 --- a/src/pulsecore/device-port.c +++ b/src/pulsecore/device-port.c @@ -54,11 +54,11 @@ void pa_device_port_new_data_set_available(pa_device_port_new_data *data, pa_ava data->available = available; } -void pa_device_port_new_data_set_available_group(pa_device_port_new_data *data, const char *group) { +void pa_device_port_new_data_set_availability_group(pa_device_port_new_data *data, const char *group) { pa_assert(data); - pa_xfree(data->available_group); - data->available_group = pa_xstrdup(group); + pa_xfree(data->availability_group); + data->availability_group = pa_xstrdup(group); } void pa_device_port_new_data_set_direction(pa_device_port_new_data *data, pa_direction_t direction) { @@ -78,7 +78,7 @@ void pa_device_port_new_data_done(pa_device_port_new_data *data) { pa_xfree(data->name); pa_xfree(data->description); - pa_xfree(data->available_group); + pa_xfree(data->availability_group); } void pa_device_port_set_preferred_profile(pa_device_port *p, const char *new_pp) { @@ -164,7 +164,7 @@ static void device_port_free(pa_object *o) { if (p->profiles) pa_hashmap_free(p->profiles); - pa_xfree(p->available_group); + pa_xfree(p->availability_group); pa_xfree(p->preferred_profile); pa_xfree(p->name); pa_xfree(p->description); @@ -190,8 +190,8 @@ pa_device_port *pa_device_port_new(pa_core *c, pa_device_port_new_data *data, si p->card = NULL; p->priority = 0; p->available = data->available; - p->available_group = data->available_group; - data->available_group = NULL; + p->availability_group = data->availability_group; + data->availability_group = NULL; p->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); p->direction = data->direction; p->type = data->type; diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h index d75eb3c36..7178ff2ae 100644 --- a/src/pulsecore/device-port.h +++ b/src/pulsecore/device-port.h @@ -47,7 +47,7 @@ struct pa_device_port { unsigned priority; pa_available_t available; /* PA_AVAILABLE_UNKNOWN, PA_AVAILABLE_NO or PA_AVAILABLE_YES */ - char *available_group; /* a string indentifier which determine the group of devices handling the available state simulteneously */ + char *availability_group; /* a string indentifier which determine the group of devices handling the available state simulteneously */ pa_proplist *proplist; pa_hashmap *profiles; /* Does not own the profiles */ @@ -69,7 +69,7 @@ typedef struct pa_device_port_new_data { char *name; char *description; pa_available_t available; - char *available_group; + char *availability_group; pa_direction_t direction; pa_device_port_type_t type; } pa_device_port_new_data; @@ -78,7 +78,7 @@ pa_device_port_new_data *pa_device_port_new_data_init(pa_device_port_new_data *d void pa_device_port_new_data_set_name(pa_device_port_new_data *data, const char *name); void pa_device_port_new_data_set_description(pa_device_port_new_data *data, const char *description); void pa_device_port_new_data_set_available(pa_device_port_new_data *data, pa_available_t available); -void pa_device_port_new_data_set_available_group(pa_device_port_new_data *data, const char *group); +void pa_device_port_new_data_set_availability_group(pa_device_port_new_data *data, const char *group); void pa_device_port_new_data_set_direction(pa_device_port_new_data *data, pa_direction_t direction); void pa_device_port_new_data_set_type(pa_device_port_new_data *data, pa_device_port_type_t type); void pa_device_port_new_data_done(pa_device_port_new_data *data); diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index 25bd5ddf8..e8559b239 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -3208,7 +3208,7 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin if (c->version >= 24) { pa_tagstruct_putu32(t, p->available); if (c->version >= 34) { - pa_tagstruct_puts(t, p->available_group); + pa_tagstruct_puts(t, p->availability_group); pa_tagstruct_putu32(t, p->type); } } @@ -3283,7 +3283,7 @@ static void source_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_s if (c->version >= 24) { pa_tagstruct_putu32(t, p->available); if (c->version >= 34) { - pa_tagstruct_puts(t, p->available_group); + pa_tagstruct_puts(t, p->availability_group); pa_tagstruct_putu32(t, p->type); } } @@ -3371,7 +3371,7 @@ static void card_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_car if (c->version >= 27) { pa_tagstruct_puts64(t, port->latency_offset); if (c->version >= 34) { - pa_tagstruct_puts(t, port->available_group); + pa_tagstruct_puts(t, port->availability_group); pa_tagstruct_putu32(t, port->type); } } diff --git a/src/utils/pactl.c b/src/utils/pactl.c index 0b82921b7..1f9ce4633 100644 --- a/src/utils/pactl.c +++ b/src/utils/pactl.c @@ -363,8 +363,8 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_ for (p = i->ports; *p; p++) printf(_("\t\t%s: %s (type: %s, priority: %u%s%s%s)\n"), (*p)->name, (*p)->description, get_device_port_type((*p)->type), - (*p)->priority, (*p)->available_group ? _(", available group: ") : "", - (*p)->available_group ?: "", get_available_str_ynonly((*p)->available)); + (*p)->priority, (*p)->availability_group ? _(", availability group: ") : "", + (*p)->availability_group ?: "", get_available_str_ynonly((*p)->available)); } if (i->active_port) @@ -471,8 +471,8 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int for (p = i->ports; *p; p++) printf(_("\t\t%s: %s (type: %s, priority: %u%s%s%s)\n"), (*p)->name, (*p)->description, get_device_port_type((*p)->type), - (*p)->priority, (*p)->available_group ? _(", available group: ") : "", - (*p)->available_group ?: "", get_available_str_ynonly((*p)->available)); + (*p)->priority, (*p)->availability_group ? _(", availability group: ") : "", + (*p)->availability_group ?: "", get_available_str_ynonly((*p)->available)); } if (i->active_port) @@ -635,7 +635,7 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_ pa_card_profile_info **pr = (*p)->profiles; printf(_("\t\t%s: %s (type: %s, priority: %u, latency offset: %" PRId64 " usec%s%s%s)\n"), (*p)->name, (*p)->description, get_device_port_type((*p)->type), (*p)->priority, (*p)->latency_offset, - (*p)->available_group ? _(", available group: ") : "", (*p)->available_group ?: "", + (*p)->availability_group ? _(", availability group: ") : "", (*p)->availability_group ?: "", get_available_str_ynonly((*p)->available)); if (!pa_proplist_isempty((*p)->proplist)) { From a863b5795a6a67bd1dc6398fe4f240934641ea8e Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Mon, 10 Aug 2020 20:56:43 +0300 Subject: [PATCH 028/872] alsa-mixer: Fix indentation --- src/modules/alsa/alsa-mixer.c | 48 +++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index b22fba7ee..b1f6c490a 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -4288,34 +4288,34 @@ static void mapping_group_available(pa_hashmap *paths) const char *found = NULL; bool has_control = false; PA_LLIST_FOREACH(j, p->jacks) { - if (!j->has_control || j->state_plugged == PA_AVAILABLE_NO) - continue; - has_control = true; - PA_HASHMAP_FOREACH(p2, paths, state2) { - if (p2 == p) + if (!j->has_control || j->state_plugged == PA_AVAILABLE_NO) + continue; + has_control = true; + PA_HASHMAP_FOREACH(p2, paths, state2) { + if (p2 == p) break; PA_LLIST_FOREACH(j2, p2->jacks) { if (!j2->has_control || j2->state_plugged == PA_AVAILABLE_NO) - continue; - if (pa_streq(j->name, j2->name)) { + continue; + if (pa_streq(j->name, j2->name)) { j->state_plugged = PA_AVAILABLE_UNKNOWN; - j2->state_plugged = PA_AVAILABLE_UNKNOWN; - found = p2->availability_group; - break; - } - } - } - if (found) - break; - } - if (!has_control) - continue; - if (!found) { - p->availability_group = pa_sprintf_malloc("Legacy %d", num); - } else { - p->availability_group = pa_xstrdup(found); - } - if (!found) + j2->state_plugged = PA_AVAILABLE_UNKNOWN; + found = p2->availability_group; + break; + } + } + } + if (found) + break; + } + if (!has_control) + continue; + if (!found) { + p->availability_group = pa_sprintf_malloc("Legacy %d", num); + } else { + p->availability_group = pa_xstrdup(found); + } + if (!found) num++; } } From c7343ef68320022f601419bda9924da3e49397f1 Mon Sep 17 00:00:00 2001 From: Geert Warrink Date: Fri, 10 Jul 2020 19:00:45 +0000 Subject: [PATCH 029/872] Translated using Weblate (Dutch) Currently translated at 85.8% (426 of 496 strings) Translation: pulseaudio/pulseaudio Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/nl/ --- po/nl.po | 103 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 48 deletions(-) diff --git a/po/nl.po b/po/nl.po index e5be84d78..4470aefda 100644 --- a/po/nl.po +++ b/po/nl.po @@ -9,13 +9,16 @@ msgstr "" "Project-Id-Version: pulseaudio.master-tx\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-01-30 10:10+0000\n" -"PO-Revision-Date: 2012-01-30 09:54+0000\n" -"Last-Translator: Reinout van Schouwen \n" -"Language-Team: Dutch \n" +"PO-Revision-Date: 2020-07-11 20:27+0000\n" +"Last-Translator: Geert Warrink \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.1.1\n" #: ../src/modules/alsa/alsa-util.c:1136 ../src/modules/alsa/alsa-util.c:1204 #, c-format @@ -44,17 +47,17 @@ msgstr "" "probleem alstublieft aan de ALSA-ontwikkelaars." #: ../src/modules/alsa/alsa-util.c:1220 -#, fuzzy, c-format +#, c-format msgid "" "snd_pcm_avail_delay() returned strange values: delay %lu is less than avail " "%lu.\n" "Most likely this is a bug in the ALSA driver '%s'. Please report this issue " "to the ALSA developers." msgstr "" -"snd_pcm_avail() gaf een waarde terug die uitzonderlijk groot is: %lu bytes " -"(%lu ms).\n" -"Waarschijnlijk is dit een fout in het ALSA-stuurprogramma ‘%s’. Meld dit " -"probleem alstublieft aan de ALSA-ontwikkelaars." +"snd_pcm_avail_delay() gaf vreemde waardes terug: vertraging %lu is minder " +"dan %lu.\n" +"Waarschijnlijk is dit een fout in het ALSA-stuurprogramma '%s'. Meld dit " +"probleem aan de ALSA-ontwikkelaars." #: ../src/modules/alsa/alsa-util.c:1263 #, c-format @@ -83,7 +86,6 @@ msgid "Virtual LADSPA sink" msgstr "Virtuele LADSPA afvoer" #: ../src/modules/module-ladspa-sink.c:52 -#, fuzzy msgid "" "sink_name= sink_properties= " "master= format= rate= " @@ -95,9 +97,11 @@ msgid "" msgstr "" "sink_name= sink_properties= master= format= " -"rate= channels= channel_map= " -"plugin= label= " -"control=" +"rate= channels= " +"channel_map= plugin= label= control= " +"input_ladspaport_map= " +"output_ladspaport_map= " #: ../src/modules/module-null-sink.c:49 msgid "Clocked NULL sink" @@ -203,6 +207,8 @@ msgid "" "System mode refused for non-root user. Only starting the D-Bus server lookup " "service." msgstr "" +"Systeemmodus geweigerd voor niet-rootgebruiker. Alleen starten van de D-Bus-" +"server zoekservice." #: ../src/daemon/main.c:611 msgid "Daemon not running" @@ -238,12 +244,16 @@ msgstr "--start wordt niet ondersteund voor systeeminstanties" #, c-format msgid "User-configured server at %s, refusing to start/autospawn." msgstr "" +"Door gebruiker geconfigureerde server op %s, die weigert te starten/" +"autospawn." #: ../src/daemon/main.c:713 #, c-format msgid "" "User-configured server at %s, which appears to be local. Probing deeper." msgstr "" +"Door gebruiker geconfigureerde server op %s, die lokaal lijkt te zijn. " +"Dieper onderzoeken." #: ../src/daemon/main.c:718 msgid "Running in system mode, but --disallow-exit not set!" @@ -267,9 +277,9 @@ msgid "Failed to acquire stdio." msgstr "Verkrijgen van stdio mislukte." #: ../src/daemon/main.c:763 ../src/daemon/main.c:828 -#, fuzzy, c-format +#, c-format msgid "pipe() failed: %s" -msgstr "pipe mislukte: %s" +msgstr "pipe() mislukte: %s" #: ../src/daemon/main.c:768 ../src/daemon/main.c:833 #, c-format @@ -290,9 +300,9 @@ msgid "Daemon startup successful." msgstr "Voorziening met succes opgestart." #: ../src/daemon/main.c:816 -#, fuzzy, c-format +#, c-format msgid "setsid() failed: %s" -msgstr "read() mislukte: %s" +msgstr "setsid() mislukte: %s" #: ../src/daemon/main.c:901 #, c-format @@ -338,9 +348,9 @@ msgid "Running in valgrind mode: %s" msgstr "Draaiend in valgrind-modus: %s" #: ../src/daemon/main.c:921 -#, fuzzy, c-format +#, c-format msgid "Running in VM: %s" -msgstr "Draaiend op host: %s" +msgstr "Draaiend in VM: %s" #: ../src/daemon/main.c:924 msgid "Optimized build: yes" @@ -455,7 +465,7 @@ msgid "Daemon terminated." msgstr "Voorziening is afgesloten." #: ../src/daemon/cmdline.c:113 -#, fuzzy, c-format +#, c-format msgid "" "%s [options]\n" "\n" @@ -547,7 +557,8 @@ msgstr "" " --fail[=BOOL] Verlaat als opstarten mislukt\n" " --high-priority[=BOOL] Probeer een hoog nice nivo in te " "stellen\n" -" (only beschikbaar voor, als SUID of\n" +" (alleen beschikbaar voor, als SUID " +"of\n" " met verhoogde RLIMIT_NICE)\n" " --realtime[=BOOL] Probeer realtime scheduling aan te " "zetten \n" @@ -563,26 +574,24 @@ msgstr "" " --exit-idle-time=SECS Sluit de daemon af deze niets doet " "en deze tijd\n" " verstreken is\n" -" --module-idle-time=SECS Verwijder automatisch geladen " -"modules als deze niets\n" -" doen en deze tijd verstreken is\n" -" --scache-idle-time=SECS Verwijder automatisch geladen " -"samples als deze niets\n" +" --scache-idle-time=SECS Verwijder automatisch geladen samples " +"als deze niets\n" " doen en deze tijd verstreken is\n" " --log-level[=LEVEL] Verhoog of instellen van " "breedsprakigheids nivo\n" -" -v Verhoog breedsprakigheids nivo\n" -" --log-target={auto,syslog,stderr} Specificeer het log doel\n" +" -v Verhoog breedsprakigheids-niveau\n" +" --log-target={auto,syslog,stderr,file:PAD}\n" +" Specificeer het log doel\n" " --log-meta[=BOOL] Voeg code locatie toe aan log " "boodschappen\n" " --log-time[=BOOL] Voeg tijdstempels toe aan log " "boodschappen\n" " --log-backtrace=FRAMES Voeg een backtrace toe aan log " "boodscvhappen\n" -" -p, --dl-search-path=PATH Stel het zoek pad voor dynamisch " +" -p, --dl-search-path=PAD Stel het zoek pad voor dynamisch " "gedeelde\n" " objecten in (plugins)\n" -" --resample-method=METHOD Gebruik de opgegeven resampling " +" --resample-method=METHODE Gebruik de opgegeven resampling " "methode\n" " (Zie --dump-resample-methods voor\n" " mogelijke waardes)\n" @@ -590,14 +599,14 @@ msgstr "" " --no-cpu-limit[=BOOL] Installeer geen CPU load begrenzer " "op\n" " platforms die dat ondersteunen.\n" -" --disable-shm[=BOOL] Zet gedeeld heugen ondersteuning " -"uit.\n" +" --disable-shm[=BOOL] Zet gedeeld heugen ondersteuning uit." +"\n" "\n" "OPSTART SCRIPT:\n" " -L, --load=\"MODULE ARGUMENTS\" Laad de opgegeven plugin module " "met\n" " de opgegeven argumenten\n" -" -F, --file=FILENAME Draai het opgegeven script\n" +" -F, --file=BESTANSNAAM Draai het opgegeven script\n" " -C Open een opdrachtregel op de " "draaiende TTY\n" " na het opstarten\n" @@ -642,11 +651,12 @@ msgid "--use-pid-file expects boolean argument" msgstr "--use-pid-file verwacht een boolean argument" #: ../src/daemon/cmdline.c:318 -#, fuzzy msgid "" "Invalid log target: use either 'syslog', 'stderr' or 'auto' or a valid file " "name 'file:'." -msgstr "Ongeldig log doel: gebruik een van 'syslog', 'stderr', 'auto'." +msgstr "" +"Ongeldig log doel: gebruik een van 'syslog', 'stderr' of 'auto' of een " +"geldige bestandsnaam 'file:'." #: ../src/daemon/cmdline.c:325 msgid "--log-time expects boolean argument" @@ -774,9 +784,9 @@ msgid "[%s:%u] Invalid nice level '%s'." msgstr "[%s:%u] Ongeldig nice niveau ‘%s’." #: ../src/daemon/daemon-conf.c:528 -#, fuzzy, c-format +#, c-format msgid "[%s:%u] Invalid server type '%s'." -msgstr "[%s:%u] Ongeldige samlperate ‘%s’." +msgstr "[%s:%u] Ongeldige servertype '%s'." #: ../src/daemon/daemon-conf.c:641 #, c-format @@ -809,14 +819,12 @@ msgid "Start the PulseAudio Sound System" msgstr "Start het PulseAudio geluidssysteem" #: ../src/daemon/pulseaudio-kde.desktop.in.h:1 -#, fuzzy msgid "PulseAudio Sound System KDE Routing Policy" -msgstr "PulseAudio geluidssysteem" +msgstr "PulseAudio geluidssysteem KDE-routeringsbeleid" #: ../src/daemon/pulseaudio-kde.desktop.in.h:2 -#, fuzzy msgid "Start the PulseAudio Sound System with KDE Routing Policy" -msgstr "Start het PulseAudio geluidssysteem" +msgstr "Start het PulseAudio geluidssysteem met KDE-routeringsbeleid" #: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757 msgid "Mono" @@ -848,7 +856,7 @@ msgstr "Achter rechts" #: ../src/pulse/channelmap.c:115 msgid "Subwoofer" -msgstr "" +msgstr "Subwoofer" #: ../src/pulse/channelmap.c:117 msgid "Front Left-of-center" @@ -1187,13 +1195,12 @@ msgid "%u B" msgstr "%u B" #: ../src/pulse/client-conf-x11.c:54 ../src/utils/pax11publish.c:100 -#, fuzzy msgid "xcb_connect() failed" -msgstr "pa_context_connect() mislukte: %s" +msgstr "xcb_connect() mislukte" #: ../src/pulse/client-conf-x11.c:59 ../src/utils/pax11publish.c:105 msgid "xcb_connection_has_error() returned true" -msgstr "" +msgstr "xcb_connection_has_error() gaf true terug" #: ../src/pulse/client-conf-x11.c:97 msgid "Failed to parse cookie data" @@ -1331,15 +1338,15 @@ msgstr "Stroom buffer attributen veranderden.%s" #: ../src/utils/pacat.c:416 msgid "Cork request stack is empty: corking stream" -msgstr "" +msgstr "Cork verzoekstack is leeg: corking stream" #: ../src/utils/pacat.c:422 msgid "Cork request stack is empty: uncorking stream" -msgstr "" +msgstr "Cork verzoekstack is leeg: uncorking stream" #: ../src/utils/pacat.c:426 msgid "Warning: Received more uncork requests than cork requests!" -msgstr "" +msgstr "Waarschuwing: meer ontkurkverzoeken ontvangen dan kurkverzoeken!" #: ../src/utils/pacat.c:451 #, c-format From 10964e0f088778c9cfc71635ca1cad948b7da598 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Tue, 14 Jul 2020 18:17:36 +0000 Subject: [PATCH 030/872] Translated using Weblate (Croatian) Currently translated at 100.0% (531 of 531 strings) Translation: pulseaudio/pulseaudio Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/hr/ --- po/hr.po | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/po/hr.po b/po/hr.po index 746d74013..b88daf40b 100644 --- a/po/hr.po +++ b/po/hr.po @@ -8,17 +8,18 @@ msgstr "" "Project-Id-Version: pulseaudio\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-11-10 14:12+0100\n" -"PO-Revision-Date: 2019-11-10 14:21+0100\n" -"Last-Translator: gogo \n" -"Language-Team: Croatian \n" +"PO-Revision-Date: 2020-07-15 19:29+0000\n" +"Last-Translator: Milo Ivir \n" +"Language-Team: Croatian \n" "Language: hr\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.1.1\n" "X-Launchpad-Export-Date: 2017-04-20 21:04+0000\n" -"X-Generator: Poedit 2.2.1\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" #: ../src/daemon/cmdline.c:113 #, c-format @@ -186,9 +187,8 @@ msgid "" "--log-level expects log level argument (either numeric in range 0..4 or one " "of debug, info, notice, warn, error)." msgstr "" -"--log-level očekuje argument na razini zapisa (ili brojeve u rasponu 0..4 " -"ili jedan od zapisa uklanjanja grešaka,informacija,bilješka,upozorenje," -"greška)" +"--log-level očekuje argument na razini zapisa (numerički u rasponu od 0 do 4 " +"ili jedan od sljedećih: debug, info, notice, warn, error)." #: ../src/daemon/cmdline.c:277 msgid "--high-priority expects boolean argument" @@ -449,8 +449,8 @@ msgid "" "System mode refused for non-root user. Only starting the D-Bus server lookup " "service." msgstr "" -"Način rada sustava je nedostupan za nekorijenske korinike. Samo pokreni D-" -"Bus poslužitelja usluge pretraživanja." +"Način rada sustava nedostupan je za neadministratorske korisnike. Pokreće se " +"samo usluga pretraživanja D-Bus poslužitelja." #: ../src/daemon/main.c:633 #, c-format @@ -462,8 +462,8 @@ msgid "" "This program is not intended to be run as root (unless --system is " "specified)." msgstr "" -"Ovaj program nije namijenjen za korijensko pokretanje (osim -- ako je " -"određeno sustavom)" +"Ovaj program nije namijenjen za pokretanje kao administrator (osim ako je " +"određen --system)." #: ../src/daemon/main.c:665 msgid "Root privileges required." @@ -706,7 +706,7 @@ msgstr "Zvučnici" #: ../src/modules/alsa/alsa-mixer.c:2541 msgid "HDMI / DisplayPort" -msgstr "HDMI / DisplayPort" +msgstr "HDMI / Ekranski priključak" #: ../src/modules/alsa/alsa-mixer.c:2542 msgid "Digital Output (S/PDIF)" @@ -2205,7 +2205,7 @@ msgstr "NAZIV SLIVNIKA|#N" #: ../src/utils/pacmd.c:64 ../src/utils/pacmd.c:65 msgid "NAME FILENAME" -msgstr "NAZIV NAZIV DATOTEKE" +msgstr "NAZIV NAZIV-DATOTEKE" #: ../src/utils/pacmd.c:66 msgid "PATHNAME" @@ -2385,7 +2385,7 @@ msgstr "" "Zadane specifikacije uzorka: %s\n" "Zadano mapiranje kanala: %s\n" "Zadani slivnik: %s\n" -"Zadani izvor: %s\n" +"Zadani izvor: %s\n" "Kolačić: %04x:%04x\n" #: ../src/utils/pactl.c:261 ../src/utils/pactl.c:908 ../src/utils/pactl.c:986 From 09e03b7bc67836d8e184884150203340213cedb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Mesk=C3=B3?= Date: Mon, 20 Jul 2020 14:15:48 +0000 Subject: [PATCH 031/872] Translated using Weblate (Hungarian) Currently translated at 100.0% (526 of 526 strings) Translation: pulseaudio/pulseaudio Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/hu/ --- po/hu.po | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/po/hu.po b/po/hu.po index d6796229f..52fa4966f 100644 --- a/po/hu.po +++ b/po/hu.po @@ -8,20 +8,22 @@ msgid "" msgstr "" "Project-Id-Version: PulseAudio master\n" -"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/new\n" +"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/" +"issues/new\n" "POT-Creation-Date: 2016-08-23 02:28+0000\n" -"PO-Revision-Date: 2016-08-23 12:10+0200\n" -"Last-Translator: Balázs Úr \n" -"Language-Team: Hungarian \n" +"PO-Revision-Date: 2020-07-21 15:29+0000\n" +"Last-Translator: Balázs Meskó \n" +"Language-Team: Hungarian \n" "Language: hu\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.1.1\n" "X-Poedit-Language: Hungarian\n" "X-Poedit-Country: HUNGARY\n" "X-Poedit-SourceCharset: utf-8\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.2\n" #: ../src/daemon/cmdline.c:113 #, c-format @@ -567,7 +569,7 @@ msgstr "A „pa_pid_file_create()” függvényhívás meghiúsult." #: ../src/daemon/main.c:1022 msgid "pa_core_new() failed." -msgstr "A „pa_core_new()” függvényhívás meghiúsult: %s" +msgstr "A pa_core_new() sikertelen." #: ../src/daemon/main.c:1090 msgid "Failed to initialize daemon." @@ -1091,7 +1093,7 @@ msgstr "" "sink_master= format= " "rate= channels= " "channel_map= autoloaded= use_volume_sharing=" +"automatikusan betöltődik> use_volume_sharing= " #: ../src/modules/module-filter-apply.c:47 msgid "autoclean=" @@ -1115,10 +1117,10 @@ msgstr "" "master= format= rate= channels= channel_map= " "plugin= label= " -"control= " +"control= " "input_ladspaport_map= output_ladspaport_map=" +"elválasztott listája> " #: ../src/modules/module-null-sink.c:47 msgid "Clocked NULL sink" @@ -1554,7 +1556,7 @@ msgstr "Belső hiba" #: ../src/pulse/error.c:49 msgid "Connection terminated" -msgstr "A kapcsolat megszakadt." +msgstr "A kapcsolat megszakadt" #: ../src/pulse/error.c:50 msgid "Entity killed" @@ -1566,7 +1568,7 @@ msgstr "Érvénytelen kiszolgáló" #: ../src/pulse/error.c:52 msgid "Module initialization failed" -msgstr "A modul előkészítése meghiúsult." +msgstr "A modul előkészítése sikertelen" #: ../src/pulse/error.c:53 msgid "Bad state" @@ -1744,7 +1746,7 @@ msgstr "" #: ../src/utils/pacat.c:409 msgid "not " -msgstr "nem" +msgstr "nem " #: ../src/utils/pacat.c:416 #, c-format @@ -2852,6 +2854,7 @@ msgstr "" "\n" " -h, --help Ezen súgó megjelenítése\n" " --version Verziószám megjelenítése\n" +"\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" From 1d066f2264be984f7a1a5b9fb40ba616dd15ba17 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Thu, 13 Aug 2020 22:01:18 +0300 Subject: [PATCH 032/872] i18n: Update pulseaudio.pot --- po/pulseaudio.pot | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/po/pulseaudio.pot b/po/pulseaudio.pot index 113a0a0c8..a082fa2a7 100644 --- a/po/pulseaudio.pot +++ b/po/pulseaudio.pot @@ -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: 2020-07-10 13:43+0300\n" +"POT-Creation-Date: 2020-08-13 22:00+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -598,26 +598,22 @@ msgid "Digital Input (S/PDIF)" msgstr "" #: src/modules/alsa/alsa-mixer.c:2728 -msgid "Digital Passthrough (S/PDIF)" -msgstr "" - -#: src/modules/alsa/alsa-mixer.c:2729 msgid "Multichannel Input" msgstr "" -#: src/modules/alsa/alsa-mixer.c:2730 +#: src/modules/alsa/alsa-mixer.c:2729 msgid "Multichannel Output" msgstr "" -#: src/modules/alsa/alsa-mixer.c:2731 +#: src/modules/alsa/alsa-mixer.c:2730 msgid "Game Output" msgstr "" -#: src/modules/alsa/alsa-mixer.c:2732 +#: src/modules/alsa/alsa-mixer.c:2731 msgid "Chat Output" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4355 +#: src/modules/alsa/alsa-mixer.c:4380 msgid "Analog Mono" msgstr "" @@ -626,127 +622,131 @@ msgstr "" #. * here would lead to the source name to become "Analog Stereo Input #. * Input". The same logic applies to analog-stereo-output, #. * multichannel-input and multichannel-output. -#: src/modules/alsa/alsa-mixer.c:4356 src/modules/alsa/alsa-mixer.c:4364 -#: src/modules/alsa/alsa-mixer.c:4365 +#: src/modules/alsa/alsa-mixer.c:4381 src/modules/alsa/alsa-mixer.c:4389 +#: src/modules/alsa/alsa-mixer.c:4390 msgid "Analog Stereo" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4357 src/pulse/channelmap.c:103 +#: src/modules/alsa/alsa-mixer.c:4382 src/pulse/channelmap.c:103 #: src/pulse/channelmap.c:771 msgid "Mono" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4358 src/pulse/channelmap.c:775 +#: src/modules/alsa/alsa-mixer.c:4383 src/pulse/channelmap.c:775 msgid "Stereo" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4366 src/modules/alsa/alsa-mixer.c:4367 +#: src/modules/alsa/alsa-mixer.c:4391 src/modules/alsa/alsa-mixer.c:4392 msgid "Multichannel" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4368 +#: src/modules/alsa/alsa-mixer.c:4393 msgid "Analog Surround 2.1" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4369 +#: src/modules/alsa/alsa-mixer.c:4394 msgid "Analog Surround 3.0" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4370 +#: src/modules/alsa/alsa-mixer.c:4395 msgid "Analog Surround 3.1" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4371 +#: src/modules/alsa/alsa-mixer.c:4396 msgid "Analog Surround 4.0" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4372 +#: src/modules/alsa/alsa-mixer.c:4397 msgid "Analog Surround 4.1" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4373 +#: src/modules/alsa/alsa-mixer.c:4398 msgid "Analog Surround 5.0" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4374 +#: src/modules/alsa/alsa-mixer.c:4399 msgid "Analog Surround 5.1" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4375 +#: src/modules/alsa/alsa-mixer.c:4400 msgid "Analog Surround 6.0" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4376 +#: src/modules/alsa/alsa-mixer.c:4401 msgid "Analog Surround 6.1" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4377 +#: src/modules/alsa/alsa-mixer.c:4402 msgid "Analog Surround 7.0" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4378 +#: src/modules/alsa/alsa-mixer.c:4403 msgid "Analog Surround 7.1" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4379 +#: src/modules/alsa/alsa-mixer.c:4404 msgid "Digital Stereo (IEC958)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4380 -msgid "Digital Passthrough (IEC958)" -msgstr "" - -#: src/modules/alsa/alsa-mixer.c:4381 +#: src/modules/alsa/alsa-mixer.c:4405 msgid "Digital Surround 4.0 (IEC958/AC3)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4382 +#: src/modules/alsa/alsa-mixer.c:4406 msgid "Digital Surround 5.1 (IEC958/AC3)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4383 +#: src/modules/alsa/alsa-mixer.c:4407 msgid "Digital Surround 5.1 (IEC958/DTS)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4384 +#: src/modules/alsa/alsa-mixer.c:4408 msgid "Digital Stereo (HDMI)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4385 +#: src/modules/alsa/alsa-mixer.c:4409 msgid "Digital Surround 5.1 (HDMI)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4518 +#: src/modules/alsa/alsa-mixer.c:4410 +msgid "Chat" +msgstr "" + +#: src/modules/alsa/alsa-mixer.c:4411 +msgid "Game" +msgstr "" + +#: src/modules/alsa/alsa-mixer.c:4545 msgid "Analog Mono Duplex" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4519 +#: src/modules/alsa/alsa-mixer.c:4546 msgid "Analog Stereo Duplex" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4520 +#: src/modules/alsa/alsa-mixer.c:4547 msgid "Digital Stereo Duplex (IEC958)" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4521 +#: src/modules/alsa/alsa-mixer.c:4548 msgid "Multichannel Duplex" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4522 +#: src/modules/alsa/alsa-mixer.c:4549 msgid "Stereo Duplex" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4523 src/modules/alsa/module-alsa-card.c:188 +#: src/modules/alsa/alsa-mixer.c:4550 src/modules/alsa/module-alsa-card.c:188 #: src/modules/bluetooth/module-bluez5-device.c:2053 msgid "Off" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4622 +#: src/modules/alsa/alsa-mixer.c:4650 #, c-format msgid "%s Output" msgstr "" -#: src/modules/alsa/alsa-mixer.c:4630 +#: src/modules/alsa/alsa-mixer.c:4658 #, c-format msgid "%s Input" msgstr "" @@ -2132,7 +2132,7 @@ msgid "\t\t%s: %s (type: %s, priority: %u%s%s%s)\n" msgstr "" #: src/utils/pactl.c:366 src/utils/pactl.c:474 src/utils/pactl.c:638 -msgid ", available group: " +msgid ", availability group: " msgstr "" #: src/utils/pactl.c:371 src/utils/pactl.c:479 From 1887a0f88bb0e785342ede23d80b06fdf68b8995 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Fri, 14 Aug 2020 14:13:32 +0000 Subject: [PATCH 033/872] shell-completion: zsh: Correct a typo --- shell-completion/zsh/_pulseaudio | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell-completion/zsh/_pulseaudio b/shell-completion/zsh/_pulseaudio index 0e9e89bd3..da72010c6 100644 --- a/shell-completion/zsh/_pulseaudio +++ b/shell-completion/zsh/_pulseaudio @@ -668,7 +668,7 @@ _pacat_completion() { '--process-time-msec=[request the specified process time in msec]:msec' \ '--property=[set the specified property]:property' \ '--raw[record/play raw PCM data]' \ - '--passthrough[passtrough data]' \ + '--passthrough[passthrough data]' \ '--file-format=[record/play formatted PCM data]:format:_pacat_file_formats' \ '--list-file-formats[list available formats]' \ '::files:_files' \ From 90a6c5ef0707ff024f1dab68ff0ffa2e9fd9b8b5 Mon Sep 17 00:00:00 2001 From: itsthem Date: Fri, 28 Aug 2020 13:15:50 +0000 Subject: [PATCH 034/872] pulsecore: Replace gendered pronouns with gender neutral ones --- src/pulsecore/client.h | 2 +- src/pulsecore/mcalign.h | 2 +- src/pulsecore/memblock.h | 2 +- src/pulsecore/sink.c | 4 ++-- src/pulsecore/source.c | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pulsecore/client.h b/src/pulsecore/client.h index eb8173d32..c6952e3c9 100644 --- a/src/pulsecore/client.h +++ b/src/pulsecore/client.h @@ -29,7 +29,7 @@ /* Every connection to the server should have a pa_client * attached. That way the user may generate a listing of all connected - * clients easily and kill them if he wants.*/ + * clients easily and kill them if they want.*/ struct pa_client { uint32_t index; diff --git a/src/pulsecore/mcalign.h b/src/pulsecore/mcalign.h index e29d82e7e..353e66ad6 100644 --- a/src/pulsecore/mcalign.h +++ b/src/pulsecore/mcalign.h @@ -28,7 +28,7 @@ /* Method of operation: the user creates a new mcalign object by * calling pa_mcalign_new() with the appropriate aligning - * granularity. After that he may call pa_mcalign_push() for an input + * granularity. After that they may call pa_mcalign_push() for an input * memchunk. After exactly one memchunk the user has to call * pa_mcalign_pop() until it returns -1. If pa_mcalign_pop() returns * 0, the memchunk *c is valid and aligned to the granularity. Some diff --git a/src/pulsecore/memblock.h b/src/pulsecore/memblock.h index 57ae4b294..4273c098e 100644 --- a/src/pulsecore/memblock.h +++ b/src/pulsecore/memblock.h @@ -99,7 +99,7 @@ void pa_memblock_unref(pa_memblock*b); pa_memblock* pa_memblock_ref(pa_memblock*b); /* This special unref function has to be called by the owner of the -memory of a static memory block when he wants to release all +memory of a static memory block when they want to release all references to the memory. This causes the memory to be copied and converted into a pool of malloc'ed memory block. Please note that this function is not multiple caller safe, i.e. needs to be locked diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index 9bb5ae506..56a3ce433 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -704,8 +704,8 @@ void pa_sink_put(pa_sink* s) { pa_cvolume_remap(&s->real_volume, &root_sink->channel_map, &s->channel_map); } else /* We assume that if the sink implementor changed the default - * volume he did so in real_volume, because that is the usual - * place where he is supposed to place his changes. */ + * volume they did so in real_volume, because that is the usual + * place where they are supposed to place their changes. */ s->reference_volume = s->real_volume; s->thread_info.soft_volume = s->soft_volume; diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index 039c7bd5f..705c93906 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -654,8 +654,8 @@ void pa_source_put(pa_source *s) { pa_cvolume_remap(&s->real_volume, &root_source->channel_map, &s->channel_map); } else /* We assume that if the sink implementor changed the default - * volume he did so in real_volume, because that is the usual - * place where he is supposed to place his changes. */ + * volume they did so in real_volume, because that is the usual + * place where they are supposed to place their changes. */ s->reference_volume = s->real_volume; s->thread_info.soft_volume = s->soft_volume; From e36132b7dcc4283b1f8b89a14f145966e7264463 Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Sun, 16 Aug 2020 20:16:01 +0000 Subject: [PATCH 035/872] main, core: check idle after loading conf pa_core_check_idle() uses pa_core.exit_idle_time, which is set after the pa_core_new() call, so pa_core_check_idle() needs to be called later. This patch preserves the fact that core state is set to PA_CORE_RUNNING after checking idle (now in main). It doesn't seem to matter anyway and main(pa_core_new(state:PA_CORE_STARTUP)->...->state:PA_CORE_RUNNING) seems right as well. --- src/daemon/main.c | 4 ++++ src/pulsecore/core.c | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/daemon/main.c b/src/daemon/main.c index f1810c5f1..59f931219 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -1067,6 +1067,10 @@ int main(int argc, char *argv[]) { c->server_type = conf->local_server_type; #endif + pa_core_check_idle(c); + + c->state = PA_CORE_RUNNING; + pa_cpu_init(&c->cpu_info); pa_assert_se(pa_signal_init(pa_mainloop_get_api(mainloop)) == 0); diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c index 335f8029e..c28c5312b 100644 --- a/src/pulsecore/core.c +++ b/src/pulsecore/core.c @@ -159,10 +159,6 @@ pa_core* pa_core_new(pa_mainloop_api *m, bool shared, bool enable_memfd, size_t pa_check_signal_is_blocked(SIGPIPE); #endif - pa_core_check_idle(c); - - c->state = PA_CORE_RUNNING; - return c; } From f003d6ca62186e2b5394a7f9a2e29c1b3fbf56c7 Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Sun, 16 Aug 2020 22:16:23 +0000 Subject: [PATCH 036/872] man: mention that exit-idle-time is complied if the user is lingering --- man/pulse-daemon.conf.5.xml.in | 3 ++- man/pulseaudio.1.xml.in | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in index d76e0b31d..52223fb8c 100644 --- a/man/pulse-daemon.conf.5.xml.in +++ b/man/pulse-daemon.conf.5.xml.in @@ -326,7 +326,8 @@ License along with PulseAudio; if not, see . session, then any positive value will be reset to 0 so that PulseAudio will terminate immediately on logout. A positive value therefore has effect only in environments where there's no support for login session - tracking. A negative value can still be used to disable any automatic + tracking (or if the user is logged in without a session spawned, a.k.a. + lingering). A negative value can still be used to disable any automatic exit.

When PulseAudio runs in the system mode, automatic exit is always diff --git a/man/pulseaudio.1.xml.in b/man/pulseaudio.1.xml.in index 4b9f085d3..996bee082 100644 --- a/man/pulseaudio.1.xml.in +++ b/man/pulseaudio.1.xml.in @@ -212,8 +212,9 @@ License along with PulseAudio; if not, see . session, then any positive value will be reset to 0 so that PulseAudio will terminate immediately on logout. A positive value therefore has effect only in environments where there's no support for login session - tracking. A negative value can still be used to disable any automatic - exit.

+ tracking (or if the user is logged in without a session spawned, + a.k.a. lingering). A negative value can still be used to disable any + automatic exit.

When PulseAudio runs in the system mode, automatic exit is always disabled, so this option does nothing.

From 460d0c0b79939e4e43f30824bcd6358feb1727f5 Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Tue, 11 Aug 2020 00:46:56 -0400 Subject: [PATCH 037/872] alsa-mixer: Add an explicit profile-set for Audigy devices These lost analog-mono support when we made that a fallback profile, as the stereo-fallback would be picked up as the only input profile, and that does not work in duplex mode. Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/750 --- src/Makefile.am | 1 + src/modules/alsa/90-pulseaudio.rules | 11 +++ .../alsa/mixer/profile-sets/audigy.conf | 94 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 src/modules/alsa/mixer/profile-sets/audigy.conf diff --git a/src/Makefile.am b/src/Makefile.am index f9f26f520..bd764037b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1353,6 +1353,7 @@ dist_alsaprofilesets_DATA = \ modules/alsa/mixer/profile-sets/default.conf \ modules/alsa/mixer/profile-sets/force-speaker.conf \ modules/alsa/mixer/profile-sets/force-speaker-and-int-mic.conf \ + modules/alsa/mixer/profile-sets/audigy.conf \ modules/alsa/mixer/profile-sets/maudio-fasttrack-pro.conf \ modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf \ modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf \ diff --git a/src/modules/alsa/90-pulseaudio.rules b/src/modules/alsa/90-pulseaudio.rules index 1614a1685..2f82e8e9a 100644 --- a/src/modules/alsa/90-pulseaudio.rules +++ b/src/modules/alsa/90-pulseaudio.rules @@ -19,6 +19,7 @@ SUBSYSTEM!="sound", GOTO="pulseaudio_end" ACTION!="change", GOTO="pulseaudio_end" KERNEL!="card*", GOTO="pulseaudio_end" SUBSYSTEMS=="usb", GOTO="pulseaudio_check_usb" +SUBSYSTEMS=="pci", GOTO="pulseaudio_check_pci" SUBSYSTEMS=="firewire", GOTO="pulseaudio_firewire_quirk" SUBSYSTEMS=="platform", DRIVERS=="thinkpad_acpi", ENV{PULSE_IGNORE}="1" @@ -143,6 +144,16 @@ ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1703", ENV{ID_ID}="usb-HyperX_Cloud_ GOTO="pulseaudio_end" +LABEL="pulseaudio_check_pci" + +# Creative SoundBlaster Audigy-based cards +# EMU10k2/CA0100/CA0102/CA10200 +ATTRS{vendor}=="0x1102", ATTRS{device}=="0x0004", ENV{PULSE_PROFILE_SET}="audigy.conf" +# CA0108/CA10300 +ATTRS{vendor}=="0x1102", ATTRS{device}=="0x0008", ENV{PULSE_PROFILE_SET}="audigy.conf" + +GOTO="pulseaudio_end" + LABEL="pulseaudio_firewire_quirk" # Focusrite Saffire Pro 10/26 i/o has a quirk to disappear from IEEE 1394 bus when losing connections. diff --git a/src/modules/alsa/mixer/profile-sets/audigy.conf b/src/modules/alsa/mixer/profile-sets/audigy.conf new file mode 100644 index 000000000..043596e30 --- /dev/null +++ b/src/modules/alsa/mixer/profile-sets/audigy.conf @@ -0,0 +1,94 @@ +# 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 . + +; Creative Sound Blaster Audigy product line +; +; These are just copies of the mappings we find in default.conf, with the +; small change of making analog-stereo and analog-mono non-fallback mappings. +; This is needed because these cards only support duplex profiles with mono +; inputs, and in the default configuration, with stereo being a fallback +; mapping, the mono mapping is never tried. +; +; See default.conf for an explanation on the directives used here. + +[General] +auto-profiles = yes + +# Based on stereo-fallback +[Mapping analog-stereo] +device-strings = hw:%f +channel-map = front-left,front-right +paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 +paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic +priority = 1 + +# Based on mono-fallback +[Mapping analog-mono] +device-strings = hw:%f +channel-map = mono +paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 analog-output-mono +paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headset-mic +priority = 1 + +# The rest of these are identical to what's in default.conf +[Mapping analog-surround-21] +device-strings = surround21:%f +channel-map = front-left,front-right,lfe +paths-output = analog-output analog-output-lineout 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 analog-output-lineout 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 analog-output-lineout 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 analog-output-lineout 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 analog-output-lineout analog-output-speaker +priority = 13 +direction = output + +[Mapping analog-surround-71] +device-strings = surround71:%f +channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right +description = Analog Surround 7.1 +paths-output = analog-output analog-output-lineout analog-output-speaker +priority = 12 +direction = output + +[Mapping iec958-stereo] +device-strings = iec958:%f +channel-map = left,right +paths-input = iec958-stereo-input +paths-output = iec958-stereo-output +priority = 5 From d0ccc50c1e57fbd7990b6a48b3520eab80586dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6ran=20Uddeborg?= Date: Thu, 13 Aug 2020 19:24:58 +0000 Subject: [PATCH 038/872] Translated using Weblate (Swedish) Currently translated at 100.0% (534 of 534 strings) Translation: pulseaudio/pulseaudio Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/sv/ --- po/sv.po | 75 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/po/sv.po b/po/sv.po index ac9e7a625..9260259df 100644 --- a/po/sv.po +++ b/po/sv.po @@ -20,15 +20,16 @@ msgstr "" "Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/" "issues\n" "POT-Creation-Date: 2018-12-11 15:29+0000\n" -"PO-Revision-Date: 2019-01-08 23:44+0100\n" -"Last-Translator: Josef Andersson \n" -"Language-Team: Svenska \n" +"PO-Revision-Date: 2020-08-14 19:29+0000\n" +"Last-Translator: Göran Uddeborg \n" +"Language-Team: Swedish \n" "Language: sv\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: Poedit 2.1.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.1.1\n" #: src/daemon/cmdline.c:113 #, c-format @@ -1289,131 +1290,131 @@ msgstr "Höger sida" #: src/pulse/channelmap.c:121 msgid "Auxiliary 0" -msgstr "Auxiliary 0" +msgstr "Extra 0" #: src/pulse/channelmap.c:122 msgid "Auxiliary 1" -msgstr "Auxiliary 1" +msgstr "Extra 1" #: src/pulse/channelmap.c:123 msgid "Auxiliary 2" -msgstr "Auxiliary 2" +msgstr "Extra 2" #: src/pulse/channelmap.c:124 msgid "Auxiliary 3" -msgstr "Auxiliary 3" +msgstr "Extra 3" #: src/pulse/channelmap.c:125 msgid "Auxiliary 4" -msgstr "Auxiliary 4" +msgstr "Extra 4" #: src/pulse/channelmap.c:126 msgid "Auxiliary 5" -msgstr "Auxiliary 5" +msgstr "Extra 5" #: src/pulse/channelmap.c:127 msgid "Auxiliary 6" -msgstr "Auxiliary 6" +msgstr "Extra 6" #: src/pulse/channelmap.c:128 msgid "Auxiliary 7" -msgstr "Auxiliary 7" +msgstr "Extra 7" #: src/pulse/channelmap.c:129 msgid "Auxiliary 8" -msgstr "Auxiliary 8" +msgstr "Extra 8" #: src/pulse/channelmap.c:130 msgid "Auxiliary 9" -msgstr "Auxiliary 9" +msgstr "Extra 9" #: src/pulse/channelmap.c:131 msgid "Auxiliary 10" -msgstr "Auxiliary 10" +msgstr "Extra 10" #: src/pulse/channelmap.c:132 msgid "Auxiliary 11" -msgstr "Auxiliary 11" +msgstr "Extra 11" #: src/pulse/channelmap.c:133 msgid "Auxiliary 12" -msgstr "Auxiliary 12" +msgstr "Extra 12" #: src/pulse/channelmap.c:134 msgid "Auxiliary 13" -msgstr "Auxiliary 13" +msgstr "Extra 13" #: src/pulse/channelmap.c:135 msgid "Auxiliary 14" -msgstr "Auxiliary 14" +msgstr "Extra 14" #: src/pulse/channelmap.c:136 msgid "Auxiliary 15" -msgstr "Auxiliary 15" +msgstr "Extra 15" #: src/pulse/channelmap.c:137 msgid "Auxiliary 16" -msgstr "Auxiliary 16" +msgstr "Extra 16" #: src/pulse/channelmap.c:138 msgid "Auxiliary 17" -msgstr "Auxiliary 17" +msgstr "Extra 17" #: src/pulse/channelmap.c:139 msgid "Auxiliary 18" -msgstr "Auxiliary 18" +msgstr "Extra 18" #: src/pulse/channelmap.c:140 msgid "Auxiliary 19" -msgstr "Auxiliary 19" +msgstr "Extra 19" #: src/pulse/channelmap.c:141 msgid "Auxiliary 20" -msgstr "Auxiliary 20" +msgstr "Extra 20" #: src/pulse/channelmap.c:142 msgid "Auxiliary 21" -msgstr "Auxiliary 21" +msgstr "Extra 21" #: src/pulse/channelmap.c:143 msgid "Auxiliary 22" -msgstr "Auxiliary 22" +msgstr "Extra 22" #: src/pulse/channelmap.c:144 msgid "Auxiliary 23" -msgstr "Auxiliary 23" +msgstr "Extra 23" #: src/pulse/channelmap.c:145 msgid "Auxiliary 24" -msgstr "Auxiliary 24" +msgstr "Extra 24" #: src/pulse/channelmap.c:146 msgid "Auxiliary 25" -msgstr "Auxiliary 25" +msgstr "Extra 25" #: src/pulse/channelmap.c:147 msgid "Auxiliary 26" -msgstr "Auxiliary 26" +msgstr "Extra 26" #: src/pulse/channelmap.c:148 msgid "Auxiliary 27" -msgstr "Auxiliary 27" +msgstr "Extra 27" #: src/pulse/channelmap.c:149 msgid "Auxiliary 28" -msgstr "Auxiliary 28" +msgstr "Extra 28" #: src/pulse/channelmap.c:150 msgid "Auxiliary 29" -msgstr "Auxiliary 29" +msgstr "Extra 29" #: src/pulse/channelmap.c:151 msgid "Auxiliary 30" -msgstr "Auxiliary 30" +msgstr "Extra 30" #: src/pulse/channelmap.c:152 msgid "Auxiliary 31" -msgstr "Auxiliary 31" +msgstr "Extra 31" #: src/pulse/channelmap.c:154 msgid "Top Center" From c2b05eb704c81cba9b88b2eadbd3a4ea103e1ae9 Mon Sep 17 00:00:00 2001 From: Milo Casagrande Date: Mon, 7 Sep 2020 08:56:16 +0000 Subject: [PATCH 039/872] Translated using Weblate (Italian) Currently translated at 100.0% (533 of 533 strings) Translation: pulseaudio/pulseaudio Translate-URL: https://translate.fedoraproject.org/projects/pulseaudio/pulseaudio/it/ --- po/it.po | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/po/it.po b/po/it.po index 33cece3ea..0d66a7c36 100644 --- a/po/it.po +++ b/po/it.po @@ -12,15 +12,16 @@ msgstr "" "Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/" "issues\n" "POT-Creation-Date: 2019-09-17 03:33+0000\n" -"PO-Revision-Date: 2019-09-19 09:56+0200\n" +"PO-Revision-Date: 2020-09-08 09:29+0000\n" "Last-Translator: Milo Casagrande \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\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: Poedit 2.2.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2.2\n" # mamma mia che impressione #: src/daemon/cmdline.c:113 @@ -1986,13 +1987,13 @@ msgstr "" " connesso\n" " --fix-channels Recupera il numero di canali e la " "mappa\n" -" dei canali dal sink a cui lo " -"stream \n" +" dei canali dal sink a cui lo stream " +"\n" " sta per essere connesso\n" " --no-remix Non esegue l'upmix o il downmix \n" " dei canali\n" -" --no-remap Mappa i canali per indice invece " -"che \n" +" --no-remap Mappa i canali per indice invece che " +"\n" " per nome\n" " --latency=BYTE Richiede la latenza specificata in " "byte\n" @@ -2006,9 +2007,9 @@ msgstr "" " richiesta specificato in msec\n" " --property=PROPRIETÀ=VAL Imposta la proprietà al valore " "specificato\n" -" --raw Registra/riproduce dati PCM grezzi\n" +" --raw Registra/Riproduce dati PCM grezzi\n" " --passthrough Dati pass-through\n" -" --file-format=FFORMAT Registra/riproduce dati PCM " +" --file-format=FFORMAT Registra/Riproduce dati PCM " "formattati\n" " --list-file-formats Elenca i formati disponibili\n" " --monitor-stream=INDICE Registra dall'input sink con INDICE\n" @@ -2894,7 +2895,7 @@ msgstr "Volume" #: src/utils/pactl.c:1587 msgid "NAME|#N 1|0|toggle" -msgstr "NAME|#N 1|0|toggle" +msgstr "NOME|#N 1|0|toggle" #: src/utils/pactl.c:1588 msgid "#N 1|0|toggle" From c1a7d516b10114327ac4739b9af9307b1ab056c9 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Fri, 11 Sep 2020 11:13:02 +0300 Subject: [PATCH 040/872] man: client.conf: Explain that autospawn=no doesn't disable systemd autostarting --- man/pulse-client.conf.5.xml.in | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in index b88898cb0..5c0eff31b 100644 --- a/man/pulse-client.conf.5.xml.in +++ b/man/pulse-client.conf.5.xml.in @@ -77,8 +77,17 @@ License along with PulseAudio; if not, see . + + + +