vaapisink and multiple heads/displays

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

vaapisink and multiple heads/displays

Jim-3
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, &argv);

  /* Build the pipeline */
  printf("/dev/video0 on :0.0\n");
  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.1\n");
  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("done\n");

  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;
}


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

=?UTF-8?B?c2F2ZV9nc3QubG9n?= (250K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: vaapisink and multiple heads/displays

Hyunjun Ko
Actually I can't reproduce your case since I can't configure as same as your
X11 configuration.
But what the attached log is saying seems very weird.
I suspect the display cache, which has gone now.

Could you tell me the version of gst-vaapi you are using?
If it's 1.12, could you try on the master?




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: vaapisink and multiple heads/displays

Hyunjun Ko
In reply to this post by Jim-3
Actually I can't reproduce your case since I can't configure as same as your
X11 configuration.
But what the attached log is saying seems very weird.
I suspect the display cache, which has gone now.

Could you tell me the version of gst-vaapi you are using?
If it's 1.12, could you try on the master?




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: vaapisink and multiple heads/displays

Hyunjun Ko
In reply to this post by Jim-3
Actually I can't reproduce your case since I can't configure as same as your
X11 configuration.
But what the attached log is saying seems very weird.
I suspect the display cache, which has gone now.

Could you tell me the version of gst-vaapi you are using?
If it's 1.12, could you try on the master?



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: vaapisink and multiple heads/displays

Jim-3
I'm using 1.12.3.

This might be an issue with trying to match the wrong string. For display ":X.Y" ... X is the server number (sometimes just called the display) and Y is the screen number (or head). It appears that the entire string is being saved as the server/display number, so that when the screen number is changed, comparisons fail. I think only the "X" piece should be compared.

I've worked around this by creating my own windows for now (vs just letting gstreamer do it).

> On Oct 19, 2017, at 11:27 AM, Hyunjun Ko <[hidden email]> wrote:
>
> Actually I can't reproduce your case since I can't configure as same as your
> X11 configuration.
> But what the attached log is saying seems very weird.
> I suspect the display cache, which has gone now.
>
> Could you tell me the version of gst-vaapi you are using?
> If it's 1.12, could you try on the master?
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel