OSDN Git Service

Clean up channel count and channel mask
authorGlenn Kasten <gkasten@google.com>
Wed, 14 Nov 2012 20:47:55 +0000 (12:47 -0800)
committerGlenn Kasten <gkasten@google.com>
Mon, 19 Nov 2012 19:25:58 +0000 (11:25 -0800)
Channel count is uint32_t.
Remove redundant mask parameter to AudioTrack::createTrack_l()
    and AudioRecord::openRecord_l().

Change-Id: I5dc2b18eb609b2c0dc3091994cbaa4628062c17f

include/media/AudioRecord.h
include/media/AudioTrack.h
media/libmedia/AudioRecord.cpp
media/libmedia/AudioTrack.cpp
services/audioflinger/AudioFlinger.cpp
services/audioflinger/AudioFlinger.h

index cd7ff92..ae444c3 100644 (file)
@@ -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();
index 61214ec..f1b77ab 100644 (file)
@@ -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,
index 2a5a996..c2ef68c 100644 (file)
@@ -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
index ff1b21b..e40895a 100644 (file)
@@ -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,
index 5f3754f..0c1ab3c 100644 (file)
@@ -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;
index 61f459c..2541b15 100644 (file)
@@ -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