29 #include <asm/unistd.h>
43 if (!omx_base_filter_Private) {
88 tsem_t* pInputSem = pInPort->pBufferSem;
90 queue_t* pInputQueue = pInPort->pBufferQueue;
95 int inBufExchanged=0,outBufExchanged=0;
107 pthread_mutex_lock(&omx_base_filter_Private->
flush_mutex);
110 pthread_mutex_unlock(&omx_base_filter_Private->
flush_mutex);
112 DEBUG(
DEB_LEV_FULL_SEQ,
"In %s 1 signaling flush all cond iE=%d,iF=%d,oE=%d,oF=%d iSemVal=%d,oSemval=%d\n",
113 __func__,inBufExchanged,isInputBufferNeeded,outBufExchanged,isOutputBufferNeeded,pInputSem->semval,pOutputSem->semval);
124 pInPort->ReturnBufferFunction(pInPort,pInputBuffer);
131 DEBUG(
DEB_LEV_FULL_SEQ,
"In %s 2 signaling flush all cond iE=%d,iF=%d,oE=%d,oF=%d iSemVal=%d,oSemval=%d\n",
132 __func__,inBufExchanged,isInputBufferNeeded,outBufExchanged,isOutputBufferNeeded,pInputSem->semval,pOutputSem->semval);
136 pthread_mutex_lock(&omx_base_filter_Private->
flush_mutex);
138 pthread_mutex_unlock(&omx_base_filter_Private->
flush_mutex);
141 if((isInputBufferNeeded==
OMX_TRUE && pInputSem->semval==0) &&
152 if((isOutputBufferNeeded==
OMX_TRUE && pOutputSem->semval==0) &&
166 if(pInputSem->semval>0 && isInputBufferNeeded==
OMX_TRUE ) {
168 if(pInputQueue->nelem>0){
171 pInputBuffer =
dequeue(pInputQueue);
172 if(pInputBuffer == NULL){
179 if(pOutputSem->semval>0 && isOutputBufferNeeded==
OMX_TRUE) {
181 if(pOutputQueue->nelem>0){
184 pOutputBuffer =
dequeue(pOutputQueue);
185 if(pOutputBuffer == NULL){
186 DEBUG(
DEB_LEV_ERR,
"Had NULL output buffer!! op is=%d,iq=%d\n",pOutputSem->semval,pOutputQueue->nelem);
193 if(pInputBuffer->hMarkTargetComponent != NULL){
202 pInputBuffer->pMarkData);
206 omx_base_filter_Private->
pMark.
pMarkData = pInputBuffer->pMarkData;
208 pInputBuffer->hMarkTargetComponent = NULL;
216 pOutputBuffer->pMarkData = omx_base_filter_Private->
pMark.
pMarkData;
221 pOutputBuffer->nTimeStamp = pInputBuffer->nTimeStamp;
223 DEBUG(
DEB_LEV_FULL_SEQ,
"Detected START TIME flag in the input buffer filled len=%d\n", (
int)pInputBuffer->nFilledLen);
224 pOutputBuffer->nFlags = pInputBuffer->nFlags;
225 pInputBuffer->nFlags = 0;
230 (*(omx_base_filter_Private->
BufferMgmtCallback))(openmaxStandComp, pInputBuffer, pOutputBuffer);
233 pInputBuffer->nFilledLen = 0;
236 DEBUG(
DEB_LEV_ERR,
"In %s Received Buffer in non-Executing State(%x)\n", __func__, (
int)omx_base_filter_Private->
state);
238 pInputBuffer->nFilledLen = 0;
242 DEBUG(
DEB_LEV_FULL_SEQ,
"Detected EOS flags in input buffer filled len=%d\n", (
int)pInputBuffer->nFilledLen);
243 pOutputBuffer->nFlags=pInputBuffer->nFlags;
244 pInputBuffer->nFlags=0;
250 pOutputBuffer->nFlags,
274 if((isInputBufferNeeded ==
OMX_FALSE) && (pInputBuffer->nFilledLen==0)) {
275 pInPort->ReturnBufferFunction(pInPort,pInputBuffer);