diff options
-rw-r--r-- | include/media/AudioRecord.h | 3 | ||||
-rw-r--r-- | include/media/AudioTrack.h | 3 | ||||
-rw-r--r-- | media/libmedia/AudioRecord.cpp | 20 | ||||
-rw-r--r-- | media/libmedia/AudioTrack.cpp | 24 | ||||
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 8 | ||||
-rw-r--r-- | services/audioflinger/AudioFlinger.h | 6 |
6 files changed, 27 insertions, 37 deletions
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h index cd7ff92..ae444c3 100644 --- a/include/media/AudioRecord.h +++ b/include/media/AudioRecord.h @@ -183,7 +183,7 @@ public: /* getters, see constructor and set() */ audio_format_t format() const; - int channelCount() const; + uint32_t channelCount() const; size_t frameCount() const; size_t frameSize() const { return mFrameSize; } audio_source_t inputSource() const; @@ -351,7 +351,6 @@ private: status_t openRecord_l(uint32_t sampleRate, audio_format_t format, - audio_channel_mask_t channelMask, size_t frameCount, audio_io_handle_t input); audio_io_handle_t getInput_l(); diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h index 61214ec..f1b77ab 100644 --- a/include/media/AudioTrack.h +++ b/include/media/AudioTrack.h @@ -223,7 +223,7 @@ public: audio_stream_type_t streamType() const; audio_format_t format() const; - int channelCount() const; + uint32_t channelCount() const; uint32_t frameCount() const; /* Return channelCount * (bit depth per channel / 8). @@ -493,7 +493,6 @@ protected: status_t createTrack_l(audio_stream_type_t streamType, uint32_t sampleRate, audio_format_t format, - audio_channel_mask_t channelMask, size_t frameCount, audio_output_flags_t flags, const sp<IMemory>& sharedBuffer, diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index 2a5a996..c2ef68c 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -63,7 +63,7 @@ status_t AudioRecord::getMinFrameCount( size <<= 1; if (audio_is_linear_pcm(format)) { - int channelCount = popcount(channelMask); + uint32_t channelCount = popcount(channelMask); size /= channelCount * audio_bytes_per_sample(format); } @@ -162,8 +162,9 @@ status_t AudioRecord::set( if (!audio_is_input_channel(channelMask)) { return BAD_VALUE; } - - int channelCount = popcount(channelMask); + mChannelMask = channelMask; + uint32_t channelCount = popcount(channelMask); + mChannelCount = channelCount; if (sessionId == 0 ) { mSessionId = AudioSystem::newAudioSessionId(); @@ -201,8 +202,7 @@ status_t AudioRecord::set( } // create the IAudioRecord - status = openRecord_l(sampleRate, format, channelMask, - frameCount, input); + status = openRecord_l(sampleRate, format, frameCount, input); if (status != NO_ERROR) { return status; } @@ -217,8 +217,6 @@ status_t AudioRecord::set( mFormat = format; // Update buffer size in case it has been limited by AudioFlinger during track creation mFrameCount = mCblk->frameCount_; - mChannelCount = (uint8_t)channelCount; - mChannelMask = channelMask; if (audio_is_linear_pcm(mFormat)) { mFrameSize = channelCount * audio_bytes_per_sample(format); @@ -261,7 +259,7 @@ audio_format_t AudioRecord::format() const return mFormat; } -int AudioRecord::channelCount() const +uint32_t AudioRecord::channelCount() const { return mChannelCount; } @@ -432,7 +430,6 @@ unsigned int AudioRecord::getInputFramesLost() const status_t AudioRecord::openRecord_l( uint32_t sampleRate, audio_format_t format, - audio_channel_mask_t channelMask, size_t frameCount, audio_io_handle_t input) { @@ -449,7 +446,7 @@ status_t AudioRecord::openRecord_l( int originalSessionId = mSessionId; sp<IAudioRecord> record = audioFlinger->openRecord(getpid(), input, sampleRate, format, - channelMask, + mChannelMask, frameCount, IAudioFlinger::TRACK_DEFAULT, tid, @@ -784,8 +781,7 @@ status_t AudioRecord::restoreRecord_l(audio_track_cblk_t*& refCblk) // if the new IAudioRecord is created, openRecord_l() will modify the // following member variables: mAudioRecord, mCblkMemory and mCblk. // It will also delete the strong references on previous IAudioRecord and IMemory - result = openRecord_l(cblk->sampleRate, mFormat, mChannelMask, - mFrameCount, getInput_l()); + result = openRecord_l(cblk->sampleRate, mFormat, mFrameCount, getInput_l()); if (result == NO_ERROR) { newCblk = mCblk; // callback thread or sync event hasn't changed diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index ff1b21b..e40895a 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -243,7 +243,9 @@ status_t AudioTrack::set( ALOGE("Invalid channel mask %#x", channelMask); return BAD_VALUE; } + mChannelMask = channelMask; uint32_t channelCount = popcount(channelMask); + mChannelCount = channelCount; audio_io_handle_t output = AudioSystem::getOutput( streamType, @@ -275,7 +277,6 @@ status_t AudioTrack::set( status_t status = createTrack_l(streamType, sampleRate, format, - channelMask, frameCount, flags, sharedBuffer, @@ -293,8 +294,6 @@ status_t AudioTrack::set( mStreamType = streamType; mFormat = format; - mChannelMask = channelMask; - mChannelCount = channelCount; if (audio_is_linear_pcm(format)) { mFrameSize = channelCount * audio_bytes_per_sample(format); @@ -340,7 +339,7 @@ audio_format_t AudioTrack::format() const return mFormat; } -int AudioTrack::channelCount() const +uint32_t AudioTrack::channelCount() const { return mChannelCount; } @@ -758,7 +757,6 @@ status_t AudioTrack::createTrack_l( audio_stream_type_t streamType, uint32_t sampleRate, audio_format_t format, - audio_channel_mask_t channelMask, size_t frameCount, audio_output_flags_t flags, const sp<IMemory>& sharedBuffer, @@ -808,17 +806,16 @@ status_t AudioTrack::createTrack_l( } else if (sharedBuffer != 0) { - // Ensure that buffer alignment matches channelCount - int channelCount = popcount(channelMask); + // Ensure that buffer alignment matches channel count // 8-bit data in shared memory is not currently supported by AudioFlinger size_t alignment = /* format == AUDIO_FORMAT_PCM_8_BIT ? 1 : */ 2; - if (channelCount > 1) { + if (mChannelCount > 1) { // More than 2 channels does not require stronger alignment than stereo alignment <<= 1; } - if (((uint32_t)sharedBuffer->pointer() & (alignment - 1)) != 0) { - ALOGE("Invalid buffer alignment: address %p, channelCount %d", - sharedBuffer->pointer(), channelCount); + if (((size_t)sharedBuffer->pointer() & (alignment - 1)) != 0) { + ALOGE("Invalid buffer alignment: address %p, channel count %u", + sharedBuffer->pointer(), mChannelCount); return BAD_VALUE; } @@ -826,7 +823,7 @@ status_t AudioTrack::createTrack_l( // there's no frameCount parameter. // But when initializing a shared buffer AudioTrack via set(), // there _is_ a frameCount parameter. We silently ignore it. - frameCount = sharedBuffer->size()/channelCount/sizeof(int16_t); + frameCount = sharedBuffer->size()/mChannelCount/sizeof(int16_t); } else if (!(flags & AUDIO_OUTPUT_FLAG_FAST)) { @@ -890,7 +887,7 @@ status_t AudioTrack::createTrack_l( // AudioFlinger only sees 16-bit PCM format == AUDIO_FORMAT_PCM_8_BIT ? AUDIO_FORMAT_PCM_16_BIT : format, - channelMask, + mChannelMask, frameCount, &trackFlags, sharedBuffer, @@ -1398,7 +1395,6 @@ status_t AudioTrack::restoreTrack_l(audio_track_cblk_t*& refCblk, bool fromStart result = createTrack_l(mStreamType, cblk->sampleRate, mFormat, - mChannelMask, mReqFrameCount, // so that frame count never goes down mFlags, mSharedBuffer, diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 5f3754f..0c1ab3c 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -6181,7 +6181,7 @@ bool AudioFlinger::RecordThread::threadLoop() framesIn = framesOut; mRsmpInIndex += framesIn; framesOut -= framesIn; - if ((int)mChannelCount == mReqChannelCount || + if (mChannelCount == mReqChannelCount || mFormat != AUDIO_FORMAT_PCM_16_BIT) { memcpy(dst, src, framesIn * mFrameSize); } else { @@ -6197,7 +6197,7 @@ bool AudioFlinger::RecordThread::threadLoop() if (framesOut && mFrameCount == mRsmpInIndex) { void *readInto; if (framesOut == mFrameCount && - ((int)mChannelCount == mReqChannelCount || + (mChannelCount == mReqChannelCount || mFormat != AUDIO_FORMAT_PCM_16_BIT)) { readInto = buffer.raw; framesOut = 0; @@ -6576,7 +6576,7 @@ void AudioFlinger::RecordThread::dumpInternals(int fd, const Vector<String16>& a result.append(buffer); snprintf(buffer, SIZE, "Resampling: %d\n", (mResampler != NULL)); result.append(buffer); - snprintf(buffer, SIZE, "Out channel count: %d\n", mReqChannelCount); + snprintf(buffer, SIZE, "Out channel count: %u\n", mReqChannelCount); result.append(buffer); snprintf(buffer, SIZE, "Out sample rate: %u\n", mReqSampleRate); result.append(buffer); @@ -6674,7 +6674,7 @@ bool AudioFlinger::RecordThread::checkForNewParameters_l() int value; audio_format_t reqFormat = mFormat; uint32_t reqSamplingRate = mReqSampleRate; - int reqChannelCount = mReqChannelCount; + uint32_t reqChannelCount = mReqChannelCount; if (param.getInt(String8(AudioParameter::keySamplingRate), value) == NO_ERROR) { reqSamplingRate = value; diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h index 61f459c..2541b15 100644 --- a/services/audioflinger/AudioFlinger.h +++ b/services/audioflinger/AudioFlinger.h @@ -419,7 +419,7 @@ private: return mFormat; } - int channelCount() const { return mChannelCount; } + uint32_t channelCount() const { return mChannelCount; } audio_channel_mask_t channelMask() const { return mChannelMask; } @@ -565,7 +565,7 @@ private: // dynamic externally-visible uint32_t sampleRate() const { return mSampleRate; } - int channelCount() const { return mChannelCount; } + uint32_t channelCount() const { return mChannelCount; } audio_channel_mask_t channelMask() const { return mChannelMask; } audio_format_t format() const { return mFormat; } // Called by AudioFlinger::frameCount(audio_io_handle_t output) and effects, @@ -1593,7 +1593,7 @@ public: int16_t *mRsmpInBuffer; size_t mRsmpInIndex; size_t mInputBytes; - const int mReqChannelCount; + const uint32_t mReqChannelCount; const uint32_t mReqSampleRate; ssize_t mBytesRead; // sync event triggering actual audio capture. Frames read before this event will |