2
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
4
<!ENTITY % url-entities SYSTEM "url.entities">
5
<!ENTITY % text-entities SYSTEM "text.entities">
6
<!ENTITY % version-entities SYSTEM "version.entities">
12
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
14
<title>GStreamer Entrans &GST_MAJORMINOR; Reference Manual</title>
18
<title>gst-entrans Elements</title>
19
<xi:include href="xml/element-astat.xml" />
20
<xi:include href="xml/element-boxscale.xml" />
21
<xi:include href="xml/element-bufferjoin.xml" />
22
<xi:include href="xml/element-capssetter.xml" />
23
<xi:include href="xml/element-cshift.xml" />
24
<xi:include href="xml/element-csub.xml" />
25
<xi:include href="xml/element-dam.xml" />
26
<xi:include href="xml/element-decimate.xml" />
27
<xi:include href="xml/element-delogo.xml" />
28
<xi:include href="xml/element-detectinter.xml" />
29
<xi:include href="xml/element-divxkey.xml" />
30
<xi:include href="xml/element-dnr.xml" />
31
<xi:include href="xml/element-fields.xml" />
32
<xi:include href="xml/element-hqdn3d.xml" />
33
<xi:include href="xml/element-ivtc.xml" />
34
<xi:include href="xml/element-kerneldeint.xml" />
35
<xi:include href="xml/element-mask.xml" />
36
<xi:include href="xml/element-mp2enc.xml" />
37
<xi:include href="xml/element-msharpen.xml" />
38
<xi:include href="xml/element-multiprocpipe.xml" />
39
<xi:include href="xml/element-procpipe.xml" />
40
<xi:include href="xml/element-rbswap.xml" />
41
<xi:include href="xml/element-shift.xml" />
42
<xi:include href="xml/element-smooth.xml" />
43
<xi:include href="xml/element-soften.xml" />
44
<xi:include href="xml/element-stabilize.xml" />
45
<xi:include href="xml/element-stamp.xml" />
46
<xi:include href="xml/element-unsharp.xml" />
47
<xi:include href="xml/element-whitebalance.xml" />
48
<xi:include href="xml/element-xsharpen.xml" />
49
<xi:include href="xml/element-y4mtrans.xml" />
50
<xi:include href="xml/element-y4mparse.xml" />
54
<title>gst-entrans Plugins</title>
57
The collective intent of the above plugins is to provide the GStreamer
58
framework with a set of filters as already available in various other
59
multimedia applications, e.g. &mplayer;/&mencoder;, &transcode;, &avidemux;,
60
many of them often duplicated over and over again. Once so available in
61
GStreamer framework, they are accessible by a common API, so that the
62
<emphasis>very same code</emphasis> can be used repeatedly (as
63
opposed to duplicated), in line with
64
<ulink url="&url-gst-home;data/doc/gstreamer/head/manual/html/chapter-motivation.html">
65
GStreamer Motivation & Goals</ulink>.
68
There a number of ways to make such filters available, each requiring more or
69
less effort, and providing less or more quality (typically in that order).
70
Foremost, of course, is to perform a code-level port, making the filter
71
(operation) natively available in GStreamer. Alternatively, one could resort
72
to dynamic or runtime <quote>binding</quote>
76
<title>Code Ports</title>
78
Clearly, when being done properly, this leads to most robust quality
79
results. As it also requires most effort and maintenance, priority focus is
80
given to the <quote>popular</quote> ones, defined here as roughly
81
proportional to occurrence across various existing applications.
83
The following table compares some filter operations, that implement an identical
84
or very similar algorithm.
89
<entry>mencoder</entry>
90
<entry>transcode</entry>
91
<entry>avidemux</entry>
92
<entry>virtualdub</entry>
93
<entry>GStreamer</entry>
98
<entry>rectangle</entry>
100
<entry>Blacken borders</entry>
102
<entry><link linkend="GstMask">mask</link></entry>
105
<entry>swapuv</entry>
106
<entry>videocore rgbswap</entry>
107
<entry>Swap U and V</entry>
109
<entry><link linkend="GstRbSwap">rbswap</link></entry>
114
<entry>MPlayer eq2</entry>
116
<entrytbl rowsep='0' cols='1'>
119
<entry><link linkend="GstGamma">gamma gamma=1/[transcode value]</link></entry>
122
<entry><link linkend="GstVideoBalance">videobalance</link></entry>
128
<entry>field, phase</entry>
129
<entry>fields, doublefps</entry>
130
<entry>drop, * fields</entry>
132
<entry><link linkend="GstFields">fields</link></entry>
136
<entry>decimate</entry>
137
<entry>Decomb decimate</entry>
138
<entry>Decomb</entry>
139
<entry><link linkend="GstDecimate">decimate</link></entry>
143
<entry>32detect</entry>
146
<entry><link linkend="GstDetectInter">detectinter</link></entry>
151
<entry>Decomb telecide</entry>
152
<entry>Decomb</entry>
153
<entry><link linkend="GstIvtc">ivtc</link></entry>
156
<entry>kerndeint</entry>
158
<entry>kernel deinterlacer</entry>
159
<entry>kerndeint</entry>
160
<entry><link linkend="GstKernelDeint">kerneldeint</link></entry>
163
<entry>unsharp</entry>
164
<entry>unsharp</entry>
167
<entry><link linkend="GstUnsharp">unsharp</link></entry>
170
<entry>hqdn3d</entry>
171
<entry>hqdn3d</entry>
172
<entry>MPlayer hqdn3d</entry>
174
<entry><link linkend="GstHqdn3d">hqdn3d</link></entry>
177
<entry>denoise3d</entry>
178
<entry>denoise3d</entry>
179
<entry>MPlayer denoise3d</entry>
181
<entry><link linkend="GstHqdn3d">hqdn3d</link> high-quality=false</entry>
186
<entry>Denoise</entry>
188
<entry><link linkend="GstDnr">dnr</link></entry>
192
<entry>smooth</entry>
195
<entry><link linkend="GstSmooth">smooth</link></entry>
199
<entry>msharpen</entry>
200
<entry>MSharpen</entry>
201
<entry>msharpen</entry>
202
<entry><link linkend="GstMsharpen">msharpen</link></entry>
206
<entry>xsharpen</entry>
208
<entry>xsharpen</entry>
209
<entry><link linkend="GstXsharpen">xsharpen</link></entry>
213
<entry>cshift</entry>
214
<entry>Chroma shift</entry>
216
<entry><link linkend="GstCshift">cshift</link></entry>
223
<entry><link linkend="GstCsub">csub</link></entry>
227
<entry>whitebalance</entry>
230
<entry><link linkend="GstWhitebalance">whitebalance</link></entry>
234
<entry>divxkey</entry>
237
<entry><link linkend="GstDivxKey">divxkey</link></entry>
240
<entry>delogo</entry>
242
<entry>MPlayer delogo</entry>
244
<entry><link linkend="GstDelogo">delogo</link></entry>
247
<entry>volume</entry>
251
<entry><link linkend="GstAstat">astat</link></entry>
257
The above table by no means intends to suggest
258
that &GStreamer; offers the widest collection of filters available
260
Indeed, other programs as mentioned above often have many alternative
261
implementations and algorithms with similar goals.
262
The above merely considers the &GStreamer; perspective/intersection, and if anything,
263
simply illustrates there is a great deal of duplicating,
264
copying and reworking out there.
269
<title>Runtime Binding</title>
272
The &netpbm; and &mjpegtools; suites provide long since a number of image/video
273
processing operations as stand-alone programs.
277
If so desired, and these programs are present and <varname>PATH</varname>
278
accessible, they can be used in a pipeline.
279
For example, one or more &mjpegtools; filters can appear as
283
y4menc ! y4mtrans command=yuvdenoise ! y4mparse
286
y4menc ! y4mtrans command=y4mdenoise ! <!--
287
-->y4mtrans command=yuvmedianfilter ! y4mparse
293
Be aware that the above pipeline fragments have
294
timestamp resequencing as a side-effect. So, take care not to cause an
295
<quote>imbalance</quote> when muxing,
296
e.g. by using <link linkend="GstStamp">stamp</link> if needed in other
301
The elements used above can also be put to use in dealing with a set of files
302
(as input or output). For example,
305
jpeg2yuv -f 25 -j image-%05.jpg > image.yuv
306
<lineannotation># then run following pipeline</lineannotation>
307
filesrc location=image.yuv ! y4mparse ! videoflip ! \
308
y4menc ! filesink location=image-out.yuv
309
<lineannotation># if desired
310
# y4mtopnm and pnmtojpeg processing</lineannotation>
313
Of course, the intermediate file could be omitted by means of some piping,
314
and <link linkend="GstProcPipe">procpipe</link> may come in handy as well.
319
<xi:include href="xml/plugin-avidemux.xml" />
320
<xi:include href="xml/plugin-entrans.xml" />
321
<xi:include href="xml/plugin-mencoder.xml" />
322
<xi:include href="xml/plugin-transcode.xml" />
323
<xi:include href="xml/plugin-virtualdub.xml" />
324
<xi:include href="xml/plugin-y4m.xml" />
328
<title>gst-entrans Helper Elements and Utilities</title>
330
Note that although what is provided here could conceivably be
331
called and considered a library,
332
it is only so used <emphasis>internally</emphasis>
333
and provided for at this time.
335
<xi:include href="xml/video-utils.xml" />
336
<xi:include href="xml/gstproctrans.xml" />
337
<xi:include href="xml/gstmultiproctrans.xml" />