-
Notifications
You must be signed in to change notification settings - Fork 599
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compiling libopus 1.5.1 with Linux fails on ARM Cortex-A53 and Cortex-A55 #323
Comments
Do you have any sort of information that can help reproducing the problem? |
Raxda Rock 3 model C (Cortex-A55, Rockchip RK3566) DietPi v9.2.1 (beta)
|
Raspberry Pi Zero (Cortex-A53, Broadcom BCM2835) DietPi v9.2.1 (beta) CC silk/enc_API.lo ... CC silk/arm/NSQ_del_dec_neon_intr.lo silk/arm/NSQ_del_dec_neon_intr.c:604:14: note: within this loop |
Raspberry Pi Zero 2 W (Cortex-A53, Broadcom BCM2710A1, aka RP3A0) Raspberry Pi OS with desktop CC silk/arm/NSQ_del_dec_neon_intr.lo lscpu Architecture: aarch64 |
Since Opus is know to work on many ARM environments, the issue is most likely build-related. What build system (and exact command) are you using? Also, make sure you're using the latest main (and not 1.5.1) since there's been many build fixes there already. |
wget https://downloads.xiph.org/releases/opus/opus-1.5.1.tar.gz I will test the latest build on a C906 SoC |
Looking more closely, these all appear to be warnings, not errors. Does the build actually complete? If not, what are the actual errors? |
No, at the end of make install, the command opusenc -V report that I'm still using the old library on these SoCs and the newest version on others |
I mean what's the actual error then? |
Raspberry Pi Zero 2 W (Cortex-A53, Broadcom BCM2710A1, aka RP3A0) Raspberry Pi OS with desktop wget https://github.com/xiph/opus/archive/refs/heads/main.zip Compiler support:
sudo make install ... CC silk/arm/NSQ_del_dec_neon_intr.lo ... opusenc -V |
Look, the question is simple. Does the make succeed or does it end with an error. I don't know what you're trying to show with opusenc. opusenc comes from a different package so I have no idea what you expect here. Of course it won't change. |
MangoPi MQ-Pro (RISC-V 64, Allwinner D1, XuanTie C906 core RV64IMAFDCVU) DietPi v9.2.1 (beta) wget https://github.com/xiph/opus/archive/refs/heads/main.zip Compiler support:
sudo make install ... CC silk/stereo_LR_to_MS.lo ... opusenc -V |
I have modified the previous tests, now they indicate also the Linux distribution used. I use opusenc -V just to show in the output that "make install" did not update libopus. Now I will do one last test, I will put the same DietPi distribution on the RISC-V hardware which previously did not give any "warning" in compilation and we will find out if it is an operating system problem or not. I am not unaware of the fact that the last test above is done on a product that does not have adequate software support, with the Raspberry Pi I used their Debian distributions, in the ARM or RISC-V hardware the choice of Linux distro is not as wide as on PCs for known reasons. |
First, is your opusenc even dynamically linked. Second, did you check where it's looking for libopus? If it's linking with /usr/lib/libopus.so.x and you're installing to /usr/local/libopus.so.x then it's not going to help. The dynamic linker isn't magic. |
─────────────────────────────────────────────────────
uname -a wget https://github.com/xiph/opus/archive/refs/heads/main.zip Compiler support:
sudo make install ... CC silk/stereo_LR_to_MS.lo ... opusenc -V |
The previous test produced a warning and now opusenc reports the libopus version as unknown. In the next test I will try to recompile the version indicated on the opus site which is actually different from github and which had not caused any problems. I'll find out when I'm done if I'm stupid enough to have wasted all this time for nothing (or to find out that the problem is the unofficial Debian distribution). |
─────────────────────────────────────────────────────
uname -a wget https://downloads.xiph.org/releases/opus/opus-1.5.1.tar.gz Compiler support:
sudo make install ... CC silk/stereo_LR_to_MS.lo ... opusenc -V |
Conclusion: I hope I haven't abused your time, the compilation on RISC-V is successful despite the warnings even with DietPi, with the code indicated on the opus site the version is reported correctly, with the main from github it is unknown. The fact remains that with Raspberry Pi and other ARM SBCs the library in use remains the previous one even after the "make install". Now a true masochist would install Debian as provided by StarFive, but the point is that on RISC-V it also works with DietPi, on Raspberry it is not updated even with the official distribution and at this point I will write on their forum. |
ls /usr/local/lib/ It is not present in /usr/lib/. ldd /usr/bin/opusenc |
Any chance of a new tagged release that would contain such improvements? |
If you need to create libopus you can do this (opus-tools 0.2 report using libopus unknown):
or, like before (from: https://opus-codec.org/):
Both work with Debian GNU/Linux 12 (bookworm) x86_64 |
I encountered the problem with GCC, in function silk_NSQ_del_dec_neon and silk/arm/NSQ_del_dec_neon_intr which invokes undefined behavior [-Waggressive-loop-optimizations], the errors occurred with Raspberry Pi Zero for Cortex-A53 and Raxda Rock 3 model C for Cortex-A55.
I have not found any problems in RV64 (with StarFive VisionFive 2), with recent Macs and PCs.
I leave you my compliments for the results obtained with encapsulation in ISOBMFF, which seems to work everywhere, now Opus is in my opinion the best choice for the online distribution of spoken content at low bitrate. Thank you!
The text was updated successfully, but these errors were encountered: