Onlangs ging mijn stereo-installatie stuk. Bij het zoeken naar een vervanger, kreeg ik opeens het idee om de Raspberry Pi die ik als domotica-controller gebruik, uit te breiden met een goede eindversterker. Zo kon ik de nog prima klinkende luidsprekers recupereren. Dan mis ik wel een CD-DVD speler, maar die was al lang defect en misten we eigenlijk niet. Radio luisteren we nu via internet. En TV kijken we al lang via internet op de monitor van de computer. Maar hoe koppel je alles aan elkaar, jawel via het netwerk.
Er bestaat verschillende software om geluid via een netwerk naar andere apparaten te sturen. Maar bij het kijken naar TV en/of video moet je letten op latency (vertraging). Een te hoge latency zorgt dat de lippen van sprekende mensen reeds bewegen voor je het geluid hoort. M.a.w. het geluid loopt niet synchroon met het beeld, komt wat later.
Na lang zoeken kon enkel Roc streaming de latency zo laag houden dat je deze niet meer ziet.
Eerst werd de versterker uitbreiding (HAT) op de Raspberry Pi geïnstalleerd. De luidsprekers aangesloten. Raspberry Pi OS geconfigureerd om de versterker te gebruiken. MPD software geïnstalleerd en geconfigureerd om radio te beluisteren. De Raspberry Pi kon dus al als radio tuner en versterker fungeren.
Computers met eenvoudige audio hardware hebben meestal geen mogelijkheid om het geproduceerde geluid op te nemen. En dus ook niet de mogelijkheid om geluid via het netwerk om te leiden naar een ander apparaat. Gelukkig bestaat er een software oplossing.
Met behulp van een kernel module (systeemuitbreiding) wordt een virtueel audio apparaat aangemaakt met zowel afspeel en opname mogelijkheden. De huidige afspeelapparaten kan je opvragen met de opdracht:
dany@pindabook:~> aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 10: HDMI 4 [HDMI 4]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: CX20751/2 Analog [CX20751/2 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Audio [ThinkPad OneLink Dock USB Audio], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Het virtuele audioapparaat voeg je aan de kernel toe met de opdracht:
dany@pindabook:~> sudo modprobe snd-aloop
[sudo] wachtwoord voor root:
Waardoor de volgende afspeelapparaten beschikbaar zijn:
dany@pindabook:~> aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 10: HDMI 4 [HDMI 4]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: CX20751/2 Analog [CX20751/2 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Audio [ThinkPad OneLink Dock USB Audio], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 3: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
Zorg ervoor dat het toegevoegde virtuele audio apparaat het standaard afspeelapparaat wordt.
Bij het afspelen van audio hoor je nu niets, dit is normaal. Om het virtuele audio apparaat bij elke systeemstart automatisch aan te maken, voer je de volgende opdracht uit:
dany@pindabook:~> echo "snd-aloop" | sudo tee /etc/modules-load.d/snd-aloop.conf
[sudo] wachtwoord voor root:
snd-aloop
Let op: na een herstart zullen de audio apparaten hoogstwaarschijnlijk een andere volgorde hebben.
Je kunt dit nagaan met de aplay -l
opdracht.
De Roc streaming tools zijn in geen enkele softwarebron te vinden, m.a.w. we zullen de broncode zelf moeten compileren. We beginnen met het installeren van de voor het compileren van Roc noodzakelijke softwarepakketten:
dany@pindabook:~> sudo zypper install gcc-c++ pkg-config scons ragel gengetopt libuv-devel libunwind-devel libpulse-devel sox-devel libtool intltool autoconf automake make cmake
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
'pkg-config' is al geïnstalleerd.
Geen updatekandidaat voor bijwerken van 'pkg-config-0.29.2-lp152.3.114.x86_64'. De hoogst beschikbare versie is al geïnstalleerd.
Pakketafhankelijkheden oplossen...
De volgende 39 NIEUWE pakketten zullen worden geïnstalleerd:
autoconf automake bison bison-lang cmake cmake-full cmake-man gcc7-c++ gcc-c++ gengetopt gettext-tools glib2-devel intltool
libblkid-devel libcolm-0_13_0_5 libffi-devel libjsoncpp19 libmount-devel libpcre16-0 libpcrecpp0 libpcreposix0 libpulse-devel
librhash0 libselinux-devel libsepol-devel libsox3 libstdc++6-devel-gcc7 libstdc++-devel libtool libunwind-devel libuuid-devel
libuv-devel make make-lang pcre-devel ragel scons sox-devel zlib-devel
De volgende 2 aanbevolen pakketten zijn automatisch geselecteerd:
bison-lang make-lang
39 nieuwe te installeren pakketten.
Totale downloadgrootte: 32,7 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 147,3 MiB worden gebruikt.
Doorgaan? [j/n/v/...? alle opties tonen] (j):
pakket libstdc++6-devel-gcc7-7.5.0+r278197-lp152.3.9.1.x86_64 wordt opgehaald (1/39), 6,7 MiB ( 35,8 MiB uitgepakt)
Ophalen: libstdc++6-devel-gcc7-7.5.0+r278197-lp152.3.9.1.x86_64.rpm .............................................[gereed (4,2 MiB/s)]
pakket libunwind-devel-1.5.0-lp152.5.6.1.x86_64 wordt opgehaald (2/39), 23,5 KiB ( 38,0 KiB uitgepakt)
Ophalen: libunwind-devel-1.5.0-lp152.5.6.1.x86_64.rpm .......................................................................[gereed]
pakket libuuid-devel-2.33.1-lp152.5.6.1.x86_64 wordt opgehaald (3/39), 56,2 KiB ( 17,5 KiB uitgepakt)
Ophalen: libuuid-devel-2.33.1-lp152.5.6.1.x86_64.rpm ........................................................................[gereed]
pakket libuv-devel-1.18.0-lp152.4.3.1.x86_64 wordt opgehaald (4/39), 77,1 KiB (217,2 KiB uitgepakt)
Ophalen: libuv-devel-1.18.0-lp152.4.3.1.x86_64.rpm ............................................................[gereed (419,1 KiB/s)]
pakket zlib-devel-1.2.11-lp152.8.9.1.x86_64 wordt opgehaald (5/39), 111,4 KiB (386,0 KiB uitgepakt)
Ophalen: zlib-devel-1.2.11-lp152.8.9.1.x86_64.rpm ...........................................................................[gereed]
pakket gcc7-c++-7.5.0+r278197-lp152.3.9.1.x86_64 wordt opgehaald (6/39), 8,8 MiB ( 23,9 MiB uitgepakt)
Ophalen: gcc7-c++-7.5.0+r278197-lp152.3.9.1.x86_64.rpm ..........................................................[gereed (4,2 MiB/s)]
pakket libblkid-devel-2.33.1-lp152.5.6.1.x86_64 wordt opgehaald (7/39), 44,5 KiB ( 16,8 KiB uitgepakt)
Ophalen: libblkid-devel-2.33.1-lp152.5.6.1.x86_64.rpm .......................................................................[gereed]
pakket libmount-devel-2.33.1-lp152.5.6.1.x86_64 wordt opgehaald (8/39), 46,1 KiB ( 34,8 KiB uitgepakt)
Ophalen: libmount-devel-2.33.1-lp152.5.6.1.x86_64.rpm ..........................................................[gereed (14,9 KiB/s)]
pakket libsox3-14.4.2-pm152.7.1.x86_64 wordt opgehaald (9/39), 254,3 KiB (635,4 KiB uitgepakt)
Ophalen: libsox3-14.4.2-pm152.7.1.x86_64.rpm ................................................................................[gereed]
pakket sox-devel-14.4.2-pm152.7.1.x86_64 wordt opgehaald (10/39), 37,9 KiB ( 96,5 KiB uitgepakt)
Ophalen: sox-devel-14.4.2-pm152.7.1.x86_64.rpm ..............................................................................[gereed]
pakket autoconf-2.69-lp152.3.112.noarch wordt opgehaald (11/39), 706,0 KiB ( 2,2 MiB uitgepakt)
Ophalen: autoconf-2.69-lp152.3.112.noarch.rpm ...................................................................[gereed (2,1 MiB/s)]
pakket bison-3.0.4-lp152.3.110.x86_64 wordt opgehaald (12/39), 483,6 KiB ( 1,2 MiB uitgepakt)
Ophalen: bison-3.0.4-lp152.3.110.x86_64.rpm .................................................................................[gereed]
pakket cmake-man-3.17.0-lp152.1.2.x86_64 wordt opgehaald (13/39), 610,6 KiB (530,0 KiB uitgepakt)
Ophalen: cmake-man-3.17.0-lp152.1.2.x86_64.rpm ..............................................................................[gereed]
pakket gengetopt-2.22.6-lp152.4.7.x86_64 wordt opgehaald (14/39), 214,0 KiB (710,9 KiB uitgepakt)
Ophalen: gengetopt-2.22.6-lp152.4.7.x86_64.rpm ................................................................[gereed (114,6 KiB/s)]
pakket libcolm-0_13_0_5-0.13.0.5-lp152.3.54.x86_64 wordt opgehaald (15/39), 63,6 KiB (176,4 KiB uitgepakt)
Ophalen: libcolm-0_13_0_5-0.13.0.5-lp152.3.54.x86_64.rpm ....................................................................[gereed]
pakket libffi-devel-3.2.1.git259-lp152.6.5.x86_64 wordt opgehaald (16/39), 26,8 KiB ( 29,1 KiB uitgepakt)
Ophalen: libffi-devel-3.2.1.git259-lp152.6.5.x86_64.rpm .....................................................................[gereed]
pakket libjsoncpp19-1.8.4-lp152.3.6.x86_64 wordt opgehaald (17/39), 77,4 KiB (204,7 KiB uitgepakt)
Ophalen: libjsoncpp19-1.8.4-lp152.3.6.x86_64.rpm ............................................................................[gereed]
pakket libpcre16-0-8.41-lp152.6.104.x86_64 wordt opgehaald (18/39), 212,6 KiB (530,3 KiB uitgepakt)
Ophalen: libpcre16-0-8.41-lp152.6.104.x86_64.rpm ..............................................................[gereed (177,7 KiB/s)]
pakket libpcrecpp0-8.41-lp152.6.104.x86_64 wordt opgehaald (19/39), 25,1 KiB ( 38,5 KiB uitgepakt)
Ophalen: libpcrecpp0-8.41-lp152.6.104.x86_64.rpm ............................................................................[gereed]
pakket libpcreposix0-8.41-lp152.6.104.x86_64 wordt opgehaald (20/39), 16,6 KiB ( 10,1 KiB uitgepakt)
Ophalen: libpcreposix0-8.41-lp152.6.104.x86_64.rpm ..........................................................................[gereed]
pakket librhash0-1.3.5-lp152.3.5.x86_64 wordt opgehaald (21/39), 83,0 KiB (145,6 KiB uitgepakt)
Ophalen: librhash0-1.3.5-lp152.3.5.x86_64.rpm ...............................................................................[gereed]
pakket libsepol-devel-3.0-lp152.1.47.x86_64 wordt opgehaald (22/39), 45,1 KiB (125,1 KiB uitgepakt)
Ophalen: libsepol-devel-3.0-lp152.1.47.x86_64.rpm ...........................................................................[gereed]
pakket make-4.2.1-lp152.8.110.x86_64 wordt opgehaald (23/39), 275,3 KiB (394,6 KiB uitgepakt)
Ophalen: make-4.2.1-lp152.8.110.x86_64.rpm .....................................................................[gereed (14,9 KiB/s)]
pakket scons-3.1.2-lp152.2.1.x86_64 wordt opgehaald (24/39), 973,8 KiB ( 5,7 MiB uitgepakt)
Ophalen: scons-3.1.2-lp152.2.1.x86_64.rpm ...................................................................................[gereed]
pakket libstdc++-devel-7-lp152.4.114.x86_64 wordt opgehaald (25/39), 8,3 KiB ( 0 B uitgepakt)
Ophalen: libstdc++-devel-7-lp152.4.114.x86_64.rpm ...........................................................................[gereed]
pakket gcc-c++-7-lp152.4.114.x86_64 wordt opgehaald (26/39), 8,9 KiB ( 0 B uitgepakt)
Ophalen: gcc-c++-7-lp152.4.114.x86_64.rpm .......................................................................[gereed (7,9 KiB/s)]
pakket automake-1.15.1-lp152.4.107.noarch wordt opgehaald (27/39), 817,6 KiB ( 2,5 MiB uitgepakt)
Ophalen: automake-1.15.1-lp152.4.107.noarch.rpm .............................................................................[gereed]
pakket bison-lang-3.0.4-lp152.3.110.noarch wordt opgehaald (28/39), 105,7 KiB (551,3 KiB uitgepakt)
Ophalen: bison-lang-3.0.4-lp152.3.110.noarch.rpm ...............................................................[gereed (95,7 KiB/s)]
pakket ragel-7.0.0.10-lp152.3.54.x86_64 wordt opgehaald (29/39), 363,1 KiB ( 1,5 MiB uitgepakt)
Ophalen: ragel-7.0.0.10-lp152.3.54.x86_64.rpm ...............................................................................[gereed]
pakket make-lang-4.2.1-lp152.8.110.noarch wordt opgehaald (30/39), 157,6 KiB (886,1 KiB uitgepakt)
Ophalen: make-lang-4.2.1-lp152.8.110.noarch.rpm .............................................................................[gereed]
pakket pcre-devel-8.41-lp152.6.104.x86_64 wordt opgehaald (31/39), 227,3 KiB (264,0 KiB uitgepakt)
Ophalen: pcre-devel-8.41-lp152.6.104.x86_64.rpm .............................................................................[gereed]
pakket libtool-2.4.6-lp152.3.101.x86_64 wordt opgehaald (32/39), 748,3 KiB ( 3,5 MiB uitgepakt)
Ophalen: libtool-2.4.6-lp152.3.101.x86_64.rpm ...............................................................................[gereed]
pakket cmake-full-3.17.0-lp152.1.2.x86_64 wordt opgehaald (33/39), 5,7 MiB ( 30,9 MiB uitgepakt)
Ophalen: cmake-full-3.17.0-lp152.1.2.x86_64.rpm .................................................................[gereed (4,7 MiB/s)]
pakket libselinux-devel-3.0-lp152.1.47.x86_64 wordt opgehaald (34/39), 115,3 KiB (184,1 KiB uitgepakt)
Ophalen: libselinux-devel-3.0-lp152.1.47.x86_64.rpm .........................................................................[gereed]
pakket cmake-3.17.0-lp152.1.1.x86_64 wordt opgehaald (35/39), 77,1 KiB ( 715 B uitgepakt)
Ophalen: cmake-3.17.0-lp152.1.1.x86_64.rpm ..................................................................................[gereed]
pakket gettext-tools-0.19.8.1-lp152.6.6.1.x86_64 wordt opgehaald (36/39), 2,1 MiB ( 7,9 MiB uitgepakt)
Ophalen: gettext-tools-0.19.8.1-lp152.6.6.1.x86_64.rpm ..........................................................[gereed (4,0 MiB/s)]
pakket glib2-devel-2.62.6-lp152.2.6.1.x86_64 wordt opgehaald (37/39), 1,9 MiB ( 21,5 MiB uitgepakt)
Ophalen: glib2-devel-2.62.6-lp152.2.6.1.x86_64.rpm ..........................................................................[gereed]
pakket libpulse-devel-13.0-lp152.3.3.1.x86_64 wordt opgehaald (38/39), 420,2 KiB ( 4,5 MiB uitgepakt)
Ophalen: libpulse-devel-13.0-lp152.3.3.1.x86_64.rpm ............................................................[gereed (17,2 KiB/s)]
pakket intltool-0.51.0-lp152.5.1.noarch wordt opgehaald (39/39), 58,6 KiB (177,9 KiB uitgepakt)
Ophalen: intltool-0.51.0-lp152.5.1.noarch.rpm ...............................................................................[gereed]
Controleren op conflicten tussen bestanden: .................................................................................[gereed]
( 1/39) Installeren van: libstdc++6-devel-gcc7-7.5.0+r278197-lp152.3.9.1.x86_64 .............................................[gereed]
( 2/39) Installeren van: libunwind-devel-1.5.0-lp152.5.6.1.x86_64 ...........................................................[gereed]
( 3/39) Installeren van: libuuid-devel-2.33.1-lp152.5.6.1.x86_64 ............................................................[gereed]
( 4/39) Installeren van: libuv-devel-1.18.0-lp152.4.3.1.x86_64 ..............................................................[gereed]
( 5/39) Installeren van: zlib-devel-1.2.11-lp152.8.9.1.x86_64 ...............................................................[gereed]
( 6/39) Installeren van: gcc7-c++-7.5.0+r278197-lp152.3.9.1.x86_64 ..........................................................[gereed]
( 7/39) Installeren van: libblkid-devel-2.33.1-lp152.5.6.1.x86_64 ...........................................................[gereed]
( 8/39) Installeren van: libmount-devel-2.33.1-lp152.5.6.1.x86_64 ...........................................................[gereed]
( 9/39) Installeren van: libsox3-14.4.2-pm152.7.1.x86_64 ....................................................................[gereed]
(10/39) Installeren van: sox-devel-14.4.2-pm152.7.1.x86_64 ..................................................................[gereed]
(11/39) Installeren van: autoconf-2.69-lp152.3.112.noarch ...................................................................[gereed]
(12/39) Installeren van: bison-3.0.4-lp152.3.110.x86_64 .....................................................................[gereed]
(13/39) Installeren van: cmake-man-3.17.0-lp152.1.2.x86_64 ..................................................................[gereed]
(14/39) Installeren van: gengetopt-2.22.6-lp152.4.7.x86_64 ..................................................................[gereed]
(15/39) Installeren van: libcolm-0_13_0_5-0.13.0.5-lp152.3.54.x86_64 ........................................................[gereed]
(16/39) Installeren van: libffi-devel-3.2.1.git259-lp152.6.5.x86_64 .........................................................[gereed]
(17/39) Installeren van: libjsoncpp19-1.8.4-lp152.3.6.x86_64 ................................................................[gereed]
(18/39) Installeren van: libpcre16-0-8.41-lp152.6.104.x86_64 ................................................................[gereed]
(19/39) Installeren van: libpcrecpp0-8.41-lp152.6.104.x86_64 ................................................................[gereed]
(20/39) Installeren van: libpcreposix0-8.41-lp152.6.104.x86_64 ..............................................................[gereed]
(21/39) Installeren van: librhash0-1.3.5-lp152.3.5.x86_64 ...................................................................[gereed]
(22/39) Installeren van: libsepol-devel-3.0-lp152.1.47.x86_64 ...............................................................[gereed]
(23/39) Installeren van: make-4.2.1-lp152.8.110.x86_64 ......................................................................[gereed]
(24/39) Installeren van: scons-3.1.2-lp152.2.1.x86_64 .......................................................................[gereed]
(25/39) Installeren van: libstdc++-devel-7-lp152.4.114.x86_64 ...............................................................[gereed]
(26/39) Installeren van: gcc-c++-7-lp152.4.114.x86_64 .......................................................................[gereed]
(27/39) Installeren van: automake-1.15.1-lp152.4.107.noarch .................................................................[gereed]
(28/39) Installeren van: bison-lang-3.0.4-lp152.3.110.noarch ................................................................[gereed]
(29/39) Installeren van: ragel-7.0.0.10-lp152.3.54.x86_64 ...................................................................[gereed]
(30/39) Installeren van: make-lang-4.2.1-lp152.8.110.noarch .................................................................[gereed]
(31/39) Installeren van: pcre-devel-8.41-lp152.6.104.x86_64 .................................................................[gereed]
(32/39) Installeren van: libtool-2.4.6-lp152.3.101.x86_64 ...................................................................[gereed]
(33/39) Installeren van: cmake-full-3.17.0-lp152.1.2.x86_64 .................................................................[gereed]
(34/39) Installeren van: libselinux-devel-3.0-lp152.1.47.x86_64 .............................................................[gereed]
(35/39) Installeren van: cmake-3.17.0-lp152.1.1.x86_64 ......................................................................[gereed]
(36/39) Installeren van: gettext-tools-0.19.8.1-lp152.6.6.1.x86_64 ..........................................................[gereed]
(37/39) Installeren van: glib2-devel-2.62.6-lp152.2.6.1.x86_64 ..............................................................[gereed]
(38/39) Installeren van: libpulse-devel-13.0-lp152.3.3.1.x86_64 .............................................................[gereed]
(39/39) Installeren van: intltool-0.51.0-lp152.5.1.noarch ...................................................................[gereed]
Daarna downloaden we de broncode:
dany@pindabook:~> git clone https://github.com/roc-streaming/roc-toolkit.git
Cloning into 'roc-toolkit'...
remote: Enumerating objects: 15662, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 15662 (delta 7), reused 17 (delta 4), pack-reused 15635
Receiving objects: 100% (15662/15662), 5.11 MiB | 2.29 MiB/s, done.
Resolving deltas: 100% (10691/10691), done.
En kunnen we de Roc streaming tools compileren:
dany@pindabook:~>cd roc-toolkit
dany@pindabook:~/roc-toolkit>scons -Q --build-3rdparty=openfec --disable-tests --disable-pulseaudio
GET 3rdparty/x86_64-pc-suse-linux/gcc-7.5.0-release/build/openfec-1.4.2.4 [download] https://github.com/roc-streaming/openfec/archive/v1.4.2.4.tar.gz [extract] openfec_v1.4.2.4.tar.gz [execute] cmake .. -DBUILD_STATIC_LIBS=ON -DDEBUG:STRING=OFF -DCMAKE_C_COMPILER=/usr/bin/gcc-7 -DCMAKE_LINKER=/usr/bin/gcc-7 -DCMAKE_AR=/usr/bin/ar -DCMAKE_RANLIB=/usr/bin/ranlib -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE:STRING='-fPIC -fvisibility=hidden' -DCMAKE_POSITION_INDEPENDENT_CODE=ON [execute] make -j4 [install] 3rdparty/x86_64-pc-suse-linux/gcc-7.5.0-release/build/openfec-1.4.2.4/include [install] 3rdparty/x86_64-pc-suse-linux/gcc-7.5.0-release/build/openfec-1.4.2.4/lib/libopenfec.a CXX src/lib/src/address.cpp CXX src/lib/src/config.cpp CXX src/lib/src/context.cpp CXX src/lib/src/log.cpp CXX src/lib/src/receiver.cpp CXX src/lib/src/sender.cpp CXX src/modules/roc_pipeline/converter.cpp CXX src/modules/roc_pipeline/port_utils.cpp CXX src/modules/roc_pipeline/receiver.cpp CXX src/modules/roc_pipeline/receiver_port.cpp CXX src/modules/roc_pipeline/receiver_session.cpp CXX src/modules/roc_pipeline/sender.cpp CXX src/modules/roc_pipeline/sender_port.cpp CXX src/modules/roc_pipeline/target_stdio/roc_pipeline/parse_port.cpp CXX src/modules/roc_pipeline/target_stdio/roc_pipeline/port_to_str.cpp CXX src/modules/roc_sndio/backend_dispatcher.cpp CXX src/modules/roc_sndio/driver_info.cpp CXX src/modules/roc_sndio/ibackend.cpp CXX src/modules/roc_sndio/isink.cpp CXX src/modules/roc_sndio/isource.cpp CXX src/modules/roc_sndio/pump.cpp CXX src/modules/roc_sndio/target_stdio/roc_sndio/print_drivers.cpp CXX src/modules/roc_sndio/target_sox/roc_sndio/sox_backend.cpp CXX src/modules/roc_sndio/target_sox/roc_sndio/sox_sink.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_pipeline.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_pipeline.a CXX src/modules/roc_sndio/target_sox/roc_sndio/sox_source.cpp CXX src/modules/roc_netio/target_libuv/roc_netio/basic_port.cpp CXX src/modules/roc_netio/target_libuv/roc_netio/udp_sender_port.cpp CXX src/modules/roc_netio/target_libuv/roc_netio/udp_receiver_port.cpp CXX src/modules/roc_netio/target_libuv/roc_netio/transceiver.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_sndio.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_sndio.a CXX src/modules/roc_netio/target_libuv/roc_netio/iclose_handler.cpp CXX src/modules/roc_fec/codec_map.cpp CXX src/modules/roc_fec/iblock_decoder.cpp CXX src/modules/roc_fec/iblock_encoder.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_netio.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_netio.a CXX src/modules/roc_fec/reader.cpp CXX src/modules/roc_fec/writer.cpp CXX src/modules/roc_fec/target_openfec/roc_fec/of_encoder.cpp CXX src/modules/roc_fec/target_openfec/roc_fec/of_decoder.cpp CXX src/modules/roc_rtp/composer.cpp CXX src/modules/roc_rtp/format_map.cpp CXX src/modules/roc_rtp/parser.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_fec.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_fec.a CXX src/modules/roc_rtp/validator.cpp CXX src/modules/roc_audio/depacketizer.cpp CXX src/modules/roc_audio/frame.cpp CXX src/modules/roc_audio/freq_estimator.cpp CXX src/modules/roc_audio/freq_estimator_decim.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_rtp.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_rtp.a CXX src/modules/roc_audio/iframe_decoder.cpp CXX src/modules/roc_audio/iframe_encoder.cpp CXX src/modules/roc_audio/ireader.cpp CXX src/modules/roc_audio/iwriter.cpp CXX src/modules/roc_audio/latency_monitor.cpp CXX src/modules/roc_audio/mixer.cpp CXX src/modules/roc_audio/null_writer.cpp CXX src/modules/roc_audio/packetizer.cpp CXX src/modules/roc_audio/pcm_decoder.cpp CXX src/modules/roc_audio/pcm_encoder.cpp CXX src/modules/roc_audio/pcm_funcs.cpp CXX src/modules/roc_audio/poison_reader.cpp CXX src/modules/roc_audio/poison_writer.cpp CXX src/modules/roc_audio/profiling_writer.cpp CXX src/modules/roc_audio/resampler.cpp CXX src/modules/roc_audio/resampler_profile.cpp CXX src/modules/roc_audio/resampler_reader.cpp CXX src/modules/roc_audio/resampler_writer.cpp CXX src/modules/roc_audio/units.cpp CXX src/modules/roc_audio/watchdog.cpp CXX src/modules/roc_packet/concurrent_queue.cpp CXX src/modules/roc_packet/delayed_reader.cpp CXX src/modules/roc_packet/fec.cpp CXX src/modules/roc_packet/icomposer.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_audio.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_audio.a CXX src/modules/roc_packet/interleaver.cpp CXX src/modules/roc_packet/iparser.cpp CXX src/modules/roc_packet/ireader.cpp CXX src/modules/roc_packet/iwriter.cpp CXX src/modules/roc_packet/packet.cpp CXX src/modules/roc_packet/queue.cpp CXX src/modules/roc_packet/router.cpp CXX src/modules/roc_packet/rtp.cpp CXX src/modules/roc_packet/sorted_queue.cpp CXX src/modules/roc_packet/target_stdio/roc_packet/fec_scheme_to_str.cpp CXX src/modules/roc_packet/target_stdio/roc_packet/print.cpp CXX src/modules/roc_packet/target_stdio/roc_packet/address_to_str.cpp CXX src/modules/roc_packet/target_posix/roc_packet/address.cpp CXX src/modules/roc_address/io_uri.cpp CXX src/modules/roc_address/io_uri_format.cpp CXX src/modules/roc_address/io_uri_to_str.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_packet.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_packet.a CXX src/modules/roc_address/pct.cpp RAGEL src/modules/roc_address/io_uri_parse.rl CXX src/modules/roc_core/heap_allocator.cpp CXX build/x86_64-pc-suse-linux/gcc-7.5.0-release/modules/roc_address/io_uri_parse.cpp CXX src/modules/roc_core/iallocator.cpp CXX src/modules/roc_core/target_glibc/roc_core/demangle.cpp CXX src/modules/roc_core/target_libunwind/roc_core/backtrace.cpp CXX src/modules/roc_core/target_stdio/roc_core/print_buffer.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_address.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_address.a CXX src/modules/roc_core/target_stdio/roc_core/parse_duration.cpp CXX src/modules/roc_core/target_stdio/roc_core/panic.cpp CXX src/modules/roc_core/target_stdio/roc_core/log.cpp CXX src/modules/roc_core/target_posix/roc_core/random.cpp CXX src/modules/roc_core/target_posix/roc_core/exit.cpp CXX src/modules/roc_core/target_posix/roc_core/colors.cpp CXX src/modules/roc_core/target_posix/roc_core/temp_file.cpp CXX src/modules/roc_core/target_posix/roc_core/format_time.cpp CXX src/modules/roc_core/target_posix/roc_core/crash.cpp CXX src/modules/roc_core/target_posix/roc_core/errno_to_str.cpp CXX src/modules/roc_core/target_posix/roc_core/emergency.cpp CXX src/modules/roc_core/target_libuv/roc_core/thread.cpp CXX src/modules/roc_core/target_posixtime/roc_core/time.cpp GGO src/tools/roc_conv/cmdline.ggo CC src/lib/example/receiver_sox.c CC build/x86_64-pc-suse-linux/gcc-7.5.0-release/tools/roc_conv/cmdline.c CXX src/tools/roc_conv/main.cpp AR build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_core.a RANLIB build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_core.a CC src/lib/example/sender_sinewave.c GGO src/tools/roc_recv/cmdline.ggo LD build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_unstripped.so.0.1 CXX src/tools/roc_recv/main.cpp CC build/x86_64-pc-suse-linux/gcc-7.5.0-release/tools/roc_recv/cmdline.c CP build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc_unstripped.so.0.1 STRIP build/x86_64-pc-suse-linux/gcc-7.5.0-release/libroc.so.0.1 INSTALL bin/x86_64-pc-suse-linux/libroc.so.0.1 LD build/x86_64-pc-suse-linux/gcc-7.5.0-release/roc-example-receiver-sox LN bin/x86_64-pc-suse-linux/libroc.so.0 LN bin/x86_64-pc-suse-linux/libroc.so LD build/x86_64-pc-suse-linux/gcc-7.5.0-release/roc-example-sender-sinewave LD build/x86_64-pc-suse-linux/gcc-7.5.0-release/roc-conv INSTALL bin/x86_64-pc-suse-linux/roc-example-receiver-sox GGO src/tools/roc_send/cmdline.ggo CXX src/tools/roc_send/main.cpp INSTALL bin/x86_64-pc-suse-linux/roc-conv INSTALL bin/x86_64-pc-suse-linux/roc-example-sender-sinewave CC build/x86_64-pc-suse-linux/gcc-7.5.0-release/tools/roc_send/cmdline.c CHECK build/x86_64-pc-suse-linux/gcc-7.5.0-release/compile_commands.json INSTALL compile_commands.json LD build/x86_64-pc-suse-linux/gcc-7.5.0-release/roc-recv INSTALL bin/x86_64-pc-suse-linux/roc-recv LD build/x86_64-pc-suse-linux/gcc-7.5.0-release/roc-send INSTALL bin/x86_64-pc-suse-linux/roc-send
Nu de software gecompileerd is kunnen we ze installeren:
dany@pindabook:~/roc-toolkit> sudo scons -Q --build-3rdparty=openfec --disable-tests --disable-pulseaudio install
INSTALL /usr/include/roc
INSTALL /usr/lib64/libroc.so.0.1
INSTALL /usr/lib64/libroc.so.0
INSTALL /usr/lib64/libroc.so
INSTALL /usr/bin/roc-conv
INSTALL /usr/bin/roc-recv
INSTALL /usr/bin/roc-send
Wie van plan is de Roc streaming tools op een Raspberry Pi te gebruiken, moet deze op een Linux systeem cross compileren. Meer info kan je vinden op de webpagina van de ontwikkelaar. Indien je dit op dezelfde computer uitvoert, moet dit wel gebeuren in een andere bronmap.
Om de Roc streaming tools te testen, gebruiken we één computer. M.a.w. we sturen het geluid het netwerk op en terug naar dezelfde computer (localhost met het ip adres 127.0.0.1). Het geluid wordt door Roc ontvangen en afgespeeld op de fysieke geluidskaart.
Eerst starten we de ontvanger met de opdracht:
dany@pindabook:~/roc-toolkit> roc-recv -vv -s rtp+rs8m::10001 -r rs8m::10002 -d alsa -o 'plughw:CARD=PCH,DEV=0'
15:08:04.527 [dbg] roc_sndio: initializing sox backend
15:08:04.527 [dbg] roc_recv: pool: initializing: object_size=2064 poison=0
15:08:04.527 [dbg] roc_recv: pool: initializing: object_size=2576 poison=0
15:08:04.527 [dbg] roc_recv: pool: initializing: object_size=632 poison=0
15:08:04.527 [inf] roc_sndio: sox sink: opening: driver=alsa output=plughw:CARD=PCH,DEV=0
15:08:04.549 [inf] roc_sndio: sox sink: bits=32 out_rate=48000 in_rate=0 ch=2 is_file=0
15:08:04.549 [dbg] roc_audio: mixer: initializing: frame_size=640
15:08:04.549 [dbg] roc_netio: transceiver: starting event loop
15:08:04.550 [inf] roc_netio: udp receiver: opened port 0.0.0.0:10001
15:08:04.550 [inf] roc_pipeline: receiver: adding port rtp+rs8m:0.0.0.0:10001
15:08:04.550 [inf] roc_netio: udp receiver: opened port 0.0.0.0:10002
15:08:04.550 [inf] roc_pipeline: receiver: adding port rs8m:0.0.0.0:10002
15:08:04.550 [dbg] roc_sndio: pump: starting main loop
Deze opdracht blijft luisteren naar te ontvangen geluid op het netwerk. We moeten dus een tweede terminal starten om geluid het netwerk op te sturen. Maar eerst starten we een video of andere geluidsbron waarbij het geluid op het virtuele apparaat wordt afgespeeld.
Nu kunnen we met de volgende opdracht het geluid van de virtuele geluidskaart (Loopback,DEV=1) naar de computer met het ip adres 127.0.0.1 sturen:
dany@pindabook:~> roc-send -vv -s rtp+rs8m:127.0.0.1:10001 -r rs8m:127.0.0.1:10002 -d alsa -i 'plughw:CARD=Loopback,DEV=1'
15:10:09.250 [dbg] roc_sndio: initializing sox backend
15:10:09.250 [dbg] roc_send: pool: initializing: object_size=2064 poison=0
15:10:09.250 [dbg] roc_send: pool: initializing: object_size=2576 poison=0
15:10:09.250 [dbg] roc_send: pool: initializing: object_size=632 poison=0
15:10:09.250 [inf] roc_sndio: sox source: opening: driver=alsa input=plughw:CARD=Loopback,DEV=1
15:10:09.252 [inf] roc_sndio: sox source: in_bits=32 out_bits=32 in_rate=44100 out_rate=0 in_ch=2 out_ch=0 is_file=0
15:10:09.252 [dbg] roc_netio: transceiver: starting event loop
15:10:09.252 [inf] roc_netio: udp sender: opened port 0.0.0.0:52469
15:10:09.252 [inf] roc_pipeline: sender: using remote source port rtp+rs8m:127.0.0.1:10001
15:10:09.252 [inf] roc_pipeline: sender: using remote repair port rs8m:127.0.0.1:10002
15:10:09.252 [dbg] roc_fec: of encoder: initializing: codec=rs m=8
15:10:09.252 [dbg] roc_fec: fec writer: update block size: cur_sbl=0 cur_rbl=0 new_sbl=20 new_rbl=10
15:10:09.252 [dbg] roc_audio: packetizer: initializing: n_channels=2 samples_per_packet=309
15:10:09.252 [dbg] roc_sndio: pump: starting main loop
15:10:09.261 [dbg] roc_packet: router: detected new stream: source=59325728 flags=0x8u
15:10:09.401 [dbg] roc_packet: router: detected new stream: source=0 flags=0x10u
Je moet nu geluid horen en de terminal met de ontvanger geeft extra meldingen weer:
15:10:09.264 [inf] roc_pipeline: receiver: creating session: src_addr=127.0.0.1:52469 dst_addr=0.0.0.0:10001 15:10:09.264 [dbg] roc_packet: delayed reader: initializing: delay=8820 15:10:09.264 [dbg] roc_fec: of decoder: initializing: codec=rs m=8 15:10:09.264 [dbg] roc_audio: depacketizer: initializing: n_channels=2 15:10:09.264 [dbg] roc_audio: watchdog: initializing: max_blank_duration=96000 max_drops_duration=96000 drop_detection_window=14400 15:10:09.264 [dbg] roc_audio: resampler: initializing: window_interp=128 window_size=32 frame_size=640 channels_num=2 15:10:09.264 [dbg] roc_audio: latency monitor: initializing: target_latency=8820 in_rate=44100 out_rate=48000 15:10:09.264 [dbg] roc_packet: router: detected new stream: source=59325728 flags=0x8u 15:10:09.264 [dbg] roc_audio: depacketizer: ts=320 loss_ratio=0.00000 15:10:09.385 [dbg] roc_audio: watchdog: status: bbbbbbbbbbbbbbbbbbbb 15:10:09.404 [dbg] roc_packet: router: detected new stream: source=0 flags=0x10u 15:10:09.471 [dbg] roc_packet: delayed reader: initial queue: delay=8820 queue=9270 packets=30 15:10:09.471 [dbg] roc_packet: delayed reader: trimmed queue: delay=8820 queue=8961 packets=29 15:10:09.471 [dbg] roc_fec: fec reader: update payload size: next_esi=0 cur_size=0 new_size=1248 15:10:09.471 [dbg] roc_fec: fec reader: update source block size: cur_sblen=0 cur_rblen=0 new_sblen=20 15:10:09.471 [dbg] roc_audio: depacketizer: got first packet: zero_samples=9920 15:10:09.477 [dbg] roc_audio: latency monitor: latency=8950 target=8820 fe=1.00000 trim_fe=1.00000 adj_fe=0.91875 15:10:09.531 [dbg] roc_audio: watchdog: status: bbbbbbbbbbb......... 15:10:09.605 [dbg] roc_fec: fec reader: repair queue: dropped=10 15:10:09.605 [dbg] roc_fec: fec reader: got first packet in a block, start decoding: n_packets_before=19 sbn=25846 15:10:09.605 [dbg] roc_fec: fec reader: update repair block size: cur_sblen=20 cur_rblen=0 new_rblen=235 15:10:14.484 [dbg] roc_audio: latency monitor: latency=9085 target=8820 fe=1.00001 trim_fe=1.00001 adj_fe=0.91876 15:10:19.478 [dbg] roc_audio: latency monitor: latency=9242 target=8820 fe=1.00012 trim_fe=1.00012 adj_fe=0.91886 15:10:24.477 [dbg] roc_audio: latency monitor: latency=9079 target=8820 fe=1.00015 trim_fe=1.00015 adj_fe=0.91888 15:10:29.264 [dbg] roc_audio: depacketizer: ts=1768655309 loss_ratio=0.00000 15:10:29.478 [dbg] roc_audio: latency monitor: latency=9225 target=8820 fe=1.00012 trim_fe=1.00012 adj_fe=0.91886 15:10:34.051 [dbg] roc_audio: watchdog: status: ..............ibbbbb 15:10:34.198 [dbg] roc_audio: watchdog: status: bbbbbbbbbbbbbbbbbbbb 15:10:34.225 [dbg] roc_audio: latency monitor: latency out of bounds: latency=-9104 min=-8820
Zowel de zender als de ontvanger kan je onderbreken door Ctrl+c te drukken.
Mocht het streamen mislukken, controleer dan de volgorde van opstarten:
aplay -l
.Installeer de Roc streaming tools op een andere computer zoals hierboven besproken. Voor het afspelen van geluid start je eerst de ontvanger op de andere computer:
dany@pindadomo:~ $ ./roc-recv -vv -s rtp+rs8m::10001 -r rs8m::10002 -d alsa
Indien je geen afspeelapparaat opgeeft, wordt het standaard afspeelapparaat gebruikt. Start opnieuw een programma op dat geluid produceert en deze naar de virtuele geluidskaart stuurt. Daarna zend je het geproduceerde geluid via het netwerk naar de computer die het moet weergeven:
dany@pindabook:~> roc-send -vv -s rtp+rs8m:192.168.1.38:10001 -r rs8m:192.168.1.38:10002 -d alsa -i 'plughw:CARD=Loopback,DEV=1'
Hoewel de latenty (vertraging) van de Roc tools nog meevalt, valt deze bij het afspelen van video's met gesprekken wel degelijk op. Via allerlei opties kan je de Roc tools echter zo instellen dat deze optimaal werkt met de mogelijkheden van jouw hardware en de snelheid van jouw netwerk. Opnieuw kan je op een webpagina van de ontwikkelaar lezen met welke opties je een minimale latentie kunt bereiken. Ik bereikte uitstekende resultaten zonder foutmeldingen met de volgende opties voor de ontvanger:
dany@pindadomo:~ $ ./roc-recv -vv -s rtp+rs8m::10001 -r rs8m::10002 -d alsa -o 'plughw:CARD=IQaudIODAC,DEV=0' --frame-size=320 --sess-latency=25ms
En voor de zender:
dany@main:~> roc-send -vv -s rtp+rs8m:192.168.1.38:10001 -r rs8m:192.168.1.38:10002 -d alsa -i 'plughw:CARD=Loopback,DEV=1' --nbsrc=5 --nbrpr=5 --frame-size=320
De Roc streaming tools stellen hun eisen:
Om deze obstakels uit de weg te gaan, gebruik ik een script om de ontvanger enkel te starten als dit nodig is. De ontvanger terug af te sluiten als we er geen gebruik meer van willen maken, zodat de versterker vrij komt voor andere geluidsbronnen (MPD Radio). Bij het opstarten van de zender wordt een testgeluid afgespeeld om de zender te begeleiden. Onderstaande script maakt gebruik van SSH (geconfigureerd zonder wachtwoorden, maar met Public Key Authentification) om opdrachten zoals het opstarten en afsluiten van de ontvanger vanaf de gebruikers PC uit te voeren. Om opdrachten gelijktijdig uit te voeren, bijvoorbeeld bij het afspelen van geluid bij het starten van de zender, wordt gebruik gemaakt van opdrachten die op de achtergrond worden uitgevoerd (eindigen op &).
#!/bin/bash # HiFi.sh # Bepaal het IP adres van de ontvanger ipadres=$(getent hosts pindadomo | awk '{print $1}') # activeer ontvanger (ssh -o StrictHostKeyChecking=no pindadomo './roc-recv -vv -s rtp+rs8m::10001 -r rs8m::10002 -d alsa -o 'plughw:CARD=IQaudIODAC,DEV=0' --frame-size=320 --sess-latency=25ms') & # start testgeluid speaker-test -c2 -l1 -twav & sleep 1 # activeer zender roc-send -vv -s rtp+rs8m:${ipadres}:10001 -r rs8m:${ipadres}:10002 -d alsa -i 'plughw:CARD=Loopback,DEV=1' --nbsrc=5 --nbrpr=5 --frame-size=320 & keuze=$(kdialog --menu "Selecteer programma:" 1 "Google Chrome TV" 2 "Firefox" 3 "VLC speler") echo $keuze case $keuze in 1) # start Chrome google-chrome ;; 2) firefox ;; 3) vlc ;; esac # stop zender killall roc-send # stop ontvanger ssh -o StrictHostKeyChecking=no pindadomo 'killall roc-recv'
Deïnstalleer de Roc streaming tools vanuit de broncode map met de volgende opdracht:
dany@pindabook:~/roc-toolkit> sudo scons -Q --build-3rdparty=openfec --disable-tests --disable-pulseaudio uninstall
UNINSTALL /usr/include/roc
UNINSTALL /usr/lib64/libroc.so.0.1
UNINSTALL /usr/lib64/libroc.so.0
UNINSTALL /usr/lib64/libroc.so
UNINSTALL /usr/bin/roc-conv
UNINSTALL /usr/bin/roc-recv
UNINSTALL /usr/bin/roc-send
Verwijder de pakketten om de Roc streaming tools te compileren met de opdracht:
dany@pindabook:~/roc-toolkit> sudo zypper remove -u gcc-c++ scons ragel gengetopt libuv-devel libunwind-devel libpulse-devel sox-devel libtool intltool autoconf automake make cmake
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...
De volgende 39 pakketten zullen worden VERWIJDERD:
autoconf automake bison bison-lang cmake cmake-full cmake-man gcc7-c++ gcc-c++ gengetopt gettext-tools glib2-devel intltool
libblkid-devel libcolm-0_13_0_5 libffi-devel libjsoncpp19 libmount-devel libpcre16-0 libpcrecpp0 libpcreposix0 libpulse-devel
librhash0 libselinux-devel libsepol-devel libsox3 libstdc++6-devel-gcc7 libstdc++-devel libtool libunwind-devel libuuid-devel
libuv-devel make make-lang pcre-devel ragel scons sox-devel zlib-devel
39 te verwijderen pakketten.
Na de bewerking zal 147,3 MiB worden vrijgemaakt.
Doorgaan? [j/n/v/...? alle opties tonen] (j):
( 1/39) Verwijderen van bison-lang-3.0.4-lp152.3.110.noarch .................................................................[gereed]
( 2/39) Verwijderen van cmake-3.17.0-lp152.1.1.x86_64 .......................................................................[gereed]
( 3/39) Verwijderen van cmake-man-3.17.0-lp152.1.2.x86_64 ...................................................................[gereed]
( 4/39) Verwijderen van gcc-c++-7-lp152.4.114.x86_64 ........................................................................[gereed]
( 5/39) Verwijderen van gengetopt-2.22.6-lp152.4.7.x86_64 ...................................................................[gereed]
( 6/39) Verwijderen van intltool-0.51.0-lp152.5.1.noarch ....................................................................[gereed]
( 7/39) Verwijderen van libpulse-devel-13.0-lp152.3.3.1.x86_64 ..............................................................[gereed]
( 8/39) Verwijderen van libtool-2.4.6-lp152.3.101.x86_64 ....................................................................[gereed]
( 9/39) Verwijderen van libunwind-devel-1.5.0-lp152.5.6.1.x86_64 ............................................................[gereed]
(10/39) Verwijderen van libuv-devel-1.18.0-lp152.4.3.1.x86_64 ...............................................................[gereed]
(11/39) Verwijderen van make-lang-4.2.1-lp152.8.110.noarch ..................................................................[gereed]
(12/39) Verwijderen van ragel-7.0.0.10-lp152.3.54.x86_64 ....................................................................[gereed]
(13/39) Verwijderen van scons-3.1.2-lp152.2.1.x86_64 ........................................................................[gereed]
(14/39) Verwijderen van sox-devel-14.4.2-pm152.7.1.x86_64 ...................................................................[gereed]
(15/39) Verwijderen van bison-3.0.4-lp152.3.110.x86_64 ......................................................................[gereed]
(16/39) Verwijderen van cmake-full-3.17.0-lp152.1.2.x86_64 ..................................................................[gereed]
(17/39) Verwijderen van gcc7-c++-7.5.0+r278197-lp152.3.9.1.x86_64 ...........................................................[gereed]
(18/39) Verwijderen van gettext-tools-0.19.8.1-lp152.6.6.1.x86_64 ...........................................................[gereed]
Aanvullende rpm-uitvoer:
install-info: No such file or directory for /usr/share/info/gettext.info.gz
install-info: No such file or directory for /usr/share/info/autosprintf.info.gz
(19/39) Verwijderen van glib2-devel-2.62.6-lp152.2.6.1.x86_64 ...............................................................[gereed]
(20/39) Verwijderen van automake-1.15.1-lp152.4.107.noarch ..................................................................[gereed]
(21/39) Verwijderen van libcolm-0_13_0_5-0.13.0.5-lp152.3.54.x86_64 .........................................................[gereed]
(22/39) Verwijderen van libsox3-14.4.2-pm152.7.1.x86_64 .....................................................................[gereed]
(23/39) Verwijderen van make-4.2.1-lp152.8.110.x86_64 .......................................................................[gereed]
(24/39) Verwijderen van librhash0-1.3.5-lp152.3.5.x86_64 ....................................................................[gereed]
(25/39) Verwijderen van libjsoncpp19-1.8.4-lp152.3.6.x86_64 .................................................................[gereed]
(26/39) Verwijderen van zlib-devel-1.2.11-lp152.8.9.1.x86_64 ................................................................[gereed]
(27/39) Verwijderen van libselinux-devel-3.0-lp152.1.47.x86_64 ..............................................................[gereed]
(28/39) Verwijderen van libmount-devel-2.33.1-lp152.5.6.1.x86_64 ............................................................[gereed]
(29/39) Verwijderen van libffi-devel-3.2.1.git259-lp152.6.5.x86_64 ..........................................................[gereed]
(30/39) Verwijderen van autoconf-2.69-lp152.3.112.noarch ....................................................................[gereed]
(31/39) Verwijderen van pcre-devel-8.41-lp152.6.104.x86_64 ..................................................................[gereed]
(32/39) Verwijderen van libsepol-devel-3.0-lp152.1.47.x86_64 ................................................................[gereed]
(33/39) Verwijderen van libblkid-devel-2.33.1-lp152.5.6.1.x86_64 ............................................................[gereed]
(34/39) Verwijderen van libstdc++-devel-7-lp152.4.114.x86_64 ................................................................[gereed]
(35/39) Verwijderen van libpcreposix0-8.41-lp152.6.104.x86_64 ...............................................................[gereed]
(36/39) Verwijderen van libpcrecpp0-8.41-lp152.6.104.x86_64 .................................................................[gereed]
(37/39) Verwijderen van libpcre16-0-8.41-lp152.6.104.x86_64 .................................................................[gereed]
(38/39) Verwijderen van libuuid-devel-2.33.1-lp152.5.6.1.x86_64 .............................................................[gereed]
(39/39) Verwijderen van libstdc++6-devel-gcc7-7.5.0+r278197-lp152.3.9.1.x86_64 ..............................................[gereed]
Verwijder de automatische aanmaak van de virtuele geluidskaart met de opdracht:
dany@pindabook:~/roc-toolkit> sudo rm /etc/modules-load.d/snd-aloop.conf
Bij de volgende systeemstart zal de virtuele geluidskaart verdwenen zijn. Stel dan ook terug een standaard geluidskaart naar voorkeur in. Ook de map met de broncode kan dan verwijderd worden:
dany@pindabook:~/roc-toolkit>cd
dany@pindabook:~>sudo rm -r roc-toolkit/