/** This function initializes and deinitializes the library related initialization * needed for file parsing */ OMX_ERRORTYPE omx_videosrc_component_MessageHandler(OMX_COMPONENTTYPE* openmaxStandComp,internalRequestMessageType *message) { omx_videosrc_component_PrivateType* omx_videosrc_component_Private = (omx_videosrc_component_PrivateType*)openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err = OMX_ErrorNone; OMX_STATETYPE oldState = omx_videosrc_component_Private->state; DEBUG(DEB_LEV_SIMPLE_SEQ, "In %s\n", __func__); /* Execute the base message handling */ err = omx_base_component_MessageHandler(openmaxStandComp,message); if (message->messageType == OMX_CommandStateSet && err == OMX_ErrorNone){ if ((message->messageParam == OMX_StateExecuting) && (oldState == OMX_StateIdle)) { err = omx_videosrc_component_Init(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Source Init Failed Error=%x\n",__func__,err); } } else if ((message->messageParam == OMX_StateIdle) && (oldState == OMX_StateExecuting)) { err = omx_videosrc_component_Deinit(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Source Deinit Failed Error=%x\n",__func__,err); } } } return err; }
static OMX_ERRORTYPE vid_dec_MessageHandler(OMX_COMPONENTTYPE* comp, internalRequestMessageType *msg) { vid_dec_PrivateType* priv = comp->pComponentPrivate; if (msg->messageType == OMX_CommandStateSet) { if ((msg->messageParam == OMX_StateIdle ) && (priv->state == OMX_StateLoaded)) { if (priv->profile == PIPE_VIDEO_PROFILE_MPEG2_MAIN) vid_dec_mpeg12_Init(priv); else if (priv->profile == PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH) vid_dec_h264_Init(priv); else if (priv->profile == PIPE_VIDEO_PROFILE_HEVC_MAIN) vid_dec_h265_Init(priv); } else if ((msg->messageParam == OMX_StateLoaded) && (priv->state == OMX_StateIdle)) { if (priv->shadow) { priv->shadow->destroy(priv->shadow); priv->shadow = NULL; } if (priv->codec) { priv->codec->destroy(priv->codec); priv->codec = NULL; } } } return omx_base_component_MessageHandler(comp, msg); }
OMX_ERRORTYPE omx_xvideo_sink_component_MessageHandler(OMX_COMPONENTTYPE* openmaxStandComp,internalRequestMessageType *message) { omx_xvideo_sink_component_PrivateType* omx_xvideo_sink_component_Private = (omx_xvideo_sink_component_PrivateType*)openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err; OMX_STATETYPE eState; DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__); eState = omx_xvideo_sink_component_Private->state; //storing current state if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateExecuting ) && (omx_xvideo_sink_component_Private->state == OMX_StateIdle)) { DEBUG(DEB_LEV_SIMPLE_SEQ, "In %s sink component from loaded to idle \n", __func__); err = omx_xvideo_sink_component_Init(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Sink Init Failed Error=%x\n",__func__,err); return err; } } } // Execute the base message handling err = omx_base_component_MessageHandler(openmaxStandComp,message); if (message->messageType == OMX_CommandStateSet) { if ((message->messageParam == OMX_StateIdle ) && (omx_xvideo_sink_component_Private->state == OMX_StateIdle) && eState == OMX_StateExecuting) { err = omx_xvideo_sink_component_Deinit(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Sink Deinit Failed Error=%x\n",__func__,err); return err; } } } return err; }
OMX_ERRORTYPE omx_videoenc_component_MessageHandler(OMX_COMPONENTTYPE* openmaxStandComp,internalRequestMessageType *message) { omx_videoenc_component_PrivateType* omx_videoenc_component_Private = openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE eError; DEBUG(DEB_LEV_SIMPLE_SEQ, "In %s\n", __func__); if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateIdle ) && (omx_videoenc_component_Private->state == OMX_StateLoaded)) { if (!omx_videoenc_component_Private->avcodecReady) { eError = omx_videoenc_component_ffmpegLibInit(omx_videoenc_component_Private); if (eError != OMX_ErrorNone) { return OMX_ErrorNotReady; } omx_videoenc_component_Private->avcodecReady = OMX_TRUE; } eError = omx_videoenc_component_Init(openmaxStandComp); if(eError!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Encoder Init Failed Error=%x\n",__func__,eError); return eError; } } else if ((message->messageParam == OMX_StateLoaded) && (omx_videoenc_component_Private->state == OMX_StateIdle)) { eError = omx_videoenc_component_Deinit(openmaxStandComp); if(eError!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Encoder Deinit Failed Error=%x\n",__func__,eError); return eError; } } } // Execute the base message handling return omx_base_component_MessageHandler(openmaxStandComp,message); }
/* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. Often a no-op. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ OMX_ERRORTYPE omx_jpegdec_decoder_MessageHandler(OMX_COMPONENTTYPE* openmaxStandComp, internalRequestMessageType *message) { omx_jpegdec_component_PrivateType* omx_jpegdec_component_Private = (omx_jpegdec_component_PrivateType*)openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err; OMX_STATETYPE eCurrentState = omx_jpegdec_component_Private->state; DEBUG(DEB_LEV_SIMPLE_SEQ, "In %s\n", __func__); //ACT_OMX_LOG("Entry:%s \n",__FUNCTION__); if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateIdle) && (omx_jpegdec_component_Private->state == OMX_StateLoaded)) { err = omx_jpegdec_component_Init(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s MAD Decoder Init Failed Error=%x\n",__func__,err); return err; } } } /** Execute the base message handling */ err = omx_base_component_MessageHandler(openmaxStandComp, message); if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateLoaded) && (eCurrentState == OMX_StateIdle)) { err = omx_jpegdec_component_Deinit(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s MAD Decoder Deinit Failed Error=%x\n",__func__,err); return err; } } } return err; }
OMX_ERRORTYPE omx_shvpudec_component_MessageHandler(OMX_COMPONENTTYPE* openmaxStandComp,internalRequestMessageType *message) { omx_shvpudec_component_PrivateType* omx_shvpudec_component_Private = (omx_shvpudec_component_PrivateType*)openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err; OMX_STATETYPE eCurrentState = omx_shvpudec_component_Private->state; DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__); if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateExecuting ) && (omx_shvpudec_component_Private->state == OMX_StateIdle)) { if (!omx_shvpudec_component_Private->avcodecReady) { err = omx_shvpudec_component_ffmpegLibInit(omx_shvpudec_component_Private); if (err != OMX_ErrorNone) { return OMX_ErrorNotReady; } omx_shvpudec_component_Private->avcodecReady = OMX_TRUE; } } else if ((message->messageParam == OMX_StateIdle ) && (omx_shvpudec_component_Private->state == OMX_StateLoaded)) { err = omx_shvpudec_component_Init(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Decoder Init Failed Error=%x\n",__func__,err); return err; } } else if ((message->messageParam == OMX_StateLoaded) && (omx_shvpudec_component_Private->state == OMX_StateIdle)) { err = omx_shvpudec_component_Deinit(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Video Decoder Deinit Failed Error=%x\n",__func__,err); return err; } } } // Execute the base message handling err = omx_base_component_MessageHandler(openmaxStandComp,message); if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateIdle ) && (eCurrentState == OMX_StateExecuting)) { if (omx_shvpudec_component_Private->avcodecReady) { omx_shvpudec_component_ffmpegLibDeInit(omx_shvpudec_component_Private); omx_shvpudec_component_Private->avcodecReady = OMX_FALSE; } } } return err; }
static OMX_ERRORTYPE vid_dec_MessageHandler(OMX_COMPONENTTYPE* comp, internalRequestMessageType *msg) { vid_dec_PrivateType* priv = comp->pComponentPrivate; if (msg->messageType == OMX_CommandStateSet) { if ((msg->messageParam == OMX_StateIdle ) && (priv->state == OMX_StateLoaded)) { struct pipe_video_codec templat = {}; omx_base_video_PortType *port; port = (omx_base_video_PortType *)priv->ports[OMX_BASE_FILTER_INPUTPORT_INDEX]; templat.profile = priv->profile; templat.entrypoint = PIPE_VIDEO_ENTRYPOINT_BITSTREAM; templat.chroma_format = PIPE_VIDEO_CHROMA_FORMAT_420; templat.width = port->sPortParam.format.video.nFrameWidth; templat.height = port->sPortParam.format.video.nFrameHeight; templat.max_references = 2; templat.expect_chunked_decode = true; priv->codec = priv->pipe->create_video_codec(priv->pipe, &templat); if (priv->profile == PIPE_VIDEO_PROFILE_MPEG2_MAIN) vid_dec_mpeg12_Init(priv); else if (priv->profile == PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH) vid_dec_h264_Init(priv); } else if ((msg->messageParam == OMX_StateLoaded) && (priv->state == OMX_StateIdle)) { if (priv->shadow) { priv->shadow->destroy(priv->shadow); priv->shadow = NULL; } if (priv->codec) { priv->codec->destroy(priv->codec); priv->codec = NULL; } } } return omx_base_component_MessageHandler(comp, msg); }
/** handles the message generated by the IL client * @param openmaxStandComp the component handle * @param message is the message type */ OMX_ERRORTYPE omx_vorbis_decoder_MessageHandler(OMX_COMPONENTTYPE* openmaxStandComp,internalRequestMessageType *message) { omx_vorbisdec_component_PrivateType* omx_vorbisdec_component_Private = (omx_vorbisdec_component_PrivateType*)openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err; DEBUG(DEB_LEV_SIMPLE_SEQ, "In %s\n", __func__); if (message->messageType == OMX_CommandStateSet){ if ((message->messageParam == OMX_StateIdle) && (omx_vorbisdec_component_Private->state == OMX_StateLoaded)) { err = omx_vorbisdec_component_Init(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Vorbis Decoder Init Failed=%x\n",__func__,err); return err; } } else if ((message->messageParam == OMX_StateLoaded) && (omx_vorbisdec_component_Private->state == OMX_StateIdle)) { err = omx_vorbisdec_component_Deinit(openmaxStandComp); if(err!=OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Vorbis Decoder Deinit Failed=%x\n",__func__,err); return err; } } } // Execute the base message handling return omx_base_component_MessageHandler(openmaxStandComp, message); }
/*************************************************************************** * Function : omx_ImageDecoderJpeg_MessageHandler * * Description : message handling of Jpeg encoder. * * Params : * * Name Type In/Out Description * openmaxStandComp OMX_COMPONENTTYPE In/Out Openmax Standard Component structure * message internalRequestMessageType In internal Message Type * * Return: * OMX_ErrorInsufficientResources if any ComponentPrivate structure alloc failed * * Note: * * Revision: * * Author Date Version Description * yuyiwei 2008.10.9 1.0.0 * ***************************************************************************/ OMX_ERRORTYPE omx_ImageDecoderJpeg_MessageHandler(OMX_COMPONENTTYPE *openmaxStandComp, internalRequestMessageType *message) { omx_jpegdec_component_PrivateType *omx_jpegdec_component_Private = (omx_jpegdec_component_PrivateType*)openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err = OMX_ErrorNone; OMX_STATETYPE eCurrentState = omx_jpegdec_component_Private->state; DEBUG(DEB_LEV_SIMPLE_SEQ, "In %s\n", __func__); if (message->messageType == OMX_CommandStateSet) { if ((message->messageParam == OMX_StateIdle) && (omx_jpegdec_component_Private->state == OMX_StateLoaded)) { /** state loaded to state idle and initialise the compenent */ err = omx_ImageDecoderJpeg_Init(openmaxStandComp); if (err != OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Jpeg Decoder Init Failed Error=%x\n", __func__, err); return err; } } else if ((message->messageParam == OMX_StateExecuting) && (omx_jpegdec_component_Private->state == OMX_StateIdle)) { /** state idle to state executing and up the synchronization semaphore*/ DEBUG(DEB_LEV_FULL_SEQ, "State Changing from Idle to Exec\n"); /** initialise the tempbuffer */ omx_jpegdec_component_Private->temporary_buffer_in->nFilledLen = 0; omx_jpegdec_component_Private->temporary_buffer_in->nOffset = 0; if (!omx_jpegdec_component_Private->JpegReady) { //omx_sem_up(omx_jpegdec_component_Private->JpegSyncSem); err = omx_ImageDecoderJpeg_LibInit(omx_jpegdec_component_Private); if (err != OMX_ErrorNone) { return OMX_ErrorNotReady; } omx_jpegdec_component_Private->JpegReady = OMX_TRUE; } } } /** Execute the base message handling */ err = omx_base_component_MessageHandler(openmaxStandComp, message); if (message->messageType == OMX_CommandStateSet) { if ((message->messageParam == OMX_StateLoaded) && (eCurrentState == OMX_StateIdle)) { /** state idle to state loaded and deinitialise the compenent */ err = omx_ImageDecoderJpeg_Deinit(openmaxStandComp); if (err != OMX_ErrorNone) { DEBUG(DEB_LEV_ERR, "In %s Jpeg Decoder Deinit Failed Error=%x\n", __func__, err); return err; } } else if ((message->messageParam == OMX_StateIdle) && (eCurrentState == OMX_StateExecuting)) { /** state executing to state idle */ omx_ImageDecoderJpeg_LibDeInit(omx_jpegdec_component_Private); omx_jpegdec_component_Private->JpegReady = OMX_FALSE; } } return err; }