JauntyCodecInstall

Revision 5 as of 2008-11-26 13:06:03

Clear message

Summary

Debian has a new mechanism for doing codec installation. Packagekit is also capable of doing codec installs now. We should evalulate if he should keep our version (based on gnome-app-install) or switch to one of the new systems.

Release Note

TBD

Rationale

The codec install information is now part of the Package file. This is a feature that we inherited from debian and that we should use.

Design

The codec install information is now part of the Packages file, it looks like:

$ apt-cache show gstreamer0.10-plugins-good
Package: gstreamer0.10-plugins-good
Priority: optional
Section: libs
Installed-Size: 3384
Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
Original-Maintainer: Maintainers of GStreamer packages <pkg-gstreamer-maintainers@lists.alioth.debian.org>
Architecture: i386
Source: gst-plugins-good0.10
Version: 0.10.10.4-1ubuntu1
Replaces: gstreamer0.10-plugins-bad (<< 0.10.7.2), gstreamer0.10-plugins-good-doc (<< 0.10.6-2), gstreamer0.10-plugins-really-bad (<< 0.10.7.2)
Provides: gstreamer0.10-audiosink, gstreamer0.10-audiosource, gstreamer0.10-videosink, gstreamer0.10-videosource, gstreamer0.10-visualization
Depends: gconf2 (>= 2.10.1-2), libaa1 (>= 1.4p5), libavc1394-0 (>= 0.5.3), libbz2-1.0, libc6 (>= 2.4), libcaca0 (>= 0.99.beta13b-1), libcairo2 (>= 1.2.4), libcucul0 (>= 0.99.beta13b-1), libdbus-1-3 (>= 1.0.2), libdv4, libflac8, libgcc1 (>= 1:4.1.1), libgconf2-4 (>= 2.13.5), libglib2.0-0 (>= 2.16.0), libgstreamer-plugins-base0.10-0 (>= 0.10.21), libgstreamer0.10-0 (>= 0.10.21), libgtk2.0-0 (>= 2.14.1), libhal1 (>= 0.5.8.1), libiec61883-0 (>= 1.1.0), libjpeg62, liboil0.3 (>= 0.3.10), libpng12-0 (>= 1.2.13-4), libraw1394-8, libshout3, libsoup2.4-1 (>= 2.23.91), libspeex1 (>= 1.2~beta3-1), libstdc++6 (>= 4.1.1), libtag1c2a (>= 1.5), libv4l-0 (>= 0.5.0), libwavpack1 (>= 4.40.0), libx11-6, libxdamage1 (>= 1:1.1), libxext6, libxfixes3 (>= 1:4.0.1), libxml2 (>= 2.6.27), zlib1g (>= 1:1.1.4), gstreamer0.10-plugins-base
Recommends: gstreamer0.10-x
Filename: pool/main/g/gst-plugins-good0.10/gstreamer0.10-plugins-good_0.10.10.4-1ubuntu1_i386.deb
Size: 1028966
MD5sum: 02fbc87a7ee0eba5056b3277675332cf
SHA1: 29d9bbdf98322d61c214b9dfe30e580f6ae4df6d
SHA256: 9ed27e92492f2de3830fdaaac9673fb5ce1521aa571dcda1b11c2b304f494d5c
Description: GStreamer plugins from the "good" set
 GStreamer is a streaming media framework, based on graphs of filters
 which operate on media data.  Applications using this library can do
 anything from real-time sound processing to playing videos, and just
 about anything else media-related.  Its plugin-based architecture means
 that new data types or processing capabilities can be added simply by
 installing new plug-ins.
 .
 This package contains the GStreamer plugins from the "good" set, a set
 of good-quality plug-ins under the LGPL license.
Gstreamer-Decoders: application/x-3gp; application/x-apetag; application/x-icy; application/x-id3; application/x-navi-animation; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string){ AMR, AMR-WB }, encoding-params=(string)1, octet-align=(string)1, crc=(string){ 0, 1 }, robust-sorting=(string)0, interleaving=(string)0; application/x-rtp, media=(string){ video, audio, application }, payload=(int)[ 96, 127 ], encoding-name=(string)MPEG4-GENERIC, streamtype=(string){ 4, 5 }, mode=(string){ generic, CELP-cbr, CELP-vbr, AAC-lbr, AAC-hbr }; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string)ILBC, mode=(string){ 20, 30 }; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string)SPEEX, encoding-params=(string)1; application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], encoding-name=(string)THEORA, delivery-method=(string)inline; application/x-rtp, payload=(int)[ 96, 127 ], media=(string){ audio, video }, encoding-name=(string){ X-QT, X-QUICKTIME }; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string){ AC3, G726, G726-16, G726-24, G726-32, G726-40, G729, GSM, PCMA, PCMU, MPA, L16, MP4A-LATM, VORBIS }; application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], encoding-name=(string){ MPV, H263-2000, H263, H264, MP1S, MP2T-ES, MP4V-ES, RAW, H263-1998 }; application/x-rtp, media=(string)video, payload=(int)34, encoding-name=(string)H263; application/x-rtp, media=(string)other, payload=(int)[ 96, 127 ], encoding-name=(string)MP1S; application/x-rtp, media=(string)audio, payload=(int){ 18, 3, 8, 0, 14, 10, 11 }; application/x-rtp, media=(string)video, payload=(int){ 32, 33 }; application/x-subtitle-avi; audio/x-alaw; audio/x-au; audio/x-flac; audio/x-m4a; audio/x-mulaw; audio/x-speex; audio/x-wav; audio/x-wavpack, framed=(boolean){ false, true }; audio/x-wavpack-correction, framed=(boolean)false; image/bmp; image/gif; image/jpeg; image/png; image/svg; image/svg+xml; image/tiff; image/vnd.wap.wbmp; image/x-MS-bmp; image/x-bitmap; image/x-bmp; image/x-cmu-raster; image/x-icon; image/x-pcx; image/x-pixmap; image/x-portable-anymap; image/x-portable-bitmap; image/x-portable-graymap; image/x-portable-pixmap; image/x-sun-raster; image/x-tga; multipart/x-mixed-replace; text/x-cmml, encoded=(boolean)true; video/mj2; video/quicktime; video/x-dv, systemstream=(boolean){ true, false }; video/x-fli; video/x-matroska; video/x-msvideo; video/x-smoke
Gstreamer-Elements: aasink, agingtv, alawdec, alawenc, alpha, alphacolor, apedemux, apev2mux, asteriskh263, audioamplify, audiochebband, audiocheblimit, audiodynamic, audioinvert, audiokaraoke, audiopanorama, audiowsincband, audiowsinclimit, auparse, autoaudiosink, autovideosink, avidemux, avimux, avisubtitle, breakmydata, cacasink, cairotextoverlay, cairotimeoverlay, cmmldec, cmmlenc, cutter, deinterleave, dicetv, dv1394src, dvdec, dvdemux, dynudpsink, edgetv, efence, equalizer-10bands, equalizer-3bands, equalizer-nbands, flacdec, flacenc, flactag, flxdec, gamma, gconfaudiosink, gconfaudiosrc, gconfvideosink, gconfvideosrc, gdkpixbufdec, gdkpixbufscale, gdkpixbufsink, goom, goom2k1, halaudiosink, halaudiosrc, hdv1394src, icydemux, id3demux, id3v2mux, interleave, jpegdec, jpegenc, level, matroskademux, matroskamux, monoscope, mulawdec, mulawenc, multifilesink, multifilesrc, multipartdemux, multipartmux, multiudpsink, navigationtest, navseek, ossmixer, osssink, osssrc, pngdec, pngenc, progressreport, qtdemux, quarktv, revtv, rganalysis, rglimiter, rgvolume, rndbuffersize, rtpL16depay, rtpL16pay, rtpac3depay, rtpamrdepay, rtpamrpay, rtpdec, rtpdepay, rtpdvdepay, rtpdvpay, rtpg726depay, rtpg726pay, rtpg729depay, rtpg729pay, rtpgsmdepay, rtpgsmpay, rtph263depay, rtph263pay, rtph263pdepay, rtph263ppay, rtph264depay, rtph264pay, rtpilbcdepay, rtpilbcpay, rtpmp1sdepay, rtpmp2tdepay, rtpmp2tpay, rtpmp4adepay, rtpmp4apay, rtpmp4gdepay, rtpmp4gpay, rtpmp4vdepay, rtpmp4vpay, rtpmpadepay, rtpmpapay, rtpmpvdepay, rtpmpvpay, rtppcmadepay, rtppcmapay, rtppcmudepay, rtppcmupay, rtpspeexdepay, rtpspeexpay, rtpsv3vdepay, rtptheoradepay, rtptheorapay, rtpvorbisdepay, rtpvorbispay, rtpvrawdepay, rtpvrawpay, rtpxqtdepay, rtspgoogle, rtspsrc, shagadelictv, shout2send, smokedec, smokeenc, smpte, smptealpha, souphttpsrc, spectrum, speexdec, speexenc, taginject, testsink, udpsink, udpsrc, v4l2src, vertigotv, videobalance, videobox, videocrop, videoflip, videomixer, warptv, wavenc, wavpackdec, wavpackenc, wavpackparse, wavparse, ximagesrc
Gstreamer-Encoders: application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string){ AMR, AMR-WB }, encoding-params=(string)1, octet-align=(string)1, crc=(string)0, robust-sorting=(string)0, interleaving=(string)0, mode-set=(int)[ 0, 7 ], mode-change-period=(int)[ 1, 2147483647 ], mode-change-neighbor=(string){ 0, 1 }, maxptime=(int)[ 20, 2147483647 ], ptime=(int)[ 20, 2147483647 ]; application/x-rtp, media=(string){ video, audio, application }, payload=(int)[ 96, 127 ], encoding-name=(string)MPEG4-GENERIC, streamtype=(string){ 4, 5 }, mode=(string){ generic, CELP-cbr, CELP-vbr, AAC-lbr, AAC-hbr }; application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], encoding-name=(string)RAW, sampling=(string){ RGB, RGBA, BGR, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1 }, colorimetry=(string){ BT601-5, BT709-2, SMPTE240M }; application/x-rtp, media=(string){ video, audio }, payload=(int)[ 96, 127 ], encoding-name=(string)DV, encode=(string){ SD-VCR/525-60, SD-VCR/625-50, HD-VCR/1125-60, HD-VCR/1250-50, SDL-VCR/525-60, SDL-VCR/625-50, 306M/525-60, 306M/625-50, 314M-25/525-60, 314M-25/625-50, 314M-50/525-60, 314M-50/625-50 }; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string)ILBC, mode=(string){ 20, 30 }; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string)SPEEX, encoding-params=(string)1; application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], encoding-name=(string)THEORA, delivery-method=(string)inline; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], encoding-name=(string){ G726-16, G726-24, G726-32, G726-40, G729, GSM, PCMU, PCMA, MPA, L16, MP4A-LATM, VORBIS }; application/x-rtp, media=(string)audio, payload=(int)3, encoding-name=(string)GSM; application/x-rtp, media=(string)audio, payload=(int)0, encoding-name=(string)PCMU; application/x-rtp, media=(string)audio, payload=(int)8, encoding-name=(string)PCMA; application/x-rtp, media=(string)video, payload=(int)32, encoding-name=(string)MPV; application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], encoding-name=(string){ H263-1998, H263-2000, H263, H264, MP2T-ES, MP4V-ES }; application/x-rtp, media=(string)video, payload=(int)34, encoding-name=(string)H263; application/x-rtp, media=(string)audio, payload=(int){ 18, 14, 10, 11 }; audio/x-alaw; audio/x-flac; audio/x-mulaw; audio/x-speex; audio/x-wav; audio/x-wavpack, framed=(boolean)true; image/jpeg; image/png; multipart/x-mixed-replace; text/x-cmml, encoded=(boolean)true; video/x-matroska; video/x-msvideo; video/x-smoke
Gstreamer-Uri-Sinks: udp
Gstreamer-Uri-Sources: dv, hdv, http, https, rtsp, rtspt, rtspu, udp
Gstreamer-Version: 0.10
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: ubuntu-desktop, edubuntu-desktop, edubuntu-desktop-kde, xubuntu-desktop, mobile-mid, mobile-mobile

Together with this debian has a new codec install application """gnome-codec-install""" that uses this information. We should evaluate if that codec installer can supersede gnome-app-install. We also should check the packagekit codec installer and decide which one should be the default.

gnome-app-install

  • what we use now
  • - uses static data from /usr/share/app-install
  • - needs lots of clicks to install something
  • + uses fast dbm hash database to give instant feedback if codec is availabe
  • + knows about codecs even if they are in a not enabled component (e.g. multiverse codecs on a system without multiverse enabled)

gnome-codec-install

  • what debian uses now
  • - search relatively slow (goes over the full Packages files)
  • - relatively new (had trouble with it on my debian/sid system)
  • + does not need app-install-data package to function (easier updates)

packagekit codec install

  • ...

Implementation

TB

UI Changes

Should cover changes required to the UI, or specific UI that is required to implement this

Test/Demo Plan

Download a mp3 file from the net and double click on it to see the installer in action.

BoF agenda and discussion

Note that the BBC patch to totem relies on internals of the current implementation, and would need to be updated. -- ColinWatson


CategorySpec