2010-11-17 16 views
8

Każdy, kto jest wart swojej soli w społeczności programistów Androida, wie o numerze 3434 związanym z dźwiękiem o niskim opóźnieniu w systemie Android. Dla tych, którzy tego nie robią, możesz się tutaj kształcić. http://code.google.com/p/android/issues/detail?id=3434Problemy z opóźnieniami związanymi z Androidem audio

Szukam jakiegokolwiek tymczasowego obejścia mojego osobistego projektu. Słyszałem, że mówię o udostępnianiu prywatnych interfejsów do NDK poprzez toczenie własnej wersji Androida i modyfikowanie NDK.

Wszystko, czego potrzebuję, to sposób na dostęp do sterowników alsa niskiego poziomu, które są już w pakiecie ze standardową wersją 2.2. Chciałbym mieć możliwość wysyłania PCM bezpośrednio do sprzętu audio w moim urządzeniu. Nie obchodzi mnie, że wynikowa aplikacja nie będzie dystrybuowana na rynku i prawdopodobnie nie będzie działać z żadnym innym urządzeniem niż moje.

Ktoś ma jakieś przydatne pomysły?

-Griff

EDIT: Powinienem wspomnieć, wiem AudioTrack udostępnia tę funkcję, ale chciałbym znacznie niższą latencję - AudioTrack siedzi około 300ms, chciałbym gdzieś około 20-30 ms.

Odpowiedz

7

Griff, to tylko problem, NDK nie poprawi znanego problemu z opóźnieniem (który jest nawet udokumentowany). Warstwa abstrakcji sprzętu w natywnym kodzie obecnie zwiększa opóźnienie, więc nie chodzi tylko o dostęp do sterowników niskiego poziomu (nie powinieneś polegać na sterownikach alsa, które i tak istnieją).

+1

Gah. Miałem nadzieję, że tak nie będzie. Miałem okazję porozmawiać z chłopakami z Androidem na GDC 2011 i najwyraźniej nie jest to wyłącznie problem sprzętowy, ale problem z architekturą, który nie jest łatwy do rozwiązania. – Griffin

+0

Zob. Komentarz @Ian Ni-Lewis - sprawy stają się coraz lepsze dzięki 4.1 –

+0

Przewiduję, że nie będzie rozwiązania architektonicznego, ponieważ Google nie jest zainteresowany rzeczywistą wydajnością tych urządzeń do eksploracji danych, które stanowią smartfony. –

1

Android: sound API (deterministic, low latency) całkiem dobrze radzi sobie z kompromisami. TL; DR: NDK daje niewielką korzyść, ponieważ wątki mogą działać z wyższym priorytetem, ale ta korzyść jest pozbawiona znaczenia przed Jellybean, ponieważ cały system audio jest dostrojony pod kątem Javy.

Galaxy Nexus z wersją 4.1 może uzyskać prawie 30ms opóźnienia wyjścia.

+0

Świetnie, więc konkretne urządzenie sprzętowe będzie działać, ale tylko nieznacznie lepiej; staje się to grą o sumie zerowej. –