Saturday, December 4, 2010

Gist on Multimedia FrameWork in MeeGo :

Multimedia Multimedia domain provides audio and video playback, streaming, and imaging functionality to the system. In general, the domain takes care of the actual audio and video data handling (retrieval, demuxing, decoding and encoding, seeking, etc.). The domain includes the following subsystems:
Multimedia Component
  • Imaging and Video Adaptation - Platform specific codecs and containers for GStreamer
  • Camera Adaptation - Platform specific codecs and containers for GStreamer. Adaptation interface is CameraBin.
  • UPnP - Universal Plug and Play provides a UPnP stack, the UPnP profile for audio and video.
  • Gstreamer - GStreamer, through its plugins, provides playback, streaming, and imaging functionality to the system.
  • Audio Adaptation - Platform specific modules for PulseAudio
  • Pulse Audio - The audio subsystem handles audio inputs, post and pre processing, and outputs in a system. The purpose is to provide a proxy between audio applications and audio hardware.
Multi Media Stack












QT Mobiltiy  : 
                              QT mobility project delivers a set of new APIs to Qt with features,which allow the developer easily apply in multi platform.QT Mobility covers a collection of apis or frameworks to support the multimedia features to a full extent. this link will provide much more info on QT mobilty and multimedia http://doc.qt.nokia.com/qtmobility-1.0-tp/multimedia.html.

Qt Mobilty's media library  enables developers to easily create applications that make best advantage of the system mediacapabilities and it covers the items of most direct interest to developers:plyback,recording,playlist,management,metadata,radio,mediaediting,TV,etc.

Advantages of QT Mobiltiy multimedia framework:
1)developer can now implement fundamental functions with minimal code.
2)A great deal of flexibility with the media source.
3)Many different codecs are supported 'out of box'


How to create a video player
QMediaPlayer:  used for generic player.
QVideoWidget: control of video source,full screen,etc.
VideoWidget: inherts from QVideoWidget to add functions, such as double click , particular keypres
  Three Output Types:  
                         •WindowOutput(X11/Overlay)                                        •RenderOutput(QGraphicsVideoItem) 
                         •WidgetOutput (xvimagesink)  .
Extends the functinality of multimedia class -uses a 3 derived classes from them.

 


Extended functinality of a new service and a sample application code :
 


QT Mobilty multimedia framework supports a rich backend
         like Gstreammer,Quicktime,DirectShow,etc
 
Breif on Gstreamer:
             It is a OpenSource  framework for  creating media applications and it as a alone is not a player.it is pipeline  based   media framework written in C programming language witha type system based on Gobject.
              GStreamer allows a programmer to create a variety of media-handling components, including simple audio playback, audio and video playback, recording, streaming and editing. The pipeline design serves as a base to create many types of multimedia applications such as video editors, streaming media broadcasters, and media players.
Designed to be cross-platform, it is known to work on Linux (x86, PowerPC and ARM), Solaris (Intel and SPARC) and OpenSolaris, FreeBSD, OpenBSD, NetBSD, Mac OS X, Microsoft Windows and OS/400. GStreamer has bindings for programming-languages like Python, Vala, C++, Perl, GNU Guile and Ruby. GStreamer is licensed under the GNU Lesser General Public License.
Main Advantages of Gstreamer:
                 Pluggable elements could be mixed to form arbitrary pipelines to support various kinds of audio and vedio codecs.
                          Unified APIS for the devvekoper to create pipelines and media players.
 
Gstreamer Concepts :
 
   ELEMENT :
    Element is the most important object in Gstreamer, it is derived from GstObject.
 


    –create a chain of elements linked together and let data flow through this chain of elements           
 


            PAD:                         
    –Pad is used to negotiate links and data flow between elements in GStreamer
      –Pad could be sink pad or source pad
                  –Pad can restrict the type of data that flows through it.
     BIN & PIPELINE:                  
A Bin is a container for a collection of elements. E.g. playbin
A pipeline is a special subtype of a bin that allows execution of all of its contained child elements.
A pipeline is a top-level bin. As you set it to PAUSED or PLAYING state, data flow will start and media processing will take place.
GstPipeline is derived from GstBin

AUTOPLUGGING:      
      Want to build a media player that handles various kind of media automatically?
       •Autopluging: 1> Typefinding, 2> Linkage
        –Maintain a Registry for all elements
        –Create a function to filter a list of elements


Hope this info hekps in having some basic idea on the multimedia framework in Meego OS.


 

3 comments:

  1. Nice Article on GStreamer.. Thanks a lot. It will benefit everyone a lot.

    ReplyDelete
  2. Awesome Avinash!! Will be in my Favorites list.. Great going! Keep up the good work - LG

    ReplyDelete