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 <[email protected]> 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 > [email protected] > http://lists.qt-project.org/mailman/listinfo/development > >
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
