Bonjour à tous,
j'apprends à uttiliser les fonctions audio de la bibliothèque SDL, et aucun exemple que j'ai pu trouver sur le net ne marche avec moi. La fonction SDL_OpenAudio reste bloqué indéfiniment. Voici un exemple de code qui me pose problème :
Peut-etre le vient-il de mes drivers son ? Merci de vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <SDL/SDL.h> Uint8 * sounddata; Uint32 soundlength; Uint32 soundpos; /* Fonction de rappel qui copie les données sonores dans le tampon audio */ void mixaudio(void * userdata, Uint8 * stream, int len) { Uint32 tocopy = soundlength - soundpos > len ? len : soundlength - soundpos; memcpy(stream, sounddata + soundpos, tocopy); soundpos += tocopy; } int main(int argc, char * argv[]) { SDL_AudioSpec desired, obtained, soundfile; SDL_AudioCVT cvt; if (SDL_Init(SDL_INIT_AUDIO) == -1) { printf("Erreur lors de l'initialisation de SDL!\n"); return 1; } desired.freq = 44100; desired.format = AUDIO_U16SYS; desired.channels = 1; desired.samples = 512; desired.callback = &mixaudio; desired.userdata = NULL; if ( SDL_OpenAudio(&desired, &obtained ) != 0 ) { /* cette fonction ne retourne jamais */ printf("Erreur lors de l'ouverture du périphérique audio: %s\n", SDL_GetError()); return 1; } /* ... */
Pour info, je suis sous Ubuntu 10.04, et je compile avec la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -lSDL -lSDLmain -lm -o main main.c
Partager