summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-11-12 07:58:20 -0800
committerGlenn Kasten <gkasten@google.com>2012-11-12 15:13:34 -0800
commit83a0382dc17364567667a4e6135db43f5bd92efc (patch)
treec3738c183fa49d9ccd023e27b37024860ccfff22 /include
parentbc0f6b92bba33ca9c2e76f2a520d290f055da6b2 (diff)
downloadframeworks_av-83a0382dc17364567667a4e6135db43f5bd92efc.zip
frameworks_av-83a0382dc17364567667a4e6135db43f5bd92efc.tar.gz
frameworks_av-83a0382dc17364567667a4e6135db43f5bd92efc.tar.bz2
Move frame size out of the control block
This is part of a series to clean up the control block. Change-Id: Ifab1c42ac0f8be704e571b292713cd2250d12a3f
Diffstat (limited to 'include')
-rw-r--r--include/media/AudioRecord.h3
-rw-r--r--include/media/AudioTrack.h9
-rw-r--r--include/private/media/AudioTrackShared.h7
3 files changed, 12 insertions, 7 deletions
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h
index bfb5d3a..2672db1 100644
--- a/include/media/AudioRecord.h
+++ b/include/media/AudioRecord.h
@@ -185,7 +185,7 @@ public:
audio_format_t format() const;
int channelCount() const;
uint32_t frameCount() const;
- size_t frameSize() const;
+ size_t frameSize() const { return mFrameSize; }
audio_source_t inputSource() const;
@@ -378,6 +378,7 @@ private:
uint32_t mFrameCount;
audio_format_t mFormat;
uint8_t mChannelCount;
+ size_t mFrameSize; // app-level frame size == AudioFlinger frame size
audio_source_t mInputSource;
status_t mStatus;
uint32_t mLatency;
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index 639b567..3504f1f 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -229,7 +229,7 @@ public:
/* Return channelCount * (bit depth per channel / 8).
* channelCount is determined from channelMask, and bit depth comes from format.
*/
- size_t frameSize() const;
+ size_t frameSize() const { return mFrameSize; }
sp<IMemory>& sharedBuffer();
@@ -517,6 +517,13 @@ protected:
uint8_t mMuted;
uint8_t mReserved;
audio_channel_mask_t mChannelMask;
+
+ // mFrameSize is equal to mFrameSizeAF for non-PCM or 16-bit PCM data.
+ // For 8-bit PCM data, mFrameSizeAF is
+ // twice as large because data is expanded to 16-bit before being stored in buffer.
+ size_t mFrameSize; // app-level frame size
+ size_t mFrameSizeAF; // AudioFlinger frame size
+
status_t mStatus;
uint32_t mLatency;
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 8ef90c7..ac5372f 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -77,12 +77,9 @@ public:
uint32_t sampleRate;
- // NOTE: audio_track_cblk_t::frameSize is not equal to AudioTrack::frameSize() for
- // 8 bit PCM data: in this case, mCblk->frameSize is based on a sample size of
- // 16 bit because data is converted to 16 bit before being stored in buffer
+ uint8_t mPad2; // unused
// read-only for client, server writes once at initialization and is then read-only
- uint8_t frameSize; // would normally be size_t, but 8 bits is plenty
uint8_t mName; // normal tracks: track name, fast tracks: track index
// used by client only
@@ -111,7 +108,7 @@ public:
// if there is a shared buffer, "buffers" is the value of pointer() for the shared
// buffer, otherwise "buffers" points immediately after the control block
- void* buffer(void *buffers, uint32_t offset) const;
+ void* buffer(void *buffers, uint32_t frameSize, uint32_t offset) const;
uint32_t framesAvailableIn() { return framesAvailable(false); }
uint32_t framesAvailableOut() { return framesAvailable(true); }