diff options
author | Ricardo Garcia <rago@google.com> | 2015-04-18 14:47:04 -0700 |
---|---|---|
committer | Ricardo Garcia <rago@google.com> | 2015-04-22 10:57:24 -0700 |
commit | 5a8a95de6dad1a3bcf3da5a37b35766e89086e13 (patch) | |
tree | 64b82016eaef26f51b75470714172c06287c9c56 /include/private | |
parent | ea44f41bb142555e747cc11382296e94af99d312 (diff) | |
download | frameworks_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.h | 26 |
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 { |