After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 784667 - [metabug] Add Flexible Encoding Infrastructure (FEI) Support
[metabug] Add Flexible Encoding Infrastructure (FEI) Support
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer-vaapi
git master
Other Linux
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on: 785712 787118
Blocks:
 
 
Reported: 2017-07-07 19:15 UTC by sreerenj
Modified: 2018-11-03 15:50 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description sreerenj 2017-07-07 19:15:49 UTC
FEI(Flexible Encoding Infrastructure) is an extension to VA API which allows applications to have more control over different phases of encoding and trade off quality for speed with their on IPs.

The main highlight of FEI is the possibility to split the encoding process into two phases, first is ENC and the second is PAK.
ENC is the operation which performs all motion vector calculation and prediction.PAK is doing all transformations and entropy coding.
Without having FEI, the whole ENC+PAK is a black box to middleware, but with FEI user can extract the output of ENC and feed PAK with a custom enhanced motion vectors and macroblock prediction modes.


VA-API(libva):
*************************
Patches are already landed in mailing list: https://github.com/01org/libva/pull/83
For now, we only have APIs for AVC encode

intel-vaapi-driver:
*************************
Skylake is the only platform which is supporting FEI now.
Patches are on the way.


GStreaemr-VA API
*************************
Integrating the whole FEI to GStreamer is not trivial. FEI is more useful for customers who have their own encoder but want to offload some parts
of encoding to GPU/fixed-function hardware block for better performance.
I believe, it is better to not mess up the existing vaapih264enc which is our primary encoder and should be good enough for normal use cases.

What changes FEI brings into gstreamer-vaapi:

There will be(minimum of) two new GStreamer elements and a bunch of test applications needs to be implemented.

1: vaapih264feienc:       (An advanced h264 encoder which can provide low-level  per macroblock tuning parameters)

2: vaapih264feipreenc:  (A preprocessing element which can extract MVs and statistics before calling encode function)

I will create two separate bugs to track the development of each.
Comment 1 sreerenj 2017-07-26 17:37:02 UTC
Here is the FEI patches for driver and gstreamer-vaapi:

intel-vaapi-driver: https://github.com/sreerenjb/intel-vaapi-driver/commits/fei
FEI support with out preenc is done. Final reviews on going.

gstreamer-vaapi:https://cgit.freedesktop.org/~sree/gstreamer-vaapi/log/?h=fei-dev
More features still need to be added (WIP), but good enough for testing.
Comment 2 GStreamer system administrator 2018-11-03 15:50:19 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/58.