1318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber/* 2318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * Copyright (C) 2009 The Android Open Source Project 3318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * 4318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * you may not use this file except in compliance with the License. 6318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * You may obtain a copy of the License at 7318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * 8318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * 10318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * Unless required by applicable law or agreed to in writing, software 11318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * See the License for the specific language governing permissions and 14318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber * limitations under the License. 15318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber */ 16318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 17318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber#ifndef OMX_NODE_INSTANCE_H_ 18318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 19318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber#define OMX_NODE_INSTANCE_H_ 20318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 21318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber#include "OMX.h" 22318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 23318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber#include <utils/RefBase.h> 24318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber#include <utils/threads.h> 25318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 26318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Hubernamespace android { 27318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 28318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huberclass IOMXObserver; 29f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huberstruct OMXMaster; 307cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFaddenstruct GraphicBufferSource; 31318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 32318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huberstruct OMXNodeInstance { 33318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMXNodeInstance( 34f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar OMX *owner, const sp<IOMXObserver> &observer, const char *name); 35318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 36318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber void setHandle(OMX::node_id node_id, OMX_HANDLETYPE handle); 37318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 38318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX *owner(); 39318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber sp<IOMXObserver> observer(); 40318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX::node_id nodeID(); 41318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 42f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber status_t freeNode(OMXMaster *master); 43318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 44318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t sendCommand(OMX_COMMANDTYPE cmd, OMX_S32 param); 45318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t getParameter(OMX_INDEXTYPE index, void *params, size_t size); 46318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 47318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t setParameter( 48318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_INDEXTYPE index, const void *params, size_t size); 49318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 50318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t getConfig(OMX_INDEXTYPE index, void *params, size_t size); 51318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t setConfig(OMX_INDEXTYPE index, const void *params, size_t size); 52318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 53b1d666f5cb555d135eb69e005e88a03330bbb54cJamie Gennis status_t getState(OMX_STATETYPE* state); 54b1d666f5cb555d135eb69e005e88a03330bbb54cJamie Gennis 5583750eaf5a3f38c243a9e7eb81d4b2421e3a0d88Jamie Gennis status_t enableGraphicBuffers(OMX_U32 portIndex, OMX_BOOL enable); 56e2ce6458659c6e1bad420357b61dc10cd8bbe2abJamie Gennis 57e2ce6458659c6e1bad420357b61dc10cd8bbe2abJamie Gennis status_t getGraphicBufferUsage(OMX_U32 portIndex, OMX_U32* usage); 58e2ce6458659c6e1bad420357b61dc10cd8bbe2abJamie Gennis 59e870772a78ffe08b1c14a791e368f1499f1be0f3James Dong status_t storeMetaDataInBuffers(OMX_U32 portIndex, OMX_BOOL enable); 6083750eaf5a3f38c243a9e7eb81d4b2421e3a0d88Jamie Gennis 6156ce726019f700a95ce5b45beebceadae4836e30Lajos Molnar status_t prepareForAdaptivePlayback( 6256ce726019f700a95ce5b45beebceadae4836e30Lajos Molnar OMX_U32 portIndex, OMX_BOOL enable, 6356ce726019f700a95ce5b45beebceadae4836e30Lajos Molnar OMX_U32 maxFrameWidth, OMX_U32 maxFrameHeight); 6456ce726019f700a95ce5b45beebceadae4836e30Lajos Molnar 655a446aafff3020d607ad6fb14cc7ae76dd8f7947Rachad status_t configureVideoTunnelMode( 665a446aafff3020d607ad6fb14cc7ae76dd8f7947Rachad OMX_U32 portIndex, OMX_BOOL tunneled, 675a446aafff3020d607ad6fb14cc7ae76dd8f7947Rachad OMX_U32 audioHwSync, native_handle_t **sidebandHandle); 685a446aafff3020d607ad6fb14cc7ae76dd8f7947Rachad 69318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t useBuffer( 70318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_U32 portIndex, const sp<IMemory> ¶ms, 71318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX::buffer_id *buffer); 72318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 7383750eaf5a3f38c243a9e7eb81d4b2421e3a0d88Jamie Gennis status_t useGraphicBuffer( 7483750eaf5a3f38c243a9e7eb81d4b2421e3a0d88Jamie Gennis OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, 7583750eaf5a3f38c243a9e7eb81d4b2421e3a0d88Jamie Gennis OMX::buffer_id *buffer); 7683750eaf5a3f38c243a9e7eb81d4b2421e3a0d88Jamie Gennis 77d0715867861c216e88a4a7523b6da8a3cb128724Lajos Molnar status_t updateGraphicBufferInMeta( 78d0715867861c216e88a4a7523b6da8a3cb128724Lajos Molnar OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, 79d0715867861c216e88a4a7523b6da8a3cb128724Lajos Molnar OMX::buffer_id buffer); 80d0715867861c216e88a4a7523b6da8a3cb128724Lajos Molnar 817cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden status_t createInputSurface( 827cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden OMX_U32 portIndex, sp<IGraphicBufferProducer> *bufferProducer); 837cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 847cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden status_t signalEndOfInputStream(); 857cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 86318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t allocateBuffer( 87570a3cb7582daa030cb38eedc5eb6a06f86ecc7fAndreas Huber OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer, 88570a3cb7582daa030cb38eedc5eb6a06f86ecc7fAndreas Huber void **buffer_data); 89318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 90318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t allocateBufferWithBackup( 91318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_U32 portIndex, const sp<IMemory> ¶ms, 92318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX::buffer_id *buffer); 93318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 94318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t freeBuffer(OMX_U32 portIndex, OMX::buffer_id buffer); 95318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 96318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t fillBuffer(OMX::buffer_id buffer); 97318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 98318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t emptyBuffer( 99318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX::buffer_id buffer, 100318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_U32 rangeOffset, OMX_U32 rangeLength, 101318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_U32 flags, OMX_TICKS timestamp); 102318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 1037cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden status_t emptyDirectBuffer( 1047cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden OMX_BUFFERHEADERTYPE *header, 1057cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden OMX_U32 rangeOffset, OMX_U32 rangeLength, 1067cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden OMX_U32 flags, OMX_TICKS timestamp); 1077cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 108318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber status_t getExtensionIndex( 109318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber const char *parameterName, OMX_INDEXTYPE *index); 110318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 111e40cda70eec141fa05cbcca1de420fdb22b98be6Andreas Huber status_t setInternalOption( 112e40cda70eec141fa05cbcca1de420fdb22b98be6Andreas Huber OMX_U32 portIndex, 113e40cda70eec141fa05cbcca1de420fdb22b98be6Andreas Huber IOMX::InternalOptionType type, 114e40cda70eec141fa05cbcca1de420fdb22b98be6Andreas Huber const void *data, 115e40cda70eec141fa05cbcca1de420fdb22b98be6Andreas Huber size_t size); 116e40cda70eec141fa05cbcca1de420fdb22b98be6Andreas Huber 117318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber void onMessage(const omx_message &msg); 118f0fb96c352f30b812a4903a1d783a715e1e817bdAndreas Huber void onObserverDied(OMXMaster *master); 119318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber void onGetHandleFailed(); 1207cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden void onEvent(OMX_EVENTTYPE event, OMX_U32 arg1, OMX_U32 arg2); 121318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 122318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber static OMX_CALLBACKTYPE kCallbacks; 123318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 124318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huberprivate: 125318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber Mutex mLock; 126318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 127318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX *mOwner; 128318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX::node_id mNodeID; 129318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_HANDLETYPE mHandle; 130318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber sp<IOMXObserver> mObserver; 131134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber bool mDying; 132318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 1337cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden // Lock only covers mGraphicBufferSource. We can't always use mLock 1347cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden // because of rare instances where we'd end up locking it recursively. 1357cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden Mutex mGraphicBufferSourceLock; 1367cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden // Access this through getGraphicBufferSource(). 1377cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden sp<GraphicBufferSource> mGraphicBufferSource; 1387cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 1397cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 140d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber struct ActiveBuffer { 141d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber OMX_U32 mPortIndex; 142d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber OMX::buffer_id mID; 143d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber }; 144d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber Vector<ActiveBuffer> mActiveBuffers; 145609b815a3131d22da38b2f452faa9f89daad4039Andy Hung#ifdef __LP64__ 146609b815a3131d22da38b2f452faa9f89daad4039Andy Hung Mutex mBufferIDLock; 147609b815a3131d22da38b2f452faa9f89daad4039Andy Hung uint32_t mBufferIDCount; 148609b815a3131d22da38b2f452faa9f89daad4039Andy Hung KeyedVector<OMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader; 149609b815a3131d22da38b2f452faa9f89daad4039Andy Hung KeyedVector<OMX_BUFFERHEADERTYPE *, OMX::buffer_id> mBufferHeaderToBufferID; 150609b815a3131d22da38b2f452faa9f89daad4039Andy Hung#endif 151d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber 152f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar // For debug support 153f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar char *mName; 154f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar int DEBUG; 155f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar size_t mNumPortBuffers[2]; // modified under mLock, read outside for debug 156f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar Mutex mDebugLock; 157f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar // following are modified and read under mDebugLock 158f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar int DEBUG_BUMP; 159f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar SortedVector<OMX_BUFFERHEADERTYPE *> mInputBuffersWithCodec, mOutputBuffersWithCodec; 160f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar size_t mDebugLevelBumpPendingBuffers[2]; 161f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar void bumpDebugLevel_l(size_t numInputBuffers, size_t numOutputBuffers); 162f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar void unbumpDebugLevel_l(size_t portIndex); 163f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 164318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber ~OMXNodeInstance(); 165318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 166d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber void addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id); 167d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber void removeActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id); 168d6703ab22c85b43fdb2deb78a37e51465c902a5fAndreas Huber void freeActiveBuffers(); 169609b815a3131d22da38b2f452faa9f89daad4039Andy Hung 170609b815a3131d22da38b2f452faa9f89daad4039Andy Hung // For buffer id management 171609b815a3131d22da38b2f452faa9f89daad4039Andy Hung OMX::buffer_id makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); 172609b815a3131d22da38b2f452faa9f89daad4039Andy Hung OMX_BUFFERHEADERTYPE *findBufferHeader(OMX::buffer_id buffer); 173609b815a3131d22da38b2f452faa9f89daad4039Andy Hung OMX::buffer_id findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); 174609b815a3131d22da38b2f452faa9f89daad4039Andy Hung void invalidateBufferID(OMX::buffer_id buffer); 175609b815a3131d22da38b2f452faa9f89daad4039Andy Hung 176c5a57efb706ec79032fc09c43b16d11ed0876604Anu Sundararajan status_t useGraphicBuffer2_l( 177c5a57efb706ec79032fc09c43b16d11ed0876604Anu Sundararajan OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, 178c5a57efb706ec79032fc09c43b16d11ed0876604Anu Sundararajan OMX::buffer_id *buffer); 179318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber static OMX_ERRORTYPE OnEvent( 180318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_HANDLETYPE hComponent, 181318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_PTR pAppData, 182318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_EVENTTYPE eEvent, 183318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_U32 nData1, 184318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_U32 nData2, 185318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_PTR pEventData); 186318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 187318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber static OMX_ERRORTYPE OnEmptyBufferDone( 188318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_HANDLETYPE hComponent, 189318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_PTR pAppData, 190318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_BUFFERHEADERTYPE *pBuffer); 191318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 192318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber static OMX_ERRORTYPE OnFillBufferDone( 193318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_HANDLETYPE hComponent, 194318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_PTR pAppData, 195318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMX_IN OMX_BUFFERHEADERTYPE *pBuffer); 196318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 197512e979284de984427e5b2f73b9054ae1b5e2b0aLajos Molnar status_t storeMetaDataInBuffers_l( 198512e979284de984427e5b2f73b9054ae1b5e2b0aLajos Molnar OMX_U32 portIndex, OMX_BOOL enable, 199512e979284de984427e5b2f73b9054ae1b5e2b0aLajos Molnar OMX_BOOL useGraphicBuffer, OMX_BOOL *usingGraphicBufferInMeta); 2007cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 201f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar status_t emptyBuffer_l( 202f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar OMX_BUFFERHEADERTYPE *header, 203f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar OMX_U32 flags, OMX_TICKS timestamp, intptr_t debugAddr); 204f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 2057cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden sp<GraphicBufferSource> getGraphicBufferSource(); 2067cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden void setGraphicBufferSource(const sp<GraphicBufferSource>& bufferSource); 2077cd58537932ef6f481f68be0b9c597a89cebdfecAndy McFadden 208318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMXNodeInstance(const OMXNodeInstance &); 209318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber OMXNodeInstance &operator=(const OMXNodeInstance &); 210318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber}; 211318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 212318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber} // namespace android 213318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber 214318ad9c1d9d6515026dfc2c021359d27decaa7a1Andreas Huber#endif // OMX_NODE_INSTANCE_H_ 215