Split out documentation into subfolders.
[platform/upstream/gstreamer.git] / markdown / manual / introduction / gstreamer.md
1 ---
2 title: What is GStreamer?
3 ...
4
5 # What is GStreamer?
6
7 GStreamer is a framework for creating streaming media applications. The
8 fundamental design comes from the video pipeline at Oregon Graduate
9 Institute, as well as some ideas from DirectShow.
10
11 GStreamer's development framework makes it possible to write any type of
12 streaming multimedia application. The GStreamer framework is designed to
13 make it easy to write applications that handle audio or video or both.
14 It isn't restricted to audio and video, and can process any kind of data
15 flow. The pipeline design is made to have little overhead above what the
16 applied filters induce. This makes GStreamer a good framework for
17 designing even high-end audio applications which put high demands on
18 latency.
19
20 One of the most obvious uses of GStreamer is using it to build a media
21 player. GStreamer already includes components for building a media
22 player that can support a very wide variety of formats, including MP3,
23 Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, mod, and more. GStreamer, however,
24 is much more than just another media player. Its main advantages are
25 that the pluggable components can be mixed and matched into arbitrary
26 pipelines so that it's possible to write a full-fledged video or audio
27 editing application.
28
29 The framework is based on plugins that will provide the various codec
30 and other functionality. The plugins can be linked and arranged in a
31 pipeline. This pipeline defines the flow of the data. Pipelines can also
32 be edited with a GUI editor and saved as XML so that pipeline libraries
33 can be made with a minimum of effort.
34
35 The GStreamer core function is to provide a framework for plugins, data
36 flow and media type handling/negotiation. It also provides an API to
37 write applications using the various plugins.
38
39 Specifically, GStreamer provides
40
41   - an API for multimedia applications
42
43   - a plugin architecture
44
45   - a pipeline architecture
46
47   - a mechanism for media type handling/negotiation
48
49   - a mechanism for synchronization
50
51   - over 250 plug-ins providing more than 1000 elements
52
53   - a set of tools
54
55 GStreamer plug-ins could be classified into
56
57   - protocols handling
58
59   - sources: for audio and video (involves protocol plugins)
60
61   - formats: parsers, formaters, muxers, demuxers, metadata, subtitles
62
63   - codecs: coders and decoders
64
65   - filters: converters, mixers, effects, ...
66
67   - sinks: for audio and video (involves protocol plugins)
68
69 ![GStreamer overview](images/gstreamer-overview.png "fig:")
70
71 GStreamer is packaged into
72
73   - gstreamer: the core package
74
75   - gst-plugins-base: an essential exemplary set of elements
76
77   - gst-plugins-good: a set of good-quality plug-ins under LGPL
78
79   - gst-plugins-ugly: a set of good-quality plug-ins that might pose
80     distribution problems
81
82   - gst-plugins-bad: a set of plug-ins that need more quality
83
84   - gst-libav: a set of plug-ins that wrap libav for decoding and
85     encoding
86
87   - a few others packages