Hello:
Hardware info:
CPU :i.mx6DL
RAM:2GB
OS:4.4.3
I use external/fsl_imx_omx to parse flac tag information when scanning USB disk files. When my USB have error_flac.flac file, the OMXPlayer show timeout errors as follow. And the mediaScanService seems stopped. Then I use tools to delete flac tag information,make a normal flac without tag information ->ok.flac.It works.
Error Log:
I/OMXPlayer( 133): LEVEL: 1 FUNCTION: OMX_ERRORTYPE GMComponent::WaitCommand(OMX_COMMANDTYPE, OMX_U32, OMX_PTR, OMX_TICKS) LINE: 1071
I/OMXPlayer( 133): OMX.Freescale.std.parser.fsl.sw-based wait command[0:3] timeout.
I/ModeService( 715): onReceiveMcuData: Enter 15
I/OMXPlayer( 133): LEVEL: 1 FUNCTION: OMX_ERRORTYPE GMComponent::SendCommand(OMX_COMMANDTYPE, OMX_U32, OMX_PTR) LINE: 1014
I/OMXPlayer( 133): OMX.Freescale.std.parser.fsl.sw-based send command[0:1] timeout.
I/OMXPlayer( 133): LEVEL: 1 FUNCTION: OMX_ERRORTYPE GMComponent::DoIdle2Loaded() LINE: 1143
I/OMXPlayer( 133): State trans to Loaded failed.
Here is the log file:error_flac.log
Please help.
I am looking forward to your replay ,thank you in advance.
Best regards.
Jiang
Original Attachment has been moved to: error_flac.txt.zip
gfine please continue with the follow up.
Hi Jiang,
Support for 4.4.3 is out of currency. Can this be replicated on a newer version of Android?
This seems to be related to a bug found in Android back in 2013. (https://code.google.com/p/android/issues/detail?id=62562).
BR,
Glen
Hello,Glen. Thank you for your response. I know my android version is not latest. But I don't have a new version.
Issue 62562 patch didn't fix my issue. I found a temporary way just add "return OMX_ErrorUndefined;" in TryFlacType function. Then Android MediaScannerService work well and do not block. The problem is after this change it can not play some flac without type info.
Code:
OMX_ERRORTYPE TryFlacType(CONTENTDATA *pData, CPbyte *buffer)
{
OMX_ERRORTYPE ret = OMX_ErrorNone;
CPbyte buffer2[DETECT_BUFFER_SIZE];
OMX_S32 Id3Size = 0;
LOG_DEBUG("TryFlacType\n");
pData->type = TYPE_NONE;
if (buffer[0] == 'f' && buffer[1] == 'L' && buffer[2] == 'a' && buffer[3] == 'C') {
pData->type = TYPE_FLAC;
LOG_DEBUG("Content type is flac.\n");
return ret;
}
else{
ret = OMX_ErrorUndefined;
// jiangguoji add
return OMX_ErrorUndefined;
}
}
Looking at the code, it is returning OMX_ErrorUndefined if the first four (4) bytes of the buffer are not "fLaC"
The format of a flac file is here and the test for a flac file is testing these bytes.
Informtion on a flac file format is here. https://xiph.org/flac/format.html#stream
Please verify all the flac files you are testing conform to this format.
Cheers,
Glen
Hi, Glen Fine.
Thank you for your advise. I have test some flac files ,but not all format. It works temporaily.
Hello Jiang,
Thank you for writing.
I just escalated this issue, soon you will be contacted by an expert in this topic.
Best regards,
Diego.
Please Help.