JauntyCodecInstall
Launchpad Entry: jaunty-codec-install
Created: MichaelVogt
Contributors:
Packages affected: gnome-app-install
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