Specify device to gstreamer VAAPI

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

Specify device to gstreamer VAAPI

RiccardoCagnasso
I have a system with two video cards, a integrated intel and a Nvidia quadro.
I want to use the nvidia as the xorg video card (the one connected to the
monitor) but I want to use the Intel to run vaapi video decoding.

I know that vaapi supports this (cfr
https://github.com/intel/intel-vaapi-driver/issues/383 ) but I think have to
tell to gstreamer-vaapi the path of the drm device to use. Is there any way
to do that?



--
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: Specify device to gstreamer VAAPI

Victor Jaquez
On Fri, 13 Jul 2018 at 05:39, RiccardoCagnasso wrote:
> I have a system with two video cards, a integrated intel and a Nvidia quadro.
> I want to use the nvidia as the xorg video card (the one connected to the
> monitor) but I want to use the Intel to run vaapi video decoding.

If I recalled correctly, somebody did a symbolic link, or something alike, to
make device enumerator, in gstremaer-vaapi, to find first their desired device.

vmjl

>
> I know that vaapi supports this (cfr
> https://github.com/intel/intel-vaapi-driver/issues/383 ) but I think have to
> tell to gstreamer-vaapi the path of the drm device to use. Is there any way
> to do that?
>
>
>
> --
> 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
Reply | Threaded
Open this post in threaded view
|

Re: Specify device to gstreamer VAAPI

RiccardoCagnasso
>If I recalled correctly, somebody did a symbolic link, or something alike,
to
>make device enumerator, in gstremaer-vaapi, to find first their desired
device.

Google is not helping me here. It seems to me that gstreamer-vaapi opens the
device associated to the current display, I'm not sure how can I trick that
with a symlink



--
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: Specify device to gstreamer VAAPI

Victor Jaquez
On Fri, 13 Jul 2018 at 06:22, RiccardoCagnasso wrote:
> >If I recalled correctly, somebody did a symbolic link, or something alike,
> to
> >make device enumerator, in gstremaer-vaapi, to find first their desired
> device.
>
> Google is not helping me here. It seems to me that gstreamer-vaapi opens the
> device associated to the current display, I'm not sure how can I trick that
> with a symlink

Yes. If you want to use DRM display, you should either use
`vaapisink display=drm`, so the drm-backed vaapi display is shared among the
pipeline. In this case, the symlink may help out.

Another approach would be programmatic, where you application instantiates the
vaapi display, and offers it as context when the pipeline requires it. Right now
there's code for Wayand and X11 cases, it would need to add support for DRM.
(gstvaapivideocontext.c)

vmjl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Specify device to gstreamer VAAPI

RiccardoCagnasso
In reply to this post by RiccardoCagnasso
I made a couple of tests.
Using vaapi i965 driver on a pc with a Nvidia quadro connected to the
monitor, i need to add --display=drm to vainfo to read the capabilities of
the graphic card. No --device seems to be required. But gst-launch filesrc !
demux ! vaapidecodebin ! vaapisink display=drm doesn't really work (creates
a windows but no video on it)

With vaapi iHD driver (https://github.com/intel/media-driver) vainfo doesn't
require --display=drm (odd). gst-launch filesrc ! demux ! vaapidecodebin !
vaapisink display=drm or gst-launch filesrc ! demux ! vaapidecodebin !
vaapisink doesn't work (doesn't create a window) but gst-launch filesrc !
demux ! vaapidecodebin ! xvimagesink works, albeit choppy on anything more
than 1080p.

I'm confused.



--
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: Specify device to gstreamer VAAPI

Victor Jaquez
On Mon, 16 Jul 2018 at 02:36, RiccardoCagnasso wrote:
> I made a couple of tests.
> Using vaapi i965 driver on a pc with a Nvidia quadro connected to the
> monitor, i need to add --display=drm to vainfo to read the capabilities of
> the graphic card. No --device seems to be required. But gst-launch filesrc !
> demux ! vaapidecodebin ! vaapisink display=drm doesn't really work (creates
> a windows but no video on it)

Actually it shouldn't create a window at all.

As your display is not connected to the decoding and rendering card, all the
rendering should be done off-screen. That's called headless.

You could do this

LIBVA_DRIVER_NAME=i965 gst-launch filesrc ! demux ! vaapidecodebin ! xvimagessink

That will force to use the i965 driver, which in you system is only accessible
through DRM, not the windowing system.

That would decode the frames in the intel card, and later each frame will be
copied onto the nvidia card.

>
> With vaapi iHD driver (https://github.com/intel/media-driver) vainfo doesn't
> require --display=drm (odd). gst-launch filesrc ! demux ! vaapidecodebin !
> vaapisink display=drm or gst-launch filesrc ! demux ! vaapidecodebin !
> vaapisink doesn't work (doesn't create a window) but gst-launch filesrc !
> demux ! vaapidecodebin ! xvimagesink works, albeit choppy on anything more
> than 1080p.

iHD driver is a new driver, for being used by MediaSDK. AFAIK, it doesn't
provide any rendering support, thus vaapisink isn't expected to work.

And iHD works, --again-- AFAIK, using only DRM, not the windowing system. That's
is why it works, and work choppy, because of the memcopy, since the intel card
and the nvidia card doesn't share memory areas.

Now, could try to use glimagesink, and trying to use dmabuf sharing mechanisms
among those cards, but that's uncharted territory.

vmjl
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Specify device to gstreamer VAAPI

RiccardoCagnasso
> LIBVA_DRIVER_NAME=i965 gst-launch filesrc ! demux ! vaapidecodebin !
xvimagessink

oh, hey, this works! nice.

>iHD driver is a new driver, for being used by MediaSDK. AFAIK, it doesn't
>provide any rendering support, thus vaapisink isn't expected to work.

Actually, vaapisink with iHD works just fine if no other video card
involved. I'm watching a 8K h265 video on an Intel NUC on the other side of
my office right now.

>And iHD works, --again-- AFAIK, using only DRM, not the windowing system.
That's
>is why it works, and work choppy, because of the memcopy, since the intel
card
>and the nvidia card doesn't share memory areas.

>Now, could try to use glimagesink, and trying to use dmabuf sharing
mechanisms
>among those cards, but that's uncharted territory.

With glimagesink it crashes horribly. Which is too bad because it would be
useful.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel