-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LCD - Mission - Leka Image & Video Features #13
Comments
J'ai avancé un peu dans la configuration bas niveau du LCD en calquant sur le BSP. Cependant je suis bloqué sur un comportement que je n'arrive pas à comprendre : Pour pouvoir utiliser l'écran LCD, il faut passer par une initialisation de certains registres/variables en appelant des fonction du HAL avec les parametres voulus. Dans cette initialisation est compris l'initialisation du composant OTM8009a (le nom du hardware de l'écran), or même en ayant copié exactement le code du BSP et après de nombreux essais et réécritures, cette initialisation semble ne pas aboutir correctement. L'initialisation en question s'effectue dans la fonction Ce problème m'aura tout de meme permis de creuser en profondeur au niveau du fonctionnement interne et comprendre comment tout cela s'agence. |
@Madour tout le driver du otm8009 peut être utilisé en entier avec le Quelques pistes (que tu as peut être déjà faites):
L'ordre des implémentations est important. De manière générale, toute cette partie initialisation de très bas niveau, elle doit être faite en Dans la phase d'initialisation du robot, ça se fera tranquillement au début pour avant de lancer le fonctionnement. @YannLocatelli aura surement d'autres idées, il a plus creusé le sujet que moi. |
@Madour Mbed vient aussi de rajouter une la PR est ici : https://github.com/ARMmbed/mbed-os/pull/13022/files |
J'ai résolu le problème de l'initialisation, en fait ça ne venait pas directement du OTM8009a_Init, mais d'une instruction de configuration de la clock qui m'avait échappé. J'ai corrigé cela dans le commit 082a7ac. Edit: d'ailleurs au final j'ai fini par integrer le fichier otm8009a.c directement dans la classe LekaLCD car il se base sur des variable globales (hdsi_discovery par exemple), alors que j'ai integré ces handlers dans la classe en tant que membre. Je pense que c'est plus propre comme ça. J'ai également commencé à essayer de remplir des surfaces avec le DMA2D (toujours en calquant le BSP). Pour l'instant, les méthodes LekaLCD::clear et LekaLCD::fillRect, qui se basent sur LekaLCD::fillBuffer, ne fonctionnent pas vraiment; une commande de configuration a du m'échapper encore une fois ... Une fois ce problème reglé, je tenterai de lire la carte SD depuis mbed os. |
Problème résolu, en fait l'initialisation de la SDRAM manquait (cf 1bf09ef). |
bravo! 🎉 |
Avancement et recherches pour la lecture de fichiers vidéos mjpeg/avi :
Donc tout ça pour dire, que pour afficher une vidéo avec un rafraichissement rapide, je vais forcement devoir configurer le DSI host en Adapter Command mode, or j'y suis pas arrivé pour l'instant :( . Dans la documentation ils préviennent qu'il faut faire attention à la bande passante du LTDC, vérifier qu'il est capable d'envoyer la série de long write commands; j'ai regardé du coté de la doc du LCD-TFT, la gamme STM32F7x9 possède les meilleurs spec, donc à priori il ne devrait pas y avoir de soucis de ce côté. Voila ce que j'ai compris globalement, y'a moyen qu'il y'ai des erreurs dans mon paragraphe, hésitez pas à corriger, ça sera bénéfique pour tous. Par ailleurs, il se trouve que le F769NI-Disco a la possiblité d'utiliser un double frame buffer, j'ai testé avec les exemple de ST et l'affichages d'images une à la suite de l'autre se fait instantanément sans artefact visuel (tearing effect ou autre), ça serait intéressant d'essayer de mettre ça en place dans deux semaines ? (si l'affichage de vidéo fonctionne d'ici la) |
Une petite remarque par rapport à la lecture vidéo, et plus précisemment par rapport à la compilation, j'ai remarqué que certaines options étaient nécessaires au bon fonctionnement du décodage :
D'ailleurs, j'avais perdu du temps parce que le décodage bloquait au bout de quelques frames, et il se trouve que j'avais les mauvaises options (-O0 et -f-data-sections)! Je n'ai pas vraiment d'explications logique à ce comportement par contre. Pour mbed os, j'ai vu qu'il y'avait possibilité de définire un compile profile via un fichier json , qu'on peut ensuite utiliser avec |
Mission - Leka Image & Video Features
Introduction
Leka is an interactive educational toy. It has a screen to display images, animations, emotions, drawings.
While still images are easy to render and display, it's a different matter for animations. There are two ways of doing animations:
Using code is often more optimized and mcu power friendly. It is also interactive as you can change colors, speed, shapes on the fly. But it's a lot harder, takes more time, needs more people with very special skills and therefore is not financial ressource friendly.
On the other hand, playing video is easy conception wise: nowadays, even a non designer can create a simple video animations using Adobe or free tools, export it in
mpeg
to be played by the device.The playing part is much trickier as it is resource intensive and can be programmatically complex to implement as it relies a lot on the hardware capabilities.
All capabilities (still images, videos & animations) are needed for Leka. We will start with displaying images before moving to "playing a video file". It completely separates the development process from the video creation process and allows both to work in parallel.
The Mission
Constraints
jpeg
with and without transparent backgroundmpeg
oravi
FAT16
to allow PC users to add images and videos manuallySteps
1. TTHW (Time To Hello World) with images
This first step is to make sure the hardware is working using ST's provided software. We will start by displaying images from an SD card using only ST's examples and software.
2. TTHW Images + Mbed OS
This second step is to take the working example and start incorporating Mbed OS into the final working code.
3. Deep Dive Image Display
Now that we can display images using Mbed and our custom libraries well try different things.
4. TTHW (Time To Hello World) with videos
Taking a step back, we'll do the same as in step 1 and display videos from an SD card ST's examples and software.
5. TTHW Videos + Mbed OS
This fifth step is to take the working example and start incorporating Mbed OS into the final working code. A lot of steps are the same as in step 2 and should be fairly straight forward. They are listed to make sure we don't forget anything.
@YannLocatelli has already worked on this and gathered important resources and code examples. They are available here and must be read carefully:
6. Deep Dive Videos
Now that we can display images using Mbed and our custom libraries well try different things.
Resources
.png
jpeg_utils.c
The text was updated successfully, but these errors were encountered: