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

  FORUM HardWare.fr
  Programmation
  C

  Problème de compression/parenthésage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de compression/parenthésage

n°1043528
jacpapac
Posté le 11-04-2005 à 22:14:12  profilanswer
 

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 :
  1. src  =(unsigned char*) adr[3];
  2.   dst  =(unsigned char*) adr[4];
  3.   old  =(unsigned char*) adr[(NumBuf+1) % (NBBUF-2)];
  4.   nouv =(unsigned char*) adr[(NumBuf+2) % (NBBUF-2)];
  5.   for(count=0;count<(W*H);count++)
  6.   {
  7.    val=abs(((int)*old) - ((int)*nouv))/2;
  8.    cpt=1;
  9.    if(val>2)
  10.     while((count < W*H) && ((abs(((int)*(++old)) - ((int)*(++nouv)))/2)==val))
  11.     {
  12.      cpt++;
  13.      count++;
  14.     }
  15.    else
  16.    {
  17.     val=0;
  18.     while((count < W*H) && ((abs(((int)*(++old)) - ((int)*(++nouv)))/4)==0))
  19.     {
  20.      cpt++;
  21.      count++;
  22.     }
  23.    }
  24.    if(cpt>1)
  25.    {
  26.     while(cpt>0x7F)
  27.     {
  28.      *dst++ = 0x80 + 0x7F;
  29.      *dst++ = val;
  30.      cpt -= 0x7f;
  31.     }
  32.     *dst++=0x80+cpt;
  33.     *dst++=val;
  34.    }
  35.    else
  36.    {
  37.     while(cpt--)*dst++=val;
  38.    }
  39. }


 
Merci d'avance pour votre aide.


Message édité par jacpapac le 11-04-2005 à 22:15:16
mood
Publicité
Posté le 11-04-2005 à 22:14:12  profilanswer
 

n°1043583
matafan
Posté le 11-04-2005 à 22:52:12  profilanswer
 

Code :
  1. while(cpt--)*dst++=val;


J'ai pas regarde ton code mais je te donne juste un conseil en passant : arrete de vouloir faire 15 trucs en une ligne.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème de compression/parenthésage

 

Sujets relatifs
problème avec le type TIMESTAMPprobleme de cookie chez free
probleme de connexion ODBCdebutant : Affichage variable dans url- problème d'accents
[Caml] Conception de ptit jeux --> probleme!Problème avec la commande "exec" en PHP
Probleme avec ActionListenerprobleme lien
Formulaire, problème insertion de données[HTML] probleme de lien image[resolu]
Plus de sujets relatifs à : Problème de compression/parenthésage


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