13
« on: November 01, 2012, 12:12:02 »
Here's the instrumented code:
Log::getInstance()->log("Audio", Log::DEBUG, "deallocatecodecsomx mark 5");
video->LockClock();
Log::getInstance()->log("Audio", Log::DEBUG, "**DP0**");
if (!video->ChangeComponentState(omx_aud_rend,OMX_StateIdle)) {
Log::getInstance()->log("Audio", Log::DEBUG, "aud_rend ChangeComponentState");
}
Log::getInstance()->log("Audio", Log::DEBUG, "**DP1**");
// TODO proper deinit sequence
// first flush all buffers
error=OMX_SendCommand(omx_aud_rend,OMX_CommandFlush, omx_rend_input_port, NULL);
Log::getInstance()->log("Audio", Log::DEBUG, "**DP2**");
if (error!=OMX_ErrorNone) {
Log::getInstance()->log("Audio", Log::DEBUG, "OMX_Flush rend in failed %x", error);
}
/* error=OMX_SendCommand(omx_aud_dec,OMX_CommandFlush, omx_codec_input_port, NULL);
if (error!=OMX_ErrorNone){
Log::getInstance()->log("Audio", Log::DEBUG, "OMX_Flush codec out failed %x", error);
}*/
/* if (!video->CommandFinished(omx_aud_dec,OMX_CommandFlush,omx_codec_input_port)) {
Log::getInstance()->log("Audio", Log::DEBUG, "flush cmd codec input failed");
}*/
error=OMX_SendCommand(omx_clock,OMX_CommandFlush, omx_clock_output_port, NULL);
Log::getInstance()->log("Audio", Log::DEBUG, "**DP3**");
if (error!=OMX_ErrorNone){
Log::getInstance()->log("Audio", Log::DEBUG, "OMX_Flush clock out failed %x", error);
}
error=OMX_SendCommand(omx_aud_rend,OMX_CommandFlush, omx_rend_clock_port, NULL);
Log::getInstance()->log("Audio", Log::DEBUG, "**DP4**");
if (error!=OMX_ErrorNone){
Log::getInstance()->log("Audio", Log::DEBUG, "OMX_Flush rend clock failed %x", error);
}
Log::getInstance()->log("Audio", Log::DEBUG, "deallocatecodecsomx mark 6");
and the hang occurs after DP0 but before DP1. The "aud_rend ChangeComponentState" log entry does not appear either.