summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2009-07-07 07:10:45 -0700
committerEric Laurent <elaurent@google.com>2009-07-07 07:10:45 -0700
commit88e209dcf8c2ebddda5c272f46d1bd5478bc639c (patch)
tree0b4bc797c237a5179be63ee9c3716e8213fc08b6 /libs
parent37ea71122579e9e2ad1f91b3eca5e4d436b54ea9 (diff)
downloadframeworks_base-88e209dcf8c2ebddda5c272f46d1bd5478bc639c.zip
frameworks_base-88e209dcf8c2ebddda5c272f46d1bd5478bc639c.tar.gz
frameworks_base-88e209dcf8c2ebddda5c272f46d1bd5478bc639c.tar.bz2
Fix issue 1743700: AudioTrack: setPlaybackRate can not set the playback rate to twice of the ouputSR
Store sample rate on 32 bits instead of 16 bits in audio_track_cblk_t. Removed sampleRate() methods from AudioTrack and AudioRecord: replaced by getSampleRate(). AudioTrack::setSampleRate() no returns a status.
Diffstat (limited to 'libs')
-rw-r--r--libs/audioflinger/AudioFlinger.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 75ca22c..8a19fbd 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -1281,7 +1281,7 @@ sp<AudioFlinger::MixerThread::Track> AudioFlinger::MixerThread::createTrack_l(
status_t lStatus;
// Resampler implementation limits input sampling rate to 2 x output sampling rate.
- if (sampleRate > MAX_SAMPLE_RATE || sampleRate > mSampleRate*2) {
+ if (sampleRate > mSampleRate*2) {
LOGE("Sample rate out of range: %d mSampleRate %d", sampleRate, mSampleRate);
lStatus = BAD_VALUE;
goto Exit;
@@ -1596,8 +1596,8 @@ AudioFlinger::MixerThread::TrackBase::TrackBase(
new(mCblk) audio_track_cblk_t();
// clear all buffers
mCblk->frameCount = frameCount;
- mCblk->sampleRate = (uint16_t)sampleRate;
- mCblk->channels = (uint16_t)channelCount;
+ mCblk->sampleRate = sampleRate;
+ mCblk->channels = (uint8_t)channelCount;
if (sharedBuffer == 0) {
mBuffer = (char*)mCblk + sizeof(audio_track_cblk_t);
memset(mBuffer, 0, frameCount*channelCount*sizeof(int16_t));
@@ -1620,8 +1620,8 @@ AudioFlinger::MixerThread::TrackBase::TrackBase(
new(mCblk) audio_track_cblk_t();
// clear all buffers
mCblk->frameCount = frameCount;
- mCblk->sampleRate = (uint16_t)sampleRate;
- mCblk->channels = (uint16_t)channelCount;
+ mCblk->sampleRate = sampleRate;
+ mCblk->channels = (uint8_t)channelCount;
mBuffer = (char*)mCblk + sizeof(audio_track_cblk_t);
memset(mBuffer, 0, frameCount*channelCount*sizeof(int16_t));
// Force underrun condition to avoid false underrun callback until first data is
@@ -1682,7 +1682,7 @@ int AudioFlinger::MixerThread::TrackBase::sampleRate() const {
}
int AudioFlinger::MixerThread::TrackBase::channelCount() const {
- return mCblk->channels;
+ return (int)mCblk->channels;
}
void* AudioFlinger::MixerThread::TrackBase::getBuffer(uint32_t offset, uint32_t frames) const {
@@ -2267,12 +2267,6 @@ sp<IAudioRecord> AudioFlinger::openRecord(
goto Exit;
}
- if (sampleRate > MAX_SAMPLE_RATE) {
- LOGE("Sample rate out of range");
- lStatus = BAD_VALUE;
- goto Exit;
- }
-
if (mAudioRecordThread == 0) {
LOGE("Audio record thread not started");
lStatus = NO_INIT;