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

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++] lib vorbis et ouverture de fichier oggvorbis

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] lib vorbis et ouverture de fichier oggvorbis

n°406001
theshockwa​ve
I work at a firm named Koslow
Posté le 23-05-2003 à 14:28:10  profilanswer
 

J'essaye ectuellement d'utiliser la lib ogg vorbis ( http://www.vorbis.org/ ) pour lire des musiques via OpenAL
 
l'exemple qu'ils fournissent semble passer correctement ... (disons qu'il n'est pas vraiment pratique ...)
Il attend qu'on passe le flux ogg vorbis via stdin, or, étrangement (:D) je préfère passer par des fichiers.
 
J'ai donc fait ca en 2 secondes, mais ca foire ... le fichier est bien ouvert, pas de pb, mais à l'appel d'ov_open, j'ai une erreur à l'exec qui fait lamentablement planter mon appli ... :(
 

Code :
  1. ALboolean alutLoadOggVorbisFile(const char *fname, ALenum *format, ALvoid **data, ALsizei *size, ALsizei *freq, ALboolean *loop) {
  2. OggVorbis_File vorbisFile;
  3. FILE *f = fopen(fname, "rb" );
  4. if(!f) return AL_FALSE;
  5. if(ov_open(f, &vorbisFile, NULL, 0) < 0) {
  6.  fclose(f);
  7.  return AL_FALSE;
  8. }
  9. // .....
  10. }


 
Y'a-t-il quelqu'un qui utilise cette lib ici et qui voit un pb ? Parce que là, je fais quasiment rien quoi ...
 
 
(râle pas pour les FILE * et char * Taz, c'est des libs C, même si on les utilise en C++... :D)
 
Edit : ortograf'


Message édité par theshockwave le 23-05-2003 à 14:33:41

---------------
last.fm
mood
Publicité
Posté le 23-05-2003 à 14:28:10  profilanswer
 

n°408244
theshockwa​ve
I work at a firm named Koslow
Posté le 26-05-2003 à 17:12:30  profilanswer
 

Bon ... J'ai réussi à identifier un peu mieux la cause de mon pb ...
 
Pour ceux que ca peut intéresser, je linkais avec les libs ogg.lib, vorbis.lib et vorbisfile.lib, qui sont les versions dynamiques des libs Ogg Vorbis. J'ai essayé de passer aux libs statiques ( ogg_static.lib, vorbis_static.lib et vorbisfile_static.lib ) et ca fonctionne à merveille.
 
Je préfèrerais qd même passer par les libs dynamiques : exe plus petit, plus facile à mettre à jour aux changements de libs, mais je n'arrive pas à voir d'où vient le pb avec la lib dynamique ...
 
Je me suis dit qu'il ne trouvait pas les .dll, or ils sont dans un répertoire dans le path, donc il n'y a pas de pb ... J'ai essayé de mettre les libs dans le répertoire de debug et dans le rep de compilation, rien n'y fait ...
 
Si quelqu'un peut proposer une hypothétique solution à mon problème, je suis preneur !


---------------
last.fm
n°408366
skeye
Posté le 26-05-2003 à 19:50:25  profilanswer
 

Je suis p-e complètement HS, mais si tu as un exemple qui lit stdin correctement, tu peux p-e rediriger stdin vers ton fichier...non?

n°408411
theshockwa​ve
I work at a firm named Koslow
Posté le 26-05-2003 à 21:01:36  profilanswer
 

skeye a écrit :

Je suis p-e complètement HS, mais si tu as un exemple qui lit stdin correctement, tu peux p-e rediriger stdin vers ton fichier...non?


 
 
La méthode choisie dans l'exemple me gonflait, je m'en suis grandement inspiré pour faire ma fonction, mais justement, je m'étonnais de voir dans la doc qu'on pouvait passer un fichier et que ca plantait malgré tout. Mais comme je l'ai dit dans mon post précédent, le pb venait de la lib avec laquelle je linkais ... maintenant, je sais que le pb ne vient pas de mon code mais plutôt de la manière dont je linke ou de la disponibilité des DLL ou d'un quelconque paramètre auquel je ne pense pas encore ...


---------------
last.fm
n°408415
chrisbk
-
Posté le 26-05-2003 à 21:06:30  profilanswer
 

si tu passe le FILE * a une fonction de ta DLL c normal que ca plante (CRT differente => echec. C la meme blague si tu fais un delete [] dans ton exe sur un bout de mémoire alloué dans une dll...)
 
Si le type a fait ca DLL comme ca c'est vraiment un gros cracra :O
 
Conclu : heuh ben t'es mal :D
 
a ta place, ce que je ferais, c'est me faire une DLL encapsulant ta lib static et ensuite utiliser ta DLL, ca limitera la casse


Message édité par chrisbk le 26-05-2003 à 21:09:50
n°408418
Kristoph
Posté le 26-05-2003 à 21:10:01  profilanswer
 

Je pense que d'une certaine façon, soit le système n'a pas fait la liason avec les fichiers .dll ( ils sont bien disponibles à coté du .exe ou dans System32 ? ), soit tu as oublié d'appeler une quelconque fonction qui initialise la dll.

n°408420
chrisbk
-
Posté le 26-05-2003 à 21:12:24  profilanswer
 

Kristoph a écrit :

Je pense que d'une certaine façon, soit le système n'a pas fait la liason avec les fichiers .dll ( ils sont bien disponibles à coté du .exe ou dans System32 ? ), soit tu as oublié d'appeler une quelconque fonction qui initialise la dll.


 
Je suis a peu pres sur de mon histoire pour le coup ;) J'ai deja eu le pb et c'est assez a s'arracher les cheveux quand on a jamais entendu parler de cette histoire

n°408444
Kristoph
Posté le 26-05-2003 à 21:29:04  profilanswer
 

chrisbk a écrit :


 
Je suis a peu pres sur de mon histoire pour le coup ;) J'ai deja eu le pb et c'est assez a s'arracher les cheveux quand on a jamais entendu parler de cette histoire


 
Dans ce cas, il ne faut pas utiliser les fonctions de base de vorbis file mais utilisé celles qui sont configurables pour les entrées sorties. Par exemple, utilise ov_open_callbacks au lieu de ov_open
 
PS : j'ai évité d'avoir ce problème car je n'ai même pas essayé d'utiliser les fonctions "de base" :D


Message édité par Kristoph le 26-05-2003 à 21:30:37
n°408459
chrisbk
-
Posté le 26-05-2003 à 21:33:52  profilanswer
 

Kristoph a écrit :


 
Dans ce cas, il ne faut pas utiliser les fonctions de base de vorbis file mais utilisé celles qui sont configurables pour les entrées sorties. Par exemple, utilise ov_open_callbacks au lieu de ov_open
 
PS : j'ai évité d'avoir ce problème car je n'ai même pas essayé d'utiliser les fonctions "de base" :D


 
Suremenent, je connais pas la lib, mais les symptomes ;)
Perso j'ai resolu le pb en mettant une classe a moi dans une dll qui se charge des IO (enfin avec un vieux systeme d'abstraction), tout se passe dans la dll : 0pb. Par contre fo que les libs soient suffisament bien foutu pour permettre de redefinir les lecture/ecriture, jusque la pas de pb (libjpeg/libpng/flex/bison/zlib(bon la ca a été :sweat: c horrible cette lib) to be continued....)
 
 
 
 
 
 

n°408986
theshockwa​ve
I work at a firm named Koslow
Posté le 27-05-2003 à 11:21:48  profilanswer
 

Effectivement, si on redéfini les fonctions d'entrées de la lib, il n'y aura plus de problèmes avec des échanges de FILE* !
 
Bon, et bien merci à tous les deux pour cette précieuse aide ! :jap:


---------------
last.fm
mood
Publicité
Posté le 27-05-2003 à 11:21:48  profilanswer
 

n°410626
theshockwa​ve
I work at a firm named Koslow
Posté le 28-05-2003 à 16:45:23  profilanswer
 

Encore une petite question ... Pour quelqu'un qui a utilisé la lib en particulier ...
 
Je me sers du nb de samples contenues dans le fichier ogg pour déterminer la taille du buffer audio à créer ... Ca me semblait assez logique ... :D
 
Vu que je demande des samples sur 16 bits, j'ai la formule mathématique archi-complexe suivante : taille_buff = nb_samples * 2
 
J'ai regardé : ca segfault pas qu'un peu ... On dirait que le buffer est 2x trop petit ! [:ddr555] j'ai pas demandé des samples sur 32 bits ! :D
 
A moins que je sois une buse en audio et qu'un sample en 16 bits, ca signifie en fait 2 valeurs sur 16 bits ... Mais ca me semble qd même bien louche ...


---------------
last.fm
n°410645
Kristoph
Posté le 28-05-2003 à 17:07:00  profilanswer
 

theShOcKwAvE a ecrit :

Encore une petite question ... Pour quelqu'un qui a utilise la lib en particulier ...
 
Je me sers du nb de samples contenues dans le fichier ogg pour determiner la taille du buffer audio `a creer ... Ca me semblait assez logique ... :D
 
Vu que je demande des samples sur 16 bits, j'ai la formule mathematique archi-complexe suivante : taille_buff = nb_samples * 2
 
J'ai regarde : ca segfault pas qu'un peu ... On dirait que le buffer est 2x trop petit ! [:ddr555] j'ai pas demande des samples sur 32 bits ! :D
 
A moins que je sois une buse en audio et qu'un sample en 16 bits, ca signifie en fait 2 valeurs sur 16 bits ... Mais ca me semble qd meme bien louche ...


 
Stereo ou Mono ? :whistle:

n°410649
theshockwa​ve
I work at a firm named Koslow
Posté le 28-05-2003 à 17:12:32  profilanswer
 

Kristoph a écrit :


 
Stereo ou Mono ? :whistle:


 
Bien vuuuu ! :D J'avais oublié cette histoire de canaux ! [:ddr555]
 
Effectivement, c'était du stéréo ! :D Je vais rendre ma formule mathématique impréssionnante à force ...
 
taille_buff = nb_samples * nb_octets_par_sample * nb_canaux
:D
 
Merci, ca devrait rouler, maintenant ! ...


---------------
last.fm

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

  [C/C++] lib vorbis et ouverture de fichier oggvorbis

 

Sujets relatifs
[C] Ecrire ou lire dans un fichier texteprobleme pour lire dans un fichier avec fread
problemes pour acceder a un fichier Lancer un fichier txt sous EXCEL dans un navigateur ?
comment on lis les informations d'un fichier binaire ?[PHP] Déplacement de fichier
[HTML/JS/PHP] Récupérer le fichier d'un <input type="file"> ?verifier si un fichier existe ?
probleme de fichier INI??[XML] Récupérer les données d'un fichier xml
Plus de sujets relatifs à : [C/C++] lib vorbis et ouverture de fichier oggvorbis


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