diff options
author | James Dong <jdong@google.com> | 2010-03-22 10:09:19 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-03-22 10:09:19 -0700 |
commit | 947cd0b2c2aa45819a3460d794f039ea4ce0dce2 (patch) | |
tree | 4fc58ecd94e8efc6f24ca44f6fd6a91a6459cdda | |
parent | dca8e1d28ce53d4f2a674fd5c4a36cfbc0cc9cda (diff) | |
parent | 3fd45f039dfb018b00964736e63cbae7b354a07c (diff) | |
download | opencore-947cd0b2c2aa45819a3460d794f039ea4ce0dce2.tar.gz |
Merge "Some free chunk available notification is missing, which messes up the number of outstanding output buffer count. As a result, the media server either hangs if omx encoder node thinks it is still waiting for some buffers to be returned from the omx component, or silently crashes if the omx encoder node frees the buffer prematurely"
-rw-r--r-- | nodes/pvomxencnode/src/pvmf_omx_enc_node.cpp | 2 | ||||
-rw-r--r-- | oscl/oscl/osclmemory/src/oscl_mem_mempool.cpp | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/nodes/pvomxencnode/src/pvmf_omx_enc_node.cpp b/nodes/pvomxencnode/src/pvmf_omx_enc_node.cpp index a0bf09cb5..61aa7b082 100644 --- a/nodes/pvomxencnode/src/pvmf_omx_enc_node.cpp +++ b/nodes/pvomxencnode/src/pvmf_omx_enc_node.cpp @@ -1206,6 +1206,8 @@ void PVMFOMXEncNode::Run() PVLOGGER_LOGMSG(PVLOGMSG_INST_LLDBG, iLogger, PVLOGMSG_STACK_TRACE, (0, "PVMFOMXEncNode-%s::Run(): Flush pending: Changing Component State Executing->Idle or Pause->Idle", iNodeTypeId)); + if (iOutPort) iOutPort->ClearMsgQueues(); + err = OMX_SendCommand(iOMXEncoder, OMX_CommandStateSet, OMX_StateIdle, NULL); if (err != OMX_ErrorNone) { diff --git a/oscl/oscl/osclmemory/src/oscl_mem_mempool.cpp b/oscl/oscl/osclmemory/src/oscl_mem_mempool.cpp index efea04814..b86769cb8 100644 --- a/oscl/oscl/osclmemory/src/oscl_mem_mempool.cpp +++ b/oscl/oscl/osclmemory/src/oscl_mem_mempool.cpp @@ -16,6 +16,7 @@ * ------------------------------------------------------------------- */ #include "oscl_mem_mempool.h" +#include <utils/Log.h> /** @@ -154,6 +155,10 @@ OSCL_EXPORT_REF void OsclMemPoolFixedChunkAllocator::deallocate(OsclAny* p) iObserver->freechunkavailable(iNextAvailableContextData); } } + else if (iObserver && iCheckNextAvailableFreeChunk) + { + LOGW("We may have lost some free chunk %p available notification for memory pool %p with chunk size %d", ptmp, mptmp, iChunkSizeMemAligned); + } // Decrement the refcount since deallocating succeeded removeRef(); |