jamulussoftware / jamulussoftware/jamulus

Investigate opus build optimizations for ARM non-FP (Raspberry, Android, iOS)

Open
#2,475 7 comments 0 reactions 0 assignees View on GitHub
refactoring
Dominant language
C
Stars
1.1k
Forks
248
Avg merge
2d 3h
Merged PRs (30d)
9

Description

**What is the current behaviour and why should it be changed?**

There are hints that it might make sense to set specific opus build flags to improve performance on low-spec arm builds (Raspberry, Android, iPhone):
- [openwebrtc issue](https://github.com/EricssonResearch/openwebrtc/issues/558)
- https://github.com/jamulussoftware/jamulus/blob/master/distributions/raspijamulus.sh#L53

**Describe possible approaches**

- [ ] Find out if it's worth it (run benchmarks, do research, e.g. https://raspberrypi.stackexchange.com/questions/545/does-the-raspberry-pi-have-hardware-floating-point-support/546#546)
- [x] Find out how to make `qmake` enable those flags (maybe some defines?): [-D FIXED_POINT](https://github.com/jamulussoftware/jamulus/blob/9d32a72ad67740c82901498b49d16f995a4f56ba/libs/opus/configure.ac#L126)
- [ ] Implement
- [ ] Consider dropping manual opus installation in `raspijamulus.sh`?

**Has this feature been discussed and generally agreed?**

No.

Contributor guide

Open the contributing guide

Research direction

Start by comparing the Opus configuration in libs/opus/configure.ac with the qmake build and the manual installation in distributions/raspijamulus.sh. Run benchmarks or research the ARM non-floating-point targets listed in the issue to determine whether the flags improve performance. Done means documenting the result, implementing justified flags, and deciding whether the manual Raspberry Pi installation can be removed.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc, build-system, embedded-iot, mobile-dev, performance
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.