/***************************************************************************** * ijksdl_aout.c ***************************************************************************** * * Copyright (c) 2013 Bilibili * copyright (c) 2013 Zhang Rui * * This file is part of ijkPlayer. * * ijkPlayer is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * ijkPlayer is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with ijkPlayer; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "ijksdl_aout.h" #include //#include "../ijkplayer/ff_ffplay_def.h" int SDL_AoutOpenAudio(SDL_Aout *aout, const SDL_AudioSpec *desired, SDL_AudioSpec *obtained) { if (aout && desired && aout->open_audio) return aout->open_audio(aout, desired, obtained); return -1; } void SDL_AoutPauseAudio(SDL_Aout *aout, int pause_on) { if (aout && aout->pause_audio) aout->pause_audio(aout, pause_on); } void SDL_AoutFlushAudio(SDL_Aout *aout) { if (aout && aout->flush_audio) aout->flush_audio(aout); } void SDL_AoutSetStereoVolume(SDL_Aout *aout, float left_volume, float right_volume) { if (aout && aout->set_volume) aout->set_volume(aout, left_volume, right_volume); } void SDL_AoutCloseAudio(SDL_Aout *aout) { if (aout && aout->close_audio) return aout->close_audio(aout); } void SDL_AoutFree(SDL_Aout *aout) { if (!aout) return; if (aout->free_l) aout->free_l(aout); else free(aout); } void SDL_AoutFreeP(SDL_Aout **paout) { if (!paout) return; SDL_AoutFree(*paout); *paout = NULL; } double SDL_AoutGetLatencySeconds(SDL_Aout *aout) { if (!aout) return 0; if (aout->func_get_latency_seconds) return aout->func_get_latency_seconds(aout); return aout->minimal_latency_seconds; } void SDL_AoutSetDefaultLatencySeconds(SDL_Aout *aout, double latency) { if (aout) { if (aout->func_set_default_latency_seconds) aout->func_set_default_latency_seconds(aout, latency); aout->minimal_latency_seconds = latency; } } void SDL_AoutSetPlaybackRate(SDL_Aout *aout, float playbackRate) { if (aout) { if (aout->func_set_playback_rate) aout->func_set_playback_rate(aout, playbackRate); } } void SDL_AoutSetPlaybackVolume(SDL_Aout *aout, float volume) { if (aout) { if (aout->func_set_playback_volume) aout->func_set_playback_volume(aout, volume); } } int SDL_AoutGetAudioSessionId(SDL_Aout *aout) { if (aout) { if (aout->func_get_audio_session_id) { return aout->func_get_audio_session_id(aout); } } return 0; } int SDL_AoutGetAudioPerSecondCallBacks(SDL_Aout *aout) { if (aout) { if (aout->func_get_audio_persecond_callbacks) { return aout->func_get_audio_persecond_callbacks(aout); } } return SDL_AUDIO_MAX_CALLBACKS_PER_SEC; } void SDL_AoutSetEqualizerEnabled(SDL_Aout *aout, bool enabled) { if (aout && aout->set_equalizer_enabled) { aout->set_equalizer_enabled(aout, enabled); } } void SDL_AoutSetEqualizerGains(SDL_Aout *aout, const float *gains) { if (aout && aout->set_equalizer_gains && gains) { aout->set_equalizer_gains(aout, gains); } }