Am 26.01.2017 um 12:16 schrieb Peter Frühberger:
Hi Christian,
2017-01-26 12:00 GMT+01:00 Christian König <deathsim...@vodafone.de
<mailto:deathsim...@vodafone.de>>:
Hi Peter,
Am 25.01.2017 um 19:45 schrieb Peter Frühberger:
Peter, Rainer any idea what I'm missing here? Do you guys
use some
modified ffmpeg for Kodi or how does that work for you?
do you set the format correctly, e.g.:
https://github.com/FernetMenta/kodi-agile/blob/master/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp#L2697
<https://github.com/FernetMenta/kodi-agile/blob/master/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp#L2697>
to create the surfaces?
Well the problem here is that the VA-API interface is not
consistent and I'm not sure how to implement it correctly.
See your code for example:
VASurfaceAttrib attribs[1], *attrib;
attrib = attribs;
attrib->flags = VA_SURFACE_ATTRIB_SETTABLE;
attrib->type = VASurfaceAttribPixelFormat;
attrib->value.type = VAGenericValueTypeInteger;
attrib->value.value.i = VA_FOURCC_NV12;
First Kodi specifies that NV12 should be used which implies that
this is a 8bit surface.
// create surfaces
VASurfaceID surfaces[32];
unsigned int format = VA_RT_FORMAT_YUV420;
if (m_config.profile == VAProfileHEVCMain10)
format = VA_RT_FORMAT_YUV420_10BPP;
But then Kodi requests a 10bit surface. Now what is the correct
thing to do here?
I can either create an NV12 surface, which would be 8bit but would
result in either an error message or only 8bit dithering during
decode.
Or I can promote the surface to 10bit, which would result in a
P010 or rather P016 format.
Or and that is actually what I think would be best the VA-API
driver should trow an error indicating that the application
requested something impossible.
Yes you are right. Looks like a driver specific:
https://cgit.freedesktop.org/vaapi/intel-driver/tree/src/i965_drv_video.c#n1338
seems they use it as a hint to the subsampling: SUBSAMPLE_YUV420 and
then later compare with with the format again to choose.
From code pov we should set the attribute to: VA_FOURCC_P010, right?
Yes, I think so.
Christian.
Regards
Peter
afterwards we just do drm / egl interop, via:
https://github.com/FernetMenta/kodi-agile/blob/master/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp#L1374
<https://github.com/FernetMenta/kodi-agile/blob/master/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp#L1374>
I'm not sure if that will ever work correctly. The problem is that
VA-API leaks to the application what the data layout in the
surface is. As soon as we turn on tilling that will only work with
rather crude hacks.
I will try to get it working, but probably need help from you guys
as well.
Regards,
Christian.
You need ffmpeg 3.2.
If you use vaPutSurface it will end up as RGBA32 or something,
which is why we use the above way.
Best regards
Peter
Cheers,
Christian.
--
Key-ID: 0x1A995A9B
keyserver: pgp.mit.edu <http://pgp.mit.edu>
<http://pgp.mit.edu>
==============================================================
Fingerprint: 4606 DA19 EC2E 9A0B 0157 C81B DA07 CF63 1A99 5A9B
--
Key-ID: 0x1A995A9B
keyserver: pgp.mit.edu <http://pgp.mit.edu>
==============================================================
Fingerprint: 4606 DA19 EC2E 9A0B 0157 C81B DA07 CF63 1A99 5A9B
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev