See also EasyCodecInstallation, http://webcvs.freedesktop.org/gstreamer/gstreamer/docs/random/draft-missing-plugins.txt?view=markup

Summary

gnome-app-install needs to be modified to install codecs. The reasons are:

Design

The following options should be added:

--transient-for: this option will cause the gnome-app-install window to be declared as a transient for the window with the given XID. this can be done using gdk_window_set_transient_for (with gdk_window_foreign_new).

--codec: perform lookup of a given codec.

Multiple --codec options should be accepted.

The install should only be attempted if all of the codecs can be found.

An example invocation will look like:

gnome-app-install --transient-for=12345 --codec=vorbis --codec=theora

where "vorbis" and "theora" are strings of a special format that will be decided later.

The idea is that the codec packages will include a gst-inspect type of thing during their build processes which creates a metadata file inside the package (similar to the current .desktop files) from which the database can be generated.

When --codec is specified, gnome-app-install will:

Exit status and error handling

mvo: this section is obsoleted by: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstbaseutilsinstallplugins.html

In all of the above cases g-a-i has printed a message to stderr summarising the problem, as noted. These message to stderr has been been translated into an appropriate language already, if necessary. The caller should capture stderr from g-a-i for use in error reporting. A naive program could just capture g-a-i's stderr and use the string provided and could treat all of the above exit statuses identically.

In all of those crash cases it would be a mistake to rerun g-a-i.

Note that the above interface specification deliberately leaves unspecified whether g-a-i will prefer to return an error, or claim success, if some installations succeeded and some failed or were declined. The specification above allows g-a-i to control whether it will be reinvoked if the application finds that the codecs are still insufficient: if it exits 0, the application should rerun g-a-i in that case, otherwise it must not.

We will have g-a-i exit 0 if any package installations succeeded, preferring to rerun it. But if this turns out to be annoying for the user we will change g-a-i to prefer to report error returns (or perhaps augment its own error dialogues).

Implementation

To be decided during implementation

The following questions remain:

The exact details here will be done however is convenient and this wiki page updated with the actual details from the implementation.

GnomeAppInstallCodecs (last edited 2008-08-06 16:30:40 by localhost)