Utiliser les pointeur pour parcourir un tableau de char
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
30 mars 2006 à 15:15
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
30 mars 2006 à 22:14
Bonjour,
j'ai actuellement un solution de capture de flux MJPG qui fonctionne mais qui n'est pas optimisée.
En effet, j'ai une boucle infini qui capture le flux et qui teste un à un chaque octet. Cette facon de faire consomme énormément de CPU.
private Encoding encoding = System.Text.Encoding.GetEncoding ("iso-8859-1"
);
private int SIZE_BUFF= 512;
//taille du buffer de lecture du stream
char
[] buff = new char [SIZE_BUFF
];
StreamReader streamRead = new
System.IO.StreamReader (myResponse.GetResponseStream (),encoding
);
MemoryStream streamImage = new MemoryStream ();
StreamWriter streamWrite = new
System.IO.StreamWriter (streamImage,encoding
);
while (connected)
//on capture tant qu'on le demande
{
if ((nb_read = (streamRead.Read (buff,0,SIZE_BUFF)))>0)
//on lit dans le stream
{
//ici je teste chaque octet du buff[] pour détecter
//le début (FFD8) et la fin (FFD9) de l'image JPEG,
//le tout en boucle.
}
}
Afin d'optimiser les performence, j'ai lu sur le forum qu'il fallait mieux utiliser des pointeurs (en code unsafe).
Je voulais me pencher dessus mais je n'ai pas réussi à modifier mon programme. Il me dit toujours qu'il ne peux pas convertir un char[] en char* lors d'un cast.
Mon but est de parcourir rapidement le tableau à la recherche de 3 octet précis (FF, D8 et D8).
Le flux MJPG provient d'une source internet (une caméra IP).
Je recois le flux dans un StreamReader. C'est ce stream qui me retourne un tableau de char (j'ai fixé le nombre de char lus à 512). Ensuite, j'ecris dans un MemoryStream avec un StreamWritter le tout en respectant l'encodage iso-8859-1 pour ne pas perdre des octet.
Pouvez vous m'indiquer comment modifier mon code pour pouvoir utiliser les pointeurs?
J'ai chercher sur le forum mais les réponses obtenues ne m'aide pas.
Merci
f.colo
A voir également:
Utiliser les pointeur pour parcourir un tableau de char
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 30 mars 2006 à 16:36
J'arrive pas à activer le Unsafe sous SharpDevelop.
J'ai deux projet, un composant de capture qui lève un evènement lorsqu'il a capturé une image et le projet principal qui s'abonne à cet évènement.
Je clic droit sur chauqe projet dans la solution pour aller dans les propriétés des projets et dans l'onglet compilé je coche "Autoriser le code Unsafe" mais ca me fait toujours l'erreur CS0214 qui stipule que je dois utiliser un contexte unsafe.
Seriez vous m'aider sur ce point là pour que je puisse tester cette solution?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 30 mars 2006 à 22:14
Salut,
En supplément de l'ajout de l'option de compilation /unsafe, tu dois affectuer un marquage unsafe sur les portions de code incriminée.
unsafe Didacticiel du code unsafe