Bonjour,
Je veux realiser un enregistreur WAV, donc prendre l'entree de mon microphone puis ecrire un fichier WAV avec les donnees que j'obtiens.
J'ai un probleme lors de la copie d'une variable. Voici directement le code, les explications suivent:
Code :
- short ShortBuffer=0;
- for(int j=0;j<LEN_BUFFER;j++)
- {
- ShortBuffer = (short)(waveIn[currentBuffer][j]);
- fwrite(&ShortBuffer,sizeof(short),1,pdata);
- }
|
waveIn est un tableau de shorts a 2 dimensions (short **), qui est rempli par les inputs de mon microphone.
Pour chaque j, on est d'accord, waveIn[currentBuffer][j] devrait etre un short, mais par precaution j'ai employe le cast (short).
La taille du buffer est de 1024 (LEN_BUFFER = 1024)
Toujours est-il que lorsque je regarde la taille de mon fichier pdata, celui-ci fait plus de 2048 octets ...
Alors que si j'effectue la boucle suivante:
Code :
- short ShortBuffer=0;
- for(int j=0;j<LEN_BUFFER;j++)
- {
- fwrite(&ShortBuffer,sizeof(short),1,pdata);
- }
|
donc sans utiliser le tableau waveIn qui semble poser probleme, mon fichier tout beau tout propre fait exactement 2048 octets.
Il semblerait que lorsque je copie waveIn[currentBuffer][j] dans ShortBuffer, la taille de ShortBuffer devient un peu plus grande que celle d'un short classique !
C'est tres derangeant pour ce que je veux faire car le fichier pdata sert par la suite pour l'ecriture d'un fichier WAV, et dans ce fichier, la taille des donnees annoncee dans le header ne correspond pas a la taille reelle de donnee !
Des idees ?
Merci !