Symbian3/SDK/Source/GUID-60B9404B-5102-4FBB-A32F-55F2ACFD1481.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 11 Jun 2010 12:39:03 +0100
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
permissions -rw-r--r--
Week 23 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 2714, Bug 462.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-60B9404B-5102-4FBB-A32F-55F2ACFD1481" xml:lang="en"><title>GStreamer
Overview</title><shortdesc>GStreamer is a development framework for creating applications
like media players, streaming media broadcasters and video editors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<p>GStreamer is designed to make it easier to write applications easily that
handle audio, video, or both. Pluggable components can be mixed and matched
into arbitrary pipelines, which consist of a chain of processing elements.</p>
<section id="GUID-4576F23A-638C-447D-80C1-7DCE99A513B3">       <title>Purpose</title><p><xref href="http://www.gstreamer.net" scope="external">GStreamer</xref> is an open
source multimedia framework that allows you to write any streaming multimedia
application, not just audio or video. GStreamer can handle any data flow. </p><p>GStreamer
core provides the following features:<ul>
<li><p>Plug-in handling</p></li>
<li><p>Media type negotiation</p></li>
<li><p>Clocking and data flow</p></li>
</ul>GStreamer also provides <xref href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/" scope="external">APIs</xref> to write applications using various plug-ins
such as source plug-in, transform plug-in and sink plug-in. The framework
uses these plug-ins to perform various roles such as encoding, decoding and
media processing. </p> <p/>    <p><fig id="GUID-DB713A5A-4628-40EB-994C-267759BB906F">
<title>GStreamer plug-ins</title>
<image href="GUID-63BA04BD-2242-4365-95A1-717569207E92_d0e306657_href.png" placement="inline"/>
</fig></p>    </section>
<section id="GUID-2EC5760E-D208-4071-A032-91B72904782A"><title>Description</title><p>Some
GStreamer concepts are as follows:<ul>
<li><p><b>Element</b> </p><p>An element is an object that performs some action
on a multimedia stream. Examples of such actions are reading a file, decoding
or encoding data and capturing data from a hardware device.</p></li>
<li><p><b>Bin</b></p><p>A bin is a subclass of element. A bin acts as a container
for other elements, so multiple elements combine into one logical unit.</p></li>
<li><p><b>Pipeline</b></p><p>A pipeline is a set of data processing elements
connected in series, so the output from one element is the input for the next
element.</p><p>In GStreamer the pipeline is a specialized bin subclass that
provides execution of all contained elements. Normally, applications create
one pipeline that will manage all the elements contained within it.</p></li>
</ul></p><p><b>Note:</b> Elements can be added to and removed from pipelines
based on the use-case being handled. For example a use-case such as playing
an <i>MP3</i> file using GStreamer.</p><p>An element can provide a number
of pads, which can be either source or sink pads. A pad is a plug or port
on an element to link with other elements. The pads are responsible for data
flow between the elements. Source pads supply data, and sink pads consume
data. Basically, pads are used to negotiate compatibility and allow data flow
between elements.</p><p>An element can be in one of four different states
during the application request: <ul>
<li><p>Null</p></li>
<li><p> Ready</p></li>
<li><p>Pause</p></li>
<li><p>Play</p></li>
</ul> In the <i>Null</i> and<i> Ready</i> states, the element is not processing
any data. The processing of data happens only in the <i>Play</i> state. The <i>Pause</i> state
is used to fill all connected elements in the data pipeline so the <i>Play</i> state
change happens quickly.</p><p>GStreamer also provides higher level utilities
and components to detect automatically the media type of an application, and
to create the best possible pipeline for a use-case. This process is called
auto plugging.</p></section>
<section id="GUID-BC06C918-9763-4374-B263-0BE28D2637B0"><title>GStreamer applications</title><p>GStreamer
is used in many types of applications including:</p><ol>
<li id="GUID-D6663533-F4AD-4D58-8ED6-8AE1160D22FB"><p>Media playback and streaming</p></li>
<li id="GUID-4EE3C5D4-04EA-4888-B425-1DEFAACF4C09"><p>Media recording</p></li>
<li id="GUID-FB1D14E9-F9CC-4303-8C73-D710A9AFCF7D"><p>Media transcoding</p></li>
<li id="GUID-10171E9B-0E09-45F0-8564-19B00252CCA1"><p>Video editing</p></li>
</ol><p>For example the diagram below shows how a Media Player uses GStreamer:</p><p><fig id="GUID-7127CC7D-14D5-4652-87A1-DB5BC3AE9663">
<title>Media playback using GStreamer</title>
<image href="GUID-DD39680E-C0CB-4D97-A921-25FACC30FBE3_d0e306771_href.jpg" placement="inline"/>
</fig></p><p><draft-comment time="2010-02-17T10:06" translate="no">Sound device is a framework
to perform hardware accelerated audio functionality. Audio Policy manages
the requests to access the audio hardware. Digital Signal Processing converts
the digital audio signal to the analog audio signal.</draft-comment></p> </section>
<section id="GUID-59D1352D-208F-4E01-B62C-9BF7385E0A9F"><title>See also</title><ul>
<li><p><xref href="http://wiki.forum.nokia.com/index.php/GStreamer" scope="external">GStreamer</xref> documentation
published on Forum Nokia.</p></li>
<li><p><xref href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita">Multimedia Framework
Component</xref></p></li>
</ul></section>
</conbody></concept>