OMX_ERRORTYPE 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) { DEBUG_PRINT("Function %s \n", __FUNCTION__); /* To remove warning for unused variable to keep prototype same */ (void)hComponent; (void)pAppData; (void)pEventData; switch(eEvent) { case OMX_EventCmdComplete: DEBUG_PRINT("\n OMX_EventCmdComplete event=%d data1=%lu data2=%lu\n",(OMX_EVENTTYPE)eEvent, nData1,nData2); event_complete(); break; case OMX_EventError: DEBUG_PRINT("\n OMX_EventError \n"); break; case OMX_EventBufferFlag: DEBUG_PRINT("\n OMX_EventBufferFlag \n"); bOutputEosReached = true; event_complete(); break; case OMX_EventPortSettingsChanged: DEBUG_PRINT("\n OMX_EventPortSettingsChanged \n"); break; default: DEBUG_PRINT("\n Unknown Event \n"); break; } return OMX_ErrorNone; }
OMX_ERRORTYPE 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) { DEBUG_PRINT("Function %s \n", __FUNCTION__); switch(eEvent) { case OMX_EventCmdComplete: DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n OMX_EventCmdComplete \n"); DEBUG_PRINT("*********************************************\n"); if(OMX_CommandPortDisable == (OMX_COMMANDTYPE)nData1) { DEBUG_PRINT("******************************************\n"); DEBUG_PRINT("Recieved DISABLE Event Command Complete[%d]\n",nData2); DEBUG_PRINT("******************************************\n"); } else if(OMX_CommandPortEnable == (OMX_COMMANDTYPE)nData1) { DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("Recieved ENABLE Event Command Complete[%d]\n",nData2); DEBUG_PRINT("*********************************************\n"); } else if(OMX_CommandFlush== (OMX_COMMANDTYPE)nData1) { DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("Recieved FLUSH Event Command Complete[%d]\n",nData2); DEBUG_PRINT("*********************************************\n"); } event_complete(); break; case OMX_EventError: DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n OMX_EventError \n"); DEBUG_PRINT("*********************************************\n"); break; case OMX_EventPortSettingsChanged: DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n OMX_EventPortSettingsChanged \n"); DEBUG_PRINT("*********************************************\n"); event_complete(); break; default: DEBUG_PRINT("\n Unknown Event \n"); break; } return OMX_ErrorNone; }
OMX_ERRORTYPE EmptyBufferDone(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) { int readBytes =0; DEBUG_PRINT("\nFunction %s cnt[%d]\n", __FUNCTION__, ebd_cnt); ebd_cnt++; used_ip_buf_cnt--; if(bInputEosReached) { DEBUG_PRINT("\n*********************************************\n"); DEBUG_PRINT(" EBD::EOS on input port\n "); DEBUG_PRINT(" TBD:::De Init the open max here....!!!\n"); DEBUG_PRINT("*********************************************\n"); if(tunnel) event_complete(); return OMX_ErrorNone; } else if (bFlushing == true) { DEBUG_PRINT("omx_aac_adec_test: bFlushing is set to TRUE used_ip_buf_cnt=%d\n",used_ip_buf_cnt); if (used_ip_buf_cnt == 0) { //fseek(inputBufferFile, 0, 0); bFlushing = false; } else { DEBUG_PRINT("omx_aac_adec_test: more buffer to come back used_ip_buf_cnt=%d\n",used_ip_buf_cnt); return OMX_ErrorNone; } } if((readBytes = Read_Buffer(pBuffer)) > 0) { pBuffer->nFilledLen = readBytes; used_ip_buf_cnt++; OMX_EmptyThisBuffer(hComponent,pBuffer); } else{ pBuffer->nFlags |= OMX_BUFFERFLAG_EOS; bInputEosReached = true; pBuffer->nFilledLen = 0; OMX_EmptyThisBuffer(hComponent,pBuffer); DEBUG_PRINT("EBD..Either EOS or Some Error while reading file\n"); } return OMX_ErrorNone; }
OMX_ERRORTYPE FillBufferDone(OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_PTR pAppData, OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) { int bytes_read=0; int bytes_writen = 0; static int count = 0; int tlen = 0; // static unsigned totaldatalen = 0; // struct wav_header hdr; //static bFileclose = 0; count = count + 1; DEBUG_PRINT(" FillBufferDone #%d size %d\n", count,pBuffer->nFilledLen); if(bOutputEosReached) return OMX_ErrorNone; if((tunnel == 0)&& (filewrite == 1)) { bytes_writen = fwrite(pBuffer->pBuffer,1,pBuffer->nFilledLen,outputBufferFile); DEBUG_PRINT(" FillBufferDone size writen to file %d\n",bytes_writen); totaldatalen += bytes_writen ; } #ifdef PCM_PLAYBACK if(pcmplayback && pBuffer->nFilledLen) { DEBUG_PRINT(" FillBufferDone: start Writing data to pcm device for play \n"); tlen = pBuffer->nFilledLen /2; if(count == 1) { if (write(m_pcmdrv_fd, (pBuffer->pBuffer), tlen ) != tlen) { DEBUG_PRINT("FillBufferDone: Write data to PCM failed\n"); return OMX_ErrorNone; } if (write(m_pcmdrv_fd, (pBuffer->pBuffer+tlen), tlen ) != tlen) { DEBUG_PRINT("FillBufferDone: Write data to PCM failed\n"); return OMX_ErrorNone; } DEBUG_PRINT("FillBufferDone: PCM AUDIO_START\n"); ioctl(m_pcmdrv_fd, AUDIO_START, 0); } else { if (write(m_pcmdrv_fd, pBuffer->pBuffer, pBuffer->nFilledLen ) != pBuffer->nFilledLen) { DEBUG_PRINT("FillBufferDone: Write data to PCM failed\n"); return OMX_ErrorNone; } } DEBUG_PRINT(" FillBufferDone: writing data to pcm device for play succesfull \n"); } #endif // PCM_PLAYBACK if(pBuffer->nFlags != OMX_BUFFERFLAG_EOS) { DEBUG_PRINT(" FBD calling FTB"); OMX_FillThisBuffer(hComponent,pBuffer); } else { DEBUG_PRINT(" FBD EOS REACHED...........\n"); bOutputEosReached = true; event_complete(); } return OMX_ErrorNone; }
OMX_ERRORTYPE 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) { DEBUG_PRINT("Function %s \n", __FUNCTION__); int bufCnt=0; /* To remove warning for unused variable to keep prototype same */ (void)hComponent; (void)pAppData; (void)pEventData; switch(eEvent) { case OMX_EventCmdComplete: DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n OMX_EventCmdComplete \n"); DEBUG_PRINT("*********************************************\n"); if(OMX_CommandPortDisable == (OMX_COMMANDTYPE)nData1) { DEBUG_PRINT("******************************************\n"); DEBUG_PRINT("Recieved DISABLE Event Command Complete[%lu]\n",nData2); DEBUG_PRINT("******************************************\n"); } else if(OMX_CommandPortEnable == (OMX_COMMANDTYPE)nData1) { DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("Recieved ENABLE Event Command Complete[%lu]\n",nData2); DEBUG_PRINT("*********************************************\n"); } else if(OMX_CommandFlush== (OMX_COMMANDTYPE)nData1) { DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("Recieved FLUSH Event Command Complete[%lu]\n",nData2); DEBUG_PRINT("*********************************************\n"); } event_complete(); break; case OMX_EventError: DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n OMX_EventError \n"); DEBUG_PRINT("*********************************************\n"); if(OMX_ErrorInvalidState == (OMX_ERRORTYPE)nData1) { DEBUG_PRINT("\n OMX_ErrorInvalidState \n"); for(bufCnt=0; bufCnt < input_buf_cnt; ++bufCnt) { OMX_FreeBuffer(aac_dec_handle, 0, pInputBufHdrs[bufCnt]); } for(bufCnt=0; bufCnt < output_buf_cnt; ++bufCnt) { OMX_FreeBuffer(aac_dec_handle, 1, pOutputBufHdrs[bufCnt]); } DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n Component Deinitialized \n"); DEBUG_PRINT("*********************************************\n"); exit(0); } else if(OMX_ErrorComponentSuspended == (OMX_ERRORTYPE)nData1) { DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n Component Received Suspend Event \n"); DEBUG_PRINT("*********************************************\n"); } break; case OMX_EventPortSettingsChanged: bReconfigureOutputPort = 1; DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n OMX_EventPortSettingsChanged \n"); DEBUG_PRINT("*********************************************\n"); event_complete(); break; case OMX_EventBufferFlag: DEBUG_PRINT("\n *********************************************\n"); DEBUG_PRINT("\n OMX_EventBufferFlag \n"); DEBUG_PRINT("\n *********************************************\n"); bOutputEosReached = true; event_complete(); break; case OMX_EventComponentResumed: DEBUG_PRINT("*********************************************\n"); DEBUG_PRINT("\n Component Received Suspend Event \n"); DEBUG_PRINT("*********************************************\n"); break; default: DEBUG_PRINT("\n Unknown Event \n"); break; } return OMX_ErrorNone; }