summaryrefslogtreecommitdiffstats
path: root/include/private
diff options
context:
space:
mode:
authorRicardo Garcia <rago@google.com>2015-04-18 14:47:04 -0700
committerRicardo Garcia <rago@google.com>2015-04-22 10:57:24 -0700
commit5a8a95de6dad1a3bcf3da5a37b35766e89086e13 (patch)
tree64b82016eaef26f51b75470714172c06287c9c56 /include/private
parentea44f41bb142555e747cc11382296e94af99d312 (diff)
downloadframeworks_av-5a8a95de6dad1a3bcf3da5a37b35766e89086e13.zip
frameworks_av-5a8a95de6dad1a3bcf3da5a37b35766e89086e13.tar.gz
frameworks_av-5a8a95de6dad1a3bcf3da5a37b35766e89086e13.tar.bz2
Use AudioPlaybackRate to hold TimestretchBufferProvider parameters
Use this struct to handle the parameters for TimestretchBufferProvider all across the system. Add stretch mode and fallback mode to TimestretchBuffer Provider. Change-Id: I19099924a7003c62e48bb6ead56c785cb129fba2
Diffstat (limited to 'include/private')
-rw-r--r--include/private/media/AudioTrackShared.h26
1 files changed, 8 insertions, 18 deletions
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 6cc2e2b..1e5064f 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -114,13 +114,7 @@ struct AudioTrackSharedStatic {
mPosLoopQueue;
};
-
-struct AudioTrackPlaybackRate {
- float mSpeed;
- float mPitch;
-};
-
-typedef SingleStateQueue<AudioTrackPlaybackRate> AudioTrackPlaybackRateQueue;
+typedef SingleStateQueue<AudioPlaybackRate> PlaybackRateQueue;
// ----------------------------------------------------------------------------
@@ -168,7 +162,7 @@ private:
uint32_t mSampleRate; // AudioTrack only: client's requested sample rate in Hz
// or 0 == default. Write-only client, read-only server.
- AudioTrackPlaybackRateQueue::Shared mPlaybackRateQueue;
+ PlaybackRateQueue::Shared mPlaybackRateQueue;
// client write-only, server read-only
uint16_t mSendLevel; // Fixed point U4.12 so 0x1000 means 1.0
@@ -345,10 +339,7 @@ public:
mCblk->mSampleRate = sampleRate;
}
- void setPlaybackRate(float speed, float pitch) {
- AudioTrackPlaybackRate playbackRate;
- playbackRate.mSpeed = speed;
- playbackRate.mPitch = pitch;
+ void setPlaybackRate(const AudioPlaybackRate& playbackRate) {
mPlaybackRateMutator.push(playbackRate);
}
@@ -365,7 +356,7 @@ public:
status_t waitStreamEndDone(const struct timespec *requested);
private:
- AudioTrackPlaybackRateQueue::Mutator mPlaybackRateMutator;
+ PlaybackRateQueue::Mutator mPlaybackRateMutator;
};
class StaticAudioTrackClientProxy : public AudioTrackClientProxy {
@@ -483,8 +474,7 @@ public:
: ServerProxy(cblk, buffers, frameCount, frameSize, true /*isOut*/, clientInServer),
mPlaybackRateObserver(&cblk->mPlaybackRateQueue) {
mCblk->mSampleRate = sampleRate;
- mPlaybackRate.mSpeed = AUDIO_TIMESTRETCH_SPEED_NORMAL;
- mPlaybackRate.mPitch = AUDIO_TIMESTRETCH_PITCH_NORMAL;
+ mPlaybackRate = AUDIO_PLAYBACK_RATE_DEFAULT;
}
protected:
virtual ~AudioTrackServerProxy() { }
@@ -520,11 +510,11 @@ public:
virtual size_t framesReleased() const { return mCblk->mServer; }
// Return the playback speed and pitch read atomically. Not multi-thread safe on server side.
- void getPlaybackRate(float *speed, float *pitch);
+ AudioPlaybackRate getPlaybackRate();
private:
- AudioTrackPlaybackRate mPlaybackRate; // last observed playback rate
- AudioTrackPlaybackRateQueue::Observer mPlaybackRateObserver;
+ AudioPlaybackRate mPlaybackRate; // last observed playback rate
+ PlaybackRateQueue::Observer mPlaybackRateObserver;
};
class StaticAudioTrackServerProxy : public AudioTrackServerProxy {