diff options
author | Andy McFadden <fadden@android.com> | 2013-02-19 07:28:30 -0800 |
---|---|---|
committer | Andy McFadden <fadden@android.com> | 2013-03-04 15:03:53 -0800 |
commit | 7cd58537932ef6f481f68be0b9c597a89cebdfec (patch) | |
tree | 02a57bed3a2de95c9eac0375cb282c6ad85a5eea /media/libstagefright/include/OMXNodeInstance.h | |
parent | bf04b5860182d8f4130dcb5d6d88ee68a58c99cd (diff) | |
download | frameworks_av-7cd58537932ef6f481f68be0b9c597a89cebdfec.zip frameworks_av-7cd58537932ef6f481f68be0b9c597a89cebdfec.tar.gz frameworks_av-7cd58537932ef6f481f68be0b9c597a89cebdfec.tar.bz2 |
Implement Surface input to MediaCodec.
Also, renamed a CHECK_INTERFACE macro that was clashing with the
Binder version.
Bug 7991062
Change-Id: If5e6ed0a06d9f67975497676e4b05abe3aa3d6c0
Diffstat (limited to 'media/libstagefright/include/OMXNodeInstance.h')
-rw-r--r-- | media/libstagefright/include/OMXNodeInstance.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/media/libstagefright/include/OMXNodeInstance.h b/media/libstagefright/include/OMXNodeInstance.h index 47ca579..67aba6b 100644 --- a/media/libstagefright/include/OMXNodeInstance.h +++ b/media/libstagefright/include/OMXNodeInstance.h @@ -27,6 +27,7 @@ namespace android { class IOMXObserver; struct OMXMaster; +struct GraphicBufferSource; struct OMXNodeInstance { OMXNodeInstance( @@ -65,6 +66,11 @@ struct OMXNodeInstance { OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); + status_t createInputSurface( + OMX_U32 portIndex, sp<IGraphicBufferProducer> *bufferProducer); + + status_t signalEndOfInputStream(); + status_t allocateBuffer( OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer, void **buffer_data); @@ -82,12 +88,18 @@ struct OMXNodeInstance { OMX_U32 rangeOffset, OMX_U32 rangeLength, OMX_U32 flags, OMX_TICKS timestamp); + status_t emptyDirectBuffer( + OMX_BUFFERHEADERTYPE *header, + OMX_U32 rangeOffset, OMX_U32 rangeLength, + OMX_U32 flags, OMX_TICKS timestamp); + status_t getExtensionIndex( const char *parameterName, OMX_INDEXTYPE *index); void onMessage(const omx_message &msg); void onObserverDied(OMXMaster *master); void onGetHandleFailed(); + void onEvent(OMX_EVENTTYPE event, OMX_U32 arg1, OMX_U32 arg2); static OMX_CALLBACKTYPE kCallbacks; @@ -100,6 +112,13 @@ private: sp<IOMXObserver> mObserver; bool mDying; + // Lock only covers mGraphicBufferSource. We can't always use mLock + // because of rare instances where we'd end up locking it recursively. + Mutex mGraphicBufferSourceLock; + // Access this through getGraphicBufferSource(). + sp<GraphicBufferSource> mGraphicBufferSource; + + struct ActiveBuffer { OMX_U32 mPortIndex; OMX::buffer_id mID; @@ -132,6 +151,11 @@ private: OMX_IN OMX_PTR pAppData, OMX_IN OMX_BUFFERHEADERTYPE *pBuffer); + status_t storeMetaDataInBuffers_l(OMX_U32 portIndex, OMX_BOOL enable); + + sp<GraphicBufferSource> getGraphicBufferSource(); + void setGraphicBufferSource(const sp<GraphicBufferSource>& bufferSource); + OMXNodeInstance(const OMXNodeInstance &); OMXNodeInstance &operator=(const OMXNodeInstance &); }; |