#include #include #include #include #include "log.h" SDL_AudioSpec* desiredSpec; void audio_callback(void* userdata, Uint8* stream, int len) { // Fill the audio buffer with data char string[64]; sprintf(string, "stream: %u len: %u\n", stream, len); printf(string, "stream: %u len: %u\n", stream, len); log_message(LOG_INFO, string); } int main(int argc, char* argv[]) { if (SDL_Init(SDL_INIT_AUDIO) < 0) { // Handle error } desiredSpec = malloc(sizeof(SDL_AudioSpec)); memset(desiredSpec, 0, sizeof(SDL_AudioSpec)); desiredSpec->freq = 44100; // Sample rate desiredSpec->format = AUDIO_F32; // Audio format desiredSpec->channels = 2; desiredSpec->samples = 4096; // Buffer size desiredSpec->callback = audio_callback; // Set the callback SDL_AudioDeviceID audioDevice = SDL_OpenAudioDevice(SDL_GetAudioDeviceName(2, 1), 1, desiredSpec, NULL, SDL_AUDIO_ALLOW_FORMAT_CHANGE); if (SDL_GetError()[0] != '\0') { printf("SDL Error : %s\n", SDL_GetError()); } printf("Name: %s\n", SDL_GetAudioDeviceName(2, 1)); if (audioDevice == 0) { // Handle error } // Start audio playback SDL_PauseAudioDevice(audioDevice, 0); if (SDL_GetError()[0] != '\0') { printf("SDL Error : %s\n", SDL_GetError()); } SDL_Event event; int running = 1; while (running) { while (SDL_PollEvent(&event)) { SDL_Keycode keysym = event.key.keysym.sym; switch (event.type) { case SDL_QUIT: running = 0; break; } } } SDL_CloseAudioDevice(audioDevice); SDL_Quit(); return 0; }