mm-video-legacy: venc: do not send duplicate EBDs in case of an error

In case of an error pushing the input to device layer via
push_input_buffer, EBDs are signalled locally. Do not send
EBD again from the calling method as this will result in a
duplicate EBD.

Bug: 19013257
Change-Id: I7076ac55bffb5336c291b2f3af4bea8972adc76e
diff --git a/mm-video-legacy/vidc/venc/src/omx_video_base.cpp b/mm-video-legacy/vidc/venc/src/omx_video_base.cpp
index 818f919..adf782f 100644
--- a/mm-video-legacy/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video-legacy/vidc/venc/src/omx_video_base.cpp
@@ -4057,7 +4057,7 @@
 
   pending_input_buffers--;
 
-  if(mUseProxyColorFormat && (buffer_index < m_sInPortDef.nBufferCountActual)) {
+  if(mUseProxyColorFormat && ((OMX_U32)buffer_index < m_sInPortDef.nBufferCountActual)) {
     if(!pdest_frame) {
       pdest_frame = buffer;
       DEBUG_PRINT_LOW("\n empty_buffer_done pdest_frame address is %p",pdest_frame);
@@ -4067,6 +4067,7 @@
       DEBUG_PRINT_LOW("\n empty_buffer_done insert address is %p",buffer);
       if (!m_opq_pmem_q.insert_entry((unsigned int)buffer, 0, 0)) {
         DEBUG_PRINT_ERROR("\n empty_buffer_done: pmem queue is full");
+        m_pCallbacks.EmptyBufferDone(hComp, m_app_data, buffer);
         return OMX_ErrorBadParameter;
       }
     }
@@ -4590,14 +4591,11 @@
     ret = push_input_buffer(hComp);
   } else {
     if (!m_opq_meta_q.insert_entry((unsigned)buffer,0,0)) {
+      m_pCallbacks.EmptyBufferDone(hComp, m_app_data, buffer);
       DEBUG_PRINT_ERROR("\nERROR: ETBProxy: Queue is full");
       ret = OMX_ErrorBadParameter;
     }
   }
-  if(ret != OMX_ErrorNone) {
-    m_pCallbacks.EmptyBufferDone(hComp,m_app_data,buffer);
-    DEBUG_PRINT_LOW("\nERROR: ETBOpaque failed:");
-  }
   return ret;
 }
 OMX_ERRORTYPE omx_video::queue_meta_buffer(OMX_HANDLETYPE hComp,
@@ -4629,6 +4627,9 @@
       m_opq_meta_q.pop_entry(&address,&p2,&id);
       psource_frame = (OMX_BUFFERHEADERTYPE* ) address;
     }
+  } else {
+    // there has been an error and source frame has been scheduled for an EBD
+    psource_frame = NULL;
   }
   return ret;
 }
@@ -4716,6 +4717,9 @@
         pdest_frame = (OMX_BUFFERHEADERTYPE* ) address;
         DEBUG_PRINT_LOW("\n pdest_frame pop address is %p",pdest_frame);
       }
+    } else {
+      // there has been an error and source frame has been scheduled for an EBD
+      psource_frame = NULL;
     }
     return ret;
 }