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