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