Voir la version complète : Libungif: Décoder des gifs
Salut, durant la longue absence de PA :o j'ai porter une lib bien pratique sur DS: la libungif (http://sourceforge.net/projects/libungif).
Ce quelle permet aujourd'hui: décoder une image de type gif (renommée en .bin dans le dossier data) dans un buffer, j'ai mis maximum 192 et 256, allez voir dans le fichier _gif.c il vous suffit uniquement de changer ça (car grâce aux pointeurs on conait la taille du tableau!) pour changer la taille du buffer. J'ai aussi mis ces dimensions pour coller avec la mémoire de la DS (BG_GFX avec la libnds) mais rien ne vous empèche de faire plus :D
Pour le téléchargement: linungif-10112005.zip (http://www.gp2xfr.info/images/upload/linungif-10112005.zip)
(et la rom (http://www.gp2xfr.info/images/upload/gif.zip))
Copie d'écran:
http://www.gp2xfr.info/images/upload/libungif.png
PS: J'ai pas encore mis au point le système de frame par seconde, donc la première image gif semble être lente, ce n'est pas du à la lenteur du décodage (bienqu'il mouline un peu en fullscreen ;)) mais à ce réglage, pour modifier la vitesse de défilement, dans le fichier _gif.c à la ligne 103 (for(m=0;m<6;m++) WaitForVblank();) il vous suffit de modifier 6 par ce que vous voulez :)
Voilà, si vous voulez plus d'explications :chapeau:
Ouah ! Ca m'a l'air bien pratique tout ca ! Juste une petite question : est-ce seulement pour la DS, où je peux l'utiliser sur autre chose ?
Cette lib (http://sourceforge.net/projects/libungif) permet de décoder un gif vers un buffer, elle est écrite en C, donc elle est portable, sur la page du projet sourceforge, on peut télécharger la lib en entier, et il y a plusieurs exemples (gba, win32,...) donc biensur, elle est utilisable sur d'autre support :)
Ok, ca va me servir. Donc pour l'instant les formats lisible sur DS/GBA sont le gif, le jpeg. Le png j'ai regardé la lib m'a l'air assez compliquée, donc assez dur à porter :| et pour le bmp je crois pas que ca ai été fait, donc je vais essayer de faire un petit truc.
Cette lib a été ajoutée à PAlib, ainsi que la lib Jpeg...
Concernant les modifications, j'ai ajouté une commande pour extraire dans un buffer d'une taille au choix, ainsi que le support pour du 16 bit (au lieu de l'éternel 8 bit), et aussi ca doit être un poil optimisé (supprimé quelques messages d'erreurs inutiles, accéléré un peu les copies en faisant les bits 4 par 4 au lieu de 2 par 2...)
Pour le bmp, j'ai commencé un truc vite fait, pareil, dans PAlib, donc si tu veux regarder de ce côté-là, aucun soucis, le code se met facilement sur une autre console... Par contre, j'ai que mis l'utilisation du mode 16 bit pour l'instant, j'ai pas encore regardé pour la gestion des palettes, mais je vais le faire la semaine prochaine normalement, ou peut-être cet après-midi, tiens :p Pareil que pour le gif, j'ai essayé d'optimiser un peu, mais comme le bmp c'est 'a l'envers' par rapport au format DS, c'est pas pratique...
Oui ca m'avait surpris la première fois aussi que les BMP soient à l'envers ... Ca empêche de faire des copies DMA quoi ...
bah pour la copie DMA, de toute facon ca serait valable que pour les bmp 16 bit ou les 8bit, pour tous les autres faut s'adapter...
Pour les 24/32, c'est chiant, faut modifier les paramètres RGB pour coller avec la qualité de merde gba/DS, et virer le bit de l'alpha... enfin bon, c'est pas méchant, mais ca empeche le code d'etre super rapide, alors que bon, un bmp c'est pas du compressé...
J'ai compilé la libpng sur DS, je suis en train d'essayer d'adapter les fonctions I/O. Je promets rien, mais ca serait cool que ca fonctionne. ;)
Pas mal :)
Moi j'ai pleins d'erreurs :(
Tu donneras les sources biensur? :p
Cette lib a été ajoutée à PAlib, ainsi que la lib Jpeg...
Concernant les modifications, j'ai ajouté une commande pour extraire dans un buffer d'une taille au choix, ainsi que le support pour du 16 bit (au lieu de l'éternel 8 bit), et aussi ca doit être un poil optimisé (supprimé quelques messages d'erreurs inutiles, accéléré un peu les copies en faisant les bits 4 par 4 au lieu de 2 par 2...)
tu veut que ca aille plus vite et tu veut passer en 16 bit y'a pas une contradiction quelque part la ? ^^ (d'ailleur j'ai jamais vu un gif en 16 bits moi XD)
quel est la meilleure compression au final
bmp+huffman, gif, jpeg ?
le gif en 16 bit, c'est juste parce que j'ai fait une fonction qui prend une image, choppe l'extension, et la charge (gif, jpeg, ou bmp) à l'écran, qu'il soit en 8 ou 16 bit, donc j'avais besoin du 16 bit (parce que pour les jpeg, c'était mieux...)
Concernant la compression, j'ai l'impression que si tu as un faible nombre de couleurs, le gif donne de tres bons résultats, mais sinon le jpeg a l'air mieux
Thoduv, j'achète ! enfin, j'aimerai pouvoir ajouté à PAlib, si ca te dérange pas :p ca fait quelle taille ?
Concernant la compression, j'ai l'impression que si tu as un faible nombre de couleurs, le gif donne de tres bons résultats, mais sinon le jpeg a l'air mieux
ben ca serai sur gba ce serai le format ideal pour les sprites 15 couleurs mais sur ds ca n'a que peut d'utilité :'{.
je planche sur un decopresseur divX en ce moment ca t'interesse ? ^^
ben ca serai sur gba ce serai le format ideal pour les sprites 15 couleurs mais sur ds ca n'a que peut d'utilité :'{.
je planche sur un decopresseur divX en ce moment ca t'interesse ? ^^
:chaise:
dis pas de connerie :unsure: (c'est un mensonge au moins? :| )
:chaise:
dis pas de connerie :unsure: (c'est un mensonge au moins? :| )
sur ?
Thoduv, j'achète ! enfin, j'aimerai pouvoir ajouté à PAlib, si ca te dérange pas :p ca fait quelle taille ?
La libpng fait 150Ko. Ca compile, je suis en train d'essayer de faire marcher ca ...
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org