Unsolved Gstreamer pipeline in Qt multimedia
-
Hi there,
I am currently working on TI Jacinto 6 EVM board. I have qml app that displays four video output from 4 rtsp cameras. But there are few bugs in gstreamer which makes the app to crash .
So is there any way to know the underlying gstreamer pipeline which is used to stream videos?
I have tried to set the environment variable GST_DEBUG but with that output its almost impossible to understand what pipeline qt is using at backend. Any help??Regards,
Sam -
@Sam_George said in Gstreamer pipeline in Qt multemedia:
But there are few bugs in gstreamer which makes the app to crash
Are you sure it is not something in your app?
-
No its just simple Mediaplayer app..
Window { id:cameraTestWindow visible: true width: 1900 height:1200 Component.onCompleted: { mediaplayer1.play() } Rectangle { id:mainrect anchors.fill: parent color:"black" MediaPlayer { id: mediaplayer1 source: "rtsp://admin:password@192.168.15.51:554/cam/realmonitor?channel=1&subtype=1" onPlaying: { mediaplayer2.play() } } VideoOutput { id:videoOp1 x:620//250//90//0 y:80//30//0 width:352//530//320 height:288//250//240 source: mediaplayer1 MouseArea { anchors.fill: parent onClicked: { videoOp1.width = 1100; videoOp1.height = 850; videoOp2.visible = false videoOp3.visible = false videoOp4.visible = false } onDoubleClicked: { videoOp1.width = 352; videoOp1.height = 288; videoOp2.visible = true videoOp3.visible = true videoOp4.visible = true } } } MediaPlayer { id: mediaplayer2 source: "rtsp://admin:password@192.168.15.52:554/cam/realmonitor?channel=1&subtype=1" onPlaying: { mediaplayer3.play() } } VideoOutput { id:videoOp2 x:1170//250//90//0 y:80//30//0 width:352//530//320 height:288//250//240 source: mediaplayer2 MouseArea { width: 352 height: 282 anchors.fill: parent onClicked: { videoOp2.width = 1100; videoOp2.height = 850; videoOp2.x = 620 videoOp1.visible = false videoOp3.visible = false videoOp4.visible = false } onDoubleClicked: { videoOp2.width = 352; videoOp2.height = 288; videoOp2.x = 1170 videoOp1.visible = true videoOp3.visible = true videoOp4.visible = true } } } MediaPlayer { id: mediaplayer3 source: "rtsp://admin:password@192.168.15.53:554/cam/realmonitor?channel=1&subtype=1" onPlaying: { mediaplayer4.play() } } VideoOutput { id:videoOp3 x:620//250//90//0 y:505//30//0 width:352//530//320 height:288//250//240 source: mediaplayer3 MouseArea { anchors.fill: parent onClicked: { videoOp3.width = 1100; videoOp3.height = 850; videoOp3.y = 80; videoOp1.visible = false videoOp2.visible = false videoOp4.visible = false } onDoubleClicked: { videoOp3.width = 352; videoOp3.height = 288; videoOp3.y = 505; videoOp1.visible = true videoOp2.visible = true videoOp4.visible = true } } } MediaPlayer { id: mediaplayer4 source: "rtsp://admin:password@192.168.15.54:554/cam/realmonitor?channel=1&subtype=1" } VideoOutput { id:videoOp4 x:1170//250//90//0 y:505//30//0 width:352//530//320 height:288//250//240 source: mediaplayer4 MouseArea { anchors.fill: parent onClicked: { videoOp4.width = 1100; videoOp4.height = 850; videoOp4.x = 620 videoOp4.y = 80 videoOp1.visible = false videoOp2.visible = false videoOp3.visible = false } onDoubleClicked: { videoOp4.width = 352; videoOp4.height = 288; videoOp4.x = 1170 videoOp4.y = 505 videoOp1.visible = true videoOp2.visible = true videoOp3.visible = true } } } } }
-
@Sam_George said in Gstreamer pipeline in Qt multemedia:
It always shows some failure in buffer allocation whenever that green color patch appears. And there are times when the app works perfectly. The error log which i get is,../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_release: Error: unable to release buffer ../git/libdce_linux.c:145: dce_buf_unlock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use ../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use ../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use ../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_release: Error: unable to release buffer ../git/libdce_linux.c:145: dce_buf_unlock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use ../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use ../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_release: Error: unable to release buffer ../git/libdce_linux.c:145: dce_buf_unlock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use ../git/libdce_linux.c:115: dce_buf_lock ERROR: Failed eError == DCE_EOK error val -5MmRpc_release: Error: unable to release buffer ../git/libdce_linux.c:145: dce_buf_unlock ERROR: Failed eError == DCE_EOK error val -5MmRpc_use: Error: unable to declare buffer use [ 1539.100785] rpmsg_rpc rpmsg-dce: unwinding UVA to RDA translations! translation = 1 [ 1539.140317] rpmsg_rpc rpmsg-dce: failed to translate all pointers for remote core! ../git/libdce_linux.c:115:d ce_buf_lock ERROR: Failed eError == DE_EOK error val -5MmRpc_call: Error: write failed
So if i get to known what pipeline qml uses at backend, can help us to make the patch accordingly.
-
Hi,
You can find the code related to GStreamer in the corresponding plugin folder.
-
@SGaist , I just want to understand how qt multemedia implements gstreamer at the backend. Is there any way?
-
Yes, by reading the code of the plugin. You'll see how the pipeline is created.
-
Sorry for late response, but QMediaPlayer uses just playbin gst element,
so simply gst-launch-1.0 playbin is a way to test QMediaPlayer
and now it is possible to dump dot files by GST_DEBUG_DUMP_DOT_DIR=. ./app
to see actual pipeline (it will be playbin)