Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1065 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Décoder des images jpeg rapidement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Décoder des images jpeg rapidement

n°941960
sligor
Posté le 10-08-2007 à 09:38:07  profilanswer
 

Bonjour,
je suis à la recherche d'une librarie qui permette de décoder des images jpeg de façon rapide (ie: en utilisant les extensions processeur MMX/SSE)
La libjpeg n'est écrite qu'en C...
Alors si vous en connaissez une faite le savoir ;)  
 

mood
Publicité
Posté le 10-08-2007 à 09:38:07  profilanswer
 

n°941961
wedgeant
Da penguin inside
Posté le 10-08-2007 à 09:39:07  profilanswer
 

Et tu voudrais une lib écrite en quoi d'autre qu'en C ? [:gratgrat]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°941962
o'gure
Modérateur
Multi grognon de B_L
Posté le 10-08-2007 à 09:43:59  profilanswer
 

assembleur je suppose.


---------------
Relax. Take a deep breath !
n°941963
Riot
Buy me a riot
Posté le 10-08-2007 à 09:44:17  profilanswer
 

Magick++ en C++ je crois ;)


---------------
Be the one with the flames.
n°941964
wedgeant
Da penguin inside
Posté le 10-08-2007 à 09:45:02  profilanswer
 

Riot a écrit :

Magick++ en C++ je crois ;)


Il a dit plus rapide que le C :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°941965
wedgeant
Da penguin inside
Posté le 10-08-2007 à 09:45:13  profilanswer
 

o'gure a écrit :

assembleur je suppose.


[:blessure]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°941970
o'gure
Modérateur
Multi grognon de B_L
Posté le 10-08-2007 à 09:48:52  profilanswer
 


AFAIK, pas mal d'implémentations de librairie de manipulation graphique utilisent l'assembleur pour optimiser des portions de code.


---------------
Relax. Take a deep breath !
n°941972
wedgeant
Da penguin inside
Posté le 10-08-2007 à 09:59:38  profilanswer
 

Voui, je sais, mais [:blessure] quand même pour faire une lib en "pur assembleur" [:god]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°941975
sligor
Posté le 10-08-2007 à 10:05:08  profilanswer
 

quand j'ai écrit "La libjpeg n'est écrite qu'en C... " ça voulait dire 100% de C d'où aucune optimisation.
En fait c'est la fonction idct qui est consommatrice de ressource dans la décompression jpeg et c'est celle là qui doit être optimisée.
Les codecs mpeg1/2/3/4 par exemple possèdent pour la plupart une version optimisée de cette fonction, la librairie libjpeg non

n°941976
o'gure
Modérateur
Multi grognon de B_L
Posté le 10-08-2007 à 10:05:13  profilanswer
 

Harko et ses disciples pourraient nous faire ca en quelques minutes je penses [:petrus75]


---------------
Relax. Take a deep breath !
mood
Publicité
Posté le 10-08-2007 à 10:05:13  profilanswer
 

n°941977
wedgeant
Da penguin inside
Posté le 10-08-2007 à 10:06:43  profilanswer
 

o'gure a écrit :

Harko et ses disciples pourraient nous faire ca en quelques minutes je penses [:petrus75]


[:cerveau dawak]
 

sligor a écrit :

la librairie libjpeg non


Ben reste plus qu'à faire une zentille demande à l'équipe qui dev la libjpeg :D


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°941979
sligor
Posté le 10-08-2007 à 10:08:38  profilanswer
 


 

wedgeant a écrit :


Ben reste plus qu'à faire une zentille demande à l'équipe qui dev la libjpeg :D


S'il sont pas morts
 
"IJG is an informal group that writes and distributes a widely used free library for JPEG image compression.
 
The latest release is version 6b of 27-Mar-1998. This is a stable and solid foundation for many application's JPEG support. "


Message édité par sligor le 10-08-2007 à 10:08:50
n°941981
wedgeant
Da penguin inside
Posté le 10-08-2007 à 10:10:20  profilanswer
 

[:cerveau wam]
 
Il me semblait pourtant qu'elle continuait à évoluer régulièrement ... :gratgrat:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°941983
o'gure
Modérateur
Multi grognon de B_L
Posté le 10-08-2007 à 10:11:49  profilanswer
 

regardes éventuellement du coté de la libgd


---------------
Relax. Take a deep breath !
n°941986
o'gure
Modérateur
Multi grognon de B_L
Posté le 10-08-2007 à 10:15:33  profilanswer
 

wedgeant a écrit :

[:cerveau wam]
Il me semblait pourtant qu'elle continuait à évoluer régulièrement ... :gratgrat:


Si elle est stable et qu'elle ne contient pas de bug [:spamafote]
http://www.ijg.org/


---------------
Relax. Take a deep breath !
n°941987
memaster
ki a volé mon 62?
Posté le 10-08-2007 à 10:16:00  profilanswer
 

o'gure a écrit :


AFAIK, pas mal d'implémentations de librairie de manipulation graphique utilisent l'assembleur pour optimiser des portions de code.


pour l'avoir utilisé, l'assembleur n'est pas forcément plus rapide que le C, cela dépend comment c'est rédigé-algorithmé.
sinon oui effectivement.


Message édité par memaster le 10-08-2007 à 10:16:26

---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°942153
enfoiro
a nickname is just a nickname
Posté le 10-08-2007 à 16:00:18  profilanswer
 

l'assembleur niveau portabilité c'est zéro donc pas utilisé en priorité sauf pour des trucs comme libatlas.
sinon les options de compilation peuvent changer quelque chose si les bonnes sont utilisées.
eventuellement utiliser le compilateur intel.

n°942356
gee
Bon ben hon
Posté le 11-08-2007 à 12:52:11  profilanswer
 

wedgeant a écrit :

Voui, je sais, mais [:blessure] quand même pour faire une lib en "pur assembleur" [:god]


toi tu ne connais pas menuetOS :o


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
n°942378
Gf4x3443
Killing perfection
Posté le 11-08-2007 à 14:14:54  profilanswer
 

sligor a écrit :

quand j'ai écrit "La libjpeg n'est écrite qu'en C... " ça voulait dire 100% de C d'où aucune optimisation.


 
Oui m'enfin le compilateur fait lui aussi des optimisations.
 
Et je doute très sincèrement que un dev assm d'aujourd'hui sont autant capable de pondre un code optimisé pour une archi donné qu'un compilo spécialement fait pour. S'il y a des optimisations à faire, c'est certainement dans le code C alors (boucle en -- , parallèlisation de la mort sur les multi core actuels), que de se taper ca en pur assembleur.  
 
Faut être maso [:spamafote]

n°942399
Riot
Buy me a riot
Posté le 11-08-2007 à 16:08:04  profilanswer
 

Mais pour accéder aux instructions MMX et tout le tralala, on doit toujours passer par l'asm, non ? :??:


---------------
Be the one with the flames.
n°942418
Gf4x3443
Killing perfection
Posté le 11-08-2007 à 16:48:57  profilanswer
 

Encore heureux que le compilateur les gère (-msse, -mmmx), parce que vu la gueule des instructions pour des opérations "pas simples" (flottants par exemple), on s'en sortirait plus.

 

unix s'est basé sur un choix de langage "haut niveau" pour la prog du système (les débuts du C), alors que tout le reste était avant codé pour une archi particulière en assembleur. On laisse le soin au compilo de faire les optimisations, comme au garbage collector d'une JVM ou CLR de gérer les références en mémoire.

 

Faire de l'assembleur aujourd'hui, à part pour se prendre pour un l33t ou faire du debug, ca ne sert vraiment plus à grand chose, surtout si c'est pour jouer la compet avec un compilo et des flags agressifs. Plutot se concentrer sur le multi core et les optimisations qui vont avec, qui sont tout aussi peu triviales mais pas soluble par un compilateur.

Message cité 2 fois
Message édité par Gf4x3443 le 11-08-2007 à 16:50:09
n°942439
sligor
Posté le 11-08-2007 à 18:06:54  profilanswer
 

Gf4x3443 a écrit :

Encore heureux que le compilateur les gère (-msse, -mmmx), parce que vu la gueule des instructions pour des opérations "pas simples" (flottants par exemple), on s'en sortirait plus.
 
unix s'est basé sur un choix de langage "haut niveau" pour la prog du système (les débuts du C), alors que tout le reste était avant codé pour une archi particulière en assembleur. On laisse le soin au compilo de faire les optimisations, comme au garbage collector d'une JVM ou CLR de gérer les références en mémoire.
 
Faire de l'assembleur aujourd'hui, à part pour se prendre pour un l33t ou faire du debug, ca ne sert vraiment plus à grand chose, surtout si c'est pour jouer la compet avec un compilo et des flags agressifs. Plutot se concentrer sur le multi core et les optimisations qui vont avec, qui sont tout aussi peu triviales mais pas soluble par un compilateur.


Pourtant une grande majorité de codecs utilisant la DCT (jpeg mpeg1,2,3,4 entre autres) utilisent une version écrite en assembleur de cette fonction. La compensation de mouvement est également écrite en assembleur dans la plupart des implémentation mpeg, il suffit de regarder le code source de libavcodec pour s'en convaincre.
Bien sur  on parle d'algorithmes qui prennent moins de 50 lignes de code en C mais qui représentent une trés larges majorité du temps d'encodage/décodage.
Sinon à part le compilateur d'Intel, les compilateurs actuels sortent du code mmx/sse médiocre par relativement à celui écrit à la main (il faut se mettre en tête que l'on parle d'algorithmes courts et ultra classiques donc les expert on eu le temps de pondre du code pour cela).

n°942450
eL_Shaman_​__
Plop.
Posté le 11-08-2007 à 19:17:54  profilanswer
 

Gf4x3443 a écrit :

Encore heureux que le compilateur les gère (-msse, -mmmx), parce que vu la gueule des instructions pour des opérations "pas simples" (flottants par exemple), on s'en sortirait plus.
 
unix s'est basé sur un choix de langage "haut niveau" pour la prog du système (les débuts du C), alors que tout le reste était avant codé pour une archi particulière en assembleur. On laisse le soin au compilo de faire les optimisations, comme au garbage collector d'une JVM ou CLR de gérer les références en mémoire.
 
Faire de l'assembleur aujourd'hui, à part pour se prendre pour un l33t ou faire du debug, ca ne sert vraiment plus à grand chose, surtout si c'est pour jouer la compet avec un compilo et des flags agressifs. Plutot se concentrer sur le multi core et les optimisations qui vont avec, qui sont tout aussi peu triviales mais pas soluble par un compilateur.


C'est pas de gestion dont on parle mais plutôt du fait que le compilateur soit capable de reconnaître une situation où il peut remplacer du code par une instruction MMX/SSE/Bidule adaptée. GCC fait un peu d'auto-vectorisation mais c'est pas pour autant qu'il saura faire mieux qu'un développeur qui a un besoin très spécifique...
 
http://gcc.gnu.org/projects/tree-s [...] ation.html

Message cité 1 fois
Message édité par eL_Shaman___ le 11-08-2007 à 19:37:14
n°942469
Gf4x3443
Killing perfection
Posté le 11-08-2007 à 22:03:47  profilanswer
 

sligor a écrit :


Pourtant une grande majorité de codecs utilisant la DCT (jpeg mpeg1,2,3,4 entre autres) utilisent une version écrite en assembleur de cette fonction. La compensation de mouvement est également écrite en assembleur dans la plupart des implémentation mpeg, il suffit de regarder le code source de libavcodec pour s'en convaincre.
Bien sur  on parle d'algorithmes qui prennent moins de 50 lignes de code en C mais qui représentent une trés larges majorité du temps d'encodage/décodage.
Sinon à part le compilateur d'Intel, les compilateurs actuels sortent du code mmx/sse médiocre par relativement à celui écrit à la main (il faut se mettre en tête que l'on parle d'algorithmes courts et ultra classiques donc les expert on eu le temps de pondre du code pour cela).

 

Y'a un monde entre faire du code as pour des algorithmes courts et s'amuser à optimiser une lib en as. Avec quelques insomnies, crise de folie et litres de café au passage.

 
eL_Shaman___ a écrit :


C'est pas de gestion dont on parle mais plutôt du fait que le compilateur soit capable de reconnaître une situation où il peut remplacer du code par une instruction MMX/SSE/Bidule adaptée. GCC fait un peu d'auto-vectorisation mais c'est pas pour autant qu'il saura faire mieux qu'un développeur qui a un besoin très spécifique...

 

http://gcc.gnu.org/projects/tree-s [...] ation.html

 

De facto, "un développeur qui a un besoin très spécifique" ne verra pas son .o optimisé comme il se doit, du fait du besoin très spécifique. Ce qui reste une minorité, surtout avec les contreparties que ca implique: portabilité qui disparaît, relecture pénible, arcane difficilement maitrisable. On s'éloigne de la philosophie d'origine.

 

Même la FFTW, qui est une lib incontournable pour quiconque fait du TS/TI dans sa vie de dev, essaie autant que possible d'éviter les bouts de code assembleur, et les gardes dans des cores spécifiques. Donc avant de se jeter dedans à corps perdu, vaut mieux réfléchir.


Message édité par Gf4x3443 le 11-08-2007 à 22:08:56
n°942539
eL_Shaman_​__
Plop.
Posté le 12-08-2007 à 16:37:02  profilanswer
 

Gf4x3443 a écrit : a écrit :

 
 
De facto, "undéveloppeur qui a un besoin très spécifique" ne verra pas son .ooptimisé comme il se doit, du fait du besoin très spécifique. Ce quireste une minorité, surtout avec les contreparties que ca implique:portabilité qui disparaît, relecture pénible, arcane difficilementmaitrisable. On s'éloigne de la philosophie d'origine.
 
Même laFFTW, qui est une lib incontournable pour quiconque fait du TS/TI danssa vie de dev, essaie autant que possible d'éviter les bouts de codeassembleur, et les gardes dans des cores spécifiques. Donc avant de sejeter dedans à corps perdu, vaut mieux réfléchir.




 
Ha ben ça, c'est sûr... L'assembleur n'est à utiliser qu'en dernier ressort. C'est bien pour cela que je parlais de besoins spécifiques. Dans le code des codecs vidéo, il y en a souvent parce que des instructions adéquates pour les CPU modernes utilisées dans des boucles peuvent vraiment améliorer les performances.
 
Il y a aussi moyen d'utiliser des bibliothèques qui incorporent de l'assembleur (avec différents codes en fonctions des plateformes) pour éviter d'avoir à se le palucher soi-même ; je pense à liboil en particulier.

Message cité 1 fois
Message édité par eL_Shaman___ le 12-08-2007 à 16:38:45
n°942625
sligor
Posté le 13-08-2007 à 07:55:19  profilanswer
 

Bon... je viens de regarder du coté de la libjpeg6: c'est immonde cette librairie. Elle suit la philosophie du "pourquoi faire simple quand on peut faire compliqué", et je ne parle même pas des gestionnaires d'erreur avec "setjmp" ou du buffering prise de tête(en gros il faut 100 lignes de code pour décompresser une image JPEG en ram vers la ram).

n°942837
Gf4x3443
Killing perfection
Posté le 13-08-2007 à 15:50:26  profilanswer
 

Bon quelle chance, avant de se lancer sur de l'assembleur tel un Harko en furie, un bon petit patch, du nettoyage de lib, tout le monde sera content [:ddr555]

n°942850
sligor
Posté le 13-08-2007 à 16:08:30  profilanswer
 

Mon but premier n'était pas de faire de l'assembleur, même si je sais coder en assembleur je n'ai pas de temps à perdre pour celà en ce moment, je voulais juste savoir si il existait une lib optimisée. N'empêche que ça m'étonne que la libjpeg soit aussi compliquée. De la même manière cela m'étonne que pour accéder à un périphérique v4l2 (périphérique d'acquisition video) on doivent encore dialoguer avec le drivers à coup de "ioctl" sans aucune librairie de plus haut niveau. Je pense que le monde linux à réellement besoin d'une librairie haut niveau qui permette d'accéder facilement à différents types de périphériques multimedia facilement de façon unifiée (j'ai l'impression que tout le monde fait ça dans sont coin KDE d'un côté Gnome d'un l'autre ....)
Le projet est ambitieux, mais l'idée est facile alors pourquoi personne ne s'est jamais lancé dans un tel projet ?

n°942871
Gf4x3443
Killing perfection
Posté le 13-08-2007 à 16:37:59  profilanswer
 

Parce qu'il y a assez peu d'intérêt? Elle est solide, et n'a pas eu de rapport sévère de bugs ces derniers temps (j'en ai pas vu passer sur mes listes sécu du moins), quand on compare à la libpng ou libsvg, moins "matures", c'est autre chose.
 
Pour v4l je savais pas, ca fait en plus de cela des appels ioctl pour fonctionner? Amha, ca sent le périph derrière vraiment foireux :o . Pour avoir une API stable, il faudrait avoir des périphs assez facile à suivre, et pour des chips d'acquisition je doute que ca soit aussi critique que d'autres, genre imprimantes. Moins d'investissement, donc forcément, ca devient craignos niveau code ("on se fait pas chier" ).

n°942902
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 13-08-2007 à 17:18:10  profilanswer
 

laissez donc faire son taff au compilo :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°942904
enfoiro
a nickname is just a nickname
Posté le 13-08-2007 à 17:23:10  profilanswer
 

eL_Shaman___ a écrit :


je pense à liboil en particulier.


intéressant ce projet, le dev semble être en suspens par contre, à moins que ca soit terminé.

n°942910
memaster
ki a volé mon 62?
Posté le 13-08-2007 à 17:51:07  profilanswer
 

sligor a écrit :

Mon but premier n'était pas de faire de l'assembleur, même si je sais coder en assembleur je n'ai pas de temps à perdre pour celà en ce moment, je voulais juste savoir si il existait une lib optimisée. N'empêche que ça m'étonne que la libjpeg soit aussi compliquée. De la même manière cela m'étonne que pour accéder à un périphérique v4l2 (périphérique d'acquisition video) on doivent encore dialoguer avec le drivers à coup de "ioctl" sans aucune librairie de plus haut niveau. Je pense que le monde linux à réellement besoin d'une librairie haut niveau qui permette d'accéder facilement à différents types de périphériques multimedia facilement de façon unifiée (j'ai l'impression que tout le monde fait ça dans sont coin KDE d'un côté Gnome d'un l'autre ....)
Le projet est ambitieux, mais l'idée est facile alors pourquoi personne ne s'est jamais lancé dans un tel projet ?


j'ai deja vu ça quelquepart :sweat:  :whistle:


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°942964
sligor
Posté le 14-08-2007 à 01:18:57  profilanswer
 

memaster a écrit :


j'ai deja vu ça quelquepart :sweat:  :whistle:


 :??:

n°942994
memaster
ki a volé mon 62?
Posté le 14-08-2007 à 08:54:37  profilanswer
 


directX :o  \o/


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°942995
wedgeant
Da penguin inside
Posté le 14-08-2007 à 08:56:51  profilanswer
 

memaster a écrit :


directX :o  \o/


:vomi:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°942996
memaster
ki a volé mon 62?
Posté le 14-08-2007 à 09:06:24  profilanswer
 


ben ça part d'une bonne intention directX :o
le seul pb, c'est la pourritude des sdk et de l'API fournies :heink:  :(


Message édité par memaster le 14-08-2007 à 09:06:48

---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°943003
wedgeant
Da penguin inside
Posté le 14-08-2007 à 09:19:29  profilanswer
 

Ah ouais, mais windows et tout c'était une bonne intention aussi hein :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°943291
gee
Bon ben hon
Posté le 15-08-2007 à 00:50:14  profilanswer
 

SDL+OpenGL+OpenAL c'est pareil que DX.
Après y'a gstreamer, phonon etc...


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Décoder des images jpeg rapidement

 

Sujets relatifs
[gnome] Retourner des photos rapidement8 images ISO pour Debian !
Envoyer mail avec images via SquirrelMailConvertir chaque page d un fichier pdf en jpeg
OPEN OFFICE sauvegarder les images internetconvertir jpeg en avi
Recherche un petit script pour Sauvegarder les images d'un siteproblème d'affichage des images ( apache reverse proxy )
créer un avi à partir de fichiers images ?Images sur outlook express
Plus de sujets relatifs à : Décoder des images jpeg rapidement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR