summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-09-24 11:27:18 -0700
committerGlenn Kasten <gkasten@google.com>2012-09-25 17:13:18 -0700
commit4c6db4ce1e2760682d1c9e66448dbb39bb5d14d8 (patch)
treea8ffad6bc9f78c05eefc85cbfdb782eb40b50b4b /services
parent64f935ebeae38828b3704e93fa5e7113f7839110 (diff)
downloadframeworks_av-4c6db4ce1e2760682d1c9e66448dbb39bb5d14d8.zip
frameworks_av-4c6db4ce1e2760682d1c9e66448dbb39bb5d14d8.tar.gz
frameworks_av-4c6db4ce1e2760682d1c9e66448dbb39bb5d14d8.tar.bz2
Implement android.media.AudioManager.getProperty()
Bug: 6635041 Change-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224
Diffstat (limited to 'services')
-rw-r--r--services/audioflinger/AudioFlinger.cpp18
-rw-r--r--services/audioflinger/AudioFlinger.h7
2 files changed, 24 insertions, 1 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index dd491f5..599a9e2 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -6903,6 +6903,24 @@ audio_module_handle_t AudioFlinger::loadHwModule_l(const char *name)
}
+// ----------------------------------------------------------------------------
+
+int32_t AudioFlinger::getPrimaryOutputSamplingRate()
+{
+ Mutex::Autolock _l(mLock);
+ PlaybackThread *thread = primaryPlaybackThread_l();
+ return thread != NULL ? thread->sampleRate() : 0;
+}
+
+int32_t AudioFlinger::getPrimaryOutputFrameCount()
+{
+ Mutex::Autolock _l(mLock);
+ PlaybackThread *thread = primaryPlaybackThread_l();
+ return thread != NULL ? thread->frameCountHAL() : 0;
+}
+
+// ----------------------------------------------------------------------------
+
audio_io_handle_t AudioFlinger::openOutput(audio_module_handle_t module,
audio_devices_t *pDevices,
uint32_t *pSamplingRate,
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 8a020fa..45cee0b 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -207,6 +207,9 @@ public:
virtual audio_module_handle_t loadHwModule(const char *name);
+ virtual int32_t getPrimaryOutputSamplingRate();
+ virtual int32_t getPrimaryOutputFrameCount();
+
virtual status_t onTransact(
uint32_t code,
const Parcel& data,
@@ -555,8 +558,10 @@ private:
audio_channel_mask_t channelMask() const { return mChannelMask; }
audio_format_t format() const { return mFormat; }
// Called by AudioFlinger::frameCount(audio_io_handle_t output) and effects,
- // and returns the normal mix buffer's frame count. No API for HAL frame count.
+ // and returns the normal mix buffer's frame count.
size_t frameCount() const { return mNormalFrameCount; }
+ // Return's the HAL's frame count i.e. fast mixer buffer size.
+ size_t frameCountHAL() const { return mFrameCount; }
// Should be "virtual status_t requestExitAndWait()" and override same
// method in Thread, but Thread::requestExitAndWait() is not yet virtual.