Bonsoir,
alors voilà j'ai quelques problèmes. Je code en C pour un logiciel embarqué de caméra (ELTEC Hipercam1) sous tornado VX-Works. Je capture les images de la caméra et les stocke dans des buffers. Je fais la différence de deux images avec la fonction abs() et ensuite je compresse le résultat de cette différence à la façon RLE.
Le problème est qu'à certains moment la compression à l'air de bien fonctionner mais qu'à d'autres elle laisse passer des paquets d'octets (genre 00 00 00 00 au lieu de 84 00).
Ensuite j'ai peut etre des problèmes de parenthésage à certains endroits, j'attends vos avis, merci.
Voici le code de cette différence puis compression.
Code :
- src =(unsigned char*) adr[3];
- dst =(unsigned char*) adr[4];
- old =(unsigned char*) adr[(NumBuf+1) % (NBBUF-2)];
- nouv =(unsigned char*) adr[(NumBuf+2) % (NBBUF-2)];
- for(count=0;count<(W*H);count++)
- {
- val=abs(((int)*old) - ((int)*nouv))/2;
- cpt=1;
- if(val>2)
- while((count < W*H) && ((abs(((int)*(++old)) - ((int)*(++nouv)))/2)==val))
- {
- cpt++;
- count++;
- }
- else
- {
- val=0;
- while((count < W*H) && ((abs(((int)*(++old)) - ((int)*(++nouv)))/4)==0))
- {
- cpt++;
- count++;
- }
- }
- if(cpt>1)
- {
- while(cpt>0x7F)
- {
- *dst++ = 0x80 + 0x7F;
- *dst++ = val;
- cpt -= 0x7f;
- }
- *dst++=0x80+cpt;
- *dst++=val;
- }
- else
- {
- while(cpt--)*dst++=val;
- }
- }
|
Merci d'avance pour votre aide.
Message édité par jacpapac le 11-04-2005 à 22:15:16