OSDN Git Service

Merge "AudioRecord and HAL input stream must be 16-bit PCM only"
authorGlenn Kasten <gkasten@google.com>
Tue, 30 Jul 2013 16:35:09 +0000 (16:35 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Tue, 30 Jul 2013 16:35:09 +0000 (16:35 +0000)
1  2 
services/audioflinger/AudioFlinger.cpp
services/audioflinger/Threads.cpp

@@@ -4916,11 -4365,15 +4917,14 @@@ void AudioFlinger::RecordThread::readIn
  
      mSampleRate = mInput->stream->common.get_sample_rate(&mInput->stream->common);
      mChannelMask = mInput->stream->common.get_channels(&mInput->stream->common);
 -    mChannelCount = (uint16_t)popcount(mChannelMask);
 +    mChannelCount = popcount(mChannelMask);
      mFormat = mInput->stream->common.get_format(&mInput->stream->common);
+     if (mFormat != AUDIO_FORMAT_PCM_16_BIT) {
+         ALOGE("HAL format %d not supported; must be AUDIO_FORMAT_PCM_16_BIT", mFormat);
+     }
      mFrameSize = audio_stream_frame_size(&mInput->stream->common);
 -    mInputBytes = mInput->stream->common.get_buffer_size(&mInput->stream->common);
 -    mFrameCount = mInputBytes / mFrameSize;
 -    mNormalFrameCount = mFrameCount; // not used by record, but used by input effects
 +    mBufferSize = mInput->stream->common.get_buffer_size(&mInput->stream->common);
 +    mFrameCount = mBufferSize / mFrameSize;
      mRsmpInBuffer = new int16_t[mFrameCount * mChannelCount];
  
      if (mSampleRate != mReqSampleRate && mChannelCount <= FCC_2 && mReqChannelCount <= FCC_2)