Filtre directshow audio sample WAVFORMATEX

Signaler
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
-
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013
-
Bonjour,

Sur un filtre directshow, j'ai une fonction qui récupère les datas d'un flux audio stéreo 16 bits. Elles sont stockées sur un PBYTE.
Quand je fais un truc du genre:

for (i=0; i<size; i=i+4){
r=data[i]; //ici j'ai toujour une valeur nulle
r=data[i+1];//ici une valeur de 0 à 255 du canal gauche
r=data[i+2];//ici j'ai toujour une valeur nulle
r=data[i+3];//ici une valeur de 0 à 255 du canal droit
}

Ma question est: Quelle est l'utilité des valeurs nulles.
Ont elles une utilité pour la transformation des datas en (short int).
Et si oui, comment m'y prendre pour pour transformer la paire data(i) et data(i+1) en un short int?

Désolé pour la stupidité de ma question, je débute.

2 réponses

Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013

Oups je me suis trompé, il y a pas de valeur nulles.
J'ai donc un truc du genre:
for (i=0; i<size; i=i+4){
r=data[i]; //ici une valeur de 0 à 255 du canal gauche
r=data[i+1];//ici une valeur de 0 à 255 du canal gauche
r=data[i+2];//ici une valeur de 0 à 255 du canal droit
r=data[i+3];//ici une valeur de 0 à 255 du canal droit
}
Du coup, changement de question.
Comment transformer les 2 valeurs pour chaque canal en une seule valeur?
(1 valeur pour le canal droit et une autre pour le gauche)
Messages postés
29
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2013

Bon j'ai trouvé (enfin je crois). En faisant ca, ca a l'air de marcher:

for (t=0; t<size; t=t+4)
{
short int *pp=(short int *)&data[t];
int r = *pp; // pour lire
//...............
*pp= (short)r;//pour ecrire
}