Buchgenerator (deaktivieren)

SDL: Audio

Aus Wikibooks

Wechseln zu: Navigation, Suche

[Bearbeiten] Abspielen einer WAV-Datei

#include <SDL/SDL.h>
#include <stdlib.h> 

SDL_Surface *screen;
SDL_AudioSpec spec;
Uint32 sound_len;
Uint8 *sound_buffer;
int sound_pos = 0;

void init_sdl (void)
{
  if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_AUDIO) < 0)
    exit (-1);
  atexit (SDL_Quit);
  screen = SDL_SetVideoMode (640, 480, 16, SDL_HWSURFACE);
  if (screen == NULL)
    exit (-1);
}

void Callback (void *userdata, Uint8 *stream, int len)
{
 Uint8 *waveptr;
 if (sound_pos + len > sound_len)
 {
   return;
 }
 waveptr = sound_buffer + sound_pos;
 SDL_MixAudio(stream, waveptr, len, SDL_MIX_MAXVOLUME);
 sound_pos += len;
}

void play (void)
{
  if (SDL_LoadWAV ("torvalds-says-linux.wav", &spec, &sound_buffer, &sound_len) == NULL)
    exit (-1);
  spec.callback = Callback;
  if (SDL_OpenAudio (&spec, NULL) < 0)
    {
      printf ("Kann audio nicht öffnen: %s\n", SDL_GetError ());
      exit (-1);
    }
  SDL_PauseAudio (0);
}

int main (void)
{
  init_sdl ();
  play ();
  SDL_Delay (1000);
  /* Speicher nur freigeben, wenn WAV nicht mehr spielt. */
  // SDL_FreeWAV (sound_buffer);
  return 0;
}
<< CD-Rom | Inhaltsverzeichnis | Timer >>
Persönliche Werkzeuge