In der Stadt ist das absolut super, bei höheren Geschwindigkeiten auf der Autobahn offenbart sich dann leider die zu niedrige FPS Rate - Ich finde dennoch ein super Zugewinn, auf Tesla Niveau in Sachen Flüssigkeit und Auflösung wird's aber wegen der Hardware wahrscheinlich nie kommen. Denke hier ist das Kamera System einfach am Limit
Das muss ich übrigens revidieren bzw. ich habe einen Weg gefunden wie das wesentlich flüssiger läuft. Für die die es interessiert hier einmal die Erklärung:
Das Problem: Der ursprüngliche Code konvertiert das Kamerabild frame-by-frame von UYVY (das Format das die Kamera nativ liefert, aber Android so ohne weiteres nicht anzeigen kann) nach RGBA (das Format das Android darstellen kann). Diese Konvertierung wurde ursprünglich manuell in einer simplen CPU-Schleife gemacht — für jeden einzelnen Pixel, jeden Frame. Der MT2712 SoC (CPU vom Infotainment) ist dafür schlicht zu lahm bzw. der Code einfach nicht wirklich gut.
Die Lösung: Statt der manuellen Schleife nutzen wir jetzt OpenCV's cvtColor Funktion für die Konvertierung. OpenCV verwendet intern ARM NEON SIMD-Instruktionen die mehrere Pixel gleichzeitig verarbeiten — das ist deutlich effizienter als was ein normaler Compiler aus einer einfachen Loop macht. Zusätzlich wurde der V4L2 Buffer von 2 auf 4 erhöht damit der Treiber nie auf die App warten muss, und ein select() vor dem Frame-Abruf eingebaut damit der Thread nicht unnötig CPU-Zeit frisst.
Insgesamt merkt man eine deutlich bessere Performance und es hat bei meinem Testlauf heute auf der Autobahn quasi gar nicht mehr geruckelt. Ich will noch ein paar andere Kleinigkeiten machen (gerade mit Bezug auf die UI - aber denke irgendwann nächste Woche poste ich den ersten Release mal auf Github)
Repo: https://github.com/jamakr4/MG4-360-Camera-App
Issue Board: https://github.com/users/jamakr4/projects/4
Wiki: https://github.com/jamakr4/MG4-360-Camera-App/wiki
Milestones: https://github.com/jamakr4/MG4-360-Camera-App/milestones
Gerade beim Wiki ändert sich relativ häufig was bzw. ich versuche das wirklich so gut zu dokumentieren wie möglich und machmal stellen sich manche Ideen dann in der Realität als nicht so toll raus wie gedacht weshalb ich sie wieder aus dem Wiki nehme.
Edit: Fall jemand fragt: Der Entwickler will die App selber nicht mehr weiter entwickeln und ich habe die Erlaubnis seinen Code nach belieben zu verbessern..