GNOME Bugzilla – Bug 773323
vaapidecode: fix buffer size
Last modified: 2016-11-04 13:37:28 UTC
When disabling vaapipostproc, if the allocation caps are different from the negotiation caps, the software sinks (e.g. xvimagesink) cannot map the frame because the GstVideoMeta reports the allocation caps size, not the negotiated caps. The attached patch worksarounds the issue by rewritting the values of the video meta, though the real solution would be using the the negotiation caps when setting the GstVideoMeta in the vaapibufferpool
Created attachment 338195 [details] [review] vaapidecode: fix buffer size Fix buffer resolution if the allocation caps are different from the negotiation caps.
Created attachment 339118 [details] [review] plugins: set negotiation caps in src allocator When the allocator is created, it stores the allocation caps. But sometimes the "allocation caps" may be different from the "negotiation caps". In this case, the allocator should store the negotiation caps since they are the ones used for frame mapping with GstVideoMeta. When vaapispostproc is used, this is not a problem since the element is assume to resize. But when using a vaapi decoder only, with a software renderer, it fails in this case.
Attachment 339118 [details] pushed as 1f190e4 - plugins: set negotiation caps in src allocator
this patch should be back ported to 1.10, and perhaps 1.8 too
1.8.4 is scheduled for the near future fwiw.