[Development] [QtMultimedia] How to make to use a HW codecs by QML media player on Linux?

Denis Shienkov denis.shienkov at gmail.com
Wed May 25 13:35:51 CEST 2016


> BTW: As I remember, I saw some environment variable which allows to setup
custom video sink... I need to see sources of QtMM... if I'm not mistaked..
maybe it will help...

I have found this env variables:

* QT_GSTREAMER_WIDGET_VIDEOSINK
* QT_GSTREAMER_WINDOW_VIDEOSINK

and try to use it:

$export QT_GSTREAMER_WIDGET_VIDEOSINK=nv_omx_hdmi_videosink
$export QT_GSTREAMER_WINDOW_VIDEOSINK=nv_omx_hdmi_videosink
$./my-qml-video-player

but, this does not help...

BR,
Denis



2016-05-25 8:30 GMT+03:00 Denis Shienkov <denis.shienkov at gmail.com>:

> > Gstreamer 1.0+ goes some way to addressing these issues....
>
> The Apalis T30 board has GPU from the NVidia. So, when I use 'gst-inspect'
> I see some of 'nv' sinks.
> So, as I understand, the easy ways to do it are:
>
> 1) I should try to use GStreamer 1.0 (instead of 0.10) "as is" with QtMM
> (rebuild QtMM with this GStreamer), at first stage.
>
> 2) I need try to change QtMM sources and try to set the specific
> vendor-video sinks there, at second stage... (in case the first stage does
> not work).
>
> Is it?
>
> BTW: As I remember, I saw some environment variable which allows to setup
> custom video sink... I need to see sources of QtMM... if I'm not mistaked..
> maybe it will help...
>
> > but even within the standard packages there still seems to be multiple
> APIs for codecs which produce EGL surfaces and none of them have been
> utilized in QtMultimedia yet
>
> Could you please provide an examples of this API which is not adopted in
> QtMM?
>
>
>
> BR,
> Denis
>
>
> 25.05.2016 4:44, Andrew den Exter пишет:
>
> The short answer is some amount of platform adaptation will be required to
> enable hardware acceleration on your board.  Looking at the page you linked
> to; that adaptation might be achieved by creating an implementation
> of QGstBufferPoolPlugin (gstreamer 0.10 only) which exposes EGL surfaces
> associated with the x-nv-yuv buffers produced by the accelerated codec.
> Or you might also need to create your own video node by implementing QSGVideoNodeFactoryPlugin or
> something more invasive may be required, it really depends on how the
> vendor implemented their gstreamer plugins
>
> The reason hardware acceleration doesn't just work is that hardware
> vendors have traditionally had to create extensions to gstreamer in order
> to implement their hardware accelerated plugins, and these extensions tend
> to require a vendor specific video sink to work.  If all you care about is
> rendering to the full dimensions of a native window then autovideosink will
> generally resolve to that vendor specific video sink and that's why the
> standard example command line examples tend to work.  But when it comes to
> something more complicated like compositing into an opengl scene or even as
> simple as rendering to a sub rect of a window then you're into the realm of
> vendor extensions and without a port to your specific hardware it probably
> won't work.  Gstreamer 1.0+ goes some way to addressing these issues, but
> even within the standard packages there still seems to be multiple APIs for
> codecs which produce EGL surfaces and none of them have been utilized in
> QtMultimedia yet.
>
>
> Andrew
>
>
> On Wed, May 25, 2016 at 12:40 AM, Denis Shienkov <denis.shienkov at gmail.com
> > wrote:
>
>> Hi all.
>>
>> I have the Toradex (Apalis T30) embedded board:
>>
>> https://www.toradex.com/computer-on-modules/apalis-arm-family/nvidia-tegra-3
>>
>> which has:
>>
>> http://developer.toradex.com/files/toradex-dev/uploads/media/Colibri/Linux/Images/Apalis_T30_LinuxImageV2.6Beta1_20160331.tar.bz2
>>
>> Linux Image, with the GStreamer 0.10.
>>
>> Also I have compiled Qt 5.6 and installed it to the board.
>>
>> When I try to play any *.MP4 video file from the QML Video item:
>> http://doc.qt.io/qt-5/qml-qtmultimedia-video.html
>>
>> I see, that my video has very-very lags, and I see (with htop utility)
>> that CPU loading is ~300% (
>> three cores running on ~100%).
>>
>> But, when I try to play the video, using the 'nvgstplayer' utility, I see
>> that CPU loading is ~46% and all fine. Seems, the QML player loads the SW
>> codecs instead of HW codecs...
>>
>> Is there are any way to say to QML player to use a HW codecs? Or, maybe,
>> I need to fix a sources of QtMM (where I need to change it?) Or, maybe, is
>> there are another way to do this?
>>
>> Otherwise, is just a **HELL** and there is no sense in QML QtMultimedia
>> at all (But I need QML for anumations). And I do not know, how to fix it
>> (I'm not expert in GStreamer).
>>
>> PS: I have tried the 'gst-launch' pipelines instead of 'nvgstplayer', as
>> described here:
>> http://developer.toradex.com/knowledge-base/video-playback-%28linux%29
>> but it crashes with sigsegv....
>>
>> BR,
>> Denis
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Development mailing list
>> Development at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/development
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20160525/86796f90/attachment.html>


More information about the Development mailing list