Hi, All:
I am building a QT media player based on GStreamer on DM8148 EVM platform. My EZSDK version is 5.03.01.15.
This QT media player PC version works fine on Ubuntu system. On DM8148 platform, it can do basic video playback, but has many problems.
In DM814x_EZ_Software_Developers_Guide.pdf, the GStreamer sample uses command line:
# gst-launch -v filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 \
! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler \
! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink sync=false
It only support H264 video, but I need the media player can auto detect media format and load proper plugins. So I am using playbin2 plugin.
If use gst-launch to simulate my media player, the command likes:
# gst-launch playbin2 uri=file:///home/media/2.mp4 video_sink='videoscale!'video/x-raw-yuv,width=800,height=600'!autovideosink' // I can not use omx_scaler plugin in this command line. I don't know why.
It can playback video properly. But the program hang when I do these operations:
1. Resize the output resolution.
On the PC, I can change the parameters when the state is GST_STATE_NULL or GST_STATE_READY, but on the EVM board, I can not do it.
2. Adjust the progress.
I am using gst_element_seek() function.
3. Stop.
Now I can let it work after change the state sequentially: GST_STATE_PLAYING -> GST_STATE_PAUSE -> GST_STATE_READY -> GST_STATE_NULL. If I change the state from GST_STATE_PLAYING to any state except GST_STATE_PAUSE, the program hang.
When the program hang, no error message output. If I "kill" the program, the program can not be killed and the status change to "Z". In this case, if I start gst-lanuch command again, I got messages like these:
----------------------------------------------------------------
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Assertion at Line no: 1244 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
Assertion at Line no: 700 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (queueId != MessageQ_INVALIDMESSAGEQ) : failed
ServiceMgr_prime: MessageQ_put failed: status = 0xfffffffe
Assertion at Line no: 1244 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
Assertion at Line no: 700 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (queueId != MessageQ_INVALIDMESSAGEQ) : failed
ServiceMgr_prime: MessageQ_put failed: status = 0xfffffffe
Assertion at Line no: 1244 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
Assertion at Line no: 700 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (queueId != MessageQ_INVALIDMESSAGEQ) : failed
ServiceMgr_prime: MessageQ_put failed: status = 0xfffffffe
Assertion at Line no: 1244 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
Assertion at Line no: 700 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (queueId != MessageQ_INVALIDMESSAGEQ) : failed
ServiceMgr_prime: MessageQ_put failed: status = 0xfffffffe
Assertion at Line no: 1244 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
Assertion at Line no: 700 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (queueId != MessageQ_INVALIDMESSAGEQ) : failed
ServiceMgr_prime: MessageQ_put failed: status = 0xfffffffe
Assertion at Line no: 1244 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
ServiceMgr_rxThreadFxn: bind() failed with errno = 98
Assertion at Line no: 766 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (handle != NULL) : failed
Caught SIGSEGV accessing address 0xe
Spinning. Please run 'gdb gst-launch 1281' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
Assertion at Line no: 700 in /swcoe/sdk/cm/netra/arago-tmp/work/dm814x-evm-none-linux-gnueabi/ti-syslink-2_00_05_85-r1i/syslink_2_00_05_85/packages/ti/syslink/ipc/hlos/usr/MessageQ.c: (queueId != MessageQ_INVALIDMESSAGEQ) : failed
ServiceMgr_stop: MessageQ_put failed: status = 0xfffffffe
----------------------------------------------------------------
Seems have problems on syslink side. I have no idea how to fix it.
Any suggestion is welcome. Thanks!