1288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten/* 2288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * Copyright (C) 2012 The Android Open Source Project 3288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * 4288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 5288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * you may not use this file except in compliance with the License. 6288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * You may obtain a copy of the License at 7288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * 8288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 9288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * 10288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * Unless required by applicable law or agreed to in writing, software 11288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 12288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * See the License for the specific language governing permissions and 14288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten * limitations under the License. 15288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten */ 16288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten 17288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten#ifndef ANDROID_EXTENDED_AUDIO_BUFFER_PROVIDER_H 18288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten#define ANDROID_EXTENDED_AUDIO_BUFFER_PROVIDER_H 19288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten 202dd4bdd715f586d4d30cf90cc6fc2bbfbce60fe0Glenn Kasten#include <media/AudioBufferProvider.h> 216466c9e6e6278c740aed77f695f679be9f5db478Glenn Kasten#include <media/AudioTimestamp.h> 22288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten 23288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kastennamespace android { 24288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten 25288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kastenclass ExtendedAudioBufferProvider : public AudioBufferProvider { 26288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kastenpublic: 27288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten virtual size_t framesReady() const = 0; // see description at AudioFlinger.h 286466c9e6e6278c740aed77f695f679be9f5db478Glenn Kasten 296466c9e6e6278c740aed77f695f679be9f5db478Glenn Kasten // Return the total number of frames that have been obtained and released 30818e7a32ce3633980138aff2c2bfcc5158b3cfccAndy Hung virtual int64_t framesReleased() const { return 0; } 316466c9e6e6278c740aed77f695f679be9f5db478Glenn Kasten 326466c9e6e6278c740aed77f695f679be9f5db478Glenn Kasten // Invoked by buffer consumer when a new timestamp is available. 336466c9e6e6278c740aed77f695f679be9f5db478Glenn Kasten // Default implementation ignores the timestamp. 34818e7a32ce3633980138aff2c2bfcc5158b3cfccAndy Hung virtual void onTimestamp(const ExtendedTimestamp& timestamp) { } 35288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten}; 36288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten 37288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten} // namespace android 38288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten 39288ed2103d96f3aabd7e6bea3c080ab6db164049Glenn Kasten#endif // ANDROID_EXTENDED_AUDIO_BUFFER_PROVIDER_H 40