<html><body style="font-family: Helvetica,Arial,sans-serif; font-size: 12px;">Hi,<div><br></div><div>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...</div><div><br></div><div>I have my (linux) X server configured with 2 heads (:0.0 and :0.1). </div><div><br></div><div>In my (very) basic gstreamer app, I:</div><div>1. start a pipeline with vaapisink display-name=:0.0</div><div> -- this works</div><div>2. while #1 is running, I start another pipeline with vaapisink display-name=:0.1</div><div> -- this not only fails, but it also core dumps</div><div><br></div><div>The above is all within one application/process (if I run the pipelines in different apps/processes, there is no problem).</div><div><br></div><div>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.</div><div>Best,</div><div>-jim</div><div><br></div><div><br></div><div><br></div><div><br></div><div>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"</div><div><br></div><div>Output to stdout/stderr is:</div><div><div>/dev/video0 on :0.0</div><div>libva info: VA-API version 0.40.0</div><div>libva info: va_getDriverName() returns 0</div><div>libva info: Trying to open /usr/lib64/dri/i965_drv_video.so</div><div>libva info: Found init function __vaDriverInit_0_39</div><div>libva info: va_openDriver() returns 0</div><div>libva info: VA-API version 0.40.0</div><div>libva info: va_getDriverName() returns 0</div><div>libva info: Trying to open /usr/lib64/dri/i965_drv_video.so</div><div>libva info: Found init function __vaDriverInit_0_39</div><div>libva info: va_openDriver() returns 0</div><div>libva info: VA-API version 0.40.0</div><div>libva info: va_getDriverName() returns 0</div><div>libva info: Trying to open /usr/lib64/dri/i965_drv_video.so</div><div>libva info: Found init function __vaDriverInit_0_39</div><div>libva info: va_openDriver() returns 0</div><div>/dev/video1 on :0.1</div><div><br></div><div>** (2windows_2displays:19650): CRITICAL **: gst_vaapi_display_get_display_type: assertion 'display != NULL' failed</div><div>**</div><div>ERROR:gstvaapisink.c:992:gst_vaapisink_ensure_backend: code should not be reached</div><div>Aborted (core dumped)</div></div><div><br></div><div><br></div><div><br></div><div>------ SOURCE CODE ------</div><div><br></div><div><div>#include <gst/gst.h></div><div>#include <gst/video/videooverlay.h></div><div>#include <stdio.h></div><div>#include <stdlib.h></div><div>#include <unistd.h></div><div>#include <X11/Xlib.h></div><div><br></div><div>GstElement *pipeline1;</div><div>GstElement *pipeline2;</div><div><br></div><div>int main(int argc, char *argv[]) {</div><div>  GstBus *bus1;</div><div>  GstBus *bus2;</div><div>  GstMessage *msg1;</div><div>  GstMessage *msg2;</div><div>  int mydata = 1;</div><div><br></div><div>  XInitThreads();</div><div><br></div><div>  /* Initialize GStreamer */</div><div>  gst_init (&argc, &argv);</div><div><br></div><div>  /* Build the pipeline */</div><div>  printf("/dev/video0 on :0.0\n");</div><div>  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);</div><div><br></div><div>  /* Start playing */</div><div>  gst_element_set_state (pipeline1, GST_STATE_PLAYING);</div><div>  sleep(5);</div><div><br></div><div>  /* Build the pipeline */</div><div>  printf("/dev/video1 on :0.1\n");</div><div>  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);</div><div><br></div><div>  /* Start playing */</div><div>  gst_element_set_state (pipeline2, GST_STATE_PLAYING);</div><div>  sleep(10);</div><div> </div><div>  printf("done\n");</div><div><br></div><div>  gst_element_set_state (pipeline1, GST_STATE_NULL);</div><div>  gst_object_unref (pipeline1);</div><div><br></div><div>  gst_element_set_state (pipeline2, GST_STATE_NULL);</div><div>  gst_object_unref (pipeline2);</div><div><br></div><div>  return 0;</div><div>}</div></div><div><br></div></body></html>