Mercurial > almixer_isolated
view EXAMPLES/playstream.c @ 73:32757e494675
Fixed bug that sets the wrong variable for fading in Pause.
There still seems to be another bug related to fading though based on Johnson Lin's test case. Audio no longer stops and triggers the completion callback, but the volume doesn't seem to go up to max for long fade-ins. Still investigating.
author | Eric Wing <ewing . public |-at-| gmail . com> |
---|---|
date | Fri, 10 Aug 2012 22:53:14 -0700 |
parents | 20a687a4d4e0 |
children |
line wrap: on
line source
#include "ALmixer.h" #include <stdio.h> #include <stdlib.h> #ifdef ALMIXER_COMPILE_WITHOUT_SDL #if defined(_WIN32) #define WIN32_LEAN_AND_MEAN #include <windows.h> #else #include <unistd.h> #endif static void Internal_Delay(ALuint milliseconds_delay) { #if defined(_WIN32) Sleep(milliseconds_delay); #else usleep(milliseconds_delay*1000); #endif } #else #include "SDL.h" #define Internal_Delay SDL_Delay #endif #define MAX_SOURCES 16 ALboolean g_PlayingAudio[MAX_SOURCES]; void Internal_SoundFinished_CallbackIntercept(ALint which_channel, ALuint al_source, ALmixer_Data* almixer_data, ALboolean finished_naturally, void* user_data) { fprintf(stderr, "Channel %d finished\n", which_channel); g_PlayingAudio[which_channel] = AL_FALSE; } int main(int argc, char* argv[]) { ALint i; ALboolean still_playing = AL_TRUE; ALmixer_Data* audio_data[MAX_SOURCES]; if(argc < 1) { printf("Pass a sound file (or files) as a parameter\n"); } else if(argc-1 > MAX_SOURCES) { printf("Maximum supported files is %d\n", MAX_SOURCES); } ALmixer_Init(ALMIXER_DEFAULT_FREQUENCY, ALMIXER_DEFAULT_NUM_SOURCES, ALMIXER_DEFAULT_REFRESH); for(i=1; i<argc; i++) { if(!(audio_data[i-1]=ALmixer_LoadStream( argv[i], ALMIXER_DEFAULT_BUFFERSIZE, ALMIXER_DEFAULT_QUEUE_BUFFERS, ALMIXER_DEFAULT_STARTUP_BUFFERS, ALMIXER_DEFAULT_BUFFERS_TO_QUEUE_PER_UPDATE_PASS, AL_FALSE) )) /* if(!(audio_data[i-1]=ALmixer_LoadStream( argv[i], 4096, 2, 1, AL_FALSE) )) if(!(audio_data[i-1]=ALmixer_LoadStream( argv[i], 4096, 5 * 4, 2, AL_FALSE) )) */ { printf("%s. Quiting program.\n", ALmixer_GetError()); exit(0); } } ALmixer_SetPlaybackFinishedCallback(Internal_SoundFinished_CallbackIntercept, NULL); for(i=1; i<argc; i++) { g_PlayingAudio[i-1] = AL_TRUE; ALmixer_PlayChannel(i-1, audio_data[i-1], 0); } while(still_playing) { still_playing = AL_FALSE; for(i=1; i<argc; i++) { still_playing |= g_PlayingAudio[i-1]; } ALmixer_Update(); Internal_Delay(10); } for(i=1; i<argc; i++) { ALmixer_FreeData(audio_data[i-1]); } ALmixer_Quit(); return 0; }