[Arm-netbook] [EOMA68] A20 G2D / VAAPI / VDPAU video acceleration in web browsers

Andreas Baierl list at imkreisrum.de
Wed Aug 10 08:23:25 BST 2016


Hi Luke,

Am 10.08.2016 um 00:16 schrieb Luke Kenneth Casson Leighton:
> ---
> crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
>
>
> On Tue, Aug 9, 2016 at 10:40 PM, Russell Hyer <russell.hyer at gmail.com> wrote:
>> Hi Luke,
>>
>> So, if I've understood this post correctly, video playback on vlc
>> would perhaps be within the bounds of what the A20 hardware / software
>> could do?
>   yes.  ffplay, vlc, mpv, mplayer - all work fine, that's what this
> update was about:
>    https://www.crowdsupply.com/eoma68/micro-desktop/updates/cedrus
>
>   basically by using the full capabilities of the A20's accelerated
> hardware (both CEDAR and G2D), the CPU usage is somewhere around the
> 10% mark.  peanuts in other words.
>
>   the reason why those work is, through vdpau plugins there's two
> parts: "decode" part and "actual on-screen display" part.  all those
> video players have an option to do *both* things, and the vdpau-sunxi
> plugin that the Cedrus team wrote goes "okay, we're configured to use
> G2D, let's just go for it".
>
>   that's why you end up with the overlay issues, btw, because the G2D
> hardware is told to write direct to an area on-screen, bypassing the
> X11 protocol.
Just a minor correction. The G2D (mixer processor) hardware (only on 
A10/A20) is only used within libvdpau-sunxi to blit one rgba surface 
into another one. It has nothing to do with bringing something *really* 
to screen, because it only handles the blit or fill actions on rgba 
surfaces. The only use of rgba surfaces that i know of, is to realize an 
OSD, subtitles etc... as an overlay over the video.

NVidia and the others most likely do *real* blits of that rgba into the 
the yuv video. Maybe with the use of OpenGL.
Our libvdpau-sunxi does separate these surfaces and hold them both on 
separater layers. The display enginge takes care of these two layers and 
pushes the video into layer 1 and then the OSD (if existent) into 
another layer 2 which lays over the video layer. So data keeps separated.
This is the problem why some things with libvdpau-sunxi do not work 
exactly like someone expects. Especially in windowed mode. We use a 
colorkey to mask the video area and don't render with X11's mechanism, 
but bypass the whole X11 system and write directly to framebuffer as you 
said.
So to sum up, overlay issues are caused by the display engine, or the 
way libvdpau-sunxi build his surfaces, but not by G2D.
As we don't have G2D available on future Allwinner SoCs, the blits there 
are done in software using pixman.

>
>   anyway, it's *ASSUMED* in the webkit and xulrunner engines that the
> "on-screen display" bit can be handled by OpenGL or...
> something-else-don't-know-don't-care-but-basically-it's-not.
Oh. Maybe i completely misunderstood and my previous comment was 
b*****it, but is there really an o-s-d over the video within the browser 
window? If so, they most likely use something with OpenGL, yes.
>   and that means a bit of rewriting of both webkit and xulrunner so
> that they hand over the display bit to G2D.  that's going to require
> some specialist work.
It would theoretically be possible to let libvdpau-sunxi use OpenGL/ES 
under the hood and blit everything into one surface/texture. But this 
maybe would drop the performance advantages compared to how we do know. 
And you depend on Mali....
There are some efforts to integrate/simulate the nv_gl_interop extension 
with libvdpau-sunxi and OpenGL/ES, which lets OpenGL use vdpau surface 
and vice versa. So it would be possible to let vdpau do the rendering 
and OpenGL/ES do the presentation. Problem is, that it's not finished 
and it's not intended by the spec anyway to either use VDPAU on ARM nor 
combine it with OpenGL/ES, as the nv_gl_interop only talks about i386 
and OpenGL. <- This is the way kodi works with vdpau for example.

And the whole problem of this all is, that i currently cannot used with 
mainline kernel :) So i'd look further in having an open source video 
decoding driver and the needed display driver bits getting mainline ;)

Andreas
> l.
>
> _______________________________________________
> arm-netbook mailing list arm-netbook at lists.phcomp.co.uk
> http://lists.phcomp.co.uk/mailman/listinfo/arm-netbook
> Send large attachments to arm-netbook at files.phcomp.co.uk




More information about the arm-netbook mailing list