bool ImageOMX::decodePicture(LoadIndex index, unsigned char * buffer, unsigned int length)
{
if (pictInfValid) return false; // does support only one image at a Time;
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 1");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 1");
EGLPictureCreator * pictcreat =dynamic_cast<EGLPictureCreator*>(Osd::getInstance());
if (buffer[0]!= 0xff || buffer[1] !=0xd8) return false; // Jpeg magic numbers
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 2");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 2");
VideoOMX *video=(VideoOMX*)Video::getInstance();
video->LockClock();
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 3");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 3");
video->WaitForEvent(omx_imag_decode,OMX_EventPortSettingsChanged);
port_def_type.nSize=sizeof(port_def_type);
port_def_type.nVersion.nVersion=OMX_VERSION;
port_def_type.nPortIndex=omx_image_output_port;
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 3a");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 3a");
error=OMX_GetParameter(omx_imag_decode,OMX_IndexParamPortDefinition, &port_def_type);
if (error != OMX_ErrorNone) {
video->UnlockClock();
return false;
}
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 4");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 4");
}
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 5 6");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 5 6");
error=OMX_GetHandle(&omx_egl_render,VPE_OMX_EGL_REND,NULL,&callbacks);
if (error!=OMX_ErrorNone){
return 0;
}
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 7");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 7");
video->WaitForEvent(omx_egl_render,OMX_EventPortSettingsChanged);
Log::getInstance()->log("Image", Log::DEBUG,
}
buf_head_egl->pAppPrivate=this;
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 8 a");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 8 a");
video->EnablePort(omx_imag_decode,omx_image_output_port,false);
}
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 9");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 9");
//video->EnablePort(omx_egl_render,omx_egl_output_port,false);
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture 10");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture 10");
omx_egl_filled = false;
error = OMX_FillThisBuffer(omx_egl_render, buf_head_egl);
}
omx_egl_filled = false;
- Log::getInstance()->log("Image", Log::DEBUG,
- "decodePicture left");
+// Log::getInstance()->log("Image", Log::DEBUG,
+// "decodePicture left");
OMX_ERRORTYPE error;
omx_running=false;
VideoOMX *video=(VideoOMX*)Video::getInstance();
- Log::getInstance()->log("Image", Log::DEBUG, "enter deallocatecodecsomx");
+// Log::getInstance()->log("Image", Log::DEBUG, "enter deallocatecodecsomx");
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 1");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 1");
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 2");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 2");
video->LockClock();
if (omx_imag_decode/*dec*/) {
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 3");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 3");
error=OMX_SendCommand(omx_imag_decode,OMX_CommandFlush, omx_image_output_port, NULL);
if (error!=OMX_ErrorNone) {
Log::getInstance()->log("Image", Log::DEBUG, "omx_egl_render ChangeComponentState");
}
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 4");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 4");
error=OMX_SendCommand(omx_egl_render,OMX_CommandFlush, omx_egl_input_port, NULL);
if (error!=OMX_ErrorNone) {
}
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 5");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 5");
error=OMX_SendCommand(omx_egl_render,OMX_CommandFlush, omx_egl_output_port, NULL);
if (error!=OMX_ErrorNone) {
}
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6");
if (!video->CommandFinished(omx_egl_render,OMX_CommandFlush,omx_egl_input_port) ||
!video->CommandFinished(omx_egl_render,OMX_CommandFlush,omx_egl_output_port)) {
Log::getInstance()->log("Image", Log::DEBUG, "flush cmd clock shed failed");
}
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6 a");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6 a");
}
error=OMX_SendCommand(omx_imag_decode,OMX_CommandFlush, omx_image_input_port, NULL);
if (error!=OMX_ErrorNone) {
buf_head_egl=NULL;
-
-
-
-
-
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6 b");
-
-
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6 b");
if (!video->CommandFinished(omx_imag_decode,OMX_CommandFlush,omx_image_input_port) ||
!video->CommandFinished(omx_imag_decode,OMX_CommandFlush,omx_image_output_port) ) {
Log::getInstance()->log("Image", Log::DEBUG, "flush cmd clock shed failed");
}
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6 c");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 6 c");
DestroyInputBufsOMX(); //We have to make sure that no buffers are in use
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 7");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 7");
//todo flushing
if (!video->DisablePort(omx_imag_decode,omx_image_output_port,true)) {
}
- Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 8");
+// Log::getInstance()->log("Image", Log::DEBUG, "deallocatecodecsomx mark 8");
//error=OMX_FreeHandle(omx_aud_dec);
}
video->UnlockClock();
+ video->clearEventsForComponent(omx_imag_decode);
+ video->clearEventsForComponent(omx_egl_render); // removes spurious error messages
omx_imag_decode/*dec*/=NULL;
omx_egl_render/*dec*/=NULL;
video->UnlockClock();
}
- Log::getInstance()->log("Image", Log::DEBUG, "leave deallocate codecs OMX");
+// Log::getInstance()->log("Image", Log::DEBUG, "leave deallocate codecs OMX");
return 1;
}