Hi Christian, 2017-01-26 12:00 GMT+01:00 Christian König <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 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? 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 >> > > 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> >> ============================================================== >> Fingerprint: 4606 DA19 EC2E 9A0B 0157 C81B DA07 CF63 1A99 5A9B >> > > > -- Key-ID: 0x1A995A9B keyserver: 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