/* Open the mixer with a certain desired audio format */ int Mix_OpenAudio(int frequency, Uint16 format, int nchannels, int chunksize) { int i; SDL_AudioSpec desired; /* If the mixer is already opened, increment open count */ if ( audio_opened ) { ++audio_opened; return(0); } /* Set the desired format and frequency */ desired.freq = frequency; desired.format = format; desired.channels = nchannels; desired.samples = chunksize; desired.callback = mix_channels; desired.userdata = NULL; /* Accept nearly any audio format */ if ( SDL_OpenAudio(&desired, &mixer) < 0 ) { return(-1); } #if 0 PrintFormat("Audio device", &mixer); #endif /* Initialize the music players */ if ( open_music(&mixer) < 0 ) { SDL_CloseAudio(); return(-1); } num_channels = MIX_CHANNELS; mix_channel = (struct _Mix_Channel *) malloc(num_channels * sizeof(struct _Mix_Channel)); /* Clear out the audio channels */ for ( i=0; i<num_channels; ++i ) { mix_channel[i].chunk = NULL; mix_channel[i].playing = 0; mix_channel[i].looping = 0; mix_channel[i].volume = SDL_MIX_MAXVOLUME; mix_channel[i].fade_volume = SDL_MIX_MAXVOLUME; mix_channel[i].fading = MIX_NO_FADING; mix_channel[i].tag = -1; mix_channel[i].expire = 0; mix_channel[i].effects = NULL; mix_channel[i].paused = 0; } Mix_VolumeMusic(SDL_MIX_MAXVOLUME); _Mix_InitEffects(); audio_opened = 1; SDL_PauseAudio(0); return(0); }
/* Open the mixer with a certain desired audio format */ int Mix_OpenAudio(int frequency, Uint16 format, int nchannels, int chunksize) { int i; SDL_AudioSpec desired; /* If the mixer is already opened, increment open count */ if ( audio_opened ) { if ( format == mixer.format && nchannels == mixer.channels ) { ++audio_opened; return(0); } while ( audio_opened ) { Mix_CloseAudio(); } } /* Set the desired format and frequency */ desired.freq = frequency; desired.format = format; desired.channels = nchannels; desired.samples = chunksize; desired.callback = mix_channels; desired.userdata = NULL; /* Accept nearly any audio format */ if ( SDL_OpenAudio(&desired, &mixer) < 0 ) { return(-1); } #if 0 PrintFormat("Audio device", &mixer); #endif /* Initialize the music players */ if ( open_music(&mixer) < 0 ) { SDL_CloseAudio(); return(-1); } num_channels = MIX_CHANNELS; mix_channel = (struct _Mix_Channel *) SDL_malloc(num_channels * sizeof(struct _Mix_Channel)); /* Clear out the audio channels */ for ( i=0; i<num_channels; ++i ) { mix_channel[i].chunk = NULL; mix_channel[i].playing = 0; mix_channel[i].looping = 0; mix_channel[i].volume = SDL_MIX_MAXVOLUME; mix_channel[i].fade_volume = SDL_MIX_MAXVOLUME; mix_channel[i].fade_volume_reset = SDL_MIX_MAXVOLUME; mix_channel[i].fading = MIX_NO_FADING; mix_channel[i].tag = -1; mix_channel[i].expire = 0; mix_channel[i].effects = NULL; mix_channel[i].paused = 0; } Mix_VolumeMusic(SDL_MIX_MAXVOLUME); _Mix_InitEffects(); /* This list is (currently) decided at build time. */ add_chunk_decoder("WAVE"); add_chunk_decoder("AIFF"); add_chunk_decoder("VOC"); #ifdef OGG_MUSIC add_chunk_decoder("OGG"); #endif #ifdef FLAC_MUSIC add_chunk_decoder("FLAC"); #endif audio_opened = 1; SDL_PauseAudio(0); return(0); }
/* Open the mixer with a certain desired audio format */ int Mix_OpenAudio(int frequency, Uint16 format, int nchannels, int chunksize) { int i; SDL_AudioSpec desired; /* If the mixer is already opened, increment open count */ if ( audio_opened ) { if ( format == mixer.format && nchannels == mixer.channels ) { ++audio_opened; return(0); } while ( audio_opened ) { Mix_CloseAudio(); } } /* Set the desired format and frequency */ desired.freq = frequency; desired.format = format; desired.channels = nchannels; desired.samples = chunksize; desired.callback = mix_channels; desired.userdata = NULL; /* Accept nearly any audio format */ if ( SDL_OpenAudio(&desired, &mixer) < 0 ) { return(-1); } #if 0 PrintFormat("Audio device", &mixer); #endif /* Initialize the music players */ if ( open_music(&mixer) < 0 ) { SDL_CloseAudio(); return(-1); } num_channels = MIX_CHANNELS; mix_channel = (_Mix_Channel *) SDL_malloc(num_channels * sizeof(_Mix_Channel)); /* Clear out the audio channels */ for ( i=0; i<num_channels; ++i ) { _Mix_InitChannel(i); } mix_music_compat_channel = mix_channel[0]; mix_music_compat_channel.sound = NULL; mix_music_compat_channel.is_music = SDL_TRUE; mix_music_compat_channel.playing = 0; _Mix_InitEffects(); /* This list is (currently) decided at build time. */ add_chunk_decoder("WAVE"); add_chunk_decoder("AIFF"); add_chunk_decoder("VOC"); #ifdef OGG_MUSIC add_chunk_decoder("OGG"); #endif #ifdef FLAC_MUSIC add_chunk_decoder("FLAC"); #endif #if defined(MP3_MUSIC) || defined(MP3_MAD_MUSIC) add_chunk_decoder("MP3"); #endif audio_opened = 1; SDL_PauseAudio(0); return(0); }