EasyCodecInstallation

Differences between revisions 22 and 23
Revision 22 as of 2006-07-01 02:21:52
Size: 5269
Editor: sjpp-p-144-134-101-185
Comment:
Revision 23 as of 2006-07-10 01:04:46
Size: 5599
Editor: host81-156-116-114
Comment:
Deletions are marked like this. Additions are marked like this.
Line 70: Line 70:
 * 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.

Summary

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

Use cases

  • Frederic is a new Linux user on DSL. He attempts to open an mp3 file through a gstreamer application and receives an assistant to help him download and install the needed codecs.
  • Vincent, also new to Linux, is not on the internet. He attempts to open a QuickTime file and is given a different assistant with instructions on how to download the files he needs from an official Ubuntu mirror, and an offer to locate file if he already has a copy handy.

Scope

All gstreamer applications

Design

This assistant appears on an as-needed basis, and may also be presented by an application's first run if all supported plugins are not installed. That is, when the player encounters a codec which it is unable to play without additional packages, it will display the assistant to the user. The assistant will include a database mapping codecs to packages, so that it can find an appropriate package to install if one is available. If a package is known to provide support for a codec, but the package is not available from any known source, it should be displayed but grayed out.

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.

This application requires additional plugins to use this file.

[Certain countries may have laws making the installation of these plugins illegal. _link_ may help in determining what steps, if any, must be taken by you to legally install these plugins in your jurisdiction.]

Plugin

Install

Frobinator Audio

[checkbox]

Frobinator Video

[checkbox]

[Install] [Do nothing]

It should not be necessary to restart the application after the plugin has been installed.

Implementation

We must compile a database of the codecs which are supported by each package. This list is believed to be short enough that we may compile the database by hand in order to ship it with the package. It may also be feasible to automatically generate it based on the gstreamer registry.

Code

There is some work being done on this upstream for Rhythmbox: See [http://bugzilla.gnome.org/show_bug.cgi?id=338308 Gnome bug 338308]. This is very similar to our approach, but we would prefer to implement it directly in gstreamer, in order to support applications other than Rhythmbox.

Upstream bug about that: http://bugzilla.gnome.org/show_bug.cgi?id=161922, we can use it to discuss with upstream

Guadalinex includes a program called hermes which uses dbus to request installation of software. If we use hermes for other purposes, this program will use its facility for installing packages. Otherwise, it can simply call out to synaptic.

In order for most of the interesting packages to be available, multiverse must be enabled. The matter of arranging for these packages to be installed, regardless of the apt configuration, will be addressed in [http://launchpad.net/distros/ubuntu/+spec/enabling-additional-components Enabling additional components].

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.


CategorySpec

EasyCodecInstallation (last edited 2008-08-06 16:27:02 by localhost)