IStreamSource.h revision 32f3cefa373cd55e63deda36ca9d07c7fe22eaaf
1e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber/* 2e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * Copyright (C) 2010 The Android Open Source Project 3e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * 4e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * you may not use this file except in compliance with the License. 6e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * You may obtain a copy of the License at 7e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * 8e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * 10e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * Unless required by applicable law or agreed to in writing, software 11e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * See the License for the specific language governing permissions and 14e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber * limitations under the License. 15e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber */ 16e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 17e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber#ifndef ANDROID_ISTREAMSOURCE_H_ 18e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 19e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber#define ANDROID_ISTREAMSOURCE_H_ 20e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 21e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber#include <binder/IInterface.h> 22e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 23e2b1028852120bcfded33b8f06f66b780437fe92Andreas Hubernamespace android { 24e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 2514acc736e336cbd6026df781d4f411e908831815Andreas Huberstruct AMessage; 26e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huberstruct IMemory; 27e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huberstruct IStreamListener; 28e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 29e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huberstruct IStreamSource : public IInterface { 30e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber DECLARE_META_INTERFACE(StreamSource); 31e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 32e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber virtual void setListener(const sp<IStreamListener> &listener) = 0; 33e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber virtual void setBuffers(const Vector<sp<IMemory> > &buffers) = 0; 34e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 35e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber virtual void onBufferAvailable(size_t index) = 0; 36e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber}; 37e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 38e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huberstruct IStreamListener : public IInterface { 39e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber DECLARE_META_INTERFACE(StreamListener); 40e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 41e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber enum Command { 4214acc736e336cbd6026df781d4f411e908831815Andreas Huber EOS, 43e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber DISCONTINUITY, 44e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber }; 45e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 46e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber virtual void queueBuffer(size_t index, size_t size) = 0; 4714acc736e336cbd6026df781d4f411e908831815Andreas Huber 4832f3cefa373cd55e63deda36ca9d07c7fe22eaafAndreas Huber // When signalling a discontinuity you can optionally 4932f3cefa373cd55e63deda36ca9d07c7fe22eaafAndreas Huber // specify an int64_t PTS timestamp in "msg". 5032f3cefa373cd55e63deda36ca9d07c7fe22eaafAndreas Huber // If present, rendering of data following the discontinuity 5132f3cefa373cd55e63deda36ca9d07c7fe22eaafAndreas Huber // will be suppressed until media time reaches this timestamp. 5232f3cefa373cd55e63deda36ca9d07c7fe22eaafAndreas Huber static const char *const kKeyResumeAtPTS; 5332f3cefa373cd55e63deda36ca9d07c7fe22eaafAndreas Huber 5414acc736e336cbd6026df781d4f411e908831815Andreas Huber virtual void issueCommand( 5514acc736e336cbd6026df781d4f411e908831815Andreas Huber Command cmd, bool synchronous, const sp<AMessage> &msg = NULL) = 0; 56e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber}; 57e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 58e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber//////////////////////////////////////////////////////////////////////////////// 59e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 60e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huberstruct BnStreamSource : public BnInterface<IStreamSource> { 61e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber virtual status_t onTransact( 62e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber uint32_t code, const Parcel &data, Parcel *reply, 63e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber uint32_t flags = 0); 64e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber}; 65e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 66e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huberstruct BnStreamListener : public BnInterface<IStreamListener> { 67e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber virtual status_t onTransact( 68e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber uint32_t code, const Parcel &data, Parcel *reply, 69e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber uint32_t flags = 0); 70e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber}; 71e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 72e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber} // namespace android 73e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber 74e2b1028852120bcfded33b8f06f66b780437fe92Andreas Huber#endif // ANDROID_ISTREAMSOURCE_H_ 75