Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Intégrer des images, sons ou videos dans des librairies partagées C

0 views
Skip to first unread message

Fab

unread,
Oct 13, 2009, 3:03:04 AM10/13/09
to
Bonjour,

Etant donn� qu'on peut programmer des librairies dynamiques partag�es en C
sous BSD (avec gcc), peux-t-on y ajouter des fichiers multim�dia directement
int�gr�s � l'int�rieur, � l'instar de ce qu'il est possible de faire dans
une DLL sous Windows ?

Le but est d'int�grer dans un fichier lib.so des fichiers PNG ainsi que des
vid�os MPEG. Comme cela est possible avec Windows, je pense que cela ne pose
aucun probl�me sous BSD mais je n'ai pas trouv� d'explications sur le web.

J'ai le souvenir que sur Amiga, il y a 20 ans, il existait des outils pour
convertir une image GIF ou IFF ILBM en code source C mais cela est plut�t
lourd et d'ailleurs ne semble plus se faire.

Merci pour vos informations,

Fabrice

Sylvestre Gallon

unread,
Oct 13, 2009, 8:12:06 AM10/13/09
to
On Oct 13, 9:03 am, "Fab" <f...@nospam.com> wrote:
> Bonjour,
>
> Etant donné qu'on peut programmer des librairies dynamiques partagées en C
> sous BSD (avec gcc), peux-t-on y ajouter des fichiers multimédia directement
> intégrés à l'intérieur, à l'instar de ce qu'il est possible de faire dans

> une DLL sous Windows ?
>
> Le but est d'intégrer dans un fichier lib.so des fichiers PNG ainsi que des
> vidéos MPEG. Comme cela est possible avec Windows, je pense que cela ne pose
> aucun problème sous BSD mais je n'ai pas trouvé d'explications sur le web.

>
> J'ai le souvenir que sur Amiga, il y a 20 ans, il existait des outils pour
> convertir une image GIF ou IFF ILBM en code source C mais cela est plutôt

> lourd et d'ailleurs ne semble plus se faire.
>
> Merci pour vos informations,
>
> Fabrice

Avec gimp tu peux sauvegarder une image en .c.

Cordialement,
--
Sylvestre Gallon (http://devsyl.blogspot.com)
R&D @ Rathaxes (http://www.rathaxes.org)
PMBSD Lead Developer (http://www.pmbsd.org)

Hamiral

unread,
Oct 13, 2009, 8:22:15 AM10/13/09
to
Fab a écrit :
> Bonjour,
>
> Etant donné qu'on peut programmer des librairies dynamiques partagées en
> C sous BSD (avec gcc), peux-t-on y ajouter des fichiers multimédia
> directement intégrés à l'intérieur, à l'instar de ce qu'il est possible
> de faire dans une DLL sous Windows ?
>
> Le but est d'intégrer dans un fichier lib.so des fichiers PNG ainsi que
> des vidéos MPEG. Comme cela est possible avec Windows, je pense que cela
> ne pose aucun problème sous BSD mais je n'ai pas trouvé d'explications
> sur le web.
>
> J'ai le souvenir que sur Amiga, il y a 20 ans, il existait des outils
> pour convertir une image GIF ou IFF ILBM en code source C mais cela est
> plutôt lourd et d'ailleurs ne semble plus se faire.

>
> Merci pour vos informations,
>
> Fabrice

Il te faut un outil, genre bin2c, qui va lire tes ressources et les
enregistrer dans un fichier .c sous la forme d'un tableau d'octets (ou
autres). Il ne reste plus qu'à compiler et lier ce fichier .c avec le
reste de ton programme.
Note que cela génère des sources très volumineux, donc rallonge
considérablement la compilation.
Il y a sûrement des outils, genre bin2obj, qui convertissent directement
en fichier objet, donc tu n'as plus qu'à lier, ceci te débarrasse donc
de la phase de compilation, et te permet donc de modifier tes ressources
plus souvent sans rallonger tes temps de compilation (d'où un certain
confort de développement).
Autant le bin2c tu peux le programmer toi-même, autant le bin2obj me
paraît plus ardu, en tout cas je ne vois pas trop comment faire. Mais tu
dois pouvoir en trouver qui corresponde à ta plateforme en cherchant un
peu sur le net.

Bien sûr après cela il te faut le moyen de lire et décompresser tes
ressources comme si elles venaient du filesystem, mais ça c'est une
autre histoire.

Ham

Fab

unread,
Oct 14, 2009, 6:31:08 AM10/14/09
to

"Sylvestre Gallon" <ccna...@gmail.com> a �crit dans le message de
news:39c5b801-df5d-4ded...@j4g2000yqa.googlegroups.com...

On Oct 13, 9:03 am, "Fab" <f...@nospam.com> wrote:
>> Bonjour,
>>
>> Etant donn� qu'on peut programmer des librairies dynamiques partag�es en
>> C

>> sous BSD (avec gcc), peux-t-on y ajouter des fichiers multim�dia
>> directement
> >int�gr�s � l'int�rieur, � l'instar de ce qu'il est possible de faire dans

> >une DLL sous Windows ?

>Avec gimp tu peux sauvegarder une image en .c.


Merci pour les diff�rentes infos. Par contre, ume image JPEG compress�e �
250 Ko se retrouve � occuper 3,5 Mo apr�s la sortie du fichier source c sous
Gimp. Il n'y a pas moyen de conserver la compression JPEG ou PNG, quitte �
devoir utiliser une autre librairie pour la lecture plus tard ? En effet,
j'ai l'impression que l'image est sauvegard�e au format RAW (sans aucune
compression).

Quant � l'outil bin2c, on trouve effectivement une collection de codes
sources � compiler sur le web, et m�me des scripts Perl. Il existe un outil
bin2c_WIN qui r�alise la m�me t�che mais sous Windows. Si l'int�gration
d'images dans des librairies UNIX ne semble pas trop poser de probl�mes,
celle de vid�os semble quasi impossible. J'ai cru comprendre sur un forum
que seul Windows avec ses DLL autorisait le concept d'ajouter des fichiers
ressources binaires dans des biblioth�ques, cela est impossible sous BSD /
Linux sans devoir tout g�n�rer en code C au pr�alable. Pour les vid�os MPEG,
je n'ai tout simplement rien trouv� de tel...

Bonne journ�e,

Fab

Hamiral

unread,
Oct 14, 2009, 7:13:40 AM10/14/09
to
Fab a écrit :
> Quant à l'outil bin2c, on trouve effectivement une collection de codes
> sources à compiler sur le web, et même des scripts Perl. Il existe un
> outil bin2c_WIN qui réalise la même tâche mais sous Windows. Si
> l'intégration d'images dans des librairies UNIX ne semble pas trop poser
> de problèmes, celle de vidéos semble quasi impossible. J'ai cru
> comprendre sur un forum que seul Windows avec ses DLL autorisait le
> concept d'ajouter des fichiers ressources binaires dans des
> bibliothèques, cela est impossible sous BSD / Linux sans devoir tout
> générer en code C au préalable. Pour les vidéos MPEG, je n'ai tout
> simplement rien trouvé de tel...

En fait, pourquoi veux-tu mettre tes ressources dans une bibliothèque
dynamique ? Tu pourrais aussi bien les charger depuis le disque.
Si ce que tu cherches à faire c'est d'avoir tes ressources localisées
dans un "package", que tu peux changer lors de l'exécution, alors
pourquoi ne pas simplement les gzipper de sorte que tu auras un fichier
seul contenant toutes les ressources, et utiliser la bibliothèque qui va
bien pour les lire ?

Le fait que Windows permette de mettre des ressources dans une DLL ne
veut pas dire que c'est la meilleure méthode...

Ham

Sylvestre Gallon

unread,
Oct 14, 2009, 9:04:44 AM10/14/09
to

Je plussois :)

0 new messages