Permalink
Browse files

Merge "Some free chunk available notification is missing, which messe…

…s 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"
  • Loading branch information...
2 parents dca8e1d + 3fd45f0 commit 947cd0b2c2aa45819a3460d794f039ea4ce0dce2 James Dong committed with Android (Google) Code Review Mar 22, 2010
Showing with 7 additions and 0 deletions.
  1. +2 −0 nodes/pvomxencnode/src/pvmf_omx_enc_node.cpp
  2. +5 −0 oscl/oscl/osclmemory/src/oscl_mem_mempool.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)
{
@@ -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();

0 comments on commit 947cd0b

Please sign in to comment.