Features/GStreamer dependencies in RPM

Summary
Automated installation of GStreamer codecs provided by third-party repositories

Owner

 * Name: Panu Matalainen,  Bastien Nocera,  Richard Hughes

Current status

 * Targeted release:  Fedora 10
 * Last updated: 2008-10-03
 * Percentage of completion: 100%

Detailed Description
Using a modified version of gst-inspect-0.10, we marshal GStreamer's plugins capabilities into RPM provides. RPM was recently modified to actually call this script (see Bugzilla bug 438225 for complete information).

After rebuilding all the RPMs that include GStreamer plugins (to get those provides in the RPMs themselves), we need to write a small application that will take Gstreamer missing plugin information, and transform it into a potential RPM provides. From there, PackageKit will be used to install the package providing this requirement if available.

This feature is a precursor to a more thorough refactoring into a generic framework for these types of additions.

Benefit to Fedora
Improved codec support without any appearance of vendor non-neutrality, and user flexibility. The Fedora Board has previously discussed and approved this implementation.

Scope
Requires:
 * Patch to the rpm-build configuration (done)
 * Patch to  to enable these provides when building packages. (building)
 * Rebuilding of packages using . (building)
 * Writing small application to bridge between GStreamer applications and PackageKit (done, just need to get it in rawhide)

Test Plan

 * 1) Install repository setup for a third-party repository containing gst-ffmpeg
 * 2) On a stock Fedora installation, try to play back a video in WMV format (something supported by gst-ffmpeg)


 * 1) Without installation a third-party repository, try playing back a video in WMV format


 * 1) With and without a third-party repository set up
 * 2) Try playing back a web stream that uses mms

Remove some installed GStreamer plugins, and play back a file that requires a GStreamer plugin available in a configured repository. Also test workflow when no matching plugins are available.

User Experience
For example, imagine the user opens a file that requires a specific codec with an aware media player. The user can receive a prompt from PackageKit asking whether to install the package that provides that codec. This implementation of codec support is completely vendor neutral and relies on package providers to rebuild their packages and making them available via yum.



Dependencies

 * Updated gstreamer and assorted plugins
 * Updated PackageKit (requires 0.3.4 to be installed)

Contingency Plan

 * Still install codeina by default.

Documentation
Bugzilla bug 438225

Release Notes
The RPM package building system now includes the ability to provide GStreamer capabilities in codec packages. When a user opens a piece of media which is not handled by the installed codecs, a prompt appears to ask if the user wishes to search for an appropriate one. PackageKit launches, and if an appropriate codec is found in the  repositories configured by the user, the user can install it.