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


Reply via email to