EasyCodecInstallation

Revision 37 as of 2006-11-09 02:06:13

Clear message

Summary

Messages about unsupported gstreamer formats are currently unhelpful. This utility assists users in installing the packages needed to use those formats.

Use cases

  • Carlos has just installed Ubuntu on his computer and connected his ipod to it. rhythmbox has been opened but refuses to play any file from the ipod and doesn't give any useful information about why, it should suggest him to install gstreamer0.10-plugins-ugly.
  • Michael is trying to play a video but totem only displays visual effect and play the sound track. Totem should suggest to install streamer0.10-ffmpeg so the video content can be decoded too.

Scope

The gstreamer0.10 packages, rhythmbox, totem on the Ubuntu desktop

Design

When the player encounters a codec which it is unable to play without additional packages, it will display a dialog suggesting to install the required packages to the user or a clear error message if there is no matching package

If the user is not a member of the admin group, and is thus unable to install packages, the program should instead display a message indicating that attention is needed from an administrator in order to install the necessary software.

It will not be necessary to restart the application after the plugin installation

Implementation

gstreamer

gstreamer needs to be modified to return the missing element when trying to play a file which can't be decoded. Gstreamer upstream are working on that already and the feature should be available before feature freeze. Details can be read on http://webcvs.freedesktop.org/gstreamer/gstreamer/docs/random/draft-missing-plugins.txt

gstreamer packages

The gstreamer packages need to be modified to use gst-inspect and creates a features index on build

packages installation

Ryan Lortie has written a "libgimme-codec" which will be used by the applications. The library will make use of gnome-app-install to install the required packages. A first version of the library has been packaged and will be uploaded soon.

The gnome-app-install changes required are described by the https://features.launchpad.net/distros/ubuntu/+spec/gnome-app-install-codecs specification.

applications

The applications will need to be patched to use the new libgimme-codec and to refresh the gstreamer index after a package installation

Outstanding issues

Kubuntu doesn't currently use gstreamer for its media players, so it won't benefit from this until that changes. Apparently, the issue is that they need porting to gstreamer 0.10.

Suggestions from VideoPlaybackRoadmap

also see DesktopTeam/CommonInstallHook --SamTygier

Comments

Am I right in assuming the reason for wanting to do it at the GStreamer rather than application level is that it will Just Work without having to modify each application individually? While that sounds good, I don't know how practical it will be because it will require some fairly invasive changes, and will probably require application-level changes anyway.

Some applications (e.g. Rhythmbox, iirc amaroK) will automatically kill it's out-of-process metadata loader if it takes too long, as it is usually caused by a GStreamer plugin bug getting it stuck. Doing plugin installs without the application being aware of it will trigger those kinds of things. Doing it at the application level also lets apps be smarter about it, for example continuing to load all the user's Ogg Vorbis files while MP3 support is beig installed in the background.

Personally, I think a common library/tool that application could use (with different implementations for different distros) would be a better approach. It would also allow applications to use it for things which aren't purely "play my file" issues, such as applications saying "I need the 'trm' element to do audio fingerprinting" or "I need 'id3v2mux' to do ID3 tag editing" -- JamesLivingston (Rhythmbox developer)

  • Perhaps Gstreamer can implement a null or dummy codec to prevent apps from assuming it has failed. I think that the more general the approach the better. Once a unified approach is sorted out upstreams will begin using it, and it can always be an optional feature for those ditros and users who do not wish to implement it.

Perhaps a better idea would be to simply create a simple program called Media Codec Manager or something... Then with gStreamer apps, we could link them together as proposed. But, the media codec manager would be application and platform independent. It could simply list all the video and audio codecs and allow you to check off which ones you want or have a button that says install all. Also, if you install support for say MP3, it will install both the gstreamer plugin as well as LAME for other apps like mplayer or vlc. -Derick_eisenhardt (2006-08-09 @ 17:42 CDT)

DVD playback requires libdvdcss2 which isn't just a missing gst plugin. I think that's why we need a more general approach here. If we can't install some stuff automatically, we must at least tell the user what the problem is and how to solve it and point him in the right direction. -- AndreRuediger

  • Would it be possible to re-package libdvdcss2, so it acts like flashplugin-nonfree (i.e. uses dpkg -configure to help the user download and install the actual library) rather than the user having to run an install script. --KrisMarsh

On the Thin Client/LTSP side, making sure we get gstreamer/pulseaudio stack going will be crucial for making sure that multimedia on TC's works as well as locally. Both edubuntu (edu software), call centres (ekiga), etc. will need this. --ScottBalneaves

The current thinking about how this will be implemented internally in GStreamer and how it will look from the point of view of GStreamer applications can be found here: http://webcvs.freedesktop.org/gstreamer/gstreamer/docs/random/draft-missing-plugins.txt?view=log --TimMüller (GStreamer developer)

However, I think we agreed that the actual request for a codec to be installed will be done by API that is in a separate library. That a) isolates the distribution-specific code without requiring multiple branches of gstreamer, and b) allows that process to involve UI without gstreamer suddenly acquiring UI code and all the dependencies that would involve. Ryan Lortie already has a skeleton project for this API. --MurrayCumming

  • Yes, this is the plan in the above proposal as well. The structure with the install_plugins vfunc is provided by an external library and the IPC details will be done by that external library in whatever way it likes. --TimMüller (Update: the GStreamer doc has been updated again so that there won't be any API at all in GStreamer to initiate download, and so that the external library will handle all of it)

Notes from the meeting

...by JonoBacon.

GStreamer registry should not need updating.

Consideration of patent issues in installable codec plugins.

Much of the different chunks of the puzzle expectated to be developed in the next few months - everyone is aware of what needs doing.

Needs doing: gnome-app-install, gstreamer

Need a tool to build the database of packages. Inspection should be made at build time.

GStreamer side of things is planned and specced out.

Upstream apps will be patched for feisty and hopefully this system can be rolled out across other distributions.

Make a default script for those distros who have not implemented this system - "click here for more information".

Documentation should be made for upsream authors to ensure theirs apps implement this functionality.


CategorySpec