Hi All,
During the process of developing a solution based on gstreamer/openMax able to play videos of different resolutions, scale the video to a fixed resolution and then display it, we found an issue with the current software available:
1. The current gst-openMax plugins are not able to move between the gstreamer states: NULL, READY, PLAY, PAUSE. Normally a pipeline to play videos would look like (just an example):
gst-launch filesrc location= file.mpg ! gstperf ! tsdemux ! queue ! legacympegvideoparse ! omx_mpeg2dec ! queue ! omx_ctrl display-mode=OMX_DC_MODE_1080P ! omx_scaler ! 'video/x-raw-yuv,width=1920,height=1080' ! omx_videosink
where <file.mpg> can be any resolution. So since you can't change the state of the omx_scaler to NULL you can't change the input resolution without destroying the scaler instance.
2. If you develop the application to be creating/destroying the omx_scaler instance we found that the VPSS hangs sometimes after 10hrs, 15hrs, 18hrs, etc. It just hangs without giving any information in the output, even if you enable all the debug, or if you get access to the M3s through CCS. As you can see we were able to reproduce it just using omx without gstreamer, the problem appears more frequently if you increase the amount of instances of omx_scaler in the pipeline.
http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/311441/1101464.aspx
After a lot of testing and time invested in the process we were able to see that the process that causes the crash is on the omx_scaler and likely in the OMX_GetHandle function which is called every time that you create a new instance, at some point it doesn't return.
So we are trying to find the problem but at the same time we were able to create a new gst-openMax plugins on gstreamer 0.10 which are able to change the gstreamer state without problems, we did it for omx_scaler and omx_mpeg2dec , doing this we got rid of the problem that was killing the endurance test, now the system can change resolutions without destroying the instance so the problem doesn't appear anymore. Ridgerun is on the process to clean the patches and we are going to check in the code in:
https://github.com/RidgeRun/gst-openmax-dm81xx
I hope this information help you as well if you are fighting with an endurance test and openMax,
-David