mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
70cfc6cb4d
Original commit message from CVS: * new parser that uses flex and bison - doesn't do dynamic pipelines yet... * added GErrors to the gst_parse_launch[v] api * added --gst-mask-help command line option * fixed -o option for gst-launch * GstElement api change: - gst_element_get_pad - gst_element_get_request_pad, gst_element_get_static_pad - gst_element_get_compatible_pad - gst_element_get_compatible_static_pad, gst_element_get_compatible_request_pad - gst_element_[dis]connect -> gst_element_[dis]connect_pads - gst_element_[dis]connect_elements -> gst_element_[dis]connect * manual update * example, tool, and doc updates for the api changes - no more plugin docs in the core docs, plugins require a more extensive doc system
104 lines
4.4 KiB
XML
104 lines
4.4 KiB
XML
<chapter id="cha-motivation">
|
|
<title>Motivation</title>
|
|
<para>
|
|
Linux has historically lagged behind other operating systems in the multimedia
|
|
arena. Microsoft's Windows[tm] and Apple's MacOS[tm] both have strong support
|
|
for multimedia devices, multimedia content creation,
|
|
playback, and realtime processing. Linux, on the other hand, has a poorly integrated
|
|
collection of multimedia utilities and applications available, which can hardly compete
|
|
with the professional level of software available for MS Windows and MacOS.
|
|
</para>
|
|
|
|
<sect1 id="sec-motivation-problems">
|
|
<title>Current problems</title>
|
|
<para>
|
|
We descibe the typical problems in todays media handling on Linux.
|
|
</para>
|
|
<sect2 id="sec-motivation-duplicate">
|
|
<title>Multitude of duplicate code</title>
|
|
<para>
|
|
The Linux user who wishes to hear a sound file must hunt through their collection of
|
|
sound file players in order to play the tens of sound file formats in wide use today.
|
|
Most of these players basically reimplement the same code over and over again.
|
|
</para>
|
|
<para>
|
|
The Linux developer who wishes to embed a video clip in their application must use
|
|
crude hacks to run an external video player. There is no library available that a
|
|
developer can use to create a custom media player.
|
|
</para>
|
|
|
|
</sect2>
|
|
<sect2 id="sec-motivation-goal">
|
|
<title>'One goal' media players/libraries</title>
|
|
<para>
|
|
Your typical MPEG player was designed to play MPEG video and audio. Most of
|
|
these players have implemented a complete infrastructure focused on
|
|
achieving their only goal: playback. No provisions were made to add
|
|
filters or special effects to the video or audio data.
|
|
</para>
|
|
<para>
|
|
If I wanted to convert an MPEG2 video stream into an AVI file, my best
|
|
option would be to take all of the MPEG2 decoding algorithms out
|
|
of the player and duplicate them into my own AVI encoder. These
|
|
algorithms cannot easily be shared accross applications.
|
|
</para>
|
|
<para>
|
|
Attempts have been made to create libraries for handling various media types.
|
|
Because they focus on a very specific media type (avifile, libmpeg2, ...),
|
|
significant work is needed to integrate them due to a lack of a common API.
|
|
GStreamer allows you to wrap these libraries with a common API, which
|
|
significantly simplifies integration and reuse.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="sec-motivation-plugin">
|
|
<title>Non unified plugin mechanisms</title>
|
|
<para>
|
|
Your typical media player might have a plugin for different media
|
|
types. Two media players will typically implement their own plugin
|
|
mechanism so that the codecs cannot be easily exchanged.
|
|
</para>
|
|
<para>
|
|
The lack of a unified plugin mechanism also seriously hinders the
|
|
creation of binary only codecs. No company is willing to port their
|
|
code to all the different plugin mechanisms.
|
|
</para>
|
|
<para>
|
|
While GStreamer also uses it own plugin system it offers a very rich
|
|
framework for the plugin developper and ensures the plugin can be used
|
|
in a wide range of applications, transparently interacting with other
|
|
plugins.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="sec-motivation-network">
|
|
<title>Provision for network transparency</title>
|
|
<para>
|
|
No infrastructure is present to allow network transparent media
|
|
handling. A distributed MPEG encoder will typically duplicate the
|
|
same encoder algorithms found in a non-distributed encoder.
|
|
</para>
|
|
<para>
|
|
No provisions have been made for emerging technologies such as
|
|
the GNOME object embedding using Bonobo.
|
|
</para>
|
|
<para>
|
|
While the GStreamer core does not use network transparent technologies
|
|
at the lowest level, it shouldn't be hard to create a wrapper around the
|
|
core components.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="sec-motivation-catchup">
|
|
<title>Catch up with the Windows(tm) world</title>
|
|
<para>
|
|
We need solid media handling if we want to see Linux succeed on
|
|
the desktop.
|
|
</para>
|
|
<para>
|
|
We must clear the road for commercially backed codecs and multimedia
|
|
applications so that Linux can become an option for doing multimedia.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|