SourceAudioBufferProvider.h revision 288ed2103d96f3aabd7e6bea3c080ab6db164049
1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/* 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 509e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * you may not use this file except in compliance with the License. 609e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * You may obtain a copy of the License at 709e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 909e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1109e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * distributed under the License is distributed on an "AS IS" BASIS, 1209e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1309e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * See the License for the specific language governing permissions and 1409e713789e31f640a80af1cddb2fc40cbeb02ad5Ben Cheng * limitations under the License. 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */ 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// Implementation of AudioBufferProvider that wraps an NBAIO_Source 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifndef ANDROID_SOURCE_AUDIO_BUFFER_PROVIDER_H 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define ANDROID_SOURCE_AUDIO_BUFFER_PROVIDER_H 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "NBAIO.h" 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "ExtendedAudioBufferProvider.h" 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectnamespace android { 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass SourceAudioBufferProvider : public ExtendedAudioBufferProvider { 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic: 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project SourceAudioBufferProvider(const sp<NBAIO_Source>& source); 319524e4158fbb988b6a5e4f5be68ee10b7e4dd6d8Jeff Brown virtual ~SourceAudioBufferProvider(); 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // AudioBufferProvider interface 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual status_t getNextBuffer(Buffer *buffer, int64_t pts); 3541e0cef301637cd1f2daf72953d1230b7fb174b8Andy McFadden virtual void releaseBuffer(Buffer *buffer); 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // ExtendedAudioBufferProvider interface 3813e715b491e876865e752a3a69dd6f347049a488Jeff Brown virtual size_t framesReady() const; 3913e715b491e876865e752a3a69dd6f347049a488Jeff Brown 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate: 41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project const sp<NBAIO_Source> mSource; // the wrapped source 42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project /*const*/ size_t mFrameBitShift; // log2(frame size in bytes) 43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void* mAllocated; // pointer to base of allocated memory 4413e715b491e876865e752a3a69dd6f347049a488Jeff Brown size_t mSize; // size of mAllocated in frames 4513e715b491e876865e752a3a69dd6f347049a488Jeff Brown size_t mOffset; // frame offset within mAllocated of valid data 46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project size_t mRemaining; // frame count within mAllocated of valid data 47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project size_t mGetCount; // buffer.frameCount of the most recent getNextBuffer 48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; 49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 5013e715b491e876865e752a3a69dd6f347049a488Jeff Brown} // namespace android 51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif // ANDROID_SOURCE_AUDIO_BUFFER_PROVIDER_H 53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project