aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrent Nelson <trent.a.b.nelson@gmail.com>2014-03-05 15:20:57 -0500
committerTrent Nelson <trent.a.b.nelson@gmail.com>2014-03-05 15:20:57 -0500
commit9abc85a7f7ce0705a42df1d039dd059cf0cf4c92 (patch)
tree2668a0f86277412f33b29a0cdf7b60be663cffa1
parenta159d389256016ec13453b1f636a7cfe9a6a8dd1 (diff)
parent9f7de7d622769f619dd7225b59d5f16d64baaef6 (diff)
Merge pull request #4329 from t-nelson/droid_native_sr
Droid native sr
-rw-r--r--xbmc/android/jni/AudioTrack.cpp6
-rw-r--r--xbmc/android/jni/AudioTrack.h1
-rw-r--r--xbmc/cores/AudioEngine/Sinks/AESinkAUDIOTRACK.cpp17
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)