encodebin/decodebin: va/non-va does not play happily together as good children should
Submitted by Marc Leeman
The problem is likely in essence similar for encoding and decoding.
When using CPUs that have some form of VA (e.g. QuickSync) and when the gst-vaapi elements are installed, when encoding and/or decoding; the va variant of the decoder/encoder is chosen (software and hardware elements seem to have the same rank though).
This is fine in most cases where a user wants to decode a single video.
When more streams are processed, it is easy to overload the system (as seen in framedrops for encoding and/or decoding), even thought the system has capacity left.
On top of that, it is seen that, when the vaapi elements are installed on a non-VA enabled system; it will break the functionality (tested for encoding at least).
Improvements would be:
1/ encodebin (and decodebin) only plug in the va variants on supported CPUs. Maybe the va elements should return when there is no support.
2/ It should be configurable to use the va/non-va variant on a higher level so that e.g. the first 6 instances use the va variants and others the non-va variant. Would it be a good idea in a mechanism like playbin where the diplay element can be specified as a property?