2015-04-15 3 views
1

J'apprends l'audio avec openal et j'essaie de charger des fichiers ogg dans la mémoire pour pouvoir les jouer avec openal. J'ai cherché une bibliothèque pour charger les fichiers Ogg et le meilleur que j'ai trouvé était this one, il n'a pas de dépendances. Mais la documentation est en désordre et je ne trouve pas d'exemple de tutoriel décent en ligne. Tout ce que je veux savoir est comment charger un ogg et obtenir quelque chose que je peux réellement envoyer à un tampon ouvert.Comment charger le fichier ogg dans c?

Q: Si j'ai cet appel:

stb_vorbis_decode_filename(const char *filename, int *channels, int *sample_rate, short **output); 

il doit décoder "nom de fichier" et stocker les données dans "sortie". Donc je peux l'envoyer à openal, n'est-ce pas? Ce n'est pas un manque de recherche, après des heures de lecture, je n'arrive pas vraiment à comprendre comment cela fonctionne. S'il y a une autre bibliothèque pour charger facilement les fichiers ogg, merci de me le faire savoir.

Merci!

+2

Eh bien, pourquoi ne pas simplement essayer cette commande. Comme je comprends nothings.org/stb_vorbis/samples/sample.c, il lit un fichier, "le convertit en court" (je suppose que cela signifie "échantillons 16 bits"), et met à jour le * pointeur vers * avec cette mémoire . Savoir si cela suffit pour "obtenir quelque chose que je peux réellement envoyer à un tampon ouvert" dépend de ce qu'OpenAL accepte. – usr2564301

Répondre

1

Avez-vous essayé? Quels résultats/erreurs avez-vous obtenus? Peut-être quelque chose comme ceci:

int channels; 
int sample_rate; 
short * output; 
int rc = stb_vorbis_decode_filename("somefile.ogg", &channels, &sample_rate, &output); 
if (rc == -1) fprintf(stderr, "oops\n"); 
+0

J'ai essayé, mais je ne suis pas sûr que cela me donne les données que j'ai besoin d'envoyer à openal. Quoi qu'il en soit, je l'ai résolu par A) En fait jouer avec openal. et B) Utiliser sdl_mixer pour charger les fichiers ogg. J'utilise sdl pour faire fonctionner la fenêtre de toute façon, donc sdl_mixer convient parfaitement. Je voulais juste éviter les dépendances – twkmz