3/5 (5 avis)
Vue 10 733 fois - Téléchargée 2 036 fois
Donc, comme je le disais, ce programme utilise à la fois DirectDraw (pour construire, à partir des codecs installés sur l'ordinateur, les primitives nécessaire à la lecture d'un fichier vidéo, mpeg, avi, WMV ou même ASF je crois mais il faut vérifier). Opengl est utilisé pour effectuer les corrections de couleur, de contraste... ainsi que pour afficher le texte des sous-titres. Je n'arrivais pas à le faire avec les primitives standard graphiques de Windows (c'est à dire avec le TCanvas de Delphi), car Windows a une gestion assez bizarre des palettes de Bitmaps, et je n'ai pas assez de connaissances en DirectX pour le faire par ce biais là... La boucle d'affichage du film est gèrée par un thread synchronisé. Enfin, l'architecture du tout est assez modulaire. Par exemple, on peut considérer que les éléments du pagecontrol situé sur la gauche sont des plug-ins, qu'on peut faire évoluer indépendamment les uns des autres. Pour les types de sous-titres reconnus (pour l'instant je n'y ai mis que les 2 principaux), on doit "enregistrer" des classes de sous-titres, qui ont des méthodes de classes (par exemple pour savoir quelles sont les extensions de fichiers correspondantes). Voilà, je crois que j'ai à peu près tout dit, dès que j'ai le temps, je commence à mettre des commentaires. Et même si vous m'affirmerez le contraire au début, le code n'est pas si compliqué que ça quand on le regarde de plus près. A part pour DirectDraw, bien sûr, mais il suffit de suivre à la lettre les instructions de Microsoft pour arriver à lire un fichier média. D'ailleurs, l'exemple peut servir si l'on veut programmer un objet en 3D avec OpenGl sur lequel on souhaite appliquer une vidéo en texture, le principe est le même.
14 juin 2007 à 17:26
14 juin 2007 à 17:20
Je te préviens quand je le poste
14 juin 2007 à 09:20
Si tu as le courage d'en faire un qui marche, je suis preneur ;)
Moi jaurais besoin de lire une video avant de lancer mon application DirectX (un jeu que j'ai commencé à développer). Je me suis renseigné sur DSPack mais impossible de l'installer... :( Non seulement les tutos que je trouve ne sont plus a jour mais en plus j'utilise Delphi10lite donc y a plein de bugs partout a cause de la non-compatibilité ><
Si tu sais ou je pourrais trouver de l'aide (tuto, code)...
Merci davance ;)
6 mai 2007 à 19:47
en fait ce prog commence à dater un petit peu... et je n'étais pas encore au top niveau programmation opengl à l'époque, donc c'est mal optimisé, et ça peut expliquer pourquoi ça rame. Si le sujet t'intéresse je sais comment l'optimiser pour qu'il rame beaucoup moins.
En fait, l'endroit où ça pose problème c'est que j'utilise une texture OpenGl, or la norme impose pour celle-ci que les longueurs de ses côtés doivent être une puissance de 2 (par exemple 2, 4, 8, 16, 32 etc...). Par conséquent dans cette version-là je fais un "stretch" des pixels capturés depuis DirectDraw en utilisant des fonctions en accélération logicielles (donc très lentes). Or ce "stretch" de l'image est parfaitement inutile si l'on se contente de ne modifier qu'une partie de la texture OpenGl (en s'arrangeant pour allouer une puissance de 2 strictement plus grande que la taille réelle). Il faut alors modifier les coordonnées de mappage sur le carré de l'écran de façon à ne visualiser que le sous-ensemble des pixels modifiés.
Je ne sais pas si c'est très clair, mais en tout cas je l'ai fait dans un autre prog et ça fonctionne en utilisant à peine 3-4% du processeur. Si j'ai le courage je modifierai cette source (ou même en posterai une nouvelle sur le même principe)... En attendant si tu veux plus de détails sur la façon dont ça fonctionne n'hésite pas à m'envoyer un MP.
6 mai 2007 à 11:18
J'ai essayé de le tester je dis bien essayer car en faite je n'y suis pas arrivé !
Il compile très bien, mais en faite dés que j'ouvre une vidéo ben j'ai bien mes codecs ffdshow se mettent bien en route, mais je n'ai pas d'image.
Par contre j'ai bien le son, et en bas à droite la résolution de la vidéo est bien trouvée.
Donc je comprend pas trop, dés qu'elle est ouverte, je ne peux plus rien faire du programme, je suis obligé de l'arrêter de force dans le gestionnaires des tâches.
J'ai remarqué aussi, quand je clique sur le bouton "open" tant que je suis sur la fenêtre pour sélectionner ma vidéo, le processus est pris à 95% non stop, c'est normal ?
@+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.