kaloskagatos a écrit a écrit :
...
donc tout se passe en mémoire
mais pour la partie encodage faut renvoyer les données avec en entête les dictionnaires et autres données particulières comme ça pèle mêle?
en fait je renvois ce que j'écrirais dans un fichier sans l'écrire dans un fichier...
(je dois me prendre la tête pour des conneries en fait)
|
Dans ton codec, tu reçois les données à compresser (au format bitmap), et tu renvoies un bloc de données que tu organises comme tu veux. C'est ce bloc que tu recevra, dans le même état, pour le décodage. A toi de faire en sorte d'y avoir mis tout ce dont tu as besoin.
Le traitement se fait image par image, mais tu peux réutiliser les données de l'image précédente (principe des keyframes).
Avant le codage ou le décodage, il y a d'autres appels de fonction pour déterminer la résolution/type de codage, initialiser les structures dont tu pourrais avoir besoin.
Tout ca se fait avec une seule fonction qui a le profil suivant :
LRESULT PASCAL DriverProc(DWORD dwDriverID, HDRVR hDriver, UINT uiMessage, LPARAM lParam1, LPARAM lParam2)
- uiMessage : le type de traitement que tu dois effectuer (ouverture, fermeture, compresser, décompresser.....)
- lParam1/lParam2 : les 2 paramètres. Généralement, ce sont des pointeurs sur une structure.
Toute la partie lecture/enregistrement de fichiers, ce n'est pas toi qui la gère, mais l'appli qui utilise ton codec.
Tu as un exemple de code source d'un codec ici :
http://www.divx-digest.tv/software [...] -2.1.1.zip
Message édité par mrbebert le 28-10-2002 à 22:00:13