Git Product home page Git Product logo

Comments (6)

atsushieno avatar atsushieno commented on July 30, 2024

related aap-juce issue atsushieno/aap-juce#5

from aap-core.

atsushieno avatar atsushieno commented on July 30, 2024

With related to this issue, we would need some premise on the scope of this AAP project.

Currently it targets Android 10 devices or later, which kind of implies that only modern devices are in scope. Although there would be cheap devices nowadays and the premise is getting vanished.

So, the README.md should clearly mention that it targets only "capable" devices that supports quality low latency. Even with that it is still unclear if we can achieve basic usability here. I would go for features implemented first though. Arbitrary third-party audio plugins with arbitrary hosts are still good (I believe AudioRoute-SDK already does that though, on its own way).

Google has the basic Android device capability guidelines called CDD (Compatibility Definition Document), which has been updated every time Google releases new versions. The latest (as of writing this) Android 10 CDD mentions Audio Latency (5.6). They are still far behind professional low latency audio requirements, but they are something.

from aap-core.

cbix avatar cbix commented on July 30, 2024

Thanks for the reference! Never heard of AudioRoute and it doesn't look like getting a lot of attention anyway. Also I figured out my latency issues were related to how the Oboe API is being used and the device. With FAUST effect builds I didn't manage to get below 500 ms audio RTT even though it uses Oboe but with the official Oboe samples I got 30 ms on my S5 Duos with AOSP Pie and 90 ms on a Huawei with LineageOS Q. I'll try to fix the Faust Android build target soon and submit a PR and am excited to try your AAP samples as well!

Anyway the Android CDD mentions of latency shouldn't be of any concern for AAP regarding the plugin format. It's mainly relevant for reference implementations of plugin hosts and recommendations for which platform to use if audio latency is important (which for some use cases of AAP it actually isn't).

from aap-core.

atsushieno avatar atsushieno commented on July 30, 2024

One of the major concern with related to the entire architecture of AAP was NdkBinder. I finally did simple and stupid performance measurement on those plugins I have imported from LV2 and JUCE. mda-lv2 was super fast, and JUCE-based synths are also good enough. I put some results on aap-juce README.

https://github.com/atsushieno/aap-juce#measuring-performance

As long as I measured the turn-around time for those plugins, the average time was like 300-400 microseconds. where synths cost like 1500 milliseconds (it would depend on the device, so only diffs / percentages matter). Not a small increase, but quite acceptable unless hosts keep many plugin connections (I would freeze non-active tracks especially on mobiles).

It would be still worth keeping this issue open (I haven't worked on entire code review), but it wouldn't be a blocking concern for now.

from aap-core.

atsushieno avatar atsushieno commented on July 30, 2024

The diagram on the last page of the "Binder Communication and Discovery" section on this ABS2013 material mentions blocking ioctl (at (4) and (13)). This is something inevitable on current Android platforms.

... Although it should be quite different from general Linux ioctl (it is binder_ioctl()) the level of concern would be different. mutex_lock and mutex_unlock is indeed everywhere though.

from aap-core.

atsushieno avatar atsushieno commented on July 30, 2024

closning as per 27102e9.

from aap-core.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.