vaapisink and multiple heads/displays
jim at chaseandscout.com
jim at chaseandscout.com
Tue Oct 17 19:37:33 UTC 2017
Hi,
I am hoping that someone can point me in the right direction here.
I've either messed up on my end, or I am hitting some potential
limitation of vaapisink...
I have my (linux) X server configured with 2 heads (:0.0 and :0.1).
In my (very) basic gstreamer app, I:
1. start a pipeline with vaapisink display-name=:0.0
-- this works
2. while #1 is running, I start another pipeline with vaapisink
display-name=:0.1
-- this not only fails, but it also core dumps
The above is all within one application/process (if I run the
pipelines in different apps/processes, there is no problem).
I actually hit this issue a month or so ago, and after some searching
began to think that this was some context issue, but then I moved onto
something else for awhile and I didn't pursue it further at the time.
Any help and/or suggestions would be greatly appreciated.
Best,
-jim
Source code is pretty basic (full app would build the pipelines
without relying on gst_parse_launch()) and is included below. Also
attached is a log with "GST_DEBUG=vaapi*:6,2"
Output to stdout/stderr is:
/dev/video0 on :0.0
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
/dev/video1 on :0.1
** (2windows_2displays:19650): CRITICAL **:
gst_vaapi_display_get_display_type: assertion 'display != NULL' failed
**
ERROR:gstvaapisink.c:992:gst_vaapisink_ensure_backend: code should not
be reached
Aborted (core dumped)
------ SOURCE CODE ------
#include <gst/gst.h>
#include <gst/video/videooverlay.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <X11/Xlib.h>
GstElement *pipeline1;
GstElement *pipeline2;
int main(int argc, char *argv[]) {
GstBus *bus1;
GstBus *bus2;
GstMessage *msg1;
GstMessage *msg2;
int mydata = 1;
XInitThreads();
/* Initialize GStreamer */
gst_init (&argc,
/* Build the pipeline */
printf("/dev/video0 on :0.0n");
pipeline1 = gst_parse_launch("v4l2src device=/dev/video0 !
video/x-raw,format=I420,width=1920,height=1080 ! vaapisink sync=false
display-name=:0.0", NULL);
/* Start playing */
gst_element_set_state (pipeline1, GST_STATE_PLAYING);
sleep(5);
/* Build the pipeline */
printf("/dev/video1 on :0.1n");
pipeline2 = gst_parse_launch("v4l2src device=/dev/video1 !
video/x-raw,format=I420,width=1920,height=1080 ! vaapisink sync=false
display-name=:0.1 display=1", NULL);
/* Start playing */
gst_element_set_state (pipeline2, GST_STATE_PLAYING);
sleep(10);
printf("donen");
gst_element_set_state (pipeline1, GST_STATE_NULL);
gst_object_unref (pipeline1);
gst_element_set_state (pipeline2, GST_STATE_NULL);
gst_object_unref (pipeline2);
return 0;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20171017/f3be6e6e/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: save_gst.log
Type: application/octet-stream
Size: 187407 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20171017/f3be6e6e/attachment-0001.obj>
More information about the gstreamer-devel
mailing list