J'ai travaillé sur l'utilisation d'OpenSL pour une application audio à faible latence pour Android. Jusqu'à présent, la latence la plus faible que j'ai réussi à atteindre est de 200ms sur un Samsung Galaxy S5 (toucher-à-son, mesuré en tapant et en enregistrant le son du clapet suivi du son de l'application). Je pense que je peux l'amener à 160ms en améliorant la logique de l'application interne. À l'heure actuelle, il y a jusqu'à 40ms de délai entre l'application qui reçoit le contact et le rappel pour cet audio. Je pense que c'est parce que je file constamment des tampons vides quand il n'y a pas d'audio. Est-ce une mauvaise pratique? Je reçois des artefacts audio quand j'essaie des approches qui ne font que se mettre en file d'attente quand il y a de l'audio pour une raison quelconque. Quoi qu'il en soit, ma question est, quelle est la latence la plus basse possible en utilisant OpenSL de toucher à la sortie audio sur l'un des plus récents appareils Android? (Je sais que cela diffère d'un périphérique à l'autre, mais je me demandais quel est le meilleur périphérique pour une faible latence s'il y en a un, et quelle est la valeur de cette latence la plus basse?Android: OpenSL latence la plus faible possible
Android: sound API (deterministic, low latency)
Le lien ci-dessus d'environ un an il y a qu'il affirme est autour de la gamme 180ms. Est-ce encore le plus bas possible pour OpenSL? La réponse recommandée dit que Music Synthesizer pour android obtient une "latence de sortie totale" de moins de 30 ms. Mais quand je le lance sur un Samsung Galaxy S5 il a une latence sonore de 200ms. A quoi correspond cette "latence de sortie totale"? Est-ce que je manque quelque chose?
Comment diminuer davantage la latence?
Merci pour toute aide que vous pouvez me donner! Edit: Je fais tout ce qui est indiqué ici Low-latency audio playback on Android sauf les instructions NEON ou SSE mais mon temps de traitement est inférieur aux 15% indiqués ici, donc cela ne devrait pas poser de problème. Je suis en train de mettre en file d'attente un tampon avec 2 courts métrages PROPERTY_OUTPUT_FRAMES_PER_BUFFER pour le son stéréo. Est-ce trop haut?
Cette question est susceptible d'attirer des réponses anecdotiques basées sur des expériences personnelles avec un ensemble limité de dispositifs, plutôt que des réponses définitives qui sont manifestement bonnes ou fausses. Par conséquent, il ne semble pas vraiment approprié pour StackOverflow, car ce n'est pas un forum de discussion. Quoi qu'il en soit, les chiffres que vous citez semblent un peu élevés. En utilisant la même méthode de mesure, j'ai obtenu des temps inférieurs à 100 ms sur un XPeria Z alors que j'exécutais des tests de latence il y a environ un an et demi. – Michael
Vous utilisez openSL? Y at-il un mode rapide que je dois activer? J'utilise le simplebufferedqueueplayer avec des shorts (PROPERTY_OUTPUT_FRAMES_PER_BUFFER * 2) dans le tampon mis en file d'attente et PROPERTY_OUTPUT_SAMPLE_RATE pour les données audio ainsi que le lecteur. J'utilise un son stéréo, c'est pourquoi le * 2 pour le nombre de courts métrages. La seule chose que je peux penser de ce que je ne fais pas est d'utiliser des instructions NEON ou SSE, mais mon temps de traitement est inférieur à 15% du temps de lecture et le délai est encore élevé. –