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

  FORUM HardWare.fr
  Programmation
  C++

  Une variable qui prend un peu trop de place ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une variable qui prend un peu trop de place ...

n°1891159
pierrot777​7
Posté le 04-06-2009 à 05:38:50  profilanswer
 

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 :
  1. short ShortBuffer=0;
  2. for(int j=0;j<LEN_BUFFER;j++)
  3. {
  4.    ShortBuffer = (short)(waveIn[currentBuffer][j]);
  5.    fwrite(&ShortBuffer,sizeof(short),1,pdata);
  6. }


 
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 :
  1. short ShortBuffer=0;
  2. for(int j=0;j<LEN_BUFFER;j++)
  3. {
  4.    fwrite(&ShortBuffer,sizeof(short),1,pdata);
  5. }


 
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 !
 

mood
Publicité
Posté le 04-06-2009 à 05:38:50  profilanswer
 

n°1891162
Joel F
Real men use unique_ptr
Posté le 04-06-2009 à 06:57:20  profilanswer
 

ton fichier est bien ouvert en mode binaire ?

n°1891170
pierrot777​7
Posté le 04-06-2009 à 07:34:52  profilanswer
 

Non il ne l'etait pas!
Ca fonctionne parfaitement maintenant, merci beaucoup!
D'ailleurs, quelle est la difference entre l'ouverture binaire/non binaire d'un fichier?

n°1891195
Joel F
Real men use unique_ptr
Posté le 04-06-2009 à 10:04:50  profilanswer
 

binaire tu y colles les octets directement tel qu'en mémoire
en mode texte, il considére que tu jette du texte et fwrite sur du mode texte je sais mm pas si ça a un comportement défini.

n°1891210
Glock 17Pr​o
Posté le 04-06-2009 à 10:56:07  profilanswer
 

pierrot7777 a écrit :


D'ailleurs, quelle est la difference entre l'ouverture binaire/non binaire d'un fichier?


personne ne sait vraiment, j'ai l'impression lol

n°1891217
Trap D
Posté le 04-06-2009 à 11:09:12  profilanswer
 

En mode binaire, il n'y a aucune interprétation des caractères de contrôle et autres codes "bizarres".
En mode texte, le système d'exploitation les interprète (donc différence Windows, Linux, MAC...) et si je ne me trompe par exemple un printf("\n" ), sera traduit par CR_LF en Windows et LF simplement en Linux (enfin un truc comme ça).
Enfin, pour ce qui est du fwrite qui est une fonction d'écriture orientée binaire, rien n'est sans doute défini pour l'écriture sur des fichiers ouverts en mode "Texte". Une fois de plus en C, il faut connaître les outils qu'on utilise.

n°1891248
Taz
bisounours-codeur
Posté le 04-06-2009 à 12:01:59  profilanswer
 

Boucle inutile, tu peux tout faire un seul fwrite.


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

  Une variable qui prend un peu trop de place ...

 

Sujets relatifs
variable global dans un include, unique dans l'appli ?addition de variable texte - erreur
Connaitre le type d'une variable dans un if en asp[Résolu][Javascript]Boucle de test et définition de variable.
[javascript] variable dynamique ?Reformater une variable date
Acceder à un tableau via une seule variable via un pointeur?[VS 2005] Variable locale alignée sur adresse impaire
Récupérer une variable du shell [fpc lazarus debian]Mettre une variable Javascript dans un cookie
Plus de sujets relatifs à : Une variable qui prend un peu trop de place ...


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