2009-10-20 10 views
4

J'utilise C++, libjpeg pour décoder le fichier jpeg. Je trouve que ce n'est pas assez rapide, y at-il une méthode pour le rendre plus rapide en définissant un paramètre de compilation? ou y at-il d'autres bibliothèques peuvent ouvrir les fichiers jpeg plus rapidement?Y at-il un décodage jpeg libre ou commercial qui est vraiment rapide

maintenant il faut environ 750ms pour ouvrir une image jpeg 4368 * 2912 4m. Je souhaite que cela peut être réduit à 150ms. Merci beaucoup!

Ajouté: IJL semble plus rapide que Libjpeg :)

+0

Il n'y a pas de paramètres du compilateur qui peuvent accélérer le programme 6 fois. – n0rd

+8

Comme 4 Mo/150 ms = 27 Mo/s, la vitesse E/S pure devient déjà pertinente. – MSalters

+1

moins d'une seconde pour une image de 12,7 mégapixels n'est vraiment pas mauvais ... – Kip

Répondre

3

Il y a le Intel Performance Primitives qui contient les implémentations de codage/décodage JPEG

+0

ce n'est pas gratuit. –

+6

@Shay: ok, mais le sxingfeng demandé un logiciel gratuit ou commercial, de sorte que «il doit être libre» n'était pas une exigence. – Jesper

+0

merci beaucoup! jesper, je vais l'essayer. – user25749

2

J'utilise libjpeg de ijg. Il est documenté comment modifier pour vos besoins, comme le codage/décodage en mémoire.

+0

merci beaucoup! J'ai également essayé de ijl cela ne prend que 600ms sur mon ordinateur AMD, peut-être plus rapide sur Intel cpu. Je pense qu'il est possible de prendre moins de 400ms. – user25749

5

Le moyen le plus rapide est de ne pas le décoder du tout. Habituellement, vous pouvez utiliser un aperçu en basse résolution en premier; cela ne nécessite que les basses fréquences. Pour un aperçu de 546 x 289 pixels, vous n'avez en fait besoin que du composant (0,0) (DC).

0

Je pense que DirectX et libSDL peuvent décoder les jpegs - bien que libSDL puisse utiliser libjpeg pour le décodage.