From 8d75792eed4f382e342d8477f5aa06731dbbcbb2 Mon Sep 17 00:00:00 2001 From: wang-bin Date: Thu, 4 Sep 2014 23:55:56 +0800 Subject: [PATCH] use openal as default if possible --- src/AVPlayer.cpp | 29 ++++++++++++++++++++++------- src/QtAV/AVPlayer.h | 2 +- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/AVPlayer.cpp b/src/AVPlayer.cpp index b1e0c233..34b2ee8e 100644 --- a/src/AVPlayer.cpp +++ b/src/AVPlayer.cpp @@ -132,6 +132,20 @@ AVPlayer::AVPlayer(QObject *parent) : << VideoDecoderId_Cedarv #endif //QTAV_HAVE(CEDARV) << VideoDecoderId_FFmpeg; + audioout_ids +#if QTAV_HAVE(OPENAL) + << AudioOutputId_OpenAL +#endif +#if QTAV_HAVE(PORTAUDIO) + << AudioOutputId_PortAudio +#endif +#if QTAV_HAVE(OPENSL) + << AudioOutputId_OpenSL +#endif +#if QTAV_HAVE(DSound) + << AudioOutputId_DSound +#endif + ; } AVPlayer::~AVPlayer() @@ -1280,13 +1294,14 @@ bool AVPlayer::setupAudioThread() } //TODO: setAudioOutput() like vo if (!_audio && ao_enable) { - qDebug("new audio output"); - //TODO: use priority? -#if QTAV_HAVE(PORTAUDIO) - _audio = AudioOutputFactory::create(AudioOutputId_PortAudio); -#elif QTAV_HAVE(OPENAL) - _audio = AudioOutputFactory::create(AudioOutputId_OpenAL); -#endif + foreach (AudioOutputId aoid, audioout_ids) { + qDebug("trying audio output '%s'", AudioOutputFactory::name(aoid).c_str()); + _audio = AudioOutputFactory::create(aoid); + if (_audio) { + qDebug("audio output found."); + break; + } + } } if (!_audio) { // TODO: only when no audio stream or user disable audio stream. running an audio thread without sound is waste resource? diff --git a/src/QtAV/AVPlayer.h b/src/QtAV/AVPlayer.h index 28ab4625..264c1e7d 100644 --- a/src/QtAV/AVPlayer.h +++ b/src/QtAV/AVPlayer.h @@ -339,7 +339,7 @@ private: bool ao_enable; OutputSet *mpVOSet, *mpAOSet; QVector vcodec_ids; - + QVector audioout_ids; int mBrightness, mContrast, mSaturation; QVariantHash audio_codec_opt, video_codec_opt;