EasyCodecInstallation
|
Size: 4501
Comment: overhaul of wording & greatly simplified
|
← Revision 47 as of 2008-08-06 16:27:02 ⇥
Size: 7097
Comment: converted to 1.6 markup
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 6: | Line 6: |
| * '''Packages affected''': rhythmbox, sound-juicer, totem | * '''Packages affected''': gstreamer0.10, libgimme-codec, rhythmbox, totem, sound-juicer (later) * See also: GnomeAppInstallCodecs |
| Line 13: | Line 14: |
* 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. |
* Carlos has just installed Ubuntu on his computer and has connected his ipod to it. When he tries to play an mp3 file from it, he gets a dialog suggesting to install gstreamer0.10-plugins-ugly to play that file. * Michael is trying to play a video, the codec required to decode the video part is not installed. Instead of playing only the audio track with visual effect totem suggests to install gstreamer0.10-ffmpeg so the video content can be decoded too. |
| Line 19: | Line 20: |
| All gstreamer applications | The gstreamer0.10 packages, rhythmbox, totem on the Ubuntu desktop. |
| Line 23: | Line 24: |
| 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. | This spec primarily targets gstreamer plugins (which in a couple of years will be the only media framework that we use). Other media frameworks, however, could use the work done here. |
| Line 25: | Line 26: |
| Bracketed items below are either buttons or conditional text which varies based on if a user is: * online * a member of the group admin * starting a program or trying to perform an action |
When the user attempts to play a media file which requires additional plugins the user should be presented with a dialog allowing them to install the required codecs, demuxers, sources, etc. |
| Line 30: | Line 28: |
| ''This application [supports the following multimedia formats through the use of plugins/requires the following plugins to [run / play this file / compress this file / whatever]][, which you are unable to install. Start [program] as an adminstrative user to install these plugins].'' | 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. |
| Line 32: | Line 30: |
| [''Certain countries 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 || Read Licence || ||Quicktime Audio || [checkbox, checked / browse button if offline] || [read licence] || ||Quicktime Video || [checkbox, checked / browse button if offline] || [read licence] || || || Optional Plugins || || ||Quicktime Audio || [checkbox, checked / browse button if offline] || [read licence] || ||Quicktime Audio || [checkbox, checked / browse button if offline] || [read licence] || ''[[checkbox] Disable this assistant for all non-administrative users of this computer'']] ''[checkbox] Ask me again next time I run [program]'' ''[[continue, grayed until all required entries are checked/located] [cancel]]'' If password authentication is failed for a user, the dialog will not cancel, but ''ask me again'' will be checked' The disable this assistant option will disable the assistant for all applications and all non-administrative users. |
It will not be necessary to restart the application after the plugin installation. |
| Line 54: | Line 34: |
| 1. All non free codecs need to be split into individual packages on a licence-by-licence basis with the existing by package replaced by a metapackage. | The process will start when gstreamer recognises that a required plugin is unavailable. gstreamer will notify the application (totem, etc) that a plugin is missing. The application will take this message and feed it through to libgimme-codec which will search for an available plugin and install it if possible. |
| Line 56: | Line 36: |
| === Code === | In the case that a plugin is available and installation succeeds the media will start playing once the install is finished. |
| Line 58: | Line 38: |
| === Data preservation and migration === | In the case that a plugin is available but the user does not have admin priviledges, the user will be given an error message suggesting that they seek help from their admin. In the case that a plugin is available but installaton has failed, the user will have experienced the error first-hand during the failed package install process and the media program should not generate an additional error message. This is the same case as the user manually cancelling the installation. In the case that a plugin is not available the user will be given an error message similar to the current error saying that the current file is unable to be played with the currently available codecs. The message will be made more helpful by including the actual codecs missing in the message. === 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 plugin packages need to be modified to run gst-inspect on each .so that is produced by the build. This will generate a list of capabilities provided by each package. The list of capabilities will be installed into a metafile inside the package (similar to a .desktop file, possibly actually a .desktop file). These files will then be collected and inspected by the same cron job that generates the list of which packages support which mime types. The information will be injected into the gnome-app-install package. === packages installation === Ryan Lortie has written a "libgimme-codec" which will be used by the applications. The library makes use of a distribution-specific helper script to do the heavy lifting of getting the codecs installed. On Ubuntu this helper script will be a trivial wrapper around gnome-app-install which will open a modal dialog over the application and install the packages. A first version of the library has been packaged and will be uploaded soon. The interface is sufficiently generic that it should be acceptable for use by all distributions and all media players so it is hoped that we can get upstream using that library too. For now, we will vendor patch the applications in question. 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. Essentially, when gstreamer throws an error message saying "i need codecs" the app will be responsible for catching this error and passing it to libgimme-codec. They will also provide a callback function into their own code that will be called when the install is complete. This function will have to ask gstreamer to rebuild its view of the registry, then restart the pipeline that caused the initial error. == Codec Packages == There are currently codecs in the following packages: * gstreamer0.10-esd * gstreamer0.10-plugins-base * gstreamer0.10-plugins-farsight * gstreamer0.10-plugins-good * gstreamer0.10-alsa * gstreamer0.10-sdl * gstreamer0.10-plugins-bad * gstreamer0.10-gl * gstreamer0.10-plugins-bad-multiverse * gstreamer0.10-plugins-ugly-multiverse * gstreamer0.10-gnomevfs * gstreamer0.10-x * gstreamer0.10-plugins-ugly * gstreamer0.10-ffmpeg The most interesting ones are: * gstreamer0.10-plugins-ugly, universe dependencies: * liba52-0.7.4 * libdvdread3 * libmpeg2-4 * libsidplay1 * gstreamer0.10-ffmpeg, universe dependencies: * none * gstreamer0.10-plugins-bad, universe dependencies: * libmms0 * libswfdec0.3 * libwavpack0 |
| Line 62: | Line 97: |
| == BoF agenda and discussion == | Kubuntu doesn't currently use gstreamer for its media players, so it won't benefit from this until that changes (amarok (using xine) in Edgy has this resolved for mp3 codecs being installed by a script). Apparently, the issue is that they need porting to gstreamer 0.10. We should consider the possibility of allowing users to purchase codecs or about warning them of potential legal problems associated with installation of certain codecs. This would be a simple modification to the Ubuntu-specific libgimme-codec helper script and would not have to be done on an application-by-application basis. |
| Line 66: | Line 104: |
| ATM, when you try to play an unhandled video with totem, it tells you that he cannot found the corresponding plugin. What I suggest he must do is : |
also see DesktopTeam/CommonInstallHook --SamTygier |
| Line 69: | Line 106: |
| - Tell you what format you are trying to view and what plugin you need. - If available with apt-get, it must suggest "Install this plugin now", so you can install the corresponding plugin in one click. - If not available via apt-get for known issues (patents), it must explain why it is not avalaible and offer a "click here to know more" that send you to a page on this wiki (or on the website), telling you how to install w32codecs, libdvdcss, ... (it can perhaps download and install it automatically after asking you if you are in a country with software patents) |
== Comments == |
| Line 73: | Line 108: |
| Another way is to have a standalone application that manage gstreamer plugins | Comments have been moved to EasyCodecInstallation/Comments |
| Line 75: | Line 110: |
- What about developing "dummy" plugins which somehow trigger the display of a message explaining the problem? It could be possible to have fake libraries which either play beck an audio clip or video clip (these things are either decoding audio, video, or both) with directions as to what the problem is, and the individual plugin packages could simply obsolete the dummy plugins / libraries... It seems reasonable to assume that the user will have sound support if he's trying to play back a sound file, and video support if he's trying to play back a video file. |
Launchpad Entry: https://launchpad.net/distros/ubuntu/+spec/easy-codec-installation
Created: 2005-11-02 by SebastienBacher
Contributors: SebastienBacher
Packages affected: gstreamer0.10, libgimme-codec, rhythmbox, totem, sound-juicer (later)
See also: GnomeAppInstallCodecs
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 has connected his ipod to it. When he tries to play an mp3 file from it, he gets a dialog suggesting to install gstreamer0.10-plugins-ugly to play that file.
- Michael is trying to play a video, the codec required to decode the video part is not installed. Instead of playing only the audio track with visual effect totem suggests to install gstreamer0.10-ffmpeg so the video content can be decoded too.
Scope
The gstreamer0.10 packages, rhythmbox, totem on the Ubuntu desktop.
Design
This spec primarily targets gstreamer plugins (which in a couple of years will be the only media framework that we use). Other media frameworks, however, could use the work done here.
When the user attempts to play a media file which requires additional plugins the user should be presented with a dialog allowing them to install the required codecs, demuxers, sources, etc.
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
The process will start when gstreamer recognises that a required plugin is unavailable. gstreamer will notify the application (totem, etc) that a plugin is missing. The application will take this message and feed it through to libgimme-codec which will search for an available plugin and install it if possible.
In the case that a plugin is available and installation succeeds the media will start playing once the install is finished.
In the case that a plugin is available but the user does not have admin priviledges, the user will be given an error message suggesting that they seek help from their admin.
In the case that a plugin is available but installaton has failed, the user will have experienced the error first-hand during the failed package install process and the media program should not generate an additional error message. This is the same case as the user manually cancelling the installation.
In the case that a plugin is not available the user will be given an error message similar to the current error saying that the current file is unable to be played with the currently available codecs. The message will be made more helpful by including the actual codecs missing in the message.
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 plugin packages need to be modified to run gst-inspect on each .so that is produced by the build. This will generate a list of capabilities provided by each package. The list of capabilities will be installed into a metafile inside the package (similar to a .desktop file, possibly actually a .desktop file). These files will then be collected and inspected by the same cron job that generates the list of which packages support which mime types. The information will be injected into the gnome-app-install package.
packages installation
Ryan Lortie has written a "libgimme-codec" which will be used by the applications. The library makes use of a distribution-specific helper script to do the heavy lifting of getting the codecs installed. On Ubuntu this helper script will be a trivial wrapper around gnome-app-install which will open a modal dialog over the application and install the packages. A first version of the library has been packaged and will be uploaded soon. The interface is sufficiently generic that it should be acceptable for use by all distributions and all media players so it is hoped that we can get upstream using that library too. For now, we will vendor patch the applications in question.
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.
Essentially, when gstreamer throws an error message saying "i need codecs" the app will be responsible for catching this error and passing it to libgimme-codec. They will also provide a callback function into their own code that will be called when the install is complete. This function will have to ask gstreamer to rebuild its view of the registry, then restart the pipeline that caused the initial error.
Codec Packages
There are currently codecs in the following packages:
- gstreamer0.10-esd
- gstreamer0.10-plugins-base
- gstreamer0.10-plugins-farsight
- gstreamer0.10-plugins-good
- gstreamer0.10-alsa
- gstreamer0.10-sdl
- gstreamer0.10-plugins-bad
- gstreamer0.10-gl
- gstreamer0.10-plugins-bad-multiverse
- gstreamer0.10-plugins-ugly-multiverse
- gstreamer0.10-gnomevfs
- gstreamer0.10-x
- gstreamer0.10-plugins-ugly
- gstreamer0.10-ffmpeg
The most interesting ones are:
- gstreamer0.10-plugins-ugly, universe dependencies:
- liba52-0.7.4
- libdvdread3
- libmpeg2-4
- libsidplay1
- gstreamer0.10-ffmpeg, universe dependencies:
- none
- gstreamer0.10-plugins-bad, universe dependencies:
- libmms0
- libswfdec0.3
- libwavpack0
Outstanding issues
Kubuntu doesn't currently use gstreamer for its media players, so it won't benefit from this until that changes (amarok (using xine) in Edgy has this resolved for mp3 codecs being installed by a script). Apparently, the issue is that they need porting to gstreamer 0.10.
We should consider the possibility of allowing users to purchase codecs or about warning them of potential legal problems associated with installation of certain codecs. This would be a simple modification to the Ubuntu-specific libgimme-codec helper script and would not have to be done on an application-by-application basis.
Suggestions from VideoPlaybackRoadmap
also see DesktopTeam/CommonInstallHook --SamTygier
Comments
Comments have been moved to EasyCodecInstallation/Comments
EasyCodecInstallation (last edited 2008-08-06 16:27:02 by localhost)