Loading media/libstagefright/omx/OMXNodeInstance.cpp +16 −4 Original line number Original line Diff line number Diff line Loading @@ -131,22 +131,34 @@ struct BufferMeta { static_cast<void*>(mHidlMemory->getPointer())) : nullptr; static_cast<void*>(mHidlMemory->getPointer())) : nullptr; } } void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header) { void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header, OMXNodeInstance::SecureBufferType type) { if (!mCopyFromOmx) { if (!mCopyFromOmx) { return; return; } } if (type != OMXNodeInstance::kSecureBufferTypeUnknown) { ALOGE("b/77486542"); android_errorWriteLog(0x534e4554, "77486542"); return; } // check component returns proper range // check component returns proper range sp<ABuffer> codec = getBuffer(header, true /* limit */); sp<ABuffer> codec = getBuffer(header, true /* limit */); memcpy(getPointer() + header->nOffset, codec->data(), codec->size()); memcpy(getPointer() + header->nOffset, codec->data(), codec->size()); } } void CopyToOMX(const OMX_BUFFERHEADERTYPE *header) { void CopyToOMX(const OMX_BUFFERHEADERTYPE *header, OMXNodeInstance::SecureBufferType type) { if (!mCopyToOmx) { if (!mCopyToOmx) { return; return; } } if (type != OMXNodeInstance::kSecureBufferTypeUnknown) { ALOGE("b/77486542"); android_errorWriteLog(0x534e4554, "77486542"); return; } memcpy(header->pBuffer + header->nOffset, memcpy(header->pBuffer + header->nOffset, getPointer() + header->nOffset, getPointer() + header->nOffset, header->nFilledLen); header->nFilledLen); Loading Loading @@ -1693,7 +1705,7 @@ status_t OMXNodeInstance::emptyBuffer_l( header->nFilledLen = rangeLength; header->nFilledLen = rangeLength; header->nOffset = rangeOffset; header->nOffset = rangeOffset; buffer_meta->CopyToOMX(header); buffer_meta->CopyToOMX(header, mSecureBufferType[kPortIndexInput]); } } return emptyBuffer_l(header, flags, timestamp, (intptr_t)buffer, fenceFd); return emptyBuffer_l(header, flags, timestamp, (intptr_t)buffer, fenceFd); Loading Loading @@ -1981,7 +1993,7 @@ bool OMXNodeInstance::handleMessage(omx_message &msg) { CLOG_ERROR(onFillBufferDone, OMX_ErrorBadParameter, CLOG_ERROR(onFillBufferDone, OMX_ErrorBadParameter, FULL_BUFFER(NULL, buffer, msg.fenceFd)); FULL_BUFFER(NULL, buffer, msg.fenceFd)); } } buffer_meta->CopyFromOMX(buffer); buffer_meta->CopyFromOMX(buffer, mSecureBufferType[kPortIndexOutput]); // fix up the buffer info (especially timestamp) if needed // fix up the buffer info (especially timestamp) if needed codecBufferFilled(msg); codecBufferFilled(msg); Loading media/libstagefright/omx/include/media/stagefright/omx/OMXNodeInstance.h +5 −5 Original line number Original line Diff line number Diff line Loading @@ -116,6 +116,11 @@ struct OMXNodeInstance : public BnOMXNode { static OMX_CALLBACKTYPE kCallbacks; static OMX_CALLBACKTYPE kCallbacks; enum SecureBufferType { kSecureBufferTypeUnknown, kSecureBufferTypeOpaque, kSecureBufferTypeNativeHandle, }; private: private: struct CallbackDispatcherThread; struct CallbackDispatcherThread; struct CallbackDispatcher; struct CallbackDispatcher; Loading Loading @@ -154,11 +159,6 @@ private: IOMX::PortMode mPortMode[2]; IOMX::PortMode mPortMode[2]; // metadata and secure buffer types and graphic buffer mode tracking // metadata and secure buffer types and graphic buffer mode tracking MetadataBufferType mMetadataType[2]; MetadataBufferType mMetadataType[2]; enum SecureBufferType { kSecureBufferTypeUnknown, kSecureBufferTypeOpaque, kSecureBufferTypeNativeHandle, }; SecureBufferType mSecureBufferType[2]; SecureBufferType mSecureBufferType[2]; bool mGraphicBufferEnabled[2]; bool mGraphicBufferEnabled[2]; Loading Loading
media/libstagefright/omx/OMXNodeInstance.cpp +16 −4 Original line number Original line Diff line number Diff line Loading @@ -131,22 +131,34 @@ struct BufferMeta { static_cast<void*>(mHidlMemory->getPointer())) : nullptr; static_cast<void*>(mHidlMemory->getPointer())) : nullptr; } } void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header) { void CopyFromOMX(const OMX_BUFFERHEADERTYPE *header, OMXNodeInstance::SecureBufferType type) { if (!mCopyFromOmx) { if (!mCopyFromOmx) { return; return; } } if (type != OMXNodeInstance::kSecureBufferTypeUnknown) { ALOGE("b/77486542"); android_errorWriteLog(0x534e4554, "77486542"); return; } // check component returns proper range // check component returns proper range sp<ABuffer> codec = getBuffer(header, true /* limit */); sp<ABuffer> codec = getBuffer(header, true /* limit */); memcpy(getPointer() + header->nOffset, codec->data(), codec->size()); memcpy(getPointer() + header->nOffset, codec->data(), codec->size()); } } void CopyToOMX(const OMX_BUFFERHEADERTYPE *header) { void CopyToOMX(const OMX_BUFFERHEADERTYPE *header, OMXNodeInstance::SecureBufferType type) { if (!mCopyToOmx) { if (!mCopyToOmx) { return; return; } } if (type != OMXNodeInstance::kSecureBufferTypeUnknown) { ALOGE("b/77486542"); android_errorWriteLog(0x534e4554, "77486542"); return; } memcpy(header->pBuffer + header->nOffset, memcpy(header->pBuffer + header->nOffset, getPointer() + header->nOffset, getPointer() + header->nOffset, header->nFilledLen); header->nFilledLen); Loading Loading @@ -1693,7 +1705,7 @@ status_t OMXNodeInstance::emptyBuffer_l( header->nFilledLen = rangeLength; header->nFilledLen = rangeLength; header->nOffset = rangeOffset; header->nOffset = rangeOffset; buffer_meta->CopyToOMX(header); buffer_meta->CopyToOMX(header, mSecureBufferType[kPortIndexInput]); } } return emptyBuffer_l(header, flags, timestamp, (intptr_t)buffer, fenceFd); return emptyBuffer_l(header, flags, timestamp, (intptr_t)buffer, fenceFd); Loading Loading @@ -1981,7 +1993,7 @@ bool OMXNodeInstance::handleMessage(omx_message &msg) { CLOG_ERROR(onFillBufferDone, OMX_ErrorBadParameter, CLOG_ERROR(onFillBufferDone, OMX_ErrorBadParameter, FULL_BUFFER(NULL, buffer, msg.fenceFd)); FULL_BUFFER(NULL, buffer, msg.fenceFd)); } } buffer_meta->CopyFromOMX(buffer); buffer_meta->CopyFromOMX(buffer, mSecureBufferType[kPortIndexOutput]); // fix up the buffer info (especially timestamp) if needed // fix up the buffer info (especially timestamp) if needed codecBufferFilled(msg); codecBufferFilled(msg); Loading
media/libstagefright/omx/include/media/stagefright/omx/OMXNodeInstance.h +5 −5 Original line number Original line Diff line number Diff line Loading @@ -116,6 +116,11 @@ struct OMXNodeInstance : public BnOMXNode { static OMX_CALLBACKTYPE kCallbacks; static OMX_CALLBACKTYPE kCallbacks; enum SecureBufferType { kSecureBufferTypeUnknown, kSecureBufferTypeOpaque, kSecureBufferTypeNativeHandle, }; private: private: struct CallbackDispatcherThread; struct CallbackDispatcherThread; struct CallbackDispatcher; struct CallbackDispatcher; Loading Loading @@ -154,11 +159,6 @@ private: IOMX::PortMode mPortMode[2]; IOMX::PortMode mPortMode[2]; // metadata and secure buffer types and graphic buffer mode tracking // metadata and secure buffer types and graphic buffer mode tracking MetadataBufferType mMetadataType[2]; MetadataBufferType mMetadataType[2]; enum SecureBufferType { kSecureBufferTypeUnknown, kSecureBufferTypeOpaque, kSecureBufferTypeNativeHandle, }; SecureBufferType mSecureBufferType[2]; SecureBufferType mSecureBufferType[2]; bool mGraphicBufferEnabled[2]; bool mGraphicBufferEnabled[2]; Loading