aboutsummaryrefslogtreecommitdiff
path: root/base/src/componentbase.cpp
diff options
context:
space:
mode:
authorWeian Chen <weian.chen@intel.com>2012-02-22 03:27:59 -0500
committerPatrick Tjin <pattjin@google.com>2014-07-21 22:03:38 -0700
commit705c231d1e4ff148d8cec637288d9ad41429f0e3 (patch)
tree861834a5bd1d0b08feb36cd58a60aaa4adc4915e /base/src/componentbase.cpp
parent57fbad335bcd1fc0b12cea2e58586015cec7b571 (diff)
downloadwrs_omxil_core-705c231d1e4ff148d8cec637288d9ad41429f0e3.tar.gz
wrs-omx-core: code cleanup along with one Queue buffer management support
BZ: 24552 code cleanup along with one Queue buffer management support and remove two Queue method (from Andy) Signed-off-by: Weian Chen <weian.chen@intel.com> Change-Id: I9b2109b45572492209ff4fa096e98c5442c3bfbd Reviewed-on: http://android.intel.com:8080/36140 Reviewed-by: Chen, Weian <weian.chen@intel.com> Reviewed-by: Qiu, Junhai <junhai.qiu@intel.com> Reviewed-by: Ding, Haitao <haitao.ding@intel.com> Tested-by: Ding, Haitao <haitao.ding@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'base/src/componentbase.cpp')
-rw-r--r--base/src/componentbase.cpp31
1 files changed, 12 insertions, 19 deletions
diff --git a/base/src/componentbase.cpp b/base/src/componentbase.cpp
index d605d81..f282ca1 100644
--- a/base/src/componentbase.cpp
+++ b/base/src/componentbase.cpp
@@ -136,7 +136,6 @@ void ComponentBase::__ComponentBase(void)
bufferwork = NULL;
pthread_mutex_init(&ports_block, NULL);
- pthread_mutex_init(&output_queue_lock, NULL);
}
ComponentBase::ComponentBase()
@@ -153,7 +152,6 @@ ComponentBase::ComponentBase(const OMX_STRING name)
ComponentBase::~ComponentBase()
{
pthread_mutex_destroy(&ports_block);
- pthread_mutex_destroy(&output_queue_lock);
if (roles) {
if (roles[0])
@@ -1125,13 +1123,11 @@ OMX_ERRORTYPE ComponentBase::CBaseFillThisBuffer(
return OMX_ErrorIncorrectStateOperation;
}
- ret = PreProcessBuffer(pBuffer);
+ ret = ProcessorPreFillBuffer(pBuffer);
if (ret != OMX_ErrorNone)
return ret;
- pthread_mutex_lock(&output_queue_lock);
ret = port->PushThisBuffer(pBuffer);
- pthread_mutex_unlock(&output_queue_lock);
if (ret == OMX_ErrorNone)
bufferwork->ScheduleWork(this);
@@ -1894,6 +1890,7 @@ void ComponentBase::Work(void)
{
OMX_BUFFERHEADERTYPE **buffers[nr_ports];
OMX_BUFFERHEADERTYPE *buffers_hdr[nr_ports];
+ OMX_BUFFERHEADERTYPE *buffers_org[nr_ports];
buffer_retain_t retain[nr_ports];
OMX_U32 i;
OMX_ERRORTYPE ret;
@@ -1905,6 +1902,7 @@ void ComponentBase::Work(void)
for (i = 0; i < nr_ports; i++) {
buffers_hdr[i] = ports[i]->PopBuffer();
buffers[i] = &buffers_hdr[i];
+ buffers_org[i] = buffers_hdr[i];
retain[i] = BUFFER_RETAIN_NOT_RETAIN;
}
@@ -1918,13 +1916,17 @@ void ComponentBase::Work(void)
PostProcessBuffers(buffers, &retain[0]);
for (i = 0; i < nr_ports; i++) {
-
- if(retain[i] == BUFFER_RETAIN_GETAGAIN)
+ if(retain[i] == BUFFER_RETAIN_GETAGAIN) {
ports[i]->RetainThisBuffer(*buffers[i], false);
- else if (retain[i] == BUFFER_RETAIN_ACCUMULATE)
+ }
+ else if (retain[i] == BUFFER_RETAIN_ACCUMULATE) {
ports[i]->RetainThisBuffer(*buffers[i], true);
- else
+ }
+ else if (retain[i] == BUFFER_RETAIN_OVERRIDDEN) {
+ ports[i]->RetainAndReturnBuffer(buffers_org[i], *buffers[i]);
+ } else {
ports[i]->ReturnThisBuffer(*buffers[i]);
+ }
}
}
else {
@@ -1945,10 +1947,6 @@ void ComponentBase::Work(void)
bool ComponentBase::IsAllBufferAvailable(void)
{
-
- pthread_mutex_lock(&output_queue_lock);
- PreProcessBufferQueue_Locked();
-
OMX_U32 i;
OMX_U32 nr_avail = 0;
@@ -1961,7 +1959,6 @@ bool ComponentBase::IsAllBufferAvailable(void)
if (length)
nr_avail++;
}
- pthread_mutex_unlock(&output_queue_lock);
if (nr_avail == nr_ports)
return true;
@@ -2127,15 +2124,11 @@ OMX_ERRORTYPE ComponentBase::ProcessorFlush(OMX_U32 port_index)
return OMX_ErrorNone;
}
-OMX_ERRORTYPE ComponentBase::PreProcessBuffer(OMX_BUFFERHEADERTYPE* buffer)
+OMX_ERRORTYPE ComponentBase::ProcessorPreFillBuffer(OMX_BUFFERHEADERTYPE* buffer)
{
return OMX_ErrorNone;
}
-OMX_ERRORTYPE ComponentBase::PreProcessBufferQueue_Locked()
-{
- return OMX_ErrorNone;
-}
OMX_ERRORTYPE ComponentBase::ProcessorProcess(OMX_BUFFERHEADERTYPE **pBuffers,
buffer_retain_t *retain,
OMX_U32 nr_buffers)