Loading media/libstagefright/include/OMX.h +4 −1 Original line number Diff line number Diff line Loading @@ -21,12 +21,15 @@ #include <utils/threads.h> #include <utils/KeyedVector.h> #include "OmxNodeOwner.h" namespace android { struct OMXMaster; struct OMXNodeInstance; class OMX : public BnOMX, public OmxNodeOwner, public IBinder::DeathRecipient { public: OMX(); Loading @@ -43,7 +46,7 @@ public: virtual void binderDied(const wp<IBinder> &the_late_who); status_t freeNode(const sp<OMXNodeInstance>& instance); virtual status_t freeNode(const sp<OMXNodeInstance>& instance); protected: virtual ~OMX(); Loading media/libstagefright/include/OMXNodeInstance.h +25 −24 Original line number Diff line number Diff line Loading @@ -18,11 +18,12 @@ #define OMX_NODE_INSTANCE_H_ #include "OMX.h" #include <media/IOMX.h> #include <utils/RefBase.h> #include <utils/SortedVector.h> #include <utils/threads.h> #include <utils/KeyedVector.h> #include <utils/SortedVector.h> #include "OmxNodeOwner.h" namespace android { class IOMXBufferSource; Loading @@ -32,7 +33,7 @@ class OMXBuffer; struct OMXNodeInstance : public BnOMXNode { OMXNodeInstance( OMX *owner, const sp<IOMXObserver> &observer, const char *name); OmxNodeOwner *owner, const sp<IOMXObserver> &observer, const char *name); void setHandle(OMX_HANDLETYPE handle); Loading Loading @@ -66,7 +67,7 @@ struct OMXNodeInstance : public BnOMXNode { const sp<IOMXBufferSource> &bufferSource); status_t allocateSecureBuffer( OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer, OMX_U32 portIndex, size_t size, IOMX::buffer_id *buffer, void **buffer_data, sp<NativeHandle> *native_handle); status_t useBuffer( Loading Loading @@ -106,7 +107,7 @@ private: Mutex mLock; OMX *mOwner; OmxNodeOwner *mOwner; OMX_HANDLETYPE mHandle; sp<IOMXObserver> mObserver; sp<CallbackDispatcher> mDispatcher; Loading @@ -125,14 +126,14 @@ private: struct ActiveBuffer { OMX_U32 mPortIndex; OMX::buffer_id mID; IOMX::buffer_id mID; }; Vector<ActiveBuffer> mActiveBuffers; // for buffer ptr to buffer id translation Mutex mBufferIDLock; uint32_t mBufferIDCount; KeyedVector<OMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader; KeyedVector<OMX_BUFFERHEADERTYPE *, OMX::buffer_id> mBufferHeaderToBufferID; KeyedVector<IOMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader; KeyedVector<OMX_BUFFERHEADERTYPE *, IOMX::buffer_id> mBufferHeaderToBufferID; bool mLegacyAdaptiveExperiment; IOMX::PortMode mPortMode[2]; Loading Loading @@ -167,45 +168,45 @@ private: ~OMXNodeInstance(); void addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id); void removeActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id); void addActiveBuffer(OMX_U32 portIndex, IOMX::buffer_id id); void removeActiveBuffer(OMX_U32 portIndex, IOMX::buffer_id id); void freeActiveBuffers(); // For buffer id management OMX::buffer_id makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); OMX_BUFFERHEADERTYPE *findBufferHeader(OMX::buffer_id buffer, OMX_U32 portIndex); OMX::buffer_id findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); void invalidateBufferID(OMX::buffer_id buffer); IOMX::buffer_id makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); OMX_BUFFERHEADERTYPE *findBufferHeader(IOMX::buffer_id buffer, OMX_U32 portIndex); IOMX::buffer_id findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); void invalidateBufferID(IOMX::buffer_id buffer); bool isProhibitedIndex_l(OMX_INDEXTYPE index); status_t useBuffer_l( OMX_U32 portIndex, const sp<IMemory> ¶ms, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t useGraphicBuffer_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t useGraphicBufferWithMetadata_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t useGraphicBuffer2_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t emptyBuffer_l( OMX::buffer_id buffer, IOMX::buffer_id buffer, OMX_U32 rangeOffset, OMX_U32 rangeLength, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd); status_t emptyGraphicBuffer_l( OMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, IOMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd); status_t emptyNativeHandleBuffer_l( OMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, IOMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd); status_t emptyBuffer_l( Loading Loading @@ -252,11 +253,11 @@ private: // buffer.) status_t updateGraphicBufferInMeta_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); status_t updateNativeHandleInMeta_l( OMX_U32 portIndex, const sp<NativeHandle> &nativeHandle, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); sp<IOMXBufferSource> getBufferSource(); void setBufferSource(const sp<IOMXBufferSource> &bufferSource); Loading media/libstagefright/include/OmxNodeOwner.h 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OMX_NODE_OWNER_H_ #define OMX_NODE_OWNER_H_ namespace android { struct OMXNodeInstance; /** * This struct is needed to separate OMX from OMXNodeInstance. * * TODO: This might not be needed after Treble transition is complete. */ struct OmxNodeOwner { virtual status_t freeNode(const sp<OMXNodeInstance> &instance) = 0; virtual ~OmxNodeOwner() {} }; } #endif // OMX_NODE_OWNER_H_ media/libstagefright/omx/OMXNodeInstance.cpp +22 −22 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ bool OMXNodeInstance::CallbackDispatcherThread::threadLoop() { //////////////////////////////////////////////////////////////////////////////// OMXNodeInstance::OMXNodeInstance( OMX *owner, const sp<IOMXObserver> &observer, const char *name) OmxNodeOwner *owner, const sp<IOMXObserver> &observer, const char *name) : mOwner(owner), mHandle(NULL), mObserver(observer), Loading Loading @@ -1010,7 +1010,7 @@ status_t OMXNodeInstance::configureVideoTunnelMode( } status_t OMXNodeInstance::useBuffer( OMX_U32 portIndex, const OMXBuffer &omxBuffer, OMX::buffer_id *buffer) { OMX_U32 portIndex, const OMXBuffer &omxBuffer, IOMX::buffer_id *buffer) { if (buffer == NULL) { ALOGE("b/25884056"); return BAD_VALUE; Loading Loading @@ -1040,7 +1040,7 @@ status_t OMXNodeInstance::useBuffer( } status_t OMXNodeInstance::useBuffer_l( OMX_U32 portIndex, const sp<IMemory> ¶ms, OMX::buffer_id *buffer) { OMX_U32 portIndex, const sp<IMemory> ¶ms, IOMX::buffer_id *buffer) { BufferMeta *buffer_meta; OMX_BUFFERHEADERTYPE *header; OMX_ERRORTYPE err = OMX_ErrorNone; Loading Loading @@ -1147,7 +1147,7 @@ status_t OMXNodeInstance::useBuffer_l( status_t OMXNodeInstance::useGraphicBuffer2_l( OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer, OMX::buffer_id *buffer) { IOMX::buffer_id *buffer) { if (graphicBuffer == NULL || buffer == NULL) { ALOGE("b/25884056"); return BAD_VALUE; Loading Loading @@ -1203,7 +1203,7 @@ status_t OMXNodeInstance::useGraphicBuffer2_l( // can be renamed to useGraphicBuffer. status_t OMXNodeInstance::useGraphicBuffer_l( OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer, OMX::buffer_id *buffer) { IOMX::buffer_id *buffer) { if (graphicBuffer == NULL || buffer == NULL) { ALOGE("b/25884056"); return BAD_VALUE; Loading Loading @@ -1273,7 +1273,7 @@ status_t OMXNodeInstance::useGraphicBuffer_l( status_t OMXNodeInstance::useGraphicBufferWithMetadata_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer) { IOMX::buffer_id *buffer) { if (portIndex != kPortIndexOutput) { return BAD_VALUE; } Loading @@ -1296,7 +1296,7 @@ status_t OMXNodeInstance::useGraphicBufferWithMetadata_l( status_t OMXNodeInstance::updateGraphicBufferInMeta_l( OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { // No need to check |graphicBuffer| since NULL is valid for it as below. if (header == NULL) { ALOGE("b/25884056"); Loading Loading @@ -1336,7 +1336,7 @@ status_t OMXNodeInstance::updateGraphicBufferInMeta_l( status_t OMXNodeInstance::updateNativeHandleInMeta_l( OMX_U32 portIndex, const sp<NativeHandle>& nativeHandle, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { // No need to check |nativeHandle| since NULL is valid for it as below. if (header == NULL) { ALOGE("b/25884056"); Loading Loading @@ -1423,7 +1423,7 @@ status_t OMXNodeInstance::setInputSurface( } status_t OMXNodeInstance::allocateSecureBuffer( OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer, OMX_U32 portIndex, size_t size, IOMX::buffer_id *buffer, void **buffer_data, sp<NativeHandle> *native_handle) { if (buffer == NULL || buffer_data == NULL || native_handle == NULL) { ALOGE("b/25884056"); Loading Loading @@ -1481,7 +1481,7 @@ status_t OMXNodeInstance::allocateSecureBuffer( } status_t OMXNodeInstance::freeBuffer( OMX_U32 portIndex, OMX::buffer_id buffer) { OMX_U32 portIndex, IOMX::buffer_id buffer) { Mutex::Autolock autoLock(mLock); CLOG_BUFFER(freeBuffer, "%s:%u %#x", portString(portIndex), portIndex, buffer); Loading @@ -1505,7 +1505,7 @@ status_t OMXNodeInstance::freeBuffer( } status_t OMXNodeInstance::fillBuffer( OMX::buffer_id buffer, const OMXBuffer &omxBuffer, int fenceFd) { IOMX::buffer_id buffer, const OMXBuffer &omxBuffer, int fenceFd) { Mutex::Autolock autoLock(mLock); OMX_BUFFERHEADERTYPE *header = findBufferHeader(buffer, kPortIndexOutput); Loading Loading @@ -1579,7 +1579,7 @@ status_t OMXNodeInstance::emptyBuffer( } status_t OMXNodeInstance::emptyBuffer_l( OMX::buffer_id buffer, IOMX::buffer_id buffer, OMX_U32 rangeOffset, OMX_U32 rangeLength, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { Loading Loading @@ -1731,7 +1731,7 @@ status_t OMXNodeInstance::emptyBuffer_l( // like emptyBuffer, but the data is already in header->pBuffer status_t OMXNodeInstance::emptyGraphicBuffer_l( OMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, IOMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { OMX_BUFFERHEADERTYPE *header = findBufferHeader(buffer, kPortIndexInput); if (header == NULL) { Loading Loading @@ -1803,7 +1803,7 @@ int64_t OMXNodeInstance::getCodecTimestamp(OMX_TICKS timestamp) { } status_t OMXNodeInstance::emptyNativeHandleBuffer_l( OMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, IOMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { OMX_BUFFERHEADERTYPE *header = findBufferHeader(buffer, kPortIndexInput); if (header == NULL) { Loading Loading @@ -2199,7 +2199,7 @@ OMX_ERRORTYPE OMXNodeInstance::OnFillBufferDone( return OMX_ErrorNone; } void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id) { void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, IOMX::buffer_id id) { ActiveBuffer active; active.mPortIndex = portIndex; active.mID = id; Loading @@ -2211,7 +2211,7 @@ void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id) { } void OMXNodeInstance::removeActiveBuffer( OMX_U32 portIndex, OMX::buffer_id id) { OMX_U32 portIndex, IOMX::buffer_id id) { for (size_t i = 0; i < mActiveBuffers.size(); ++i) { if (mActiveBuffers[i].mPortIndex == portIndex && mActiveBuffers[i].mID == id) { Loading @@ -2236,17 +2236,17 @@ void OMXNodeInstance::freeActiveBuffers() { } } OMX::buffer_id OMXNodeInstance::makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { IOMX::buffer_id OMXNodeInstance::makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { if (bufferHeader == NULL) { return 0; } Mutex::Autolock autoLock(mBufferIDLock); OMX::buffer_id buffer; IOMX::buffer_id buffer; do { // handle the very unlikely case of ID overflow if (++mBufferIDCount == 0) { ++mBufferIDCount; } buffer = (OMX::buffer_id)mBufferIDCount; buffer = (IOMX::buffer_id)mBufferIDCount; } while (mBufferIDToBufferHeader.indexOfKey(buffer) >= 0); mBufferIDToBufferHeader.add(buffer, bufferHeader); mBufferHeaderToBufferID.add(bufferHeader, buffer); Loading @@ -2254,7 +2254,7 @@ OMX::buffer_id OMXNodeInstance::makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) } OMX_BUFFERHEADERTYPE *OMXNodeInstance::findBufferHeader( OMX::buffer_id buffer, OMX_U32 portIndex) { IOMX::buffer_id buffer, OMX_U32 portIndex) { if (buffer == 0) { return NULL; } Loading @@ -2275,7 +2275,7 @@ OMX_BUFFERHEADERTYPE *OMXNodeInstance::findBufferHeader( return header; } OMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { IOMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { if (bufferHeader == NULL) { return 0; } Loading @@ -2288,7 +2288,7 @@ OMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) return mBufferHeaderToBufferID.valueAt(index); } void OMXNodeInstance::invalidateBufferID(OMX::buffer_id buffer) { void OMXNodeInstance::invalidateBufferID(IOMX::buffer_id buffer) { if (buffer == 0) { return; } Loading Loading
media/libstagefright/include/OMX.h +4 −1 Original line number Diff line number Diff line Loading @@ -21,12 +21,15 @@ #include <utils/threads.h> #include <utils/KeyedVector.h> #include "OmxNodeOwner.h" namespace android { struct OMXMaster; struct OMXNodeInstance; class OMX : public BnOMX, public OmxNodeOwner, public IBinder::DeathRecipient { public: OMX(); Loading @@ -43,7 +46,7 @@ public: virtual void binderDied(const wp<IBinder> &the_late_who); status_t freeNode(const sp<OMXNodeInstance>& instance); virtual status_t freeNode(const sp<OMXNodeInstance>& instance); protected: virtual ~OMX(); Loading
media/libstagefright/include/OMXNodeInstance.h +25 −24 Original line number Diff line number Diff line Loading @@ -18,11 +18,12 @@ #define OMX_NODE_INSTANCE_H_ #include "OMX.h" #include <media/IOMX.h> #include <utils/RefBase.h> #include <utils/SortedVector.h> #include <utils/threads.h> #include <utils/KeyedVector.h> #include <utils/SortedVector.h> #include "OmxNodeOwner.h" namespace android { class IOMXBufferSource; Loading @@ -32,7 +33,7 @@ class OMXBuffer; struct OMXNodeInstance : public BnOMXNode { OMXNodeInstance( OMX *owner, const sp<IOMXObserver> &observer, const char *name); OmxNodeOwner *owner, const sp<IOMXObserver> &observer, const char *name); void setHandle(OMX_HANDLETYPE handle); Loading Loading @@ -66,7 +67,7 @@ struct OMXNodeInstance : public BnOMXNode { const sp<IOMXBufferSource> &bufferSource); status_t allocateSecureBuffer( OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer, OMX_U32 portIndex, size_t size, IOMX::buffer_id *buffer, void **buffer_data, sp<NativeHandle> *native_handle); status_t useBuffer( Loading Loading @@ -106,7 +107,7 @@ private: Mutex mLock; OMX *mOwner; OmxNodeOwner *mOwner; OMX_HANDLETYPE mHandle; sp<IOMXObserver> mObserver; sp<CallbackDispatcher> mDispatcher; Loading @@ -125,14 +126,14 @@ private: struct ActiveBuffer { OMX_U32 mPortIndex; OMX::buffer_id mID; IOMX::buffer_id mID; }; Vector<ActiveBuffer> mActiveBuffers; // for buffer ptr to buffer id translation Mutex mBufferIDLock; uint32_t mBufferIDCount; KeyedVector<OMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader; KeyedVector<OMX_BUFFERHEADERTYPE *, OMX::buffer_id> mBufferHeaderToBufferID; KeyedVector<IOMX::buffer_id, OMX_BUFFERHEADERTYPE *> mBufferIDToBufferHeader; KeyedVector<OMX_BUFFERHEADERTYPE *, IOMX::buffer_id> mBufferHeaderToBufferID; bool mLegacyAdaptiveExperiment; IOMX::PortMode mPortMode[2]; Loading Loading @@ -167,45 +168,45 @@ private: ~OMXNodeInstance(); void addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id); void removeActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id); void addActiveBuffer(OMX_U32 portIndex, IOMX::buffer_id id); void removeActiveBuffer(OMX_U32 portIndex, IOMX::buffer_id id); void freeActiveBuffers(); // For buffer id management OMX::buffer_id makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); OMX_BUFFERHEADERTYPE *findBufferHeader(OMX::buffer_id buffer, OMX_U32 portIndex); OMX::buffer_id findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); void invalidateBufferID(OMX::buffer_id buffer); IOMX::buffer_id makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); OMX_BUFFERHEADERTYPE *findBufferHeader(IOMX::buffer_id buffer, OMX_U32 portIndex); IOMX::buffer_id findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader); void invalidateBufferID(IOMX::buffer_id buffer); bool isProhibitedIndex_l(OMX_INDEXTYPE index); status_t useBuffer_l( OMX_U32 portIndex, const sp<IMemory> ¶ms, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t useGraphicBuffer_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t useGraphicBufferWithMetadata_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t useGraphicBuffer2_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer); IOMX::buffer_id *buffer); status_t emptyBuffer_l( OMX::buffer_id buffer, IOMX::buffer_id buffer, OMX_U32 rangeOffset, OMX_U32 rangeLength, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd); status_t emptyGraphicBuffer_l( OMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, IOMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd); status_t emptyNativeHandleBuffer_l( OMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, IOMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd); status_t emptyBuffer_l( Loading Loading @@ -252,11 +253,11 @@ private: // buffer.) status_t updateGraphicBufferInMeta_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); status_t updateNativeHandleInMeta_l( OMX_U32 portIndex, const sp<NativeHandle> &nativeHandle, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header); sp<IOMXBufferSource> getBufferSource(); void setBufferSource(const sp<IOMXBufferSource> &bufferSource); Loading
media/libstagefright/include/OmxNodeOwner.h 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OMX_NODE_OWNER_H_ #define OMX_NODE_OWNER_H_ namespace android { struct OMXNodeInstance; /** * This struct is needed to separate OMX from OMXNodeInstance. * * TODO: This might not be needed after Treble transition is complete. */ struct OmxNodeOwner { virtual status_t freeNode(const sp<OMXNodeInstance> &instance) = 0; virtual ~OmxNodeOwner() {} }; } #endif // OMX_NODE_OWNER_H_
media/libstagefright/omx/OMXNodeInstance.cpp +22 −22 Original line number Diff line number Diff line Loading @@ -332,7 +332,7 @@ bool OMXNodeInstance::CallbackDispatcherThread::threadLoop() { //////////////////////////////////////////////////////////////////////////////// OMXNodeInstance::OMXNodeInstance( OMX *owner, const sp<IOMXObserver> &observer, const char *name) OmxNodeOwner *owner, const sp<IOMXObserver> &observer, const char *name) : mOwner(owner), mHandle(NULL), mObserver(observer), Loading Loading @@ -1010,7 +1010,7 @@ status_t OMXNodeInstance::configureVideoTunnelMode( } status_t OMXNodeInstance::useBuffer( OMX_U32 portIndex, const OMXBuffer &omxBuffer, OMX::buffer_id *buffer) { OMX_U32 portIndex, const OMXBuffer &omxBuffer, IOMX::buffer_id *buffer) { if (buffer == NULL) { ALOGE("b/25884056"); return BAD_VALUE; Loading Loading @@ -1040,7 +1040,7 @@ status_t OMXNodeInstance::useBuffer( } status_t OMXNodeInstance::useBuffer_l( OMX_U32 portIndex, const sp<IMemory> ¶ms, OMX::buffer_id *buffer) { OMX_U32 portIndex, const sp<IMemory> ¶ms, IOMX::buffer_id *buffer) { BufferMeta *buffer_meta; OMX_BUFFERHEADERTYPE *header; OMX_ERRORTYPE err = OMX_ErrorNone; Loading Loading @@ -1147,7 +1147,7 @@ status_t OMXNodeInstance::useBuffer_l( status_t OMXNodeInstance::useGraphicBuffer2_l( OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer, OMX::buffer_id *buffer) { IOMX::buffer_id *buffer) { if (graphicBuffer == NULL || buffer == NULL) { ALOGE("b/25884056"); return BAD_VALUE; Loading Loading @@ -1203,7 +1203,7 @@ status_t OMXNodeInstance::useGraphicBuffer2_l( // can be renamed to useGraphicBuffer. status_t OMXNodeInstance::useGraphicBuffer_l( OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer, OMX::buffer_id *buffer) { IOMX::buffer_id *buffer) { if (graphicBuffer == NULL || buffer == NULL) { ALOGE("b/25884056"); return BAD_VALUE; Loading Loading @@ -1273,7 +1273,7 @@ status_t OMXNodeInstance::useGraphicBuffer_l( status_t OMXNodeInstance::useGraphicBufferWithMetadata_l( OMX_U32 portIndex, const sp<GraphicBuffer> &graphicBuffer, OMX::buffer_id *buffer) { IOMX::buffer_id *buffer) { if (portIndex != kPortIndexOutput) { return BAD_VALUE; } Loading @@ -1296,7 +1296,7 @@ status_t OMXNodeInstance::useGraphicBufferWithMetadata_l( status_t OMXNodeInstance::updateGraphicBufferInMeta_l( OMX_U32 portIndex, const sp<GraphicBuffer>& graphicBuffer, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { // No need to check |graphicBuffer| since NULL is valid for it as below. if (header == NULL) { ALOGE("b/25884056"); Loading Loading @@ -1336,7 +1336,7 @@ status_t OMXNodeInstance::updateGraphicBufferInMeta_l( status_t OMXNodeInstance::updateNativeHandleInMeta_l( OMX_U32 portIndex, const sp<NativeHandle>& nativeHandle, OMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { IOMX::buffer_id buffer, OMX_BUFFERHEADERTYPE *header) { // No need to check |nativeHandle| since NULL is valid for it as below. if (header == NULL) { ALOGE("b/25884056"); Loading Loading @@ -1423,7 +1423,7 @@ status_t OMXNodeInstance::setInputSurface( } status_t OMXNodeInstance::allocateSecureBuffer( OMX_U32 portIndex, size_t size, OMX::buffer_id *buffer, OMX_U32 portIndex, size_t size, IOMX::buffer_id *buffer, void **buffer_data, sp<NativeHandle> *native_handle) { if (buffer == NULL || buffer_data == NULL || native_handle == NULL) { ALOGE("b/25884056"); Loading Loading @@ -1481,7 +1481,7 @@ status_t OMXNodeInstance::allocateSecureBuffer( } status_t OMXNodeInstance::freeBuffer( OMX_U32 portIndex, OMX::buffer_id buffer) { OMX_U32 portIndex, IOMX::buffer_id buffer) { Mutex::Autolock autoLock(mLock); CLOG_BUFFER(freeBuffer, "%s:%u %#x", portString(portIndex), portIndex, buffer); Loading @@ -1505,7 +1505,7 @@ status_t OMXNodeInstance::freeBuffer( } status_t OMXNodeInstance::fillBuffer( OMX::buffer_id buffer, const OMXBuffer &omxBuffer, int fenceFd) { IOMX::buffer_id buffer, const OMXBuffer &omxBuffer, int fenceFd) { Mutex::Autolock autoLock(mLock); OMX_BUFFERHEADERTYPE *header = findBufferHeader(buffer, kPortIndexOutput); Loading Loading @@ -1579,7 +1579,7 @@ status_t OMXNodeInstance::emptyBuffer( } status_t OMXNodeInstance::emptyBuffer_l( OMX::buffer_id buffer, IOMX::buffer_id buffer, OMX_U32 rangeOffset, OMX_U32 rangeLength, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { Loading Loading @@ -1731,7 +1731,7 @@ status_t OMXNodeInstance::emptyBuffer_l( // like emptyBuffer, but the data is already in header->pBuffer status_t OMXNodeInstance::emptyGraphicBuffer_l( OMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, IOMX::buffer_id buffer, const sp<GraphicBuffer> &graphicBuffer, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { OMX_BUFFERHEADERTYPE *header = findBufferHeader(buffer, kPortIndexInput); if (header == NULL) { Loading Loading @@ -1803,7 +1803,7 @@ int64_t OMXNodeInstance::getCodecTimestamp(OMX_TICKS timestamp) { } status_t OMXNodeInstance::emptyNativeHandleBuffer_l( OMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, IOMX::buffer_id buffer, const sp<NativeHandle> &nativeHandle, OMX_U32 flags, OMX_TICKS timestamp, int fenceFd) { OMX_BUFFERHEADERTYPE *header = findBufferHeader(buffer, kPortIndexInput); if (header == NULL) { Loading Loading @@ -2199,7 +2199,7 @@ OMX_ERRORTYPE OMXNodeInstance::OnFillBufferDone( return OMX_ErrorNone; } void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id) { void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, IOMX::buffer_id id) { ActiveBuffer active; active.mPortIndex = portIndex; active.mID = id; Loading @@ -2211,7 +2211,7 @@ void OMXNodeInstance::addActiveBuffer(OMX_U32 portIndex, OMX::buffer_id id) { } void OMXNodeInstance::removeActiveBuffer( OMX_U32 portIndex, OMX::buffer_id id) { OMX_U32 portIndex, IOMX::buffer_id id) { for (size_t i = 0; i < mActiveBuffers.size(); ++i) { if (mActiveBuffers[i].mPortIndex == portIndex && mActiveBuffers[i].mID == id) { Loading @@ -2236,17 +2236,17 @@ void OMXNodeInstance::freeActiveBuffers() { } } OMX::buffer_id OMXNodeInstance::makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { IOMX::buffer_id OMXNodeInstance::makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { if (bufferHeader == NULL) { return 0; } Mutex::Autolock autoLock(mBufferIDLock); OMX::buffer_id buffer; IOMX::buffer_id buffer; do { // handle the very unlikely case of ID overflow if (++mBufferIDCount == 0) { ++mBufferIDCount; } buffer = (OMX::buffer_id)mBufferIDCount; buffer = (IOMX::buffer_id)mBufferIDCount; } while (mBufferIDToBufferHeader.indexOfKey(buffer) >= 0); mBufferIDToBufferHeader.add(buffer, bufferHeader); mBufferHeaderToBufferID.add(bufferHeader, buffer); Loading @@ -2254,7 +2254,7 @@ OMX::buffer_id OMXNodeInstance::makeBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) } OMX_BUFFERHEADERTYPE *OMXNodeInstance::findBufferHeader( OMX::buffer_id buffer, OMX_U32 portIndex) { IOMX::buffer_id buffer, OMX_U32 portIndex) { if (buffer == 0) { return NULL; } Loading @@ -2275,7 +2275,7 @@ OMX_BUFFERHEADERTYPE *OMXNodeInstance::findBufferHeader( return header; } OMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { IOMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) { if (bufferHeader == NULL) { return 0; } Loading @@ -2288,7 +2288,7 @@ OMX::buffer_id OMXNodeInstance::findBufferID(OMX_BUFFERHEADERTYPE *bufferHeader) return mBufferHeaderToBufferID.valueAt(index); } void OMXNodeInstance::invalidateBufferID(OMX::buffer_id buffer) { void OMXNodeInstance::invalidateBufferID(IOMX::buffer_id buffer) { if (buffer == 0) { return; } Loading