source: trunk/third/gstreamer/docs/manual/advanced-interfaces.xml @ 21448

Revision 21448, 4.4 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21447, which included commits to RCS files with non-trunk default branches.
Line 
1<chapter id="chapter-interfaces">
2  <title>Interfaces</title>
3
4  <para>
5    In <xref linkend="section-elements-properties"/>, you have learned how
6    to use <classname>GObject</classname> properties as a simple way to do
7    interaction between applications and elements. This method suffices for
8    the simple'n'straight settings, but fails for anything more complicated
9    than a getter and setter. For the more complicated use cases, &GStreamer;
10    uses interfaces based on the Glib <classname>GInterface</classname> type.
11  </para>
12
13  <para>
14    Most of the interfaces handled here will not contain any example code.
15    See the API references for details. Here, we will just describe the
16    scope and purpose of each interface.
17  </para>
18
19  <sect1 id="section-interfaces-mixer">
20    <title>The Mixer interface</title>
21
22    <para>
23      The mixer interface provides a uniform way to control the volume on a
24      hardware (or software) mixer. The interface is primarily intended to
25      be implemented by elements for audio inputs and outputs that talk
26      directly to the hardware (e.g. OSS or ALSA plugins).
27    </para>
28    <para>
29      Using this interface, it is possible to control a list of tracks
30      (such as Line-in, Microphone, etc.) from a mixer element. They can
31      be muted, their volume can be changed and, for input tracks, their
32      record flag can be set as well.
33    </para>
34    <para>
35      Example plugins implementing this interface include the OSS elements
36      (osssrc, osssink, ossmixer) and the ALSA plugins (alsasrc, alsasink
37      and alsamixer).
38    </para>
39  </sect1>
40
41  <sect1 id="section-interfaces-tuner">
42    <title>The Tuner interface</title>
43
44    <para>
45      The tuner interface is a uniform way to control inputs and outputs
46      on a multi-input selection device. This is primarily used for input
47      selection on elements for TV- and capture-cards.
48    </para>
49    <para>
50      Using this interface, it is possible to select one track from a list
51      of tracks supported by that tuner-element. The tuner will than select
52      that track for media-processing internally. This can, for example, be
53      used to switch inputs on a TV-card (e.g. from Composite to S-video).
54    </para>
55    <para>
56      This interface is currently only implemented by the Video4linux and
57      Video4linux2 elements.
58    </para>
59  </sect1>
60
61  <sect1 id="section-interfaces-colorbalance">
62    <title>The Color Balance interface</title>
63
64    <para>
65      The colorbalance interface is a way to control video-related properties
66      on an element, such as brightness, contrast and so on. It's sole
67      reason for existance is that, as far as its authors know, there's no
68      way to dynamically register properties using
69      <classname>GObject</classname>.
70    </para>
71    <para>
72      The colorbalance interface is implemented by several plugins, including
73      xvimagesink and the Video4linux and Video4linux2 elements.
74    </para>
75  </sect1>
76
77  <sect1 id="section-interfaces-proprobe">
78    <title>The Property Probe interface</title>
79
80    <para>
81      The property probe is a way to autodetect allowed values for a
82      <classname>GObject</classname> property. It's primary use (and
83      the only thing that we currently use it for) is to autodetect
84      devices in several elements. For example, the OSS elements use
85      this interface to detect all OSS devices on a system. Applications
86      can then <quote>probe</quote> this property and get a list of
87      detected devices. Given the overlap between HAL and the practical
88      implementations of this interface, this might in time be deprecated
89      in favour of HAL.
90    </para>
91    <para>
92      This interface is currently implemented by many elements, including
93      the ALSA, OSS, Video4linux and Video4linux2 elements.
94    </para>
95  </sect1>
96
97  <sect1 id="section-interfaces-xoverlay">
98    <title>The X Overlay interface</title>
99
100    <para>
101      The X Overlay interface was created to solve the problem of embedding
102      video streams in an application window. The application provides an
103      X-window to the element implementing this interface to draw on, and
104      the element will then use this X-window to draw on rather than creating
105      a new toplevel window. This is useful to embed video in video players.
106    </para>
107    <para>
108      This interface is implemented by, amongst others, the Video4linux and
109      Video4linux2 elements and by ximagesink, xvimagesink and sdlvideosink.
110    </para>
111  </sect1>
112</chapter>
Note: See TracBrowser for help on using the repository browser.