Forum: Mikrocontroller und Digitale Elektronik JPG Files per STM32F4


von Uwe B. (derexponent)


Lesenswert?

Hallo,

hat von euch schon mal jemand JPG-Files (ohne sie vorher zu wandeln)
entweder direkt aus dem Flash oder von einer SD-Karte
auf einem LCD angezeigt (mit dem STM32F4) ?

ich hab die Funktion jetzt am laufen aber mir kommt sie sehr langsam vor

er braucht für JPGs mit einer Auflösung von 240x350 Pixel (24bpp)
zwischen 450ms und 750ms

die Files sind zwischen 10kByte und 35kByte groß
wobei die Filegröße nicht sehr viel mit der Geschwindigkeit zu tun hat
(scheint mir jedenfalls so)

im Moment lad ich die JPGs ins Flash und das Display ist
per FSMC angebunden. Die CPU läuft mit 168MHz

vlt kennt sich jemand mit dem Thema besser aus
und kann mir ein paar Tips geben wie ich das ganze
schneller hinbekomme

P.S. zur Info
die IDE ist "CooCox" und die Optimierung habe ich auf "None"
(bei -O3 hab ich Werte von 200ms)


Gruss Uwe

von Artjomka (Gast)


Lesenswert?

Ganz ohne library? Dann liegt es wohl an deinem dekoder, den Code kennt 
hier aber keiner.

Die library von elm chan ist sehr flott. Aber musst das Display effektiv 
anbinden. Nicht jeden Pixel einzeln ans Display schicken.

von holger (Gast)


Lesenswert?

>im Moment lad ich die JPGs ins Flash und das Display ist
>per FSMC angebunden. Die CPU läuft mit 168MHz

Wie lange dauert es denn wenn du kein JPEG dekodierst
und einfach nur Dummy Bytes an das Display schickst?
Sagen wir einfach mal alle Pixel auf rot setzen.
Wie viel Zeit benötigst du dafür?

von Uwe B. (derexponent)


Lesenswert?

@Artjomka,

sorry, natürlich benutze ich eine LIB
ich hab sie von hier :

http://en.pudn.com/downloads263/sourcecode/embed/detail1210390_en.html

und ich benutze nur ein File davon : "jpegdecode.c"
(fast ohne Änderungen...funktioniert einwandfrei)

bei dem Demo-Video vom "elm chan Treiber" werden manche Bilder
auch langsam angezeigt...allerdings sind die auch viel größer

vlt. probier ich mal seinen Code aus, kann ja sein das
der schneller ist

@holger,

die Verbindung zum Display selbst ist sehr schnell,
ein ClearScreen mit einer Farbe dauert nur ca. 10ms
(allerdings setzte ich da die Pixel-Adresse nur ein einziges mal)

bei der JPG-LIB wird bei jedem Pixel die Pixel-Adresse mit übertragen,
aber auch nur weil der Bildaufbau nicht von links nach rechts
durchlaufend ist, sondern das Bild in "Blöcken" gezeichnet wird

wie groß so ein Block ist muss ich mal nachschauen,
event. kann man den Code optimieren, wenn ich den
Display-Bereich zum zeichnen genau auf so einen Block lege,
dann brauch ich keine Adressen mit zu übertragen

Gruss Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.