Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
codeina
1.2. Name of Document Author/Supplier:
Author: Brian Cameron
1.3 Date of This Document:
13 November, 2008
4. Technical Description
1. Introduction
1.1. Project/Component Working Name:
codina
1.2. Name of Document Author/Supplier:
Brian Cameron
1.3. Date of This Document:
11/06/2008
1.4. Name of Major Document Customer(s)/Consumer(s):
1.4.1. The PAC or CPT you expect to review your project:
Solaris PAC
1.4.2. The ARC(s) you expect to review your project:
LSARC
1.4.3. The Director/VP who is "Sponsoring" this project:
Robert O'Dea
1.4.4. The name of your business unit:
Software - OPG
1.5. Email Aliases:
1.5.1. Responsible Manager:
leo.binchy at sun.com
1.5.2. Responsible Engineer:
brian.cameron at sun.com
1.5.3 Marketing Manager:
dan.robert at sun.com
1.5.4. Interest List:
desktop-discuss at opensolaris.org
2. Project Summary
2.1. Project Description:
codeina is an Fleundo application written in Python which simplifies
the process for users to discover and install GStreamer multimedia
plugins on their system.
4. Technical Description:
4.1. Details:
codeina is a client application from the Fluendo company which steps
the user through the process of buying and installing GStreamer
multimedia codec plugins. It uses an embedded browser in the
application to talk to a web server. By default codeina on Solaris
only supports connecting to the Fluendo server. Once connected, the
user can navigate through web pages to select plugins to download and
install.
The codeina application can be run in two ways:
- As a standalone program. In this case, a full list of available
plugins are presented to the user. The user can select a plugin
and is stepped through the process of downloading and installing
the plugin.
- GStreamer supports the GST_INSTALL_PLUGINS_HELPER environment
variable. If a user tries to play a media format that is not
supported by available installed GStreamer plugins, then it will run
the program specified in this environment variable. By ensuring that
the user's session has this environment variable set to
"/usr/bin/codeina", then the codeina program will be launched.
GStreamer itself (in the gst-plugins-base module) can be configured
to use a default value when the environment variable is not set via
the gst-plugins-base configure --with-install-plugins-helper option.
This method would be used to ensure codeina is used when integrating
codeina into Solaris.
When codeina is launched via these GStreamer mechanisms, codeina
checks a list of configured servers to see if any server has a plugin
available to play this media type. If not, then codeina just exits
and allows the application to inform the user the media type cannot
be played.
If a plugin is found, then codeina steps through the process of
downloading and installing the plugin. If more than one plugin is
found, the user can select which plugin they wish to download
install.
Some plugins may be free. In this case, the user can simply download
and install the plugin immediately. Other plugins may be available
only for a fee. This is typical with plugins that require a license
fee to use (such as WindowsMedia, MP3, MPEG-2, or MPEG-4). In this
situation, codeina presents the user with a webstore defined by the
server where the user can pay for the plugin (perhaps by credit card or
PayPal). Codina uses PyOpenSSL to support HTTPS secure web
interactions for navigating websites that require such billing.
In addition, codeina provides an autostart feature so that codeina is
always run with the user session with the "-u --sleep 5" arguments.
This causes codeina to check with the server periodically to see if
there are any updates to any plugins previously downloaded via codina.
If so, then the user is stepped through the process of downloading and
installing the updates.
By default, when codeina installs a plugin, it installs it to the
$HOME/.gstreamer/plugins directory so that the user immediately is able
to use the plugin.
The codeina application also provide hooks so that a distro can provide
additional plugins from other web resources. This is managed via
codeina's "providers" files. By providing a "providers" file, a
distro can make available either free plugins or plugins that are for
sale. The providers file has hooks so that a distro can specify their
own installation plugin which will step the user through a specified
webstore purchasing process for billing. Though, this obviously
requires that the distro set up the webstore service and write a
installation plugin for codeina.
codeina keeps track of each platform internally by keeping track of the
following variables which are set as follows on Solaris:
OS_NAME = "SunOS"
ARCH_NAME = "sparc" or "i386"
DISTRO_NAME = "solaris"
DISTRO_VERSION = "any"
These values are used in handshaking between the client and server in
order to identify which plugins are available for a given client. If,
for example, Sun were to set up a providers file which pointed to a
Sun specific server, then the server would need to be configured to
identify the Sun client using these parameters.
Likewise codeina provides hooks so that a distro can customize how
plugins are installed if desired.
Although some distros (such as Red Hat and Mandriva Linux) have made
us of such integration hooks (such as providers files), the interfaces
are not documented. Fluendo plans to make these interfaces more public
in the future so that it is easier for distros to integrate with
codeina. In the meantime they should be considered Volatile interfaces.
4.2. Interfaces:
Exported Interfaces Stability Comments
--------------------------------------- ----------- ----------------
SUNWcodeina Uncommitted Package name.
SUNWcodeina-root Uncommitted Package name.
/usr/bin/codeina Volatile Script for
starting
codeina
/usr/bin/codeina.bin Volatile The codeina
application
/usr/lib/python/2.4/vendor-packages/codeina Project Python
Private implementation
of codina
/usr/share/applications/codeina.desktop Volatile Desktop file
/usr/share/autostart/codeina-update-kde.desktop for when KDE is
the desktop
being used.
/usr/share/codeina Project Private
Private directory for
icons and logos
/etc/codeina/providers Volatile Providers
directory
/etc/codeina/providers/fluendo.xml Volatile Fluendo
providers file
/etc/xdg/autostart/codeina-update.desktop
$XDG_CONFIG_HOME/share/codeina Volatile User config
$HOME/.gstreamer-0.10/plugins Volatile GStreamer user
plugin
directory
Imported Interfaces Stability Comments
--------------- --------------- -----------------------
SUNWpython-libs Unstable LSARC 2005/506
Python External PSARC/2005/532 Python
Evolving Migration from /usr/sfw
to /usr and upgrade to v2.4.x
GStreamer Volatile LSARC 2006/202
Python XDG Uncommitted PSARC 2008/104
SUNWgst-python Uncommitted PSARC 2008/105
python-notify Uncommitted PSARC 2008/419
PyYAML Uncommitted PSARC 2008/676
PyOpenSSL Uncommitted
4.3. Doc Impact:
Man page is needed.
4.4. Packaging & Delivery:
SUNWcodeina, SUNWcodeina-root - packages for codeina.
4.5. Dependencies:
None.
4.6. L10N Impact:
The Desktop team and the G11N are working together to evaluate and
provide I18N/L10N support.
4.7. Security Impact:
None.
5. Reference Documents:
The codeina website:
https://core.fluendo.com/gstreamer/trac/wiki/codeina
Other information about codeina:
http://fedoraproject.org/wiki/Multimedia/Codeina
http://fedoraproject.org/wiki/Releases/FeatureCodecBuddy
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
Desktop
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open