Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b119a63 authored by Glenn Kasten's avatar Glenn Kasten Committed by Android (Google) Code Review
Browse files

Merge "AudioBufferProvider comments and cleanup"

parents aac99487 c2db119d
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -7,7 +7,6 @@ LOCAL_SRC_FILES:= \
    AudioMixer.cpp.arm          \
    AudioResampler.cpp.arm      \
    AudioPolicyService.cpp      \
    AudioBufferProvider.cpp     \
    ServiceUtilities.cpp
#   AudioResamplerSinc.cpp.arm
#   AudioResamplerCubic.cpp.arm
+0 −28
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#undef __STRICT_ANSI__
#define __STDINT_LIMITS
#define __STDC_LIMIT_MACROS
#include <stdint.h>

#include "AudioBufferProvider.h"

namespace android {

const int64_t AudioBufferProvider::kInvalidPTS = INT64_MAX;

}; // namespace android
+3 −4
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@
#ifndef ANDROID_AUDIO_BUFFER_PROVIDER_H
#define ANDROID_AUDIO_BUFFER_PROVIDER_H

#include <stdint.h>
#include <sys/types.h>
#include <utils/Errors.h>

namespace android {
@@ -29,6 +27,7 @@ class AudioBufferProvider
public:

    struct Buffer {
        Buffer() : raw(NULL), frameCount(0) { }
        union {
            void*       raw;
            short*      i16;
@@ -40,12 +39,12 @@ public:
    virtual ~AudioBufferProvider() {}

    // value representing an invalid presentation timestamp
    static const int64_t kInvalidPTS;
    static const int64_t kInvalidPTS = 0x7FFFFFFFFFFFFFFFLL;    // <stdint.h> is too painful

    // pts is the local time when the next sample yielded by getNextBuffer
    // will be rendered.
    // Pass kInvalidPTS if the PTS is unknown or not applicable.
    virtual status_t getNextBuffer(Buffer* buffer, int64_t pts) = 0;
    virtual status_t getNextBuffer(Buffer* buffer, int64_t pts = kInvalidPTS) = 0;

    virtual void releaseBuffer(Buffer* buffer) = 0;
};
+11 −5
Original line number Diff line number Diff line
@@ -2909,8 +2909,7 @@ bool AudioFlinger::DirectOutputThread::threadLoop()
            // output audio to hardware
            while (frameCount) {
                buffer.frameCount = frameCount;
                activeTrack->getNextBuffer(&buffer,
                                           AudioBufferProvider::kInvalidPTS);
                activeTrack->getNextBuffer(&buffer);
                if (CC_UNLIKELY(buffer.raw == NULL)) {
                    memset(curBuf, 0, frameCount * mFrameSize);
                    break;
@@ -3408,11 +3407,14 @@ AudioFlinger::ThreadBase::TrackBase::~TrackBase()
    }
}

// AudioBufferProvider interface
// getNextBuffer() = 0;
// This implementation of releaseBuffer() is used by Track and RecordTrack, but not TimedTrack
void AudioFlinger::ThreadBase::TrackBase::releaseBuffer(AudioBufferProvider::Buffer* buffer)
{
    buffer->raw = NULL;
    mFrameCount = buffer->frameCount;
    step();
    (void) step();      // ignore return value of step()
    buffer->frameCount = 0;
}

@@ -3558,6 +3560,7 @@ void AudioFlinger::PlaybackThread::Track::dump(char* buffer, size_t size)
            (int)mAuxBuffer);
}

// AudioBufferProvider interface
status_t AudioFlinger::PlaybackThread::Track::getNextBuffer(
    AudioBufferProvider::Buffer* buffer, int64_t pts)
{
@@ -4106,6 +4109,7 @@ void AudioFlinger::PlaybackThread::TimedTrack::timedYieldSilence(
    mTimedAudioOutputOnTime = false;
}

// AudioBufferProvider interface
void AudioFlinger::PlaybackThread::TimedTrack::releaseBuffer(
    AudioBufferProvider::Buffer* buffer) {

@@ -4190,6 +4194,7 @@ AudioFlinger::RecordThread::RecordTrack::~RecordTrack()
    }
}

// AudioBufferProvider interface
status_t AudioFlinger::RecordThread::RecordTrack::getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts)
{
    audio_track_cblk_t* cblk = this->cblk();
@@ -4877,8 +4882,7 @@ bool AudioFlinger::RecordThread::threadLoop()
            }

            buffer.frameCount = mFrameCount;
            if (CC_LIKELY(mActiveTrack->getNextBuffer(
                    &buffer, AudioBufferProvider::kInvalidPTS) == NO_ERROR)) {
            if (CC_LIKELY(mActiveTrack->getNextBuffer(&buffer) == NO_ERROR)) {
                size_t framesOut = buffer.frameCount;
                if (mResampler == NULL) {
                    // no resampling
@@ -5155,6 +5159,7 @@ status_t AudioFlinger::RecordThread::dump(int fd, const Vector<String16>& args)
    return NO_ERROR;
}

// AudioBufferProvider interface
status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts)
{
    size_t framesReq = buffer->frameCount;
@@ -5193,6 +5198,7 @@ status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer*
    return NO_ERROR;
}

// AudioBufferProvider interface
void AudioFlinger::RecordThread::releaseBuffer(AudioBufferProvider::Buffer* buffer)
{
    mRsmpInIndex += buffer->frameCount;
+15 −13
Original line number Diff line number Diff line
@@ -339,9 +339,8 @@ private:
                                TrackBase(const TrackBase&);
                                TrackBase& operator = (const TrackBase&);

            virtual status_t getNextBuffer(
                AudioBufferProvider::Buffer* buffer,
                int64_t pts) = 0;
            // AudioBufferProvider interface
            virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts) = 0;
            virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer);

            audio_format_t format() const {
@@ -627,9 +626,10 @@ private:
                                Track(const Track&);
                                Track& operator = (const Track&);

            virtual status_t getNextBuffer(
                AudioBufferProvider::Buffer* buffer,
                int64_t pts);
            // AudioBufferProvider interface
            virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts = kInvalidPTS);
            // releaseBuffer() not overridden

            virtual uint32_t framesReady() const;

            bool isMuted() const { return mMute; }
@@ -696,9 +696,10 @@ private:

            virtual uint32_t framesReady() const;

            virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer,
                                           int64_t pts);
            // AudioBufferProvider interface
            virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts);
            virtual void releaseBuffer(AudioBufferProvider::Buffer* buffer);

            void timedYieldSamples(AudioBufferProvider::Buffer* buffer);
            void timedYieldSilence(uint32_t numFrames,
                                   AudioBufferProvider::Buffer* buffer);
@@ -1062,9 +1063,9 @@ private:
                                RecordTrack(const RecordTrack&);
                                RecordTrack& operator = (const RecordTrack&);

            virtual status_t getNextBuffer(
                AudioBufferProvider::Buffer* buffer,
                int64_t pts);
            // AudioBufferProvider interface
            virtual status_t getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts = kInvalidPTS);
            // releaseBuffer() not overridden

            bool                mOverflow;
        };
@@ -1100,9 +1101,10 @@ private:
                AudioStreamIn* clearInput();
                virtual audio_stream_t* stream();

        virtual status_t    getNextBuffer(AudioBufferProvider::Buffer* buffer,
                                          int64_t pts);
        // AudioBufferProvider interface
        virtual status_t    getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts);
        virtual void        releaseBuffer(AudioBufferProvider::Buffer* buffer);

        virtual bool        checkForNewParameters_l();
        virtual String8     getParameters(const String8& keys);
        virtual void        audioConfigChanged_l(int event, int param = 0);
Loading