summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-07-12 09:07:11 -0700
committerGlenn Kasten <gkasten@google.com>2012-07-12 09:36:34 -0700
commitbf04a5d7f287fc712e0ed91849dc85c90c1e182d (patch)
treef9fd2ffd8df5a02c9c9373f5362da76204e5a676
parent39c54f68804c1ce5c85ec588f3c2c63447a807b4 (diff)
downloadframeworks_av-bf04a5d7f287fc712e0ed91849dc85c90c1e182d.zip
frameworks_av-bf04a5d7f287fc712e0ed91849dc85c90c1e182d.tar.gz
frameworks_av-bf04a5d7f287fc712e0ed91849dc85c90c1e182d.tar.bz2
Simplify AudioRecord::getInputFramesLost()
This also fixes a benign race in reading mActive without a lock. Change-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707
-rw-r--r--include/media/AudioSystem.h1
-rw-r--r--media/libmedia/AudioRecord.cpp6
-rw-r--r--services/audioflinger/AudioFlinger.cpp4
3 files changed, 3 insertions, 8 deletions
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 66f4b84..61d62b0 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -126,6 +126,7 @@ public:
// necessary to check returned status before using the returned values.
static status_t getRenderPosition(uint32_t *halFrames, uint32_t *dspFrames, audio_stream_type_t stream = AUDIO_STREAM_DEFAULT);
+ // return the number of input frames lost by HAL implementation, or 0 if the handle is invalid
static unsigned int getInputFramesLost(audio_io_handle_t ioHandle);
static int newAudioSessionId();
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index f8813c9..01ce2a4 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -432,10 +432,8 @@ status_t AudioRecord::getPosition(uint32_t *position) const
unsigned int AudioRecord::getInputFramesLost() const
{
- if (mActive)
- return AudioSystem::getInputFramesLost(mInput);
- else
- return 0;
+ // no need to check mActive, because if inactive this will return 0, which is what we want
+ return AudioSystem::getInputFramesLost(mInput);
}
// -------------------------------------------------------------------------
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 765127a..2ed3324 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -978,10 +978,6 @@ size_t AudioFlinger::getInputBufferSize(uint32_t sampleRate, audio_format_t form
unsigned int AudioFlinger::getInputFramesLost(audio_io_handle_t ioHandle) const
{
- if (ioHandle == 0) {
- return 0;
- }
-
Mutex::Autolock _l(mLock);
RecordThread *recordThread = checkRecordThread_l(ioHandle);