SDL Audio



  • Ich benutzte Code::Blocks mit mingw und hab versucht mit dem code der SDL-Dokumentation die funktion SDL_OpenAudio
    zu benutzen nur leider ergibt sich die Fehlermeldung:
    "error: invalid conversion from `void*' to `SDL_AudioSpec*'"
    in den zeilen mit malloc. wo liegt der fehler?

    PS. Was die fehlermeldung mir sagen will verstehe ich schon aber wie kann man richtig mit SDL sounds abspielen?

    /* Prototype of our callback function */
    void my_audio_callback(void *userdata, Uint8 *stream, int len);
    
    /* Open the audio device */
    SDL_AudioSpec *desired, *obtained;
    SDL_AudioSpec *hardware_spec;
    
    /* Allocate a desired SDL_AudioSpec */
    desired = malloc(sizeof(SDL_AudioSpec));
    
    /* Allocate space for the obtained SDL_AudioSpec */
    obtained = malloc(sizeof(SDL_AudioSpec));
    
    /* 22050Hz - FM Radio quality */
    desired->freq=22050;
    
    /* 16-bit signed audio */
    desired->format=AUDIO_S16LSB;
    
    /* Mono */
    desired->channels=0;
    
    /* Large audio buffer reduces risk of dropouts but increases response time */
    desired->samples=8192;
    
    /* Our callback function */
    desired->callback=my_audio_callback;
    
    desired->userdata=NULL;
    
    /* Open the audio device */
    if ( SDL_OpenAudio(desired, obtained) < 0 ){
      fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
      exit(-1);
    }
    /* desired spec is no longer needed */
    free(desired);
    hardware_spec=obtained;
    .
    .
    /* Prepare callback for playing */
    .
    .
    .
    /* Start playing */
    SDL_PauseAudio(0);
    


  • Sieht fast so aus, als wäre die conversion von `void*' nach `SDL_AudioSpec*' irgendwie invalid.

    Wenn du das behebst, müsste es gehen. f'`8k

    Bye, TGGC (Das Eine, welches ist.)



  • Warum bist Du eigentlich nicht Fehlermeldungsübersetzter geworden?



  • Weil das weit unter meinem Skill ist. Seid dankbar für mein kostenloses Engagment.

    Bye, TGGC (Das Eine, welches ist.)



  • *aufdieknieefallundvordirherrutsch*



  • Füge halt einen Cast ein:

    desired = (SDL_AudioSpec*) malloc(sizeof(SDL_AudioSpec));
    


  • Danke Wolfgke zumindest spuckt er jetzt keine fehlermeldungen aus ich schau mal ob ich jetzt weiter komm


Anmelden zum Antworten