Bonsoir à tous,

Continuant mes premiers pas avec libsndfile (et avec C++... merci pour votre indulgence), je cherche à modifier le bloc suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
define BUFFER_LEN	1024
static double data [BUFFER_LEN] ;
int readcount ;
SNDFILE *infile ;
 
while ((readcount = sf_read_double (infile, data, BUFFER_LEN))){
... // do something with data
}
de façon à travailler avec une copie intégrale des données du fichier wav, et non par bloc de 1024 comme c'est la cas ici.

Il me faut pour cela un tableau dynamique, ne connaissant pas à l'avance le nombre de blocs de 1024 dans le fichir wav.
Le plus simple me semble t-il est de travailler avec une variable de type vector<double> à laquelle je pourrais appliquer une fonction push_back dans le corps du while.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
std::<vector> song;
..
while ((readcount =sf_read_double(infile, data, BUFFER_LEN))){
 song.push_back(data);
}
Je me retrouve bien entendu avec l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
no matching function for call to 'std::vector<double>::push_back(double[1024])'
N'ayant peut-etre pas besoin de travailler avec des blocs de 1024, j'ai essayé l'approche suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
static double data ;
std::vector<double> song;
while(readcount = sf_read_double(infile, data, 1)){
 song.push_back (data);
};
Mais j'ai bien sûr un problème de conversion 'double*' to double

Si qq'un avait une astuce/solution svp.
Thanks!