OMX_ERRORTYPE check_EventHandler (OMX_HANDLETYPE ap_hdl, OMX_PTR ap_app_data, OMX_EVENTTYPE eEvent, OMX_U32 nData1, OMX_U32 nData2, OMX_PTR pEventData) { check_common_context_t *p_ctx = NULL; cc_ctx_t *pp_ctx = NULL; assert (ap_app_data); pp_ctx = (cc_ctx_t *) ap_app_data; p_ctx = *pp_ctx; TIZ_LOG (TIZ_TRACE, "Component Event [%s]", tiz_evt_to_str (eEvent)); if (OMX_EventCmdComplete == eEvent) { switch ((OMX_COMMANDTYPE) (nData1)) { case OMX_CommandStateSet: { TIZ_LOG (TIZ_TRACE, "Component transitioned to [%s]", tiz_state_to_str ((OMX_STATETYPE) (nData2))); p_ctx->state = (OMX_STATETYPE) (nData2); _ctx_signal (pp_ctx); break; } case OMX_CommandPortDisable: case OMX_CommandPortEnable: default: { assert (0); } }; } if (OMX_EventBufferFlag == eEvent) { if (nData2 & OMX_BUFFERFLAG_EOS) { TIZ_LOG (TIZ_TRACE, "Received EOS from [%s] port[%i]", TIZ_FILE_WRITER_COMPONENT_NAME, nData1); } else { fail_if (0); } } return OMX_ErrorNone; }
static OMX_ERRORTYPE _ctx_reset (cc_ctx_t * app_ctx, OMX_EVENTTYPE event) { check_common_context_t *p_ctx = NULL; assert (app_ctx); assert (-1 != event2signal(event)); p_ctx = * app_ctx; if (tiz_mutex_lock (&p_ctx->mutex)) { return OMX_ErrorBadParameter; } TIZ_LOG (TIZ_PRIORITY_TRACE, "Resetting [%s] event [%s] ", ctx2cname(p_ctx), tiz_evt_to_str(event)); p_ctx->signaled[event2signal(event)] = OMX_FALSE; p_ctx->event[event2signal(event)] = OMX_EventMax; if (OMX_EventCmdComplete == event) { p_ctx->state = OMX_StateMax; } if (OMX_EventVendorStartUnused == event) { p_ctx->p_hdr = NULL; } if (OMX_EventBufferFlag == event) { p_ctx->flags = 0; } if (OMX_EventPortSettingsChanged == event) { p_ctx->port = 0; p_ctx->index = 0; } tiz_mutex_unlock (&p_ctx->mutex); return OMX_ErrorNone; }
static OMX_ERRORTYPE _ctx_signal (cc_ctx_t * app_ctx, OMX_EVENTTYPE event) { check_common_context_t *p_ctx = NULL; assert (app_ctx); assert (-1 != event2signal(event)); p_ctx = * app_ctx; if (tiz_mutex_lock (&p_ctx->mutex)) { return OMX_ErrorBadParameter; } TIZ_LOG (TIZ_PRIORITY_TRACE, "Context [%s] has been signalled [%s]", ctx2cname(p_ctx), tiz_evt_to_str(event)); p_ctx->signaled[event2signal(event)] = OMX_TRUE; p_ctx->event[event2signal(event)] = event; tiz_cond_signal (&p_ctx->cond); tiz_mutex_unlock (&p_ctx->mutex); return OMX_ErrorNone; }
std::string graph::omx_event_info::to_string () const { std::string info ("["); info.append (tiz_evt_to_str (static_cast< OMX_EVENTTYPE >(event_))); info.append ("]"); switch (event_) { case OMX_EventCmdComplete: { info.append (" ["); info.append (tiz_cmd_to_str (static_cast< OMX_COMMANDTYPE >(ndata1_))); info.append ("]"); if (OMX_CommandStateSet == ndata1_) { info.append (" ["); info.append (tiz_state_to_str (static_cast< OMX_STATETYPE >(ndata2_))); info.append ("]"); } else { info.append (" PORT ["); info.append (boost::lexical_cast< std::string >(ndata2_)); info.append ("]"); } } break; case OMX_EventError: { info.append (" ["); info.append (tiz_err_to_str (static_cast< OMX_ERRORTYPE >(ndata1_))); info.append ("]"); info.append (" ["); info.append (boost::lexical_cast< std::string >(ndata2_)); info.append ("]"); } break; case OMX_EventPortSettingsChanged: { info.append (" PORT ["); info.append (boost::lexical_cast< std::string >(ndata1_)); info.append ("]"); info.append (" ["); info.append (tiz_idx_to_str (static_cast< OMX_INDEXTYPE >(ndata2_))); info.append ("]"); } break; case OMX_EventBufferFlag: { info.append (" PORT ["); info.append (boost::lexical_cast< std::string >(ndata1_)); info.append ("]"); info.append (" nFlags ["); info.append (boost::lexical_cast< std::string >(ndata2_)); info.append ("]"); } break; default: { info.append (" [TO BE DONE]"); } break; }; return info; }