diff options
author | Trent Nelson <trent.a.b.nelson@gmail.com> | 2014-03-05 15:20:57 -0500 |
---|---|---|
committer | Trent Nelson <trent.a.b.nelson@gmail.com> | 2014-03-05 15:20:57 -0500 |
commit | 9abc85a7f7ce0705a42df1d039dd059cf0cf4c92 (patch) | |
tree | 2668a0f86277412f33b29a0cdf7b60be663cffa1 | |
parent | a159d389256016ec13453b1f636a7cfe9a6a8dd1 (diff) | |
parent | 9f7de7d622769f619dd7225b59d5f16d64baaef6 (diff) |
Merge pull request #4329 from t-nelson/droid_native_sr
Droid native sr
-rw-r--r-- | xbmc/android/jni/AudioTrack.cpp | 6 | ||||
-rw-r--r-- | xbmc/android/jni/AudioTrack.h | 1 | ||||
-rw-r--r-- | xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp | 17 |
3 files changed, 9 insertions, 15 deletions
diff --git a/xbmc/android/jni/AudioTrack.cpp b/xbmc/android/jni/AudioTrack.cpp index e28e803aa2..d0eb5609b0 100644 --- a/xbmc/android/jni/AudioTrack.cpp +++ b/xbmc/android/jni/AudioTrack.cpp @@ -116,3 +116,9 @@ int CJNIAudioTrack::getMinBufferSize(int sampleRateInHz, int channelConfig, int sampleRateInHz, channelConfig, audioFormat); } +int CJNIAudioTrack::getNativeOutputSampleRate(int streamType) +{ + return call_static_method<int>( "android/media/AudioTrack", "getNativeOutputSampleRate", "(I)I", + streamType); +} + diff --git a/xbmc/android/jni/AudioTrack.h b/xbmc/android/jni/AudioTrack.h index 627edac522..30ad3c6a70 100644 --- a/xbmc/android/jni/AudioTrack.h +++ b/xbmc/android/jni/AudioTrack.h @@ -45,6 +45,7 @@ class CJNIAudioTrack : public CJNIBase static void PopulateStaticFields(); static int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat); + static int getNativeOutputSampleRate(int streamType); }; }; diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp index 1fde9c8511..c1d0d1dc0a 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp @@ -94,19 +94,7 @@ bool CAESinkAUDIOTRACK::Initialize(AEAudioFormat &format, std::string &device) aml_set_audio_passthrough(m_passthrough); #endif - // default to 44100, all android devices support it. - // then check if we can support the requested rate. - unsigned int sampleRate = 44100; - for (size_t i = 0; i < m_info.m_sampleRates.size(); i++) - { - if (m_format.m_sampleRate == m_info.m_sampleRates[i]) - { - sampleRate = m_format.m_sampleRate; - break; - } - } - - m_format.m_sampleRate = sampleRate; + m_format.m_sampleRate = CJNIAudioTrack::getNativeOutputSampleRate(CJNIAudioManager::STREAM_MUSIC); m_format.m_dataFormat = AE_FMT_S16LE; m_format.m_channelLayout = m_info.m_channels; m_format.m_frameSize = m_format.m_channelLayout.Count() * @@ -259,8 +247,7 @@ void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force) m_info.m_displayNameExtra = "audiotrack"; m_info.m_channels += AE_CH_FL; m_info.m_channels += AE_CH_FR; - m_info.m_sampleRates.push_back(44100); - m_info.m_sampleRates.push_back(48000); + m_info.m_sampleRates.push_back(CJNIAudioTrack::getNativeOutputSampleRate(CJNIAudioManager::STREAM_MUSIC)); m_info.m_dataFormats.push_back(AE_FMT_S16LE); #if 0 //defined(__ARM_NEON__) if (g_cpuInfo.GetCPUFeatures() & CPU_FEATURE_NEON) |