aboutsummaryrefslogtreecommitdiff
path: root/base/src/componentbase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'base/src/componentbase.cpp')
-rw-r--r--base/src/componentbase.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/base/src/componentbase.cpp b/base/src/componentbase.cpp
index 55836d1..d2e57f3 100644
--- a/base/src/componentbase.cpp
+++ b/base/src/componentbase.cpp
@@ -1817,9 +1817,13 @@ void ComponentBase::Work(void)
}
if (ret == OMX_ErrorNone) {
- PostProcessBuffers(buffers, &retain[0]);
+ if (!working_role || (strncmp((char*)working_role, "video_encoder", 13) != 0))
+ PostProcessBuffers(buffers, &retain[0]);
for (i = 0; i < nr_ports; i++) {
+ if (*buffers[i] == NULL)
+ continue;
+
if(retain[i] == BUFFER_RETAIN_GETAGAIN) {
ports[i]->RetainThisBuffer(*buffers[i], false);
}
@@ -1861,8 +1865,10 @@ bool ComponentBase::IsAllBufferAvailable(void)
for (i = 0; i < nr_ports; i++) {
OMX_U32 length = 0;
- if (ports[i]->IsEnabled())
- length = ports[i]->BufferQueueLength();
+ if (ports[i]->IsEnabled()) {
+ length += ports[i]->BufferQueueLength();
+ length += ports[i]->RetainedBufferQueueLength();
+ }
if (length)
nr_avail++;