IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

SDL_OpenAudio ne retourne jamais


Sujet :

SDL

  1. #1
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut SDL_OpenAudio ne retourne jamais
    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 :

    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;
       }
     
    /* ... */
    Peut-etre le vient-il de mes drivers son ? Merci de vos réponses.

    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

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Le meilleur exemple est certainement celui de la documentation de SDL, j'imagine.
    Sinon, j'ai bien l'impression que cette version n'est pas compatible avec Pulse Audio ( qui est par défaut sur Ubuntu 10.04 ).
    Je vous conseille peut être d'installer ALSA.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Points : 448
    Points
    448
    Par défaut
    Après quelques recherches là-dessus (merci LittleWhite !), j'ai découvert qu'en effet, pulseaudio n'est pas compatible avec SDL...

    J'ai donc installé esd, puis exporté une variable d'environnement SDL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export SDL_AUDIODRIVER="esd"
    comme le suggère ce tuto :

    http://doc.ubuntu-fr.org/pulseaudio

    Une question subsiste : si je veux distribuer un prog qui utilise le son sous ubuntu, je fait comment ?? Je demande à l'utilisateur d'installer esd ou alsa ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par dancingmad Voir le message
    Une question subsiste : si je veux distribuer un prog qui utilise le son sous ubuntu, je fait comment ?? Je demande à l'utilisateur d'installer esd ou alsa ?
    Euh ... je crois que oui ... :s
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. UserDictionary ne retourne jamais rien
    Par linked dans le forum Android
    Réponses: 1
    Dernier message: 02/02/2012, 01h12
  2. sem_wait() ne retourne jamais
    Par evilynux dans le forum POSIX
    Réponses: 7
    Dernier message: 28/08/2008, 09h59
  3. fopen ne retourne jamais
    Par Ardeciel dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 29/12/2007, 12h47
  4. Retourner un talbeau
    Par taupin dans le forum C
    Réponses: 7
    Dernier message: 19/01/2003, 04h22
  5. [Manip de fichiers] Fonction retournant des infos
    Par sans_atouts dans le forum C
    Réponses: 3
    Dernier message: 24/07/2002, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo