/* Incomplete Stop Component's implementation of OMX_CALLBACKTYPE.EventHandler */ OMX_ERRORTYPE ISTEventHandler( OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_EVENTTYPE eEvent, OMX_IN OMX_U32 nData1, OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { ISTDATATYPE* pContext = pAppData; UNUSED_PARAMETER(pEventData); if (hComponent != pContext->hCUT) { return OMX_ErrorNone; } if ((eEvent == OMX_EventCmdComplete) && ((OMX_COMMANDTYPE)(nData1) == OMX_CommandStateSet)) { pContext->eState = (OMX_STATETYPE)(nData2); OMX_OSAL_EventSet(pContext->hStateChangeEvent); } if (eEvent == OMX_EventBufferFlag) { OMX_OSAL_EventSet(pContext->hEOSEvent); } return OMX_ErrorNone; }
OMX_ERRORTYPE PortCommTest_EmptyBufferDone(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) { PortCommTestCtxt* pCtxt; UNUSED_PARAMETER(hComponent); if (pAppData == NULL) return OMX_ErrorNone; pCtxt = (PortCommTestCtxt*)pAppData; if (pBuffer->nInputPortIndex == OMX_NOPORT || pBuffer->nOutputPortIndex != OMX_NOPORT) { OMX_CONF_EVENT_HANDLER_ERROR(pCtxt->nInBufBusy, pCtxt->nInBuf, pCtxt->nBufDoneCalls, "Component returned invalid input buffer\n"); } else if (pCtxt->nInBufBusy) { pCtxt->nInBufBusy--; pCtxt->nBufDoneCalls++; LIST_SET_ENTRY(pCtxt->pInBufferList, pBuffer); OMX_OSAL_EventSet(pCtxt->hEmptyBufDoneEvent); OMX_OSAL_EventSet(pCtxt->hBufDoneEvent); } else { OMX_CONF_EVENT_HANDLER_ERROR(pCtxt->nInBufBusy, pCtxt->nInBuf, pCtxt->nBufDoneCalls, "Component returned more input buffers than expected\n"); } return OMX_ErrorNone; }
OMX_ERRORTYPE PortCommTest_EventHandler(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_EVENTTYPE eEvent, OMX_IN OMX_U32 nData1, OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { PortCommTestCtxt* pContext; UNUSED_PARAMETER(hComponent); UNUSED_PARAMETER(pEventData); if (pAppData == NULL) return OMX_ErrorNone; pContext = (PortCommTestCtxt*)pAppData; if (eEvent == OMX_EventCmdComplete) { switch ((OMX_COMMANDTYPE)(nData1)) { case OMX_CommandStateSet: OMX_CONF_StateToString((OMX_STATETYPE)(nData2), szDesc); OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Component transitioned to %s\n", szDesc); pContext->eState = (OMX_STATETYPE)(nData2); OMX_OSAL_EventSet(pContext->hStateSetEvent); break; case OMX_CommandPortDisable: pContext->nPortsStopped++; if (pContext->nPortsStopped == pContext->nPorts) { OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "All ports completed stopping\n"); OMX_OSAL_EventSet(pContext->hPortDisableEvent); } break; case OMX_CommandPortEnable: pContext->nPortsRestarted++; if (pContext->nPortsRestarted == pContext->nPorts) { OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "All ports restarted\n"); OMX_OSAL_EventSet(pContext->hPortEnableEvent); } break; case OMX_EventBufferFlag: break; default: break; } } return OMX_ErrorNone; }
/* Handle Events */ OMX_ERRORTYPE WaitResEventHandler( OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_EVENTTYPE eEvent, OMX_IN OMX_U32 nData1, OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { OMXWFRTESTDATA* pContext = pAppData; OMX_STATETYPE eState; char szState[256]; UNUSED_PARAMETER(hComponent); UNUSED_PARAMETER(pEventData); if ((eEvent == OMX_EventCmdComplete) && ((OMX_COMMANDTYPE)(nData1) == OMX_CommandStateSet)) { eState = (OMX_STATETYPE)nData2; OMX_CONF_StateToString(eState, szState); OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Instantiation %i changing to state %s\n", pContext->nInstantiation, szState); /* Set event change notification */ OMX_OSAL_EventSet(pContext->hEventStateChange); if (eState == OMX_StateIdle) { OMX_OSAL_EventSet(hEventStateChangeIdle); } if (eState == OMX_StateLoaded) { OMX_OSAL_EventSet(hEventStateChangeLoaded); } } if ((eEvent == OMX_EventError) && ((OMX_ERRORTYPE)(nData1) == OMX_ErrorInsufficientResources)) { OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Instantiation %i sent OMX_ErrorInsufficientResources error\n", pContext->nInstantiation); pContext->bErrorInsufficientResources = OMX_TRUE; OMX_OSAL_EventSet(pContext->hEventStateChange); } return OMX_ErrorNone; }
OMX_ERRORTYPE ResourceExhaustionTest_EventHandler(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_EVENTTYPE eEvent, OMX_IN OMX_U32 nData1, OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { ResourceExhaustionTestContext *pCtxt; UNUSED_PARAMETER(hComponent); UNUSED_PARAMETER(pEventData); if (pAppData == NULL) return OMX_ErrorNone; pCtxt = (ResourceExhaustionTestContext *)pAppData; if (eEvent == OMX_EventCmdComplete) { switch ((OMX_COMMANDTYPE)(nData1)) { case OMX_CommandStateSet: OMX_CONF_StateToString((OMX_STATETYPE)(nData2), szDesc); OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Instance %d transitioned to %s\n", pCtxt->nInst, szDesc); OMX_OSAL_EventSet(pCtxt->hStateSetEvent); break; default: break; } } else if (eEvent == OMX_EventError) { pCtxt->eLastError = (OMX_ERRORTYPE)(nData1); OMX_CONF_ErrorToString(pCtxt->eLastError, szDesc); OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Instance %d sent error %0#x %s\n", pCtxt->nInst, nData1, szDesc); OMX_OSAL_EventSet(pCtxt->hStateSetEvent); } return OMX_ErrorNone; }
OMX_ERRORTYPE BufferTest_EventHandler( OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_EVENTTYPE eEvent, OMX_IN OMX_U32 nData1, OMX_IN OMX_U32 nData2, OMX_IN OMX_PTR pEventData) { TEST_CTXTYPE *pCtx; UNUSED_PARAMETER(hComponent); UNUSED_PARAMETER(pEventData); if (0x0 == pAppData) return(OMX_ErrorNone); pCtx = (TEST_CTXTYPE*)pAppData; if (OMX_EventCmdComplete == eEvent) { switch ((OMX_COMMANDTYPE)(nData1)) { case OMX_CommandStateSet: OMX_CONF_StateToString((OMX_STATETYPE)(nData2), szDesc); OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Component transitioned to %s\n", szDesc); pCtx->eState = (OMX_STATETYPE)(nData2); OMX_OSAL_EventSet(pCtx->hStateChangeEvent); break; case OMX_CommandPortDisable: OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Port %i completed disable\n", nData2); if (OMX_TRUE == pCtx->bStopAllPorts) { pCtx->nNumPortsStopped++; if (pCtx->nNumPortsStopped == pCtx->nNumPorts) { OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "All ports completed disable\n"); OMX_OSAL_EventSet(pCtx->hPortDisableEvent); } } else if (pCtx->nStopPort == nData2) { OMX_OSAL_EventSet(pCtx->hPortDisableEvent); } break; case OMX_CommandPortEnable: OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Port %i completed enable\n", nData2); if (OMX_TRUE == pCtx->bRestartAllPorts) { pCtx->nNumPortsRestarted++; if (pCtx->nNumPortsRestarted == pCtx->nNumPorts) { OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "All ports completed enable\n"); OMX_OSAL_EventSet(pCtx->hPortEnableEvent); } } else if (pCtx->nRestartPort == nData2) { OMX_OSAL_EventSet(pCtx->hPortEnableEvent); } break; case OMX_EventBufferFlag: break; default: break; } } else if (OMX_EventError == eEvent) { OMX_CONF_ErrorToString((OMX_ERRORTYPE)nData1, szDesc); OMX_OSAL_Trace(OMX_OSAL_TRACE_INFO, "Component reported error %s (0x%x)\n", szDesc, nData2); if (OMX_ErrorPortUnpopulated == nData1) { OMX_OSAL_EventSet(pCtx->hPortErrorEvent); } } return OMX_ErrorNone; }