roc-streaming / roc-pulse Goto Github PK
View Code? Open in Web Editor NEWRoc Toolkit modules for PulseAudio.
Home Page: https://roc-streaming.org
License: GNU Lesser General Public License v2.1
Roc Toolkit modules for PulseAudio.
Home Page: https://roc-streaming.org
License: GNU Lesser General Public License v2.1
We should report roc sink and roc sink input latency to PulseAudio so it could be taken into account when PulseAudio calculates the overall latency.
PulseAudio can automatically adjust sink latency. When this happens, the size of the buffer requested from sink inputs is changed as well.
We should handle these updates:
If the buffer size is larger than our target latency, we should increase our target latency, or the playback will break otherwise.
If the buffer size is smaller than our target latency and the network latency is small too, we can decrease our target latency.
We should add support for changing target latency dynamically. There are two sources of the target latency updates: we can measure network latency during RTCP and we can get sink latency updates from PulseAudio. Then we should use the maximum latency of these two.
In this issue, we should do the following:
Implement pulseaudio module, providing source and sink that use roc
as network transport.
Most likely, this module should be implemented on top of public API (#12) in a separate repo.
We need two features:
See also #20.
When sending from pulse audio (Ubuntu 20 LTS Desktop) with resampling in PA Daemon config to 48000hz 2channel f16, setting is not honored or configurable for the PA module and it will not connect to Raspberry Pi ALSA session.
With 44100hz there is an inability for the resampler to keep up even on LOW with the Pi 4:
`22:01:05.473 [dbg] roc_packet: router: detected new stream: source=1807046489 flags=0x8u
22:01:05.473 [dbg] roc_audio: depacketizer: ts=320 loss_ratio=0.00000
22:01:05.513 [dbg] roc_packet: router: detected new stream: source=0 flags=0x10u
22:01:05.593 [dbg] roc_audio: watchdog: status: bbbbbbbbbbbbbbbbbbbb
22:01:05.663 [dbg] roc_packet: delayed reader: initial queue: delay=8820 queue=8961 packets=29
22:01:05.663 [dbg] roc_fec: fec reader: update payload size: next_esi=0 cur_size=0 new_size=1248
22:01:05.663 [dbg] roc_fec: fec reader: update source block size: cur_sblen=0 cur_rblen=0 new_sblen=20
22:01:05.663 [dbg] roc_audio: depacketizer: got first packet: zero_samples=8960
22:01:05.663 [dbg] roc_audio: latency monitor: latency=8641 target=8820 fe=1.00000 trim_fe=1.00000 adj_fe=0.91875
22:01:05.703 [dbg] roc_fec: fec reader: repair queue: dropped=10
22:01:05.703 [dbg] roc_fec: fec reader: got first packet in a block, start decoding: n_packets_before=7 sbn=31405
22:01:05.703 [dbg] roc_fec: fec reader: update repair block size: cur_sblen=20 cur_rblen=0 new_rblen=235
22:01:05.743 [dbg] roc_audio: watchdog: status: bbbbbbbb............
22:01:10.673 [dbg] roc_audio: latency monitor: latency=9085 target=8820 fe=1.00000 trim_fe=1.00000 adj_fe=0.91875
22:01:15.673 [dbg] roc_audio: latency monitor: latency=9231 target=8820 fe=1.00002 trim_fe=1.00002 adj_fe=0.91877
`
We need a way to configure the following parameters:
We need to add corresponding module parameters or probably add some more high-level parameters and deduce configuration from them.
If we enable any clang/gcc sanitizer in SCons (e.g. --sanitizers=all
), PulseAudio modules fail to load with an undefined symbol error:
E: [pulseaudio] ltdl-bind-now.c: Failed to open module /usr/lib64/pulse-12.2/modules/module-roc-sink.so: /usr/lib64/libroc.so: undefined symbol: __ubsan_vptr_type_cache
E: [pulseaudio] module.c: Failed to open module "module-roc-sink".
It seems this happens because they are not linked with -lusan and -lasan, despite that we're using clang++ with -fsanitize option as a linker.
Linking with these two libraries manually is likely not a good idea since there may be multiple versions of them on the system and their location is disto-dependent.
Ideally clang++ should add them automatically, but for some reason it doesn't do it.
Currently, we unconditionally set 44100, which may cause unnecessary resampling. It would be better to use the sink's rate instead.
I'd like to use roc on windows but there is not tutorial for building for windows.
Any chance?
We should add more receiver and sender parameters to PulseAudio modules, e.g. target latency and no playback timeout. Tweaking some parameters may be critical for fixing playback.
Currently, the roc_sender module is sending heavy UDP traffic whether the client is playing audio or not. It can impact the performance of the network when not playing anything and/or lead to unnecessary charges. That traffic is seen as redundant in the network, seeing as it does not lead to anything being played. Unless the sender module is unloaded manually, there is no way to stop the traffic. The redundant traffic precludes the use of roc over metered connections without prior access to the Pulseaudio load-module/unload-module commands, which is greatly impractical.
Ideally, the sender should stop sending any data to the client as soon as playback is stopped.
Currently roc sink input always uses the same output rate.
We need to do the following:
when the sink input is attached to a sink, we should configure roc receiver to use the sink rate
when the sink we are connected to changes its rate, we should configure roc receiver to use the new rate
This will require support for dynamic output rate updates.
I'm running pulseaudio on raspbian in pi0.
When I launch pulseaudio --system -vvv
I've got a segfault.
I do not know if the problem comes from roc itself, but it does not occur when roc is not started with pulseaudio.
(If I load the module once pulseaudio is running, everything works fine).
It should be possible to detect a library and its sources are installed locally without the added need to download libasound, libsndfile, libtool and jsonc. Each step takes time.
It's far quicker to install those via a distribution-based mechanism (deb,rpm etc.) than wait until those download & compile.
Also, compiling pulseaudio isn't strictly necessary either, only configuring it so that config.h is generated.
Hi! Our pulseaudio audio setup over the network is currently very choppy when playing music over the network with Pulseaudio (we use the native TCP-based protocol), so I was looking for something that could be better. I came across roc, and I think UDP and FEC would really help. In the blog post, I read that eventually, a roc plugin might get upstreamed into Pulseaudio (if they accept). Has there been talk with the Pulseaudio people yet? What do they think?
This is my steps for build:
Got some problems and have questions. Do not know pulseaudio from the inside, so don't be mad:
/src/.libs/
while searching pulseaudio libraries.--with-pulseaudio-build-dir=/usr/lib64/pulseaudio/
scons failed.--with-pulseaudio-build-dir
? As I can see option --with-libraries
has same function. Why not add same search for every LIBPATH
as for pa_build_dir
? This change do not broke anything and fix this build type(use already installed PA libs + unpacked sources)config.h
generating. Its confuse me a lot, why we need do this? why this include not guarded by #ifdef HAVE_CONFIG_H
?After some research I found minimal needs for successful compilation pulseaudio modules:
#define PACKAGE
#define PACKAGE_VERSION "X.Y.Z"
same as pulseaudio sources version? Scons already have ROC_PULSE_VERSION
so there is no problem here?
#define HAVE_ATOMIC_BUILTINS
only if compiler support __sync_bool_compare_and_swap().
Its needed because if not set this on x64_86 platform (from src/pulsecore/atomic.h:320
)
#elif defined(__GNUC__) && (defined(__amd64__) || defined(__x86_64__)) #warn "The native atomic operations implementation for AMD64 has not been tested thoroughly. libatomic_ops is known to not work properly on AMD64 and your gcc version is too old for the gcc-builtin atomic ops support. You have three options now: test the native atomic operations implementation for AMD64, fix libatomic_ops, or upgrade your GCC."
I think this is for old compilers from 2008. Today stable gcc and clang do not understand #warn
directive, compiler get error and abort compilation. The problem here only #warn
directive, replacing #warn
by #warning
fix this(needed only for x86_64).
Best way is check if all compilers on all platforms have this feature and add static define if possible.
#include <sys/socket.h>
pulseaudio-13.0/src/pulsecore/core-util.h:295:58: error: unknown type name 'socklen_t'; did you mean '__socklen_t'? int pa_accept_cloexec(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
With this you do not need run configure
on pulseaudio sources anymore.
Hi there! I'm trying to get roc running on a raspberry pi (with 64bit arm).
I've used the rocstreaming/toolchain-aarch64-linux-gnu
container image to cross-compile
Inside the toolchain container, I used the cmake command cmake .. -DHOST=aarch64-linux-gnu -DPULSEAUDIO_VERSION=14.2
Then I copied the built module-roc-sink.so
and module-roc-sink-input.so
to /usr/lib/pulse-14.2/modules/
on my raspberry pi.
Then I configured default.pa
with : load-module module-roc-sink remote_ip=<some ip>
, and performed a pulse audio restart.
This resulted in:
Dec 26 08:56:53 dev1 pulseaudio[2070]: E: [pulseaudio] ltdl-bind-now.c: Failed to open module /usr/lib/pulse-14.2/modules/module-roc-sink.so: /usr/lib/pulse-14.2/modules/module-roc-sink.so: undefined symbol: pthread_atfork
Dec 26 08:56:53 dev1 pulseaudio[2070]: /usr/bin/pulseaudio: symbol lookup error: /usr/lib/pulse-14.2/modules/module-roc-sink.so: undefined symbol: pthread_atfork
I've looked through CMakelists.txt, but don't see anything related to pthreads. Any tips would be much appreciated.
Target system info:
Debian bullseye 11 (Raspian)
Linux dev1 5.15.76-v8+ #1597 SMP PREEMPT Fri Nov 4 12:16:41 GMT 2022 aarch64 GNU/Linux
Raspberry PI Zero W 2
Compilation system:
Fedora 37
Linux toolbox 6.0.11-300.fc37.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Dec 2 20:47:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
compile_commands.json:
[
{
"directory": "/var/home/ramblurr/src/mycroft/roc-pulse/build",
"command": "/opt/toolchain/bin/aarch64-linux-gnu-gcc -DROC_PULSEAUDIO_VERSION=14.2 -Dmodule_roc_sink_input_EXPORTS -I/var/home/ramblurr/src/mycroft/roc-pulse/src -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/pulseaudio-src/src -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/libtool-src/libltdl -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/roc-prefix/include -fPIC -Wall -Wextra -Wno-unused-variable -O3 -DNDEBUG -fPIC -o CMakeFiles/module-roc-sink-input.dir/src/module-roc-sink-input.c.o -c /var/home/ramblurr/src/mycroft/roc-pulse/src/module-roc-sink-input.c",
"file": "/var/home/ramblurr/src/mycroft/roc-pulse/src/module-roc-sink-input.c"
},
{
"directory": "/var/home/ramblurr/src/mycroft/roc-pulse/build",
"command": "/opt/toolchain/bin/aarch64-linux-gnu-gcc -DROC_PULSEAUDIO_VERSION=14.2 -Dmodule_roc_sink_EXPORTS -I/var/home/ramblurr/src/mycroft/roc-pulse/src -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/pulseaudio-src/src -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/libtool-src/libltdl -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/roc-prefix/include -fPIC -Wall -Wextra -Wno-unused-variable -O3 -DNDEBUG -fPIC -o CMakeFiles/module-roc-sink.dir/src/module-roc-sink.c.o -c /var/home/ramblurr/src/mycroft/roc-pulse/src/module-roc-sink.c",
"file": "/var/home/ramblurr/src/mycroft/roc-pulse/src/module-roc-sink.c"
},
{
"directory": "/var/home/ramblurr/src/mycroft/roc-pulse/build",
"command": "/opt/toolchain/bin/aarch64-linux-gnu-gcc -DROC_PULSEAUDIO_VERSION=14.2 -I/var/home/ramblurr/src/mycroft/roc-pulse/src -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/pulseaudio-src/src -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/libtool-src/libltdl -isystem /var/home/ramblurr/src/mycroft/roc-pulse/build/roc-prefix/include -fPIC -Wall -Wextra -Wno-unused-variable -O3 -DNDEBUG -o CMakeFiles/rocpulse_helpers.dir/src/rocpulse_helpers.c.o -c /var/home/ramblurr/src/mycroft/roc-pulse/src/rocpulse_helpers.c",
"file": "/var/home/ramblurr/src/mycroft/roc-pulse/src/rocpulse_helpers.c"
}
]
Hello evryone. I dont know is this a bug or feature but it puts me in trouble :). When i use another audio source on my local coumputer, Roc server is closes the session. When i restart my local pulseaudio it connect again but if i dont use roc sink it closes again. This is my log:
note: this is my first github issue and sorry for my bad english
15:57:09.524 [inf] roc_pipeline: receiver: creating session: src_addr=192.168.15.180:35718 dst_addr=0.0.0.0:10001
15:57:09.525 [dbg] roc_packet: delayed reader: initializing: delay=8820
15:57:09.525 [dbg] roc_fec: of decoder: initializing: codec=rs m=8
15:57:09.525 [dbg] roc_audio: depacketizer: initializing: n_channels=2
15:57:09.526 [dbg] roc_audio: watchdog: initializing: max_blank_duration=96000 max_drops_duration=96000 drop_detection_window=14400
15:57:09.529 [dbg] roc_audio: resampler: initializing: window_interp=128 window_size=32 frame_size=640 channels_num=2
15:57:09.529 [dbg] roc_audio: latency monitor: initializing: target_latency=8820 in_rate=44100 out_rate=48000
15:57:09.530 [dbg] roc_packet: router: detected new stream: source=1262297436 flags=0x8u
15:57:09.530 [dbg] roc_audio: depacketizer: ts=320 loss_ratio=0.00000
15:57:09.624 [dbg] roc_packet: router: detected new stream: source=0 flags=0x10u
15:57:09.645 [dbg] roc_audio: watchdog: status: bbbbbbbbbbbbbbbbbbbb
15:57:09.686 [dbg] roc_packet: delayed reader: initial queue: delay=8820 queue=8961 packets=29
15:57:09.686 [dbg] roc_fec: fec reader: update payload size: next_esi=0 cur_size=0 new_size=1248
15:57:09.687 [dbg] roc_fec: fec reader: update source block size: cur_sblen=0 cur_rblen=0 new_sblen=20
15:57:09.687 [dbg] roc_fec: fec reader: got first packet in a block, start decoding: n_packets_before=0 sbn=53602
15:57:09.688 [dbg] roc_fec: fec reader: update repair block size: cur_sblen=20 cur_rblen=0 new_rblen=235
15:57:09.688 [dbg] roc_audio: depacketizer: got first packet: zero_samples=8000
15:57:09.695 [dbg] roc_audio: latency monitor: latency=9259 target=8820 fe=1.00000 trim_fe=1.00000 adj_fe=0.91875
15:57:09.786 [dbg] roc_audio: watchdog: status: bbbbb...............
15:57:14.704 [dbg] roc_audio: latency monitor: latency=0 target=8820 fe=1.00001 trim_fe=1.00001 adj_fe=0.91876
15:57:14.724 [dbg] roc_audio: watchdog: status: ..............ibbbbb
15:57:14.865 [dbg] roc_audio: watchdog: status: bbbbbbbbbbbbbbbbbbbb
15:57:14.895 [dbg] roc_audio: latency monitor: latency out of bounds: latency=-9134 min=-8820
15:57:14.895 [inf] roc_pipeline: receiver: removing session
module-roc-sink
and module-roc-sink-input
Update docs:
@gavv This is extension of roc-streaming/roc-toolkit#446
I was packaged roc-toolkit-pulse
(rock-toolkit with pulseaudio module) for debian based distros (ubuntu) , you can see at here : roc-toolkit-pulse and want to publish at Launchpad as PPA.
But the problem is, to build with pulseaudio module roc-toolkit
need to download necessory 3rd party sources, like pulseaudio
, libtool
etc. and from the launchpad build environment doesn't have any external internet connection so that they that can be downloaded. you can see, the buildlog, I have explicitly check with ping
, wget
, curl
without success. Later I discovered another issue on launchpad itself which confirm my suspect : Launchpad issue
Now the question is how to solve ? So if we self contained every 3rd party sources that will be needed to build with pulseaudio but this will make a high maintained package and we don't want that right ? Now what ?
So, Can we introduce a option like --with-openfec-includes
(which is for openfec) for pulseaudio
also ? This make launchpad build sucessfull as we can get the pulseaduio headers from libpulse-dev
this package. Or this pulseaudio module creation should be leave for the pulseaudio side ? Or should I drop this package for pulseaudio module ?
Hi,
I'm trying to build against Pulseaudio 13.99.1, however I'm having issues with that. Tried on master and on develop. It doesn't seem to have that same issue with pulseaudio 13.0
I'm running the build with scons -Q --enable-pulseaudio-modules --build-3rdparty=openfec,pulseaudio:13.99.1 | tee build.log
I have attached build.log
Thanks
build.log
module-suspend-on-idle from PulseAudio 4.0 suspends Roc sink when it stays idle for some time (no sink inputs connected to it) and resumes when a new sink input appears. For some reason, the process of resuming takes pretty much time, up to 5 seconds.
I wasn't able to reproduce it with module-suspend-on-idle from PulseAudio 11.1. On that version, PulseAudio never suspends Roc sink.
$ pactl load-module module-roc-sink-input
Connection failure: Connection terminated
$ pulseaudio -vvv
....
I: [pulseaudio] client.c: Created 2 "Native client (UNIX socket client)"
D: [pulseaudio] protocol-native.c: Protocol version: remote 29, local 29
I: [pulseaudio] protocol-native.c: Got credentials: uid=1000 gid=1000 success=1
D: [pulseaudio] protocol-native.c: SHM possible: yes
D: [pulseaudio] protocol-native.c: Negotiated SHM: yes
D: [pulseaudio] module-augment-properties.c: Looking for .desktop file for pactl
I: [pulseaudio] roc_lib: roc_context: opening context
D: [pulseaudio] roc_lib: pool: initializing: chunk_size=25616 object_size=400 objects_per_chunk=64
D: [pulseaudio] roc_lib: pool: initializing: chunk_size=131600 object_size=2056 objects_per_chunk=64
D: [pulseaudio] roc_lib: pool: initializing: chunk_size=131104 object_size=65544 objects_per_chunk=2
I: [pulseaudio] roc_lib: roc_receiver: opening receiver
I: [pulseaudio] roc_netio: udp receiver: opened port 0.0.0.0:10001
I: [pulseaudio] roc_lib: roc_receiver: bound to 0.0.0.0:10001 rtp_rsm8_source
I: [pulseaudio] roc_netio: udp receiver: opened port 0.0.0.0:10002
I: [pulseaudio] roc_lib: roc_receiver: bound to 0.0.0.0:10002 rsm8_repair
I: [pulseaudio] roc_lib: roc_context: starting context
D: [pulseaudio] roc_netio: transceiver: starting event loop
D: [pulseaudio] module-stream-restore.c: Not restoring device for stream sink-input-by-media-name:Roc Receiver, because already set to 'alsa_output.platform-audiocodec.analog-stereo'.
D: [pulseaudio] module-intended-roles.c: Not setting device for stream Roc Receiver, because already set.
D: [pulseaudio] sink-input.c: Negotiated format: pcm, format.sample_format = "\"float32le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\""
I: [pulseaudio] sink-input.c: Trying to change sample rate
I: [pulseaudio] sink-input.c: Rate changed to 44100 Hz
I: [pulseaudio] module-stream-restore.c: Restoring volume for sink input sink-input-by-media-name:Roc Receiver.
D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-audiocodec.analog-stereo becomes busy, resuming.
D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-audiocodec.analog-stereo becomes idle, timeout in 5 seconds.
I: [pulseaudio] resampler.c: Forcing resampler 'copy', because of fixed, identical sample rates.
D: [pulseaudio] resampler.c: Resampler:
D: [pulseaudio] resampler.c: rate 44100 -> 44100 (method copy)
D: [pulseaudio] resampler.c: format float32le -> s16le (intermediate s16le)
D: [pulseaudio] resampler.c: channels 2 -> 2 (resampling 2)
D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
I: [pulseaudio] sink-input.c: Created input 0 "Roc Receiver" on alsa_output.platform-audiocodec.analog-stereo with sample spec float32le 2ch 44100Hz and channel map front-left,front-right
I: [pulseaudio] sink-input.c: media.name = "Roc Receiver"
I: [pulseaudio] sink-input.c: module-stream-restore.id = "sink-input-by-media-name:Roc Receiver"
D: [alsa-sink-SUNXI-CODEC sndcodec-0] alsa-sink.c: Requested to rewind 352800 bytes.
D: [alsa-sink-SUNXI-CODEC sndcodec-0] alsa-sink.c: Limited to 292256 bytes.
D: [alsa-sink-SUNXI-CODEC sndcodec-0] alsa-sink.c: before: 73064
D: [alsa-sink-SUNXI-CODEC sndcodec-0] alsa-sink.c: after: 73064
D: [alsa-sink-SUNXI-CODEC sndcodec-0] alsa-sink.c: Rewound 292256 bytes.
D: [alsa-sink-SUNXI-CODEC sndcodec-0] sink.c: Processing rewind...
D: [alsa-sink-SUNXI-CODEC sndcodec-0] sink-input.c: Have to rewind 292256 bytes on render memblockq.
D: [alsa-sink-SUNXI-CODEC sndcodec-0] source.c: Processing rewind...
E: [alsa-sink-SUNXI-CODEC sndcodec-0] sink-input.c: Assertion 'tchunk.length > 0' failed at pulsecore/sink-input.c:917, function pa_sink_input_peek(). Aborting.
when try to build roc
>>> ./configure --host= CXX=/usr/bin/clang++ CXXLD=/usr/bin/clang++ CC=/usr/bin/clang-12 CCLD=/usr/bin/clang-12 AR=/usr/bin/llvm-ar RANLIB=/usr/bin/llvm-ranlib CXXFLAGS='-w -fomit-frame-pointer -O2 -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/include' CFLAGS='-w -fomit-frame-pointer -O2 -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/include' LDFLAGS='-L/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/lib -L/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/lib -L/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/lib -Wl,-rpath-link=/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/lib -Wl,-rpath-link=/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/lib -Wl,-rpath-link=/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/lib' LIBJSON_CFLAGS=" " LIBJSON_LIBS="-ljson-c" LIBSNDFILE_CFLAGS=" " LIBSNDFILE_LIBS="-lsndfile" --enable-shared --disable-static --disable-tests --disable-manpages --disable-orc --disable-webrtc-aec --disable-openssl --disable-neon-opt --without-caps
/bin/sh: línea 1: ./configure: No existe el fichero o el directorio
>>> ./configure --host= CXX=/usr/bin/clang++ CXXLD=/usr/bin/clang++ CC=/usr/bin/clang-12 CCLD=/usr/bin/clang-12 AR=/usr/bin/llvm-ar RANLIB=/usr/bin/llvm-ranlib CXXFLAGS='-w -fomit-frame-pointer -O2 -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/include' CFLAGS='-w -fomit-frame-pointer -O2 -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/include -I/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/include' LDFLAGS='-L/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/lib -L/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/lib -L/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/lib -Wl,-rpath-link=/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/ltdl-2.4.6/lib -Wl,-rpath-link=/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/json-c-0.12-20140410/lib -Wl,-rpath-link=/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/sndfile-1.0.28/lib' LIBJSON_CFLAGS=" " LIBJSON_LIBS="-ljson-c" LIBSNDFILE_CFLAGS=" " LIBSNDFILE_LIBS="-lsndfile" --enable-shared --disable-static --disable-tests --disable-manpages --disable-orc --disable-webrtc-aec --disable-openssl --disable-neon-opt --without-caps
/bin/sh: línea 1: ./configure: No existe el fichero o el directorio
but pulseaudio is now meson only build system
┌─┤[$]|[sl1pkn07]|[sL1pKn07]|[/tmp/makepkg/roc-git/src/roc/3rdparty/x86_64-pc-linux-gnu/clang-12.0.0-release/build/pulseaudio-14.99.2/src/pulseaudio-14.99.2]|
└───╼ ls
total 216
drwxr-xr-x 11 sl1pkn07 users 660 jun 16 11:24 .
drwxr-xr-x 3 sl1pkn07 users 80 jun 27 15:00 ..
-rw-r--r-- 1 sl1pkn07 users 3273 jun 16 11:24 CODE_OF_CONDUCT.md
-rw-r--r-- 1 sl1pkn07 users 2866 jun 16 11:24 CONTRIBUTING.md
drwxr-xr-x 2 sl1pkn07 users 60 jun 16 11:24 coverity
drwxr-xr-x 2 sl1pkn07 users 80 jun 16 11:24 doc
drwxr-xr-x 2 sl1pkn07 users 100 jun 16 11:24 doxygen
-rwxr-xr-x 1 sl1pkn07 users 6458 jun 16 11:24 git-version-gen
-rw-r--r-- 1 sl1pkn07 users 17989 jun 16 11:24 GPL
-rw-r--r-- 1 sl1pkn07 users 26527 jun 16 11:24 LGPL
-rw-r--r-- 1 sl1pkn07 users 377 jun 16 11:24 libpulse-mainloop-glib.pc.in
-rw-r--r-- 1 sl1pkn07 users 341 jun 16 11:24 libpulse.pc.in
-rw-r--r-- 1 sl1pkn07 users 367 jun 16 11:24 libpulse-simple.pc.in
-rw-r--r-- 1 sl1pkn07 users 2192 jun 16 11:24 LICENSE
-rw-r--r-- 1 sl1pkn07 users 256 jun 16 11:24 .mailmap
drwxr-xr-x 2 sl1pkn07 users 420 jun 16 11:24 man
-rw-r--r-- 1 sl1pkn07 users 31826 jun 16 11:24 meson.build
-rw-r--r-- 1 sl1pkn07 users 7024 jun 16 11:24 meson_options.txt
-rw-r--r-- 1 sl1pkn07 users 20820 jun 16 11:24 NEWS
drwxr-xr-x 2 sl1pkn07 users 1180 jun 16 11:24 po
-rw-r--r-- 1 sl1pkn07 users 11741 jun 16 11:24 PROTOCOL
-rw-r--r-- 1 sl1pkn07 users 504 jun 16 11:24 PulseAudioConfig.cmake.in
-rw-r--r-- 1 sl1pkn07 users 489 jun 16 11:24 PulseAudioConfigVersion.cmake.in
-rw-r--r-- 1 sl1pkn07 users 1210 jun 16 11:24 pulseaudio.supp
-rw-r--r-- 1 sl1pkn07 users 12915 jun 16 11:24 pulseaudio.svg
-rw-r--r-- 1 sl1pkn07 users 16110 jun 16 11:24 pulseaudio-text.svg
-rw-r--r-- 1 sl1pkn07 users 911 jun 16 11:24 README
drwxr-xr-x 3 sl1pkn07 users 140 jun 16 11:24 scripts
drwxr-xr-x 4 sl1pkn07 users 80 jun 16 11:24 shell-completion
drwxr-xr-x 8 sl1pkn07 users 220 jun 16 11:24 src
-rw-r--r-- 1 sl1pkn07 users 8 jun 16 11:24 .tarball-version
-rw-r--r-- 1 sl1pkn07 users 1287 jun 16 11:24 todo
drwxr-xr-x 2 sl1pkn07 users 180 jun 16 11:24 vala
greetings
roc-recv works, but module-roc-sink-input constantly interrupts playback:
I: [alsa-sink-USB Audio] roc_pipeline: receiver: creating session
D: [alsa-sink-USB Audio] roc_packet: delayed reader: initializing: delay=8820
D: [alsa-sink-USB Audio] roc_fec: of decoder: initializing Reed-Solomon decoder
D: [alsa-sink-USB Audio] roc_audio: watchdog: initializing: max_blank_duration=88200 max_drops_duration=88200 drop_detection_window=13230
D: [alsa-sink-USB Audio] roc_audio: resampler: initializing: window_interp=128 window_size=32 frame_size=640 channels_num=2
D: [alsa-sink-USB Audio] roc_audio: resampler reader: initializing window
D: [alsa-sink-USB Audio] roc_audio: latency monitor: initializing: target_latency=8820 in_rate=44100 out_rate=44100
D: [alsa-sink-USB Audio] roc_packet: router: detected new stream: source=2072940300 flags=0x8u
D: [alsa-sink-USB Audio] roc_packet: router: detected new stream: source=1451934384 flags=0x10u
D: [alsa-sink-USB Audio] roc_packet: delayed reader: initial queue: delay=8820 queue=79104 packets=256
D: [alsa-sink-USB Audio] roc_packet: delayed reader: trimmed queue: delay=8820 queue=8961 packets=29
D: [alsa-sink-USB Audio] roc_fec: fec reader: repair queue: dropped=21
D: [alsa-sink-USB Audio] roc_audio: depacketizer: got first packet: zero_samples=0
D: [alsa-sink-USB Audio] roc_fec: fec reader: repair queue: dropped=21
D: [alsa-sink-USB Audio] roc_audio: depacketizer: ts=1976227423 loss_ratio=0.00000
D: [alsa-sink-USB Audio] roc_fec: fec reader: repair queue: dropped=21
D: [alsa-sink-USB Audio] roc_fec: fec reader: repair queue: dropped=21
D: [alsa-sink-USB Audio] roc_fec: fec reader: repair queue: dropped=21
D: [alsa-sink-USB Audio] roc_fec: fec reader: repair queue: dropped=15
D: [alsa-sink-USB Audio] roc_fec: fec reader: got first packet in a block, start decoding: n_packets_before=12 blk_sn=3948
D: [alsa-sink-USB Audio] roc_audio: latency monitor: latency=1546 target=8820 fe=1.00000 trim_fe=1.00000 adj_fe=1.00000
D: [alsa-sink-USB Audio] roc_fec: of decoder: repaired 0/28/30 ..XXXXXXXXXXXXXXXXXX xxxxxxxxxx
D: [alsa-sink-USB Audio] roc_audio: watchdog: status: ............ibbbbbbb
D: [alsa-sink-USB Audio] roc_audio: depacketizer: dropping late packet: ts=1976244063 pkt_ts=1976237609
D: [alsa-sink-USB Audio] roc_audio: depacketizer: dropping late packet: ts=1976244063 pkt_ts=1976237918
D: [alsa-sink-USB Audio] roc_audio: depacketizer: dropping late packet: ts=1976244063 pkt_ts=1976238227
D: [alsa-sink-USB Audio] roc_audio: depacketizer: dropping late packet: ts=1976244063 pkt_ts=1976238536
D: [alsa-sink-USB Audio] roc_fec: of decoder: repaired 0/24/30 ......XXXXXXXXXXXXXX xxxxxxxxxx
D: [alsa-sink-USB Audio] roc_audio: depacketizer: fetched=0 dropped=4
D: [alsa-sink-USB Audio] roc_audio: watchdog: status: bbbbbbbbbbbbbBbbbbbb
D: [alsa-sink-USB Audio] roc_audio: latency monitor: latency out of bounds: latency=-12611 min=-8820
I: [alsa-sink-USB Audio] roc_pipeline: receiver: removing session
This box is aarch64 (have not tested it before) and uses pulseaudio 8.0 (also have not tested it before).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.