Browse Source

Added KDE3 version of MLT


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/mlt@1095634 283d02a7-25f6-0310-bc7c-ecb5cbfe19
tags/v3.5.13
tpearson 9 years ago
commit
40f8286642
100 changed files with 8238 additions and 0 deletions
  1. 504
    0
      COPYING
  2. 58
    0
      ChangeLog
  3. 340
    0
      GPL
  4. 61
    0
      Makefile
  5. 65
    0
      README
  6. 2
    0
      config.log
  7. 0
    0
      configure-stamp
  8. 217
    0
      demo/README
  9. BIN
      demo/circle.png
  10. 1
    0
      demo/circle.svg
  11. 12
    0
      demo/consumers.ini
  12. 106
    0
      demo/demo
  13. 28
    0
      demo/demo.ini
  14. 13
    0
      demo/demo.kino
  15. 11
    0
      demo/entity.westley
  16. BIN
      demo/luma1.pgm
  17. 3
    0
      demo/mlt_all
  18. 7
    0
      demo/mlt_attributes
  19. 6
    0
      demo/mlt_audio_stuff
  20. 3
    0
      demo/mlt_avantika_title
  21. 10
    0
      demo/mlt_bouncy
  22. 14
    0
      demo/mlt_bouncy_ball
  23. 7
    0
      demo/mlt_clock_in_and_out
  24. 7
    0
      demo/mlt_composite_transition
  25. 4
    0
      demo/mlt_effect_in_middle
  26. 9
    0
      demo/mlt_fade_black
  27. 9
    0
      demo/mlt_fade_in_and_out
  28. 9
    0
      demo/mlt_intro
  29. 10
    0
      demo/mlt_jcut
  30. 12
    0
      demo/mlt_lcut
  31. 5
    0
      demo/mlt_levels
  32. 10
    0
      demo/mlt_my_name_is
  33. 18
    0
      demo/mlt_news
  34. 5
    0
      demo/mlt_obscure
  35. 18
    0
      demo/mlt_push
  36. 4
    0
      demo/mlt_slideshow
  37. 3
    0
      demo/mlt_slideshow_black
  38. 9
    0
      demo/mlt_squeeze
  39. 9
    0
      demo/mlt_squeeze_box
  40. 15
    0
      demo/mlt_ticker
  41. 25
    0
      demo/mlt_title_over_gfx
  42. 10
    0
      demo/mlt_titleshadow_watermark
  43. 36
    0
      demo/mlt_voiceover
  44. 6
    0
      demo/mlt_watermark
  45. 51
    0
      demo/new.westley
  46. 34
    0
      demo/pango.westley
  47. 50
    0
      demo/svg.westley
  48. BIN
      demo/watermark1.png
  49. 1
    0
      docs/TODO
  50. 339
    0
      docs/dvcp.txt
  51. 1341
    0
      docs/framework.txt
  52. 378
    0
      docs/inigo.txt
  53. 187
    0
      docs/install.txt
  54. 52
    0
      docs/policies.txt
  55. 1588
    0
      docs/services.txt
  56. 35
    0
      docs/testing-20040110.txt
  57. 599
    0
      docs/testing.txt
  58. 861
    0
      docs/valerie.txt
  59. 574
    0
      docs/westley.txt
  60. 32
    0
      mlt-config-template
  61. 14
    0
      mlt-framework.pc
  62. 7
    0
      mlt-framework.pc.in
  63. 14
    0
      mlt-miracle.pc
  64. 7
    0
      mlt-miracle.pc.in
  65. 14
    0
      mlt-valerie.pc
  66. 7
    0
      mlt-valerie.pc.in
  67. 18
    0
      profiles/Makefile
  68. 10
    0
      profiles/atsc_1080i_60
  69. 10
    0
      profiles/atsc_720p_30
  70. 10
    0
      profiles/cif_ntsc
  71. 10
    0
      profiles/cif_pal
  72. 10
    0
      profiles/cvd_ntsc
  73. 10
    0
      profiles/cvd_pal
  74. 10
    0
      profiles/dv_ntsc
  75. 10
    0
      profiles/dv_ntsc_wide
  76. 10
    0
      profiles/dv_pal
  77. 10
    0
      profiles/dv_pal_wide
  78. 10
    0
      profiles/hdv_1080_50i
  79. 10
    0
      profiles/hdv_1080_60i
  80. 10
    0
      profiles/hdv_720_25p
  81. 10
    0
      profiles/hdv_720_30p
  82. 10
    0
      profiles/qcif_ntsc
  83. 10
    0
      profiles/qcif_pal
  84. 10
    0
      profiles/quarter_ntsc
  85. 10
    0
      profiles/quarter_ntsc_wide
  86. 10
    0
      profiles/quarter_pal
  87. 10
    0
      profiles/quarter_pal_wide
  88. 10
    0
      profiles/square_ntsc
  89. 10
    0
      profiles/square_ntsc_wide
  90. 10
    0
      profiles/square_pal
  91. 10
    0
      profiles/square_pal_wide
  92. 10
    0
      profiles/svcd_ntsc
  93. 10
    0
      profiles/svcd_ntsc_wide
  94. 10
    0
      profiles/svcd_pal
  95. 10
    0
      profiles/svcd_pal_wide
  96. 10
    0
      profiles/vcd_ntsc
  97. 10
    0
      profiles/vcd_pal
  98. 25
    0
      setenv
  99. 9
    0
      setenv_mc
  100. 0
    0
      src/albino/Makefile

+ 504
- 0
COPYING View File

@@ -0,0 +1,504 @@
1
+		  GNU LESSER GENERAL PUBLIC LICENSE
2
+		       Version 2.1, February 1999
3
+
4
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+[This is the first released version of the Lesser GPL.  It also counts
10
+ as the successor of the GNU Library Public License, version 2, hence
11
+ the version number 2.1.]
12
+
13
+			    Preamble
14
+
15
+  The licenses for most software are designed to take away your
16
+freedom to share and change it.  By contrast, the GNU General Public
17
+Licenses are intended to guarantee your freedom to share and change
18
+free software--to make sure the software is free for all its users.
19
+
20
+  This license, the Lesser General Public License, applies to some
21
+specially designated software packages--typically libraries--of the
22
+Free Software Foundation and other authors who decide to use it.  You
23
+can use it too, but we suggest you first think carefully about whether
24
+this license or the ordinary General Public License is the better
25
+strategy to use in any particular case, based on the explanations below.
26
+
27
+  When we speak of free software, we are referring to freedom of use,
28
+not price.  Our General Public Licenses are designed to make sure that
29
+you have the freedom to distribute copies of free software (and charge
30
+for this service if you wish); that you receive source code or can get
31
+it if you want it; that you can change the software and use pieces of
32
+it in new free programs; and that you are informed that you can do
33
+these things.
34
+
35
+  To protect your rights, we need to make restrictions that forbid
36
+distributors to deny you these rights or to ask you to surrender these
37
+rights.  These restrictions translate to certain responsibilities for
38
+you if you distribute copies of the library or if you modify it.
39
+
40
+  For example, if you distribute copies of the library, whether gratis
41
+or for a fee, you must give the recipients all the rights that we gave
42
+you.  You must make sure that they, too, receive or can get the source
43
+code.  If you link other code with the library, you must provide
44
+complete object files to the recipients, so that they can relink them
45
+with the library after making changes to the library and recompiling
46
+it.  And you must show them these terms so they know their rights.
47
+
48
+  We protect your rights with a two-step method: (1) we copyright the
49
+library, and (2) we offer you this license, which gives you legal
50
+permission to copy, distribute and/or modify the library.
51
+
52
+  To protect each distributor, we want to make it very clear that
53
+there is no warranty for the free library.  Also, if the library is
54
+modified by someone else and passed on, the recipients should know
55
+that what they have is not the original version, so that the original
56
+author's reputation will not be affected by problems that might be
57
+introduced by others.
58
+
59
+  Finally, software patents pose a constant threat to the existence of
60
+any free program.  We wish to make sure that a company cannot
61
+effectively restrict the users of a free program by obtaining a
62
+restrictive license from a patent holder.  Therefore, we insist that
63
+any patent license obtained for a version of the library must be
64
+consistent with the full freedom of use specified in this license.
65
+
66
+  Most GNU software, including some libraries, is covered by the
67
+ordinary GNU General Public License.  This license, the GNU Lesser
68
+General Public License, applies to certain designated libraries, and
69
+is quite different from the ordinary General Public License.  We use
70
+this license for certain libraries in order to permit linking those
71
+libraries into non-free programs.
72
+
73
+  When a program is linked with a library, whether statically or using
74
+a shared library, the combination of the two is legally speaking a
75
+combined work, a derivative of the original library.  The ordinary
76
+General Public License therefore permits such linking only if the
77
+entire combination fits its criteria of freedom.  The Lesser General
78
+Public License permits more lax criteria for linking other code with
79
+the library.
80
+
81
+  We call this license the "Lesser" General Public License because it
82
+does Less to protect the user's freedom than the ordinary General
83
+Public License.  It also provides other free software developers Less
84
+of an advantage over competing non-free programs.  These disadvantages
85
+are the reason we use the ordinary General Public License for many
86
+libraries.  However, the Lesser license provides advantages in certain
87
+special circumstances.
88
+
89
+  For example, on rare occasions, there may be a special need to
90
+encourage the widest possible use of a certain library, so that it becomes
91
+a de-facto standard.  To achieve this, non-free programs must be
92
+allowed to use the library.  A more frequent case is that a free
93
+library does the same job as widely used non-free libraries.  In this
94
+case, there is little to gain by limiting the free library to free
95
+software only, so we use the Lesser General Public License.
96
+
97
+  In other cases, permission to use a particular library in non-free
98
+programs enables a greater number of people to use a large body of
99
+free software.  For example, permission to use the GNU C Library in
100
+non-free programs enables many more people to use the whole GNU
101
+operating system, as well as its variant, the GNU/Linux operating
102
+system.
103
+
104
+  Although the Lesser General Public License is Less protective of the
105
+users' freedom, it does ensure that the user of a program that is
106
+linked with the Library has the freedom and the wherewithal to run
107
+that program using a modified version of the Library.
108
+
109
+  The precise terms and conditions for copying, distribution and
110
+modification follow.  Pay close attention to the difference between a
111
+"work based on the library" and a "work that uses the library".  The
112
+former contains code derived from the library, whereas the latter must
113
+be combined with the library in order to run.
114
+
115
+		  GNU LESSER GENERAL PUBLIC LICENSE
116
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117
+
118
+  0. This License Agreement applies to any software library or other
119
+program which contains a notice placed by the copyright holder or
120
+other authorized party saying it may be distributed under the terms of
121
+this Lesser General Public License (also called "this License").
122
+Each licensee is addressed as "you".
123
+
124
+  A "library" means a collection of software functions and/or data
125
+prepared so as to be conveniently linked with application programs
126
+(which use some of those functions and data) to form executables.
127
+
128
+  The "Library", below, refers to any such software library or work
129
+which has been distributed under these terms.  A "work based on the
130
+Library" means either the Library or any derivative work under
131
+copyright law: that is to say, a work containing the Library or a
132
+portion of it, either verbatim or with modifications and/or translated
133
+straightforwardly into another language.  (Hereinafter, translation is
134
+included without limitation in the term "modification".)
135
+
136
+  "Source code" for a work means the preferred form of the work for
137
+making modifications to it.  For a library, complete source code means
138
+all the source code for all modules it contains, plus any associated
139
+interface definition files, plus the scripts used to control compilation
140
+and installation of the library.
141
+
142
+  Activities other than copying, distribution and modification are not
143
+covered by this License; they are outside its scope.  The act of
144
+running a program using the Library is not restricted, and output from
145
+such a program is covered only if its contents constitute a work based
146
+on the Library (independent of the use of the Library in a tool for
147
+writing it).  Whether that is true depends on what the Library does
148
+and what the program that uses the Library does.
149
+  
150
+  1. You may copy and distribute verbatim copies of the Library's
151
+complete source code as you receive it, in any medium, provided that
152
+you conspicuously and appropriately publish on each copy an
153
+appropriate copyright notice and disclaimer of warranty; keep intact
154
+all the notices that refer to this License and to the absence of any
155
+warranty; and distribute a copy of this License along with the
156
+Library.
157
+
158
+  You may charge a fee for the physical act of transferring a copy,
159
+and you may at your option offer warranty protection in exchange for a
160
+fee.
161
+
162
+  2. You may modify your copy or copies of the Library or any portion
163
+of it, thus forming a work based on the Library, and copy and
164
+distribute such modifications or work under the terms of Section 1
165
+above, provided that you also meet all of these conditions:
166
+
167
+    a) The modified work must itself be a software library.
168
+
169
+    b) You must cause the files modified to carry prominent notices
170
+    stating that you changed the files and the date of any change.
171
+
172
+    c) You must cause the whole of the work to be licensed at no
173
+    charge to all third parties under the terms of this License.
174
+
175
+    d) If a facility in the modified Library refers to a function or a
176
+    table of data to be supplied by an application program that uses
177
+    the facility, other than as an argument passed when the facility
178
+    is invoked, then you must make a good faith effort to ensure that,
179
+    in the event an application does not supply such function or
180
+    table, the facility still operates, and performs whatever part of
181
+    its purpose remains meaningful.
182
+
183
+    (For example, a function in a library to compute square roots has
184
+    a purpose that is entirely well-defined independent of the
185
+    application.  Therefore, Subsection 2d requires that any
186
+    application-supplied function or table used by this function must
187
+    be optional: if the application does not supply it, the square
188
+    root function must still compute square roots.)
189
+
190
+These requirements apply to the modified work as a whole.  If
191
+identifiable sections of that work are not derived from the Library,
192
+and can be reasonably considered independent and separate works in
193
+themselves, then this License, and its terms, do not apply to those
194
+sections when you distribute them as separate works.  But when you
195
+distribute the same sections as part of a whole which is a work based
196
+on the Library, the distribution of the whole must be on the terms of
197
+this License, whose permissions for other licensees extend to the
198
+entire whole, and thus to each and every part regardless of who wrote
199
+it.
200
+
201
+Thus, it is not the intent of this section to claim rights or contest
202
+your rights to work written entirely by you; rather, the intent is to
203
+exercise the right to control the distribution of derivative or
204
+collective works based on the Library.
205
+
206
+In addition, mere aggregation of another work not based on the Library
207
+with the Library (or with a work based on the Library) on a volume of
208
+a storage or distribution medium does not bring the other work under
209
+the scope of this License.
210
+
211
+  3. You may opt to apply the terms of the ordinary GNU General Public
212
+License instead of this License to a given copy of the Library.  To do
213
+this, you must alter all the notices that refer to this License, so
214
+that they refer to the ordinary GNU General Public License, version 2,
215
+instead of to this License.  (If a newer version than version 2 of the
216
+ordinary GNU General Public License has appeared, then you can specify
217
+that version instead if you wish.)  Do not make any other change in
218
+these notices.
219
+
220
+  Once this change is made in a given copy, it is irreversible for
221
+that copy, so the ordinary GNU General Public License applies to all
222
+subsequent copies and derivative works made from that copy.
223
+
224
+  This option is useful when you wish to copy part of the code of
225
+the Library into a program that is not a library.
226
+
227
+  4. You may copy and distribute the Library (or a portion or
228
+derivative of it, under Section 2) in object code or executable form
229
+under the terms of Sections 1 and 2 above provided that you accompany
230
+it with the complete corresponding machine-readable source code, which
231
+must be distributed under the terms of Sections 1 and 2 above on a
232
+medium customarily used for software interchange.
233
+
234
+  If distribution of object code is made by offering access to copy
235
+from a designated place, then offering equivalent access to copy the
236
+source code from the same place satisfies the requirement to
237
+distribute the source code, even though third parties are not
238
+compelled to copy the source along with the object code.
239
+
240
+  5. A program that contains no derivative of any portion of the
241
+Library, but is designed to work with the Library by being compiled or
242
+linked with it, is called a "work that uses the Library".  Such a
243
+work, in isolation, is not a derivative work of the Library, and
244
+therefore falls outside the scope of this License.
245
+
246
+  However, linking a "work that uses the Library" with the Library
247
+creates an executable that is a derivative of the Library (because it
248
+contains portions of the Library), rather than a "work that uses the
249
+library".  The executable is therefore covered by this License.
250
+Section 6 states terms for distribution of such executables.
251
+
252
+  When a "work that uses the Library" uses material from a header file
253
+that is part of the Library, the object code for the work may be a
254
+derivative work of the Library even though the source code is not.
255
+Whether this is true is especially significant if the work can be
256
+linked without the Library, or if the work is itself a library.  The
257
+threshold for this to be true is not precisely defined by law.
258
+
259
+  If such an object file uses only numerical parameters, data
260
+structure layouts and accessors, and small macros and small inline
261
+functions (ten lines or less in length), then the use of the object
262
+file is unrestricted, regardless of whether it is legally a derivative
263
+work.  (Executables containing this object code plus portions of the
264
+Library will still fall under Section 6.)
265
+
266
+  Otherwise, if the work is a derivative of the Library, you may
267
+distribute the object code for the work under the terms of Section 6.
268
+Any executables containing that work also fall under Section 6,
269
+whether or not they are linked directly with the Library itself.
270
+
271
+  6. As an exception to the Sections above, you may also combine or
272
+link a "work that uses the Library" with the Library to produce a
273
+work containing portions of the Library, and distribute that work
274
+under terms of your choice, provided that the terms permit
275
+modification of the work for the customer's own use and reverse
276
+engineering for debugging such modifications.
277
+
278
+  You must give prominent notice with each copy of the work that the
279
+Library is used in it and that the Library and its use are covered by
280
+this License.  You must supply a copy of this License.  If the work
281
+during execution displays copyright notices, you must include the
282
+copyright notice for the Library among them, as well as a reference
283
+directing the user to the copy of this License.  Also, you must do one
284
+of these things:
285
+
286
+    a) Accompany the work with the complete corresponding
287
+    machine-readable source code for the Library including whatever
288
+    changes were used in the work (which must be distributed under
289
+    Sections 1 and 2 above); and, if the work is an executable linked
290
+    with the Library, with the complete machine-readable "work that
291
+    uses the Library", as object code and/or source code, so that the
292
+    user can modify the Library and then relink to produce a modified
293
+    executable containing the modified Library.  (It is understood
294
+    that the user who changes the contents of definitions files in the
295
+    Library will not necessarily be able to recompile the application
296
+    to use the modified definitions.)
297
+
298
+    b) Use a suitable shared library mechanism for linking with the
299
+    Library.  A suitable mechanism is one that (1) uses at run time a
300
+    copy of the library already present on the user's computer system,
301
+    rather than copying library functions into the executable, and (2)
302
+    will operate properly with a modified version of the library, if
303
+    the user installs one, as long as the modified version is
304
+    interface-compatible with the version that the work was made with.
305
+
306
+    c) Accompany the work with a written offer, valid for at
307
+    least three years, to give the same user the materials
308
+    specified in Subsection 6a, above, for a charge no more
309
+    than the cost of performing this distribution.
310
+
311
+    d) If distribution of the work is made by offering access to copy
312
+    from a designated place, offer equivalent access to copy the above
313
+    specified materials from the same place.
314
+
315
+    e) Verify that the user has already received a copy of these
316
+    materials or that you have already sent this user a copy.
317
+
318
+  For an executable, the required form of the "work that uses the
319
+Library" must include any data and utility programs needed for
320
+reproducing the executable from it.  However, as a special exception,
321
+the materials to be distributed need not include anything that is
322
+normally distributed (in either source or binary form) with the major
323
+components (compiler, kernel, and so on) of the operating system on
324
+which the executable runs, unless that component itself accompanies
325
+the executable.
326
+
327
+  It may happen that this requirement contradicts the license
328
+restrictions of other proprietary libraries that do not normally
329
+accompany the operating system.  Such a contradiction means you cannot
330
+use both them and the Library together in an executable that you
331
+distribute.
332
+
333
+  7. You may place library facilities that are a work based on the
334
+Library side-by-side in a single library together with other library
335
+facilities not covered by this License, and distribute such a combined
336
+library, provided that the separate distribution of the work based on
337
+the Library and of the other library facilities is otherwise
338
+permitted, and provided that you do these two things:
339
+
340
+    a) Accompany the combined library with a copy of the same work
341
+    based on the Library, uncombined with any other library
342
+    facilities.  This must be distributed under the terms of the
343
+    Sections above.
344
+
345
+    b) Give prominent notice with the combined library of the fact
346
+    that part of it is a work based on the Library, and explaining
347
+    where to find the accompanying uncombined form of the same work.
348
+
349
+  8. You may not copy, modify, sublicense, link with, or distribute
350
+the Library except as expressly provided under this License.  Any
351
+attempt otherwise to copy, modify, sublicense, link with, or
352
+distribute the Library is void, and will automatically terminate your
353
+rights under this License.  However, parties who have received copies,
354
+or rights, from you under this License will not have their licenses
355
+terminated so long as such parties remain in full compliance.
356
+
357
+  9. You are not required to accept this License, since you have not
358
+signed it.  However, nothing else grants you permission to modify or
359
+distribute the Library or its derivative works.  These actions are
360
+prohibited by law if you do not accept this License.  Therefore, by
361
+modifying or distributing the Library (or any work based on the
362
+Library), you indicate your acceptance of this License to do so, and
363
+all its terms and conditions for copying, distributing or modifying
364
+the Library or works based on it.
365
+
366
+  10. Each time you redistribute the Library (or any work based on the
367
+Library), the recipient automatically receives a license from the
368
+original licensor to copy, distribute, link with or modify the Library
369
+subject to these terms and conditions.  You may not impose any further
370
+restrictions on the recipients' exercise of the rights granted herein.
371
+You are not responsible for enforcing compliance by third parties with
372
+this License.
373
+
374
+  11. If, as a consequence of a court judgment or allegation of patent
375
+infringement or for any other reason (not limited to patent issues),
376
+conditions are imposed on you (whether by court order, agreement or
377
+otherwise) that contradict the conditions of this License, they do not
378
+excuse you from the conditions of this License.  If you cannot
379
+distribute so as to satisfy simultaneously your obligations under this
380
+License and any other pertinent obligations, then as a consequence you
381
+may not distribute the Library at all.  For example, if a patent
382
+license would not permit royalty-free redistribution of the Library by
383
+all those who receive copies directly or indirectly through you, then
384
+the only way you could satisfy both it and this License would be to
385
+refrain entirely from distribution of the Library.
386
+
387
+If any portion of this section is held invalid or unenforceable under any
388
+particular circumstance, the balance of the section is intended to apply,
389
+and the section as a whole is intended to apply in other circumstances.
390
+
391
+It is not the purpose of this section to induce you to infringe any
392
+patents or other property right claims or to contest validity of any
393
+such claims; this section has the sole purpose of protecting the
394
+integrity of the free software distribution system which is
395
+implemented by public license practices.  Many people have made
396
+generous contributions to the wide range of software distributed
397
+through that system in reliance on consistent application of that
398
+system; it is up to the author/donor to decide if he or she is willing
399
+to distribute software through any other system and a licensee cannot
400
+impose that choice.
401
+
402
+This section is intended to make thoroughly clear what is believed to
403
+be a consequence of the rest of this License.
404
+
405
+  12. If the distribution and/or use of the Library is restricted in
406
+certain countries either by patents or by copyrighted interfaces, the
407
+original copyright holder who places the Library under this License may add
408
+an explicit geographical distribution limitation excluding those countries,
409
+so that distribution is permitted only in or among countries not thus
410
+excluded.  In such case, this License incorporates the limitation as if
411
+written in the body of this License.
412
+
413
+  13. The Free Software Foundation may publish revised and/or new
414
+versions of the Lesser General Public License from time to time.
415
+Such new versions will be similar in spirit to the present version,
416
+but may differ in detail to address new problems or concerns.
417
+
418
+Each version is given a distinguishing version number.  If the Library
419
+specifies a version number of this License which applies to it and
420
+"any later version", you have the option of following the terms and
421
+conditions either of that version or of any later version published by
422
+the Free Software Foundation.  If the Library does not specify a
423
+license version number, you may choose any version ever published by
424
+the Free Software Foundation.
425
+
426
+  14. If you wish to incorporate parts of the Library into other free
427
+programs whose distribution conditions are incompatible with these,
428
+write to the author to ask for permission.  For software which is
429
+copyrighted by the Free Software Foundation, write to the Free
430
+Software Foundation; we sometimes make exceptions for this.  Our
431
+decision will be guided by the two goals of preserving the free status
432
+of all derivatives of our free software and of promoting the sharing
433
+and reuse of software generally.
434
+
435
+			    NO WARRANTY
436
+
437
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
439
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
440
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
441
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
442
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
443
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
444
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
445
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
446
+
447
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
448
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
449
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
450
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
451
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
452
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
453
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
454
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456
+DAMAGES.
457
+
458
+		     END OF TERMS AND CONDITIONS
459
+
460
+           How to Apply These Terms to Your New Libraries
461
+
462
+  If you develop a new library, and you want it to be of the greatest
463
+possible use to the public, we recommend making it free software that
464
+everyone can redistribute and change.  You can do so by permitting
465
+redistribution under these terms (or, alternatively, under the terms of the
466
+ordinary General Public License).
467
+
468
+  To apply these terms, attach the following notices to the library.  It is
469
+safest to attach them to the start of each source file to most effectively
470
+convey the exclusion of warranty; and each file should have at least the
471
+"copyright" line and a pointer to where the full notice is found.
472
+
473
+    <one line to give the library's name and a brief idea of what it does.>
474
+    Copyright (C) <year>  <name of author>
475
+
476
+    This library is free software; you can redistribute it and/or
477
+    modify it under the terms of the GNU Lesser General Public
478
+    License as published by the Free Software Foundation; either
479
+    version 2 of the License, or (at your option) any later version.
480
+
481
+    This library is distributed in the hope that it will be useful,
482
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
483
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
484
+    Lesser General Public License for more details.
485
+
486
+    You should have received a copy of the GNU Lesser General Public
487
+    License along with this library; if not, write to the Free Software
488
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
489
+
490
+Also add information on how to contact you by electronic and paper mail.
491
+
492
+You should also get your employer (if you work as a programmer) or your
493
+school, if any, to sign a "copyright disclaimer" for the library, if
494
+necessary.  Here is a sample; alter the names:
495
+
496
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
497
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
498
+
499
+  <signature of Ty Coon>, 1 April 1990
500
+  Ty Coon, President of Vice
501
+
502
+That's all there is to it!
503
+
504
+

+ 58
- 0
ChangeLog View File

@@ -0,0 +1,58 @@
1
+$Id: ChangeLog 1008 2007-07-15 01:19:30Z ddennedy $
2
+
3
+USING svn log NOW
4
+
5
+2007-04-09 Dan Dennedy <dan@dennedy.org>
6
+	Cleanup copyrights and attributions, and move Jean-Baptiste's services
7
+	to a new kdenlive module.
8
+
9
+2007-03-30 Dan Dennedy <dan@dennedy.org>
10
+	Add support for sox 13.0.0.
11
+
12
+2007-03-30 Jean-Baptiste Mardelle <jb@kdenlive.org>
13
+	Fix boxblur and wave filters license.
14
+
15
+2007-03-29 Dan Dennedy <dan@dennedy.org>
16
+	Cleanup license declarations and remove dv1394d references.
17
+	Change registration of vmfx/mono to threshold to disambiguate with 
18
+	core/mono.
19
+
20
+2007-03-27 Dan Dennedy <dan@dennedy.org>
21
+	Fix ffmpeg swscale code enabled with mmx flags and fix --enable-swscale
22
+	in conjunction with --avformat-static.
23
+
24
+2007-03-16 Dan Dennedy <dan@dennedy.org>
25
+	Added docs/policies.txt.
26
+
27
+2007-02-19 Jean-Baptiste Mardelle <jb@kdenlive.org>
28
+	Blur and wave filters: fix typos and make functions static (patch from Stephane Fillod)
29
+
30
+2007-02-18 Jean-Baptiste Mardelle <jb@kdenlive.org>
31
+	Add blur and wave filters from Leny Grisel
32
+
33
+2007-02-07 Dan Dennedy <dan@dennedy.org>
34
+	Added ffmpeg libswscale support to avformat module (requires configure
35
+	option --avformat-swscale)
36
+
37
+2006-12-07 Dan Dennedy <dan@dennedy.org
38
+	Applied patch from Stephane Fillod to make configure run with bash
39
+	since it uses bash-specific features. Also, patches headers to 
40
+	C comments for pedantic compilation.
41
+
42
+2006-09-28 Zachary Drew <zachary.drew@gmail.com>
43
+	applied audio frequency and audio channels initialization patch from Jean-Baptiste
44
+
45
+2006-09-27 Zachary Drew <zachary.drew@gmail.com>
46
+	applied amd64 patch from gentoo folks to fix compilation of motion_est
47
+	on amd64 (thanks for the heads-up Jean-Michel)
48
+
49
+
50
+2006-09-25 Dan Dennedy <dan@dennedy.org>
51
+	- src/modules/sdl/Makefile: fix compilation on some systems using
52
+	  modular x.org.
53
+
54
+2006-08-08 Dan Dennedy <dan@dennedy.org>
55
+	enhance producer_westley to parse Kino 0.9.1 SMIL (clock) time values. 
56
+
57
+2006-08-08 Dan Dennedy <dan@dennedy.org>
58
+	convert --avformat-cvs to svn and rename option as --avformat-svn (--avformat-cvs is an undocumented alias). 

+ 340
- 0
GPL View File

@@ -0,0 +1,340 @@
1
+		    GNU GENERAL PUBLIC LICENSE
2
+		       Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+			    Preamble
10
+
11
+  The licenses for most software are designed to take away your
12
+freedom to share and change it.  By contrast, the GNU General Public
13
+License is intended to guarantee your freedom to share and change free
14
+software--to make sure the software is free for all its users.  This
15
+General Public License applies to most of the Free Software
16
+Foundation's software and to any other program whose authors commit to
17
+using it.  (Some other Free Software Foundation software is covered by
18
+the GNU Library General Public License instead.)  You can apply it to
19
+your programs, too.
20
+
21
+  When we speak of free software, we are referring to freedom, not
22
+price.  Our General Public Licenses are designed to make sure that you
23
+have the freedom to distribute copies of free software (and charge for
24
+this service if you wish), that you receive source code or can get it
25
+if you want it, that you can change the software or use pieces of it
26
+in new free programs; and that you know you can do these things.
27
+
28
+  To protect your rights, we need to make restrictions that forbid
29
+anyone to deny you these rights or to ask you to surrender the rights.
30
+These restrictions translate to certain responsibilities for you if you
31
+distribute copies of the software, or if you modify it.
32
+
33
+  For example, if you distribute copies of such a program, whether
34
+gratis or for a fee, you must give the recipients all the rights that
35
+you have.  You must make sure that they, too, receive or can get the
36
+source code.  And you must show them these terms so they know their
37
+rights.
38
+
39
+  We protect your rights with two steps: (1) copyright the software, and
40
+(2) offer you this license which gives you legal permission to copy,
41
+distribute and/or modify the software.
42
+
43
+  Also, for each author's protection and ours, we want to make certain
44
+that everyone understands that there is no warranty for this free
45
+software.  If the software is modified by someone else and passed on, we
46
+want its recipients to know that what they have is not the original, so
47
+that any problems introduced by others will not reflect on the original
48
+authors' reputations.
49
+
50
+  Finally, any free program is threatened constantly by software
51
+patents.  We wish to avoid the danger that redistributors of a free
52
+program will individually obtain patent licenses, in effect making the
53
+program proprietary.  To prevent this, we have made it clear that any
54
+patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+  The precise terms and conditions for copying, distribution and
57
+modification follow.
58
+
59
+		    GNU GENERAL PUBLIC LICENSE
60
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+  0. This License applies to any program or other work which contains
63
+a notice placed by the copyright holder saying it may be distributed
64
+under the terms of this General Public License.  The "Program", below,
65
+refers to any such program or work, and a "work based on the Program"
66
+means either the Program or any derivative work under copyright law:
67
+that is to say, a work containing the Program or a portion of it,
68
+either verbatim or with modifications and/or translated into another
69
+language.  (Hereinafter, translation is included without limitation in
70
+the term "modification".)  Each licensee is addressed as "you".
71
+
72
+Activities other than copying, distribution and modification are not
73
+covered by this License; they are outside its scope.  The act of
74
+running the Program is not restricted, and the output from the Program
75
+is covered only if its contents constitute a work based on the
76
+Program (independent of having been made by running the Program).
77
+Whether that is true depends on what the Program does.
78
+
79
+  1. You may copy and distribute verbatim copies of the Program's
80
+source code as you receive it, in any medium, provided that you
81
+conspicuously and appropriately publish on each copy an appropriate
82
+copyright notice and disclaimer of warranty; keep intact all the
83
+notices that refer to this License and to the absence of any warranty;
84
+and give any other recipients of the Program a copy of this License
85
+along with the Program.
86
+
87
+You may charge a fee for the physical act of transferring a copy, and
88
+you may at your option offer warranty protection in exchange for a fee.
89
+
90
+  2. You may modify your copy or copies of the Program or any portion
91
+of it, thus forming a work based on the Program, and copy and
92
+distribute such modifications or work under the terms of Section 1
93
+above, provided that you also meet all of these conditions:
94
+
95
+    a) You must cause the modified files to carry prominent notices
96
+    stating that you changed the files and the date of any change.
97
+
98
+    b) You must cause any work that you distribute or publish, that in
99
+    whole or in part contains or is derived from the Program or any
100
+    part thereof, to be licensed as a whole at no charge to all third
101
+    parties under the terms of this License.
102
+
103
+    c) If the modified program normally reads commands interactively
104
+    when run, you must cause it, when started running for such
105
+    interactive use in the most ordinary way, to print or display an
106
+    announcement including an appropriate copyright notice and a
107
+    notice that there is no warranty (or else, saying that you provide
108
+    a warranty) and that users may redistribute the program under
109
+    these conditions, and telling the user how to view a copy of this
110
+    License.  (Exception: if the Program itself is interactive but
111
+    does not normally print such an announcement, your work based on
112
+    the Program is not required to print an announcement.)
113
+
114
+These requirements apply to the modified work as a whole.  If
115
+identifiable sections of that work are not derived from the Program,
116
+and can be reasonably considered independent and separate works in
117
+themselves, then this License, and its terms, do not apply to those
118
+sections when you distribute them as separate works.  But when you
119
+distribute the same sections as part of a whole which is a work based
120
+on the Program, the distribution of the whole must be on the terms of
121
+this License, whose permissions for other licensees extend to the
122
+entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+Thus, it is not the intent of this section to claim rights or contest
125
+your rights to work written entirely by you; rather, the intent is to
126
+exercise the right to control the distribution of derivative or
127
+collective works based on the Program.
128
+
129
+In addition, mere aggregation of another work not based on the Program
130
+with the Program (or with a work based on the Program) on a volume of
131
+a storage or distribution medium does not bring the other work under
132
+the scope of this License.
133
+
134
+  3. You may copy and distribute the Program (or a work based on it,
135
+under Section 2) in object code or executable form under the terms of
136
+Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+    a) Accompany it with the complete corresponding machine-readable
139
+    source code, which must be distributed under the terms of Sections
140
+    1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+    b) Accompany it with a written offer, valid for at least three
143
+    years, to give any third party, for a charge no more than your
144
+    cost of physically performing source distribution, a complete
145
+    machine-readable copy of the corresponding source code, to be
146
+    distributed under the terms of Sections 1 and 2 above on a medium
147
+    customarily used for software interchange; or,
148
+
149
+    c) Accompany it with the information you received as to the offer
150
+    to distribute corresponding source code.  (This alternative is
151
+    allowed only for noncommercial distribution and only if you
152
+    received the program in object code or executable form with such
153
+    an offer, in accord with Subsection b above.)
154
+
155
+The source code for a work means the preferred form of the work for
156
+making modifications to it.  For an executable work, complete source
157
+code means all the source code for all modules it contains, plus any
158
+associated interface definition files, plus the scripts used to
159
+control compilation and installation of the executable.  However, as a
160
+special exception, the source code distributed need not include
161
+anything that is normally distributed (in either source or binary
162
+form) with the major components (compiler, kernel, and so on) of the
163
+operating system on which the executable runs, unless that component
164
+itself accompanies the executable.
165
+
166
+If distribution of executable or object code is made by offering
167
+access to copy from a designated place, then offering equivalent
168
+access to copy the source code from the same place counts as
169
+distribution of the source code, even though third parties are not
170
+compelled to copy the source along with the object code.
171
+
172
+  4. You may not copy, modify, sublicense, or distribute the Program
173
+except as expressly provided under this License.  Any attempt
174
+otherwise to copy, modify, sublicense or distribute the Program is
175
+void, and will automatically terminate your rights under this License.
176
+However, parties who have received copies, or rights, from you under
177
+this License will not have their licenses terminated so long as such
178
+parties remain in full compliance.
179
+
180
+  5. You are not required to accept this License, since you have not
181
+signed it.  However, nothing else grants you permission to modify or
182
+distribute the Program or its derivative works.  These actions are
183
+prohibited by law if you do not accept this License.  Therefore, by
184
+modifying or distributing the Program (or any work based on the
185
+Program), you indicate your acceptance of this License to do so, and
186
+all its terms and conditions for copying, distributing or modifying
187
+the Program or works based on it.
188
+
189
+  6. Each time you redistribute the Program (or any work based on the
190
+Program), the recipient automatically receives a license from the
191
+original licensor to copy, distribute or modify the Program subject to
192
+these terms and conditions.  You may not impose any further
193
+restrictions on the recipients' exercise of the rights granted herein.
194
+You are not responsible for enforcing compliance by third parties to
195
+this License.
196
+
197
+  7. If, as a consequence of a court judgment or allegation of patent
198
+infringement or for any other reason (not limited to patent issues),
199
+conditions are imposed on you (whether by court order, agreement or
200
+otherwise) that contradict the conditions of this License, they do not
201
+excuse you from the conditions of this License.  If you cannot
202
+distribute so as to satisfy simultaneously your obligations under this
203
+License and any other pertinent obligations, then as a consequence you
204
+may not distribute the Program at all.  For example, if a patent
205
+license would not permit royalty-free redistribution of the Program by
206
+all those who receive copies directly or indirectly through you, then
207
+the only way you could satisfy both it and this License would be to
208
+refrain entirely from distribution of the Program.
209
+
210
+If any portion of this section is held invalid or unenforceable under
211
+any particular circumstance, the balance of the section is intended to
212
+apply and the section as a whole is intended to apply in other
213
+circumstances.
214
+
215
+It is not the purpose of this section to induce you to infringe any
216
+patents or other property right claims or to contest validity of any
217
+such claims; this section has the sole purpose of protecting the
218
+integrity of the free software distribution system, which is
219
+implemented by public license practices.  Many people have made
220
+generous contributions to the wide range of software distributed
221
+through that system in reliance on consistent application of that
222
+system; it is up to the author/donor to decide if he or she is willing
223
+to distribute software through any other system and a licensee cannot
224
+impose that choice.
225
+
226
+This section is intended to make thoroughly clear what is believed to
227
+be a consequence of the rest of this License.
228
+
229
+  8. If the distribution and/or use of the Program is restricted in
230
+certain countries either by patents or by copyrighted interfaces, the
231
+original copyright holder who places the Program under this License
232
+may add an explicit geographical distribution limitation excluding
233
+those countries, so that distribution is permitted only in or among
234
+countries not thus excluded.  In such case, this License incorporates
235
+the limitation as if written in the body of this License.
236
+
237
+  9. The Free Software Foundation may publish revised and/or new versions
238
+of the General Public License from time to time.  Such new versions will
239
+be similar in spirit to the present version, but may differ in detail to
240
+address new problems or concerns.
241
+
242
+Each version is given a distinguishing version number.  If the Program
243
+specifies a version number of this License which applies to it and "any
244
+later version", you have the option of following the terms and conditions
245
+either of that version or of any later version published by the Free
246
+Software Foundation.  If the Program does not specify a version number of
247
+this License, you may choose any version ever published by the Free Software
248
+Foundation.
249
+
250
+  10. If you wish to incorporate parts of the Program into other free
251
+programs whose distribution conditions are different, write to the author
252
+to ask for permission.  For software which is copyrighted by the Free
253
+Software Foundation, write to the Free Software Foundation; we sometimes
254
+make exceptions for this.  Our decision will be guided by the two goals
255
+of preserving the free status of all derivatives of our free software and
256
+of promoting the sharing and reuse of software generally.
257
+
258
+			    NO WARRANTY
259
+
260
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
262
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
266
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
267
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+REPAIR OR CORRECTION.
269
+
270
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+POSSIBILITY OF SUCH DAMAGES.
279
+
280
+		     END OF TERMS AND CONDITIONS
281
+
282
+	    How to Apply These Terms to Your New Programs
283
+
284
+  If you develop a new program, and you want it to be of the greatest
285
+possible use to the public, the best way to achieve this is to make it
286
+free software which everyone can redistribute and change under these terms.
287
+
288
+  To do so, attach the following notices to the program.  It is safest
289
+to attach them to the start of each source file to most effectively
290
+convey the exclusion of warranty; and each file should have at least
291
+the "copyright" line and a pointer to where the full notice is found.
292
+
293
+    <one line to give the program's name and a brief idea of what it does.>
294
+    Copyright (C) <year>  <name of author>
295
+
296
+    This program is free software; you can redistribute it and/or modify
297
+    it under the terms of the GNU General Public License as published by
298
+    the Free Software Foundation; either version 2 of the License, or
299
+    (at your option) any later version.
300
+
301
+    This program is distributed in the hope that it will be useful,
302
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
304
+    GNU General Public License for more details.
305
+
306
+    You should have received a copy of the GNU General Public License
307
+    along with this program; if not, write to the Free Software
308
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
309
+
310
+
311
+Also add information on how to contact you by electronic and paper mail.
312
+
313
+If the program is interactive, make it output a short notice like this
314
+when it starts in an interactive mode:
315
+
316
+    Gnomovision version 69, Copyright (C) year  name of author
317
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318
+    This is free software, and you are welcome to redistribute it
319
+    under certain conditions; type `show c' for details.
320
+
321
+The hypothetical commands `show w' and `show c' should show the appropriate
322
+parts of the General Public License.  Of course, the commands you use may
323
+be called something other than `show w' and `show c'; they could even be
324
+mouse-clicks or menu items--whatever suits your program.
325
+
326
+You should also get your employer (if you work as a programmer) or your
327
+school, if any, to sign a "copyright disclaimer" for the program, if
328
+necessary.  Here is a sample; alter the names:
329
+
330
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
+
333
+  <signature of Ty Coon>, 1 April 1989
334
+  Ty Coon, President of Vice
335
+
336
+This General Public License does not permit incorporating your program into
337
+proprietary programs.  If your program is a subroutine library, you may
338
+consider it more useful to permit linking proprietary applications with the
339
+library.  If this is what you want to do, use the GNU Library General
340
+Public License instead of this License.

+ 61
- 0
Makefile View File

@@ -0,0 +1,61 @@
1
+SUBDIRS = src/framework \
2
+		  src/inigo \
3
+		  src/valerie \
4
+		  src/miracle \
5
+		  src/humperdink \
6
+		  src/albino \
7
+		  src/modules \
8
+		  profiles
9
+
10
+all clean:
11
+	list='$(SUBDIRS)'; \
12
+	for subdir in $$list; do \
13
+		$(MAKE) -s -C $$subdir depend || exit 1; \
14
+		$(MAKE) -C $$subdir $@ || exit 1; \
15
+	done
16
+
17
+distclean:
18
+	rm mlt-config packages.dat; \
19
+	list='$(SUBDIRS)'; \
20
+	for subdir in $$list; do \
21
+		$(MAKE) -C $$subdir $@ || exit 1; \
22
+	done; \
23
+	rm config.mak;
24
+
25
+dist-clean: distclean
26
+
27
+include config.mak
28
+
29
+install:
30
+	install -d "$(DESTDIR)$(prefix)/bin"
31
+	install -d "$(DESTDIR)$(prefix)/include"
32
+	install -d "$(DESTDIR)$(libdir)"
33
+	install -d "$(DESTDIR)$(libdir)/pkgconfig"
34
+	install -d "$(DESTDIR)$(prefix)/lib/mlt/modules"
35
+	install -d "$(DESTDIR)$(prefix)/share/mlt/modules"
36
+	install -c -m 755 mlt-config "$(DESTDIR)$(bindir)"
37
+	install -c -m 644 *.pc "$(DESTDIR)$(libdir)/pkgconfig"
38
+	install -m 644 packages.dat "$(DESTDIR)$(prefix)/share/mlt/"
39
+	list='$(SUBDIRS)'; \
40
+	for subdir in $$list; do \
41
+		$(MAKE) DESTDIR=$(DESTDIR) -C $$subdir $@ || exit 1; \
42
+	done; \
43
+#	if test -z "$(DESTDIR)"; then \
44
+#	  /sbin/ldconfig || true; \
45
+#	fi
46
+
47
+uninstall:
48
+	rm -f "$(DESTDIR)$(bindir)"/mlt-config
49
+	rm -f "$(DESTDIR)$(libdir)/pkgconfig/mlt-*.pc"
50
+	list='$(SUBDIRS)'; \
51
+	for subdir in $$list; do \
52
+		$(MAKE) DESTDIR=$(DESTDIR) -C $$subdir $@ || exit 1; \
53
+	done
54
+	rm -rf "$(DESTDIR)$(prefix)/include/mlt"
55
+	rm -rf "$(DESTDIR)$(prefix)/share/mlt"
56
+
57
+dist:
58
+	[ -d "mlt-$(version)" ] && rm -rf "mlt-$(version)" || echo
59
+	svn export . "mlt-$(version)"
60
+	svn log > "mlt-$(version)/ChangeLog"
61
+	tar -cvzf "mlt-$(version).tar.gz" "mlt-$(version)"

+ 65
- 0
README View File

@@ -0,0 +1,65 @@
1
+MLT/Miracle README
2
+------------------
3
+
4
+	Sponsored by Ushodaya Enterprises Limited
5
+	Written by Charles Yates <charles.yates@pandora.be>
6
+	and Dan Dennedy <dan@dennedy.org>
7
+
8
+	MLT is a LGPL multimedia framework designed for television broadcasting,
9
+	and Miracle is a GPL multi-unit video playout server with realtime
10
+	effects.
11
+
12
+	This document provides a quick reference for the minimal configuration,
13
+	build and installation of MLT. See the docs directory for usage and
14
+	development details.
15
+
16
+
17
+Configuration
18
+-------------
19
+
20
+	Configuration is triggered by running:
21
+
22
+	    ./configure 
23
+
24
+	More information on usage is found by running:
25
+
26
+	    ./configure --help
27
+
28
+	NB: This script must be run to register new services after a CVS checkout
29
+	or subsequent update.
30
+
31
+
32
+Compilation
33
+-----------
34
+
35
+	Once configured, it should be sufficient to run:
36
+
37
+	    make
38
+
39
+	to compile the system.
40
+
41
+
42
+Testing
43
+-------
44
+
45
+	To execute the mlt tools without installation, or to test a new version
46
+	on a system with an already installed mlt version, you should run:
47
+
48
+	    . setenv
49
+
50
+	NB: This applies to your current shell only and it assumes a bash or 
51
+	regular bourne shell is in use.
52
+
53
+
54
+Installation
55
+------------
56
+
57
+	The install is triggered by running:
58
+	
59
+	    make install 
60
+	
61
+
62
+More Information
63
+----------------
64
+
65
+	For more detailed information, please refer to docs/install.txt.

+ 2
- 0
config.log View File

@@ -0,0 +1,2 @@
1
+Wed Feb 24 12:10:50 CST 2010
2
+./configure --enable-gpl --luma-compress --disable-mmx --enable-motion-est --avformat-shared=/usr --avformat-swscale --prefix=/opt/kde3 --with-extra-libs=/opt/kde3/lib --with-extra-includes=/opt/kde3/include/kde

+ 0
- 0
configure-stamp View File


+ 217
- 0
demo/README View File

@@ -0,0 +1,217 @@
1
+MLT Demo Notes
2
+
3
+Before running the demo script, make sure you '. setenv' from the parent
4
+directory. Also, please create clips clip1.dv, clip2.dv, clip3.dv, clip1.mpeg,
5
+clip2.mpeg, clip3.mpeg, and music1.ogg. Please make sure clips are at least 500 
6
+frames duration.
7
+
8
+These notes explain the the concepts presented in each demonstration and
9
+what details to look for.
10
+
11
+First, a note on consumers. When you start the script, the main menu asks
12
+you to choose a consumer. A consumer is like a viewer, but it could also
13
+write to a stream/file. The "SDL" consumer is the popular Simple DirectMedia
14
+Layer audio and video output. The "Westley" consumer generates an XML
15
+representation of the service network. That can be played directly due to the
16
+westley producer plugin. See docs/westley.txt for more information. The
17
+"MainConcept DV" consumer refers to the proprietary MLT plugin required to
18
+use MLT with MainConcept DV, DVCPro, and MPEG codecs. "/dev/dv1394/0" refers
19
+to a device file for transmitting DV over FireWire using the Linux dv1394 kernel
20
+module. The "BlueFish444" consumer is another proprietary plugin to use
21
+the BlueFish444 manufactured SDI video/audio output cards with MLT.
22
+
23
+And now the demos...
24
+
25
+All clips
26
+
27
+	Simply builds a playlist containing each video clip, and you can transport
28
+	between them using j and k keys.
29
+
30
+Filter in/out
31
+
32
+	A video filter can be applied to a portion of a producer (clip, playlist,
33
+	or multitrack). This examples shows the greyscale filter.
34
+
35
+Watermark
36
+
37
+	A graphic can overlay video in realtime with support for alpha channel.
38
+	This example uses a PNG file with an alpha channel. Distortion is explicitly
39
+	enabled here so the otherwise circular graphic is scaled to fill the 
40
+	compositing region. By default, compositing honours the aspect ratio of the
41
+	overlay.
42
+
43
+My name is...
44
+
45
+	Titles are very easy to composite in realtime. The titler uses Pango
46
+	with the FreeType2 rendering backend. This means it supports high
47
+	quality scalable font rendering with anti-aliasing, unicode (UTF-8),
48
+	and Pango markup capabilities. The compsiting here respects the aspect
49
+	ratio of the rendered title in the first two title pieces but distorts
50
+	the final one. This demo also shows the motion and scaling capabilities
51
+	of the compositor in conjunction with honouring aspect. The compositor
52
+	is doing field-based rendering. So, when displayed non-progressively
53
+	with SDL, you can see motion artifacts during animation. 
54
+	
55
+A composite transition
56
+
57
+	The compositor also handles video over video as demonstrated in this
58
+	usage of the compositor to create a special transition. This demonstration
59
+	also crossfades the audio during the transition! Progressive rendering
60
+	is explicitly enabled on the compositor due to the poor results that
61
+	would otherwise occur due to scaling an interleaved video frame and moving
62
+	the video in a reverse direction horizontally.
63
+	
64
+Fade in and out
65
+
66
+	A simple series of transitions betwen 3 clips using dissolves and audio 
67
+	crossfades. This is easy :-).
68
+
69
+Clock in and out
70
+	
71
+	Wipe transitions are very easy and highly extensible as they are generated 
72
+	using a very convenient lookup table based upon the luma of an image.
73
+	This image can be a 16 bit PGM (grayscale bitmap) or the luma channel of
74
+	any video producer. A number of high quality wipes can be downloaded from
75
+	http://mlt.sf.net/. It also performs field rendering.
76
+	The second wipe demonstrates the ability to control the direction of the
77
+	wipe as well.
78
+	
79
+Obscure
80
+
81
+	A popular requirement in news production is to obscure a face, obscenity,
82
+	or trademarked logo. This demonstrates using a simple rectangular 
83
+	obscure filter applied to a region of the image. The second example is more
84
+	advanced and shows using the "region" filter to select the image area and a 
85
+	property of the region filter to "shape" the region using the alpha channel
86
+	of another image (circle.png) and another property to "filter" the region
87
+	using the obscure filter.
88
+
89
+Audio Stuff
90
+
91
+	A music bed sound track can be mixed with a video. The sound track of the
92
+	video clip has a "floating" amplitude normalisation filter applied.
93
+	Typically, audio normalisation applies a constant gain factor across the
94
+	entire duration of an audio segment from a single source where the 
95
+	gain factor is automatically determined by anaylsing the maximum "power"
96
+	or peak levels. However, in news production, a popular requirement is to
97
+	to dynamically boost the amplitude in soft areas and reduce the amplitude
98
+	in louder areas. Thus, the gain analysis is performed using a "sliding
99
+	window" approach. This example also applies a constant gain factor of 
100
+	0.5 (50%) to the normalised audio of the video clip (to get a nicer
101
+	mix level).
102
+	
103
+Audio and Video Levels
104
+
105
+	Audio can be normalised by setting a target amplitude level in decibels.
106
+	A gamma curve can be applied to the luma channel of video.
107
+
108
+Shadowed Title and Watermark
109
+
110
+	Two instances of the titler are used to create a shadow effect.
111
+	The aspect ratio of the watermark in this example is not distorted. Since
112
+	the original image is a circle with square pixels--a computer-generated
113
+	image--and ITU BT.601 video is not composed of square samples. Therefore,
114
+	the compositor normalises the pixel aspect ratio of the overlay to the 
115
+	destination image, and the circular image remains circular on the analog
116
+	video output. Finally, a greyscale filter is applied to the watermark
117
+	while its opacity is set at 30%.
118
+
119
+Station Promo into Story?
120
+
121
+	Here is fun demo that might show using a still graphic with some music
122
+	to introduce a show. A luma wipe with an audio crossfade transitions from
123
+	the show title or station promotional material.
124
+
125
+Voiceover 2 clips with title
126
+
127
+	A common news production requirement to have a "voiceover" audio track
128
+	to a clip or even multiple clips as demonstrated here. Likewise, it is 
129
+	common to place a title caption on the video at the same time! This
130
+	demo has a little fun with the titler at the sake of practicality :-)
131
+	The foreground of the title is transparent while the opacity of the 
132
+	background is reduced to blend with the video. Meanwhile, the compositor
133
+	stretches the image to fill the bottom slice of the video--not suitable
134
+	for overscan displays ;-)
135
+	
136
+	Also, pay close attention to the mixing levels of the audio tracks.
137
+	The audio of the video fades out as the voiceover track (just music
138
+	in this demo) fades in. Then, the voiceover remains mixed with the 
139
+	ambient audio at a 60% level. Finally, the voiceover fades out smoothly 
140
+	from the 60% level to nothing.
141
+
142
+GJ-TTAvantika title
143
+
144
+	This demo requires a special TrueType font called Avantika. If you have the
145
+	font, register it with fontconfig using the fc-cache utility. This 
146
+	demonstrates i18n capabilities of the titler and the alignment capabilities 
147
+	of both the titler and the compositor. The titler centre aligns
148
+	the two lines of text, and the compositor centre aligns the title 
149
+	horizontally on the frame. 
150
+
151
+Title over graphic
152
+
153
+	You can superimpose a title over a graphic over video! Also,
154
+	you can apply a luma wipe to the compositor!
155
+
156
+Slideshow
157
+
158
+	This demo requires any number of JPEG images with the extension ".jpg"
159
+	in a subdirectory named "Scotland."
160
+
161
+Bouncy, Bouncy
162
+
163
+	The "watermark" filter encapsulates the compositor, and you have full
164
+	control over the compositor properties. Who says a watermark can not 
165
+	also be a video?!
166
+
167
+Bouncy, Bouncy Ball
168
+
169
+	A variation on the above Bouncy, Bouncy demo that applies a shape, or
170
+	alpha producer, to the the compositing region.
171
+	
172
+Breaking News
173
+
174
+	This demonstrates layout capabilities of the compositor.
175
+
176
+Squeeze Transitions
177
+
178
+	This demonstrates a distorting barndoor-like wipe.
179
+
180
+
181
+J Cut
182
+
183
+	A J cut is an edit where the audio cuts before the video.
184
+	It gets its name from the way it looks on a NLE timeline user interface.
185
+	When the audio cuts over, it does an audio crossfade over the duration of 
186
+	one frame. This makes the audio cut slightly less abrupt and avoids any 
187
+	"click" due to mismatched sample levels at the edit point. The video edit
188
+	is a hard cut.
189
+
190
+L Cut
191
+
192
+	An L cut is an edit where the video cuts before the audio.
193
+	It gets its name from the way it looks on a NLE timeline user interface.
194
+	This demo shows a very quick dissolve over 5 frames for a soft video cut.
195
+	Like the J Cut demo, an audio crossfade for the duration of one frame makes
196
+	an audio edit nearly instantaneous while being slightly softened and 
197
+	avoiding aberrations.
198
+
199
+Fade from/to black/silence
200
+
201
+	Of course, it is possible using MLT to fade from black on video and silence
202
+	on audio as well fade to black and silence.
203
+	
204
+Push wipe
205
+
206
+	A push wipe is a somewhat fancier transition than most standard wipes
207
+	because it involves motion. The new video clip "pushes" the old video
208
+	clip off one edge. If you can preview on an analog monitor you will notice
209
+	how smooth the motion is due to field-based rendering.
210
+	
211
+Ticker tape
212
+
213
+	A very minimal reverse crawling title neard the bottom of the screen.
214
+	The goal of the demo is show fluid motion of the field-based rendering of
215
+	the compositor when viewed on an analog monitor using a DV or BlueFish444
216
+	consumer. The demo also shows the potientional for using and extending the
217
+	existing set of services for a full blown news ticker implementation.

BIN
demo/circle.png View File


+ 1
- 0
demo/circle.svg View File

@@ -0,0 +1 @@
1
+<svg width='300' height='300'><circle cx='150' cy='150' r='150' fill='white'/></svg>

+ 12
- 0
demo/consumers.ini View File

@@ -0,0 +1,12 @@
1
+SDL Default						sdl
2
+SDL Half D1						sdl:360x288 rescale=nearest resize=1
3
+SDL High Latency				sdl buffer=12 rescale=none
4
+SDL Progressive					sdl progressive=1
5
+Westley to Terminal				westley
6
+Westley to File					westley:
7
+MainConcept DV to /dev/dv1394/0	mcdv:/dev/dv1394/0 rescale=nearest buffer=25
8
+libdv to /dev/dv1394/0			libdv:/dev/dv1394/0 rescale=nearest buffer=25
9
+BlueFish444 PAL					bluefish:1
10
+BlueFish444 NTSC				bluefish:1 standard=NTSC
11
+BlueFish444 PAL Prog LL			bluefish:1 progressive=1 buffer=1 frames=4
12
+BlueFish444 NTSC Prog LL		bluefish:1 standard=NTSC progressive=1 buffer=1 frames=4

+ 106
- 0
demo/demo View File

@@ -0,0 +1,106 @@
1
+#!/bin/bash
2
+
3
+function show_consumers( )
4
+{
5
+	awk -F '\t' '{ printf( "%d. %s\n", ++ i, $1 ); }' < consumers.ini
6
+}
7
+
8
+function get_consumer( )
9
+{
10
+	option=$1
11
+	[ "$option" != "" ] && [ $option -gt 0 ] && sed 's/\t\+/\t/g' < consumers.ini | cut -f 2 | head -n $option | tail -n -1
12
+}
13
+
14
+function show_menu( )
15
+{
16
+	sed 's/\t\+/\t/g' < demo.ini |
17
+	awk -F '\t' '{ printf( "%2d. %-30.30s", ++ i, $2 ); if ( i % 2 == 0 ) printf( "\n" ); } END { if ( i % 2 == 1 ) printf( "\n" ); }'
18
+}
19
+
20
+function check_dependencies( )
21
+{
22
+	option=$1
23
+	if [ $option -gt 0 ]
24
+	then
25
+		deps=`sed 's/\t\+/\t/g' < demo.ini | cut -f 3 | head -n $option | tail -n -1`
26
+		if [ "$deps" != "" ]
27
+		then
28
+			echo "$deps" | 
29
+			tr ',' '\n' | 
30
+			while read dep 
31
+			do
32
+				ls $dep > /dev/null 2>&1
33
+				val=$?
34
+				[ $val != 0 ] && echo Failed to find $dep >&2 && echo $val
35
+			done
36
+		fi
37
+		echo 0
38
+	fi
39
+}
40
+
41
+function get_demo( )
42
+{
43
+	option=$1
44
+	if [ $option -gt 0 ]
45
+	then
46
+		cut -f 1 demo.ini | head -n $option | tail -n -1
47
+	fi
48
+}
49
+
50
+while [ 1 ]
51
+do
52
+
53
+	echo Select Consumer
54
+	echo
55
+
56
+	show_consumers
57
+
58
+	echo
59
+	echo 0. Exit
60
+	echo
61
+	echo -n "Option: "
62
+	read option
63
+	echo
64
+
65
+	[ "$option" == "0" ] && break
66
+
67
+	export MLT_CONSUMER=`get_consumer $option`
68
+
69
+	while [ "$option" != "0" -a "$MLT_CONSUMER" != "" ]
70
+	do
71
+		echo Choose Demo
72
+		echo
73
+	
74
+		show_menu
75
+	
76
+		echo
77
+		echo -n "Option: "
78
+		read option
79
+		echo
80
+
81
+		[ "$option" == "" ] && break
82
+	
83
+		demo=`get_demo $option`
84
+		usable=`check_dependencies $option`
85
+	
86
+		if [ "$usable" = "0" -a "$demo" != "" ]
87
+		then
88
+			if [ "$MLT_CONSUMER" == "westley:" ]
89
+			then	export WESTLEY_CONSUMER="westley:$demo.westley"
90
+					bash $demo -consumer $WESTLEY_CONSUMER
91
+					inigo +$demo.txt out=100 $demo.westley $demo.westley -filter watermark:watermark1.png composite.fill=1 composite.geometry=85%,5%:10%x10%
92
+			elif [ "$MLT_CONSUMER" == "westley" ]
93
+			then	bash $demo -consumer $MLT_CONSUMER | less
94
+			else	bash $demo -consumer $MLT_CONSUMER
95
+			fi
96
+		elif [ "$usable" != "" ]
97
+		then
98
+			echo 
99
+			echo Unable to locate suitable files for the demo - please provide them.
100
+			read pause
101
+		fi
102
+	
103
+		stty sane
104
+	done
105
+
106
+done

+ 28
- 0
demo/demo.ini View File

@@ -0,0 +1,28 @@
1
+mlt_all						All clips							clip*
2
+mlt_effect_in_middle		Filter in/out						clip1.mpeg
3
+mlt_watermark				Watermark							clip2.dv,watermark1.png
4
+mlt_my_name_is				My name is...						clip3.dv
5
+mlt_composite_transition	A composite transition				clip1.dv,clip2.mpeg
6
+mlt_fade_in_and_out			Fade in and out						clip1.dv,clip2.mpeg,clip3.dv
7
+mlt_clock_in_and_out		Clock in and out					clip2.dv,clip1.dv,clip3.mpeg
8
+mlt_obscure					Obscure								clip2.mpeg,circle.png
9
+mlt_audio_stuff				Audio Stuff							clip*.dv,music1.ogg
10
+mlt_levels					Audio and Video Levels				clip*.dv
11
+mlt_titleshadow_watermark	Shadowed Title and Watermark		clip3.dv
12
+mlt_intro					Station Promo into Story?			watermark1.png,clip3.mpeg,music1.ogg
13
+mlt_voiceover				Voiceover 2 clips with title		clip1.dv,clip2.mpeg,music1.ogg
14
+mlt_avantika_title			GJ-TTAvantika title					pango.westley
15
+mlt_title_over_gfx			Title over graphic					watermark1.png,clip1.dv
16
+mlt_slideshow				Slideshow							Scotland
17
+mlt_bouncy					Bouncy, Bouncy						clip1.dv,clip3.dv
18
+mlt_bouncy_ball				Bouncy, Bouncy Ball					clip1.mpeg,clip3.mpeg,circle.png
19
+mlt_news					Breaking News						clip1.dv,clip2.dv
20
+mlt_squeeze					Squeeze Transitions					clip1.dv,clip2.dv,clip3.dv
21
+mlt_squeeze_box				Squeeze Box							clip1.dv,clip2.dv,clip3.dv
22
+mlt_jcut					J Cut								clip1.dv,clip2.dv
23
+mlt_lcut					L Cut								clip1.dv,clip2.dv
24
+mlt_fade_black				Fade from/to black/silence			clip3.mpeg
25
+mlt_push					Push wipe							clip1.mpeg, clip2.mpeg
26
+mlt_ticker					Ticker tape							clip1.dv
27
+mlt_attributes				Attributes							clip1.dv
28
+mlt_slideshow_black			Composite slideshow					Scotland

+ 13
- 0
demo/demo.kino View File

@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<smil xmlns:smil2="http://www.w3.org/2001/SMIL20/Language">
3
+  <seq title="MLT" copyright="2004" abstract="foo man choo">
4
+    <video src="clip2.dv" clipBegin="171" clipEnd="450"/>
5
+  </seq>
6
+  <seq title="Demo">
7
+    <video src="clip2.dv" clipBegin="0" clipEnd="170"/>
8
+  </seq>
9
+  <seq>
10
+    <video src="clip1.dv" clipBegin="0" clipEnd="159"/>
11
+    <video src="clip3.dv" clipBegin="0" clipEnd="106"/>
12
+  </seq>
13
+</smil>

+ 11
- 0
demo/entity.westley View File

@@ -0,0 +1,11 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE westley SYSTEM "../src/modules/westley/westley.dtd" [
3
+	<!ENTITY name "Westley">
4
+]>
5
+<westley>
6
+  <producer id="producer0">
7
+    <property name="mlt_service">pango</property>
8
+	<property name="text">Hello &name;,
9
+My name is Inigo Montoya.</property>
10
+  </producer>
11
+</westley>

BIN
demo/luma1.pgm View File


+ 3
- 0
demo/mlt_all View File

@@ -0,0 +1,3 @@
1
+inigo \
2
+clip* \
3
+$*

+ 7
- 0
demo/mlt_attributes View File

@@ -0,0 +1,7 @@
1
+inigo clip1.dv \
2
+meta.attr.location=1 meta.attr.location.markup="Location" \
3
+meta.attr.exclusive=1 meta.attr.exclusive.markup="Exclusive" \
4
+meta.attr.special=1 meta.attr.special.markup="Special" \
5
+meta.attr.super=1 meta.attr.super.0="Line 1" meta.attr.super.1="Line 2" \
6
+-filter data_show \
7
+$*

+ 6
- 0
demo/mlt_audio_stuff View File

@@ -0,0 +1,6 @@
1
+inigo \
2
+clip*.dv \
3
+-track music1.ogg \
4
+-filter volume:0.5 normalise= track=0 \
5
+-transition mix out=9999 a_track=0 b_track=1 \
6
+$*

+ 3
- 0
demo/mlt_avantika_title View File

@@ -0,0 +1,3 @@
1
+inigo \
2
+pango.westley \
3
+$*

+ 10
- 0
demo/mlt_bouncy View File

@@ -0,0 +1,10 @@
1
+inigo \
2
+clip3.dv \
3
+-filter \
4
+watermark:clip1.dv \
5
+composite.start=10%,10%:20%x20% \
6
+composite.key[33]=30%,70%:25%x25% \
7
+composite.key[66]=70%,30%:15%x15% \
8
+composite.end=70%,70%:20%x20% \
9
+composite.out=100 \
10
+$*

+ 14
- 0
demo/mlt_bouncy_ball View File

@@ -0,0 +1,14 @@
1
+inigo \
2
+clip3.dv \
3
+-track \
4
+clip1.dv \
5
+-transition \
6
+region:circle \
7
+composite.geometry="10%,10%:20%x20%;33=30%,70%:25%x25%;66=70%,30%:15%x15%;-1=70%,70%:20%x20%" \
8
+composite.out=100 \
9
+composite.softness=0.1 \
10
+a_track=0 \
11
+b_track=1 \
12
+in=0 \
13
+out=5000 \
14
+$*

+ 7
- 0
demo/mlt_clock_in_and_out View File

@@ -0,0 +1,7 @@
1
+inigo \
2
+clip2.dv in=100 out=174 -blank 99 clip3.dv in=100 \
3
+-track \
4
+-blank 49 clip3.mpeg in=100 out=249 \
5
+-transition luma:luma1.pgm softness=0.5 in=50 out=74 a_track=0 b_track=1 \
6
+-transition luma:luma1.pgm softness=0.2 in=175 out=199 a_track=0 b_track=1 reverse=1 \
7
+$*

+ 7
- 0
demo/mlt_composite_transition View File

@@ -0,0 +1,7 @@
1
+inigo \
2
+clip1.dv out=74 \
3
+-track \
4
+-blank 49 clip2.mpeg \
5
+-transition composite:57%,10%:33%x33% end=0%,0%:100%x100% progressive=1 distort=true in=50 out=74 a_track=0 b_track=1 \
6
+-transition mix:-1 in=50 out=74 a_track=0 b_track=1 \
7
+$*

+ 4
- 0
demo/mlt_effect_in_middle View File

@@ -0,0 +1,4 @@
1
+inigo \
2
+clip1.mpeg in=100 out=500 \
3
+-filter greyscale in=100 out=199 \
4
+$*

+ 9
- 0
demo/mlt_fade_black View File

@@ -0,0 +1,9 @@
1
+inigo \
2
+colour:black out=199 \
3
+-track \
4
+clip3.mpeg in=100 out=299 \
5
+-transition luma in=0 out=49 a_track=0 b_track=1 \
6
+-transition luma in=150 out=199 a_track=0 b_track=1 reverse=1 \
7
+-filter volume in=0 out=49 track=1 gain=0 end=1.0 \
8
+-filter volume in=150 out=199 track=1 gain=1.0 end=0 \
9
+$*

+ 9
- 0
demo/mlt_fade_in_and_out View File

@@ -0,0 +1,9 @@
1
+inigo \
2
+clip1.dv out=74 -blank 99 clip3.dv in=25 \
3
+-track \
4
+-blank 49 clip2.mpeg out=149 \
5
+-transition luma in=50 out=74 a_track=0 b_track=1 \
6
+-transition luma in=175 out=199 a_track=0 b_track=1 reverse=1 \
7
+-transition mix:-1 in=50 out=74 a_track=0 b_track=1 \
8
+-transition mix:-1 in=175 out=199 a_track=0 b_track=1 reverse=1 \
9
+$*

+ 9
- 0
demo/mlt_intro View File

@@ -0,0 +1,9 @@
1
+inigo \
2
+music1.ogg in=100 out=224 \
3
+-track \
4
+watermark1.png out=124 \
5
+clip3.mpeg \
6
+-mix 25 \
7
+-mixer luma resource=luma1.pgm softness=0.2 \
8
+-transition mix:-1 in=100 out=124 \
9
+$*

+ 10
- 0
demo/mlt_jcut View File

@@ -0,0 +1,10 @@
1
+inigo \
2
+-blank 49 \
3
+clip2.dv in=100 \
4
+-track \
5
+clip1.dv out=99 \
6
+-transition \
7
+mix start=0 end=1 in=49 out=50 a_track=1 b_track=0 \
8
+-transition \
9
+mix:1 in=51 out=99 a_track=1 b_track=0 \
10
+$*

+ 12
- 0
demo/mlt_lcut View File

@@ -0,0 +1,12 @@
1
+inigo \
2
+clip1.dv out=100 \
3
+-track \
4
+-blank 49 \
5
+clip2.dv in=100 \
6
+-transition \
7
+luma in=50 out=55 a_track=0 b_track=1 \
8
+-transition \
9
+mix:1 in=50 out=98 a_track=1 b_track=0 \
10
+-transition \
11
+mix start=1 end=0 in=99 out=100 a_track=1 b_track=0 \
12
+$*

+ 5
- 0
demo/mlt_levels View File

@@ -0,0 +1,5 @@
1
+inigo \
2
+*.dv \
3
+-filter gamma:1.5 \
4
+-filter volume normalise=-20db \
5
+$*

+ 10
- 0
demo/mlt_my_name_is View File

@@ -0,0 +1,10 @@
1
+inigo \
2
+clip3.dv \
3
+-track \
4
+"+My name is Inigo Montoya.txt" out=99 -blank 49 "+Prepare to die!.txt" out=99 \
5
+-track \
6
+-blank 74 "+You killed my father.txt" out=74 \
7
+-transition composite:50%,20%:5%x4% end=10%,20%:80%x12% distort=1 halign=centre valign=centre in=0 out=99 a_track=0 b_track=1 \
8
+-transition composite:0%,70%:100%x10% end=100%,70%:100%x10% in=75 out=149 a_track=0 b_track=2 \
9
+-transition composite:25%,25%:50%x50%! in=150 out=249 a_track=0 b_track=1 \
10
+$*

+ 18
- 0
demo/mlt_news View File

@@ -0,0 +1,18 @@
1
+inigo \
2
+colour:black out=199 \
3
+-track \
4
+clip1.dv in=0 out=0 -repeat 99 clip1.dv \
5
+-track \
6
+clip2.dv out=199 \
7
+-track \
8
+pango: text=" Breaking News                 
9
+ MLT Rocks India" bgcolour=0xff000080 out=149 \
10
+pango: text=" Breaking News                 
11
+ MLT Rocks the World" bgcolour=0xff000080 out=349 \
12
+-transition mix:0.5 always_active=1 a_track=0 b_track=2 \
13
+-transition composite geometry=50%,15%:37.5%x40% a_track=0 b_track=1 in=0 out=174 \
14
+-transition composite geometry=10%,15%:37.5%x40% a_track=0 b_track=2 in=0 out=199 \
15
+-transition composite geometry="50%,15%:37.540%x40%;-1=0%,0%:100%x100%" a_track=0 b_track=1 in=174 out=199 distort=1 \
16
+-transition composite geometry=10%,65%:90%x20% a_track=0 b_track=3 in=0 out=199 \
17
+-transition composite geometry=10%,65%:90%x20% a_track=1 b_track=3 in=200 out=499 \
18
+$*

+ 5
- 0
demo/mlt_obscure View File

@@ -0,0 +1,5 @@
1
+inigo \
2
+clip2.mpeg \
3
+-filter obscure:25%,25%:25%x25%:10x10 in=0 out=68 \
4
+-filter region:circle.png filter=obscure composite.start=55%,25%:12%x50% in=68 out=200 \
5
+$*

+ 18
- 0
demo/mlt_push View File

@@ -0,0 +1,18 @@
1
+inigo \
2
+-blank 49 colour:black out=25 -blank 999 \
3
+-track \
4
+clip3.dv in=200 out=275 \
5
+-track \
6
+-blank 49 \
7
+clip2.dv in=200 \
8
+-transition \
9
+composite in=50 out=75 a_track=0 b_track=1 \
10
+start=0,0:100%x100%:100 \
11
+end=100%,0:100%x100%:100 \
12
+-transition \
13
+composite in=50 out=75 a_track=0 b_track=2 \
14
+start=-100%,0:100%x100%:100 \
15
+end=0,0:100%x100%:100 \
16
+-transition \
17
+mix:-1 in=50 out=75 a_track=1 b_track=2 \
18
+$*

+ 4
- 0
demo/mlt_slideshow View File

@@ -0,0 +1,4 @@
1
+inigo \
2
+Scotland/.all.jpg ttl=75 \
3
+-filter luma:luma1.pgm luma.softness=0.1 luma.invert=0 \
4
+$*

+ 3
- 0
demo/mlt_slideshow_black View File

@@ -0,0 +1,3 @@
1
+inigo Scotland/.all.jpg ttl=100 \
2
+-filter watermark:colour:black reverse=1 composite.geometry="15%,15%:10%,10%;0.1625=0,0:100%x100%;-.1625=;-1=70%,70%:10%x10%" composite.mirror_off=1 composite.cycle=100 composite.fill=1 composite.valign=c composite.halign=c \
3
+$*

+ 9
- 0
demo/mlt_squeeze View File

@@ -0,0 +1,9 @@
1
+inigo \
2
+clip1.dv out=124 clip2.dv out=149 clip3.dv in=75 out=224 clip1.dv \
3
+-track \
4
+-blank 99 colour:black out=49 -blank 99 colour:black out=49 -blank 99 colour:black out=49 \
5
+-group progressive=1 distort=1 \
6
+-transition composite geometry="0%,0%:100%x100%;25=50%,0%:5%x100%;-1=0%,0%:100%x100%" a_track=1 b_track=0 in=100 out=149 \
7
+-transition composite geometry="0%,0%:100%x100%;25=0%,50%:100%x5%;-1=0%,0%:100%x100%" a_track=1 b_track=0 in=250 out=299 \
8
+-transition composite geometry="0%,0%:100%x100%;25=100%,0%:5%x100%;-1=0%,0%:100%x100%" a_track=1 b_track=0 in=400 out=449 \
9
+$*

+ 9
- 0
demo/mlt_squeeze_box View File

@@ -0,0 +1,9 @@
1
+inigo \
2
+clip1.dv out=124 clip2.dv out=149 clip3.dv in=75 out=224 clip1.dv \
3
+-track \
4
+-blank 99 colour:black out=49 -blank 99 colour:black out=49 -blank 99 colour:black out=49 \
5
+-group progressive=1 \
6
+-transition composite:0%,0%:100%x100% key[25]=50%,0%:5%x100% end=0%,0%:100%x100% a_track=1 b_track=0 in=100 out=149 \
7
+-transition composite:0%,0%:100%x100% key[25]=0%,50%:100%x5% end=0%,0%:100%x100% a_track=1 b_track=0 in=250 out=299 \
8
+-transition composite:0%,0%:100%x100% key[25]=100%,0%:5%x100% end=0%,0%:100%x100% a_track=1 b_track=0 in=400 out=449 \
9
+$*

+ 15
- 0
demo/mlt_ticker View File

@@ -0,0 +1,15 @@
1
+inigo \
2
+clip1.dv out=299 \
3
+-track \
4
+colour:black out=299 \
5
+-track \
6
+"+The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog..txt" \
7
+out=299 \
8
+-transition \
9
+composite a_track=0 b_track=1 out=299 distort=1 \
10
+start=0,70%:100%x64:100 \
11
+-transition \
12
+composite a_track=0 b_track=2 out=299 titles=1 \
13
+start=100%,70%:999%x20% \
14
+end=-299%,70%:999%x20% \
15
+$*

+ 25
- 0
demo/mlt_title_over_gfx View File

@@ -0,0 +1,25 @@
1
+inigo \
2
+	watermark1.png out=9999 \
3
+-track \
4
+	"+title over gfx.txt" fgcolour=0x000000ff \
5
+-track \
6
+	clip1.dv \
7
+-transition \
8
+	composite start=30%,20%:40%x60% \
9
+		in=50 \
10
+		out=199 \
11
+		a_track=0 \
12
+		b_track=1 \
13
+		distort=1 \
14
+-transition \
15
+	composite:0%,75%:100%x20%:0 \
16
+		in=50 \
17
+		out=199 \
18
+		a_track=2 \
19
+		b_track=0 \
20
+		key[24]=0%,75%:100%x20%:100 \
21
+		key[-25]=0%,75%:100%x20%:100 \
22
+		luma=luma1.pgm \
23
+		end=0%,75%:100%x20%:0 \
24
+		distort=1 \
25
+$*

+ 10
- 0
demo/mlt_titleshadow_watermark View File

@@ -0,0 +1,10 @@
1
+inigo \
2
+"+hello~world.txt" align=1 out=1000 \
3
+-track "+hello~world.txt" align=1 out=1000 fgcolour=0x000000ff \
4
+-track watermark1.png out=1000 \
5
+-track clip3.dv \
6
+-filter greyscale track=2 \
7
+-transition composite:21%,11%:100%x100%:50 end=61%,41%:100%x100% out=99 a_track=3 b_track=1 \
8
+-transition composite:20%,10%:100%x100% end=60%,40%:100%x100% out=99 a_track=3 b_track=0 \
9
+-transition composite:85%,80%:10%x10%:30 out=1000 a_track=3 b_track=2 \
10
+$*

+ 36
- 0
demo/mlt_voiceover View File

@@ -0,0 +1,36 @@
1
+inigo \
2
+"+voice over demo.txt" \
3
+		font="Sans Bold 72" \
4
+		fgcolour=0x00000000 \
5
+		bgcolour=0xff9933aa \
6
+		pad=10 \
7
+-track music1.ogg \
8
+-track clip1.dv out=149 clip2.mpeg \
9
+-transition \
10
+	mix:0.0 \
11
+	end=0.6 \
12
+	in=75 \
13
+	out=99 \
14
+	a_track=2 \
15
+	b_track=1 \
16
+-transition \
17
+	mix:0.6 \
18
+	in=100 \
19
+	out=299 \
20
+	a_track=2 \
21
+	b_track=1 \
22
+-transition \
23
+	mix:0.6 \
24
+	end=0.0 \
25
+	in=300 \
26
+	out=324 \
27
+	a_track=2 \
28
+	b_track=1 \
29
+-transition \
30
+	composite:0%,80%:100%x20% \
31
+	distort=1 \
32
+	in=100 \
33
+	out=299 \
34
+	a_track=2 \
35
+	b_track=0 \
36
+$*

+ 6
- 0
demo/mlt_watermark View File

@@ -0,0 +1,6 @@
1
+inigo \
2
+clip2.dv out=1000 \
3
+-track \
4
+watermark1.png out=1000 \
5
+-transition composite fill=1 in=0 out=1000 a_track=0 b_track=1 geometry=85%,5%:10%x10% \
6
+$*

+ 51
- 0
demo/new.westley View File

@@ -0,0 +1,51 @@
1
+<playlist>
2
+  <entry>
3
+    <multitrack>
4
+	  <playlist>
5
+        <producer id="foo" in="100" out="149">
6
+	      <property name="resource">clip2.mpeg</property>
7
+		</producer>
8
+		<blank length="25"/>
9
+        <entry producer="foo" in="10" out="59"/>
10
+	  </playlist>
11
+	  <playlist>
12
+		<blank length="25"/>
13
+		<producer id="bar" in="100" out="149">
14
+		  <property name="resource">clip3.mpeg</property>
15
+		</producer>
16
+		<entry out="99" producer="bar"/>
17
+	  </playlist>
18
+    </multitrack>
19
+    <filter track="0">
20
+      <property name="mlt_service">greyscale</property>
21
+    </filter>
22
+    <transition in="25" out="49" a_track="0" b_track="1">
23
+      <property name="mlt_service">luma</property>
24
+    </transition>
25
+    <transition in="75" out="99" a_track="0" b_track="1" mlt_service="luma">
26
+	  <property name="reverse" value="1"/>
27
+    </transition>
28
+  </entry>
29
+
30
+  <entry>
31
+    <multitrack>
32
+	  <playlist>
33
+        <entry producer="foo" in="100" out="149"/>
34
+		<blank length="25"/>
35
+        <entry producer="foo" in="10" out="59"/>
36
+	  </playlist>
37
+	  <playlist>
38
+		<blank length="25"/>
39
+		<entry producer="bar" in="100" out="149"/>
40
+		<entry out="99" producer="bar"/>
41
+	  </playlist>
42
+    </multitrack>
43
+    <transition in="25" out="49" a_track="0" b_track="1">
44
+      <property name="mlt_service">luma</property>
45
+    </transition>
46
+    <transition in="75" out="99" a_track="0" b_track="1" mlt_service="luma">
47
+      <property name="reverse">1</property>
48
+    </transition>
49
+  </entry>
50
+
51
+</playlist>

+ 34
- 0
demo/pango.westley View File

@@ -0,0 +1,34 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<westley>
3
+  <producer id="video">
4
+    <property name="resource">clip1.dv</property>
5
+  </producer>
6
+  <producer id="title">
7
+    <property name="mlt_service">pango</property>
8
+    <property name="resource">+.txt</property>
9
+    <property name="font">GJ-TTAvantika 36</property>
10
+    <property name="align">1</property>
11
+    <property name="fgcolour">0xffffddff</property>
12
+    <property name="bgcolour">0x8c101080</property>
13
+    <property name="pad">8</property>
14
+    <property name="text"><![CDATA[ʾúlÉäºÉÒ qàö»ÉÉ<
15
+HíÉà~ÉÒ+àeôÒ`ò­÷ +y«ÉKÉ §ÉÉWð~É]]></property>
16
+  </producer>
17
+  <tractor>
18
+    <multitrack>
19
+      <track producer="title"/>
20
+      <track producer="video"/>
21
+    </multitrack>
22
+    <transition in="0" out="150">
23
+      <property name="mlt_service">composite</property>
24
+      <property name="a_track">1</property>
25
+      <property name="b_track">0</property>
26
+      <property name="start">-70%,65%:100%x35%:0</property>
27
+      <property name="key[25]">0,65%:100%x35%:100</property>
28
+      <property name="key[125]">0,65%:100%x35%:100</property>
29
+      <property name="end">0,65%:100%x35%:0</property>
30
+      <property name="halign">centre</property>
31
+      <property name="valign">centre</property>
32
+    </transition>
33
+  </tractor>
34
+</westley>

+ 50
- 0
demo/svg.westley View File

@@ -0,0 +1,50 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"   "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd" [
3
+	<!ENTITY st0 "fill-rule:evenodd;clip-rule:evenodd;fill:url(#aigrd1);stroke:none;">
4
+	<!ENTITY st1 "stroke-width:0.8755;">
5
+	<!ENTITY st2 "fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;stroke:none;">
6
+	<!ENTITY st3 "fill:none;stroke:none;">
7
+	<!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;fill:url(#aigrd2);stroke:none;">
8
+	<!ENTITY st5 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
9
+	<!ENTITY st6 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
10
+]>
11
+<westley>
12
+<playlist>
13
+  <entry>
14
+    <producer out="99" length="99">
15
+      <property name="mlt_service">pixbuf</property>
16
+      <property name="resource">
17
+	  
18
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
19
+<svg  width="24pt" height="24pt" viewBox="0 0 24 24" xml:space="preserve">
20
+	<g id="Layer_x0020_2" style="&st6;">
21
+		<path style="&st1;" d="M1,12.1c0,6.1,5,11.1,11.1,11.1c6.1,0,11.1-5,11.1-11.1c0-6.1-5-11.1-11.1-11.1C5.9,1.1,1,6,1,12.1z"/>
22
+		<radialGradient id="aigrd1" cx="8.7681" cy="8.0513" r="13.7645" fx="8.7681" fy="8.0513" gradientUnits="userSpaceOnUse">
23
+			<stop  offset="0" style="stop-color:#FED182"/>
24
+			<stop  offset="0.2809" style="stop-color:#FFB310"/>
25
+			<stop  offset="1" style="stop-color:#996E04"/>
26
+		</radialGradient>
27
+		<path style="&st0;" d="M21.3,12c0,5.2-4.2,9.4-9.4,9.4c-5.2,0-9.4-4.2-9.4-9.4c0-5.2,4.2-9.4,9.4-9.4c5.2,0,9.4,4.2,9.4,9.4z"/>
28
+	</g>
29
+	<g id="Layer_x0020_3" style="&st6;">
30
+		<path style="&st5;" d="M16.4,7.2c-0.5,0.1-0.9,0.3-1.2,0.7c0,0-3,4.2-4.1,5.6c-0.9-0.9-2.5-2.5-2.5-2.5c-0.3-0.3-0.8-0.5-1.3-0.5c-0.5,0-0.9,0.2-1.3,0.5c-0.7,0.7-0.7,1.8,0,2.5l3.9,3.9c0.4,0.4,0.9,0.5,1.4,0.5c0.5,0,1-0.3,1.3-0.7l5.4-7.1
31
+			c0.6-0.8,0.5-1.9-0.3-2.5c-0.4-0.3-0.8-0.4-1.3-0.4z"/>
32
+		<path style="&st2;" d="M16.6,7.4c-0.5,0.1-0.9,0.3-1.2,0.7c0,0-3,4.2-4.1,5.6c-0.9-0.9-2.5-2.5-2.5-2.5c-0.3-0.3-0.8-0.5-1.3-0.5c-0.5,0-0.9,0.2-1.3,0.5c-0.7,0.7-0.7,1.8,0,2.5l3.9,3.9c0.4,0.4,0.9,0.5,1.4,0.5c0.5,0,1-0.3,1.3-0.7l5.4-7.1
33
+			c0.6-0.8,0.5-1.9-0.3-2.5c-0.4-0.3-0.8-0.4-1.3-0.4z"/>
34
+		<radialGradient id="aigrd2" cx="8.6733" cy="8.6187" r="11.0872" fx="8.6733" fy="8.6187" gradientUnits="userSpaceOnUse">
35
+			<stop  offset="0" style="stop-color:#FFFFFF"/>
36
+			<stop  offset="1" style="stop-color:#F0E1BD"/>
37
+		</radialGradient>
38
+		<path style="&st4;" d="M16.5,7.3c-0.5,0.1-0.9,0.3-1.2,0.7c0,0-3,4.2-4.1,5.6C10.3,12.6,8.6,11,8.6,11c-0.3-0.3-0.8-0.5-1.3-0.5c-0.5,0-0.9,0.2-1.3,0.5c-0.7,0.7-0.7,1.8,0,2.5l3.9,3.9c0.4,0.4,0.9,0.5,1.4,0.5c0.5,0,1-0.3,1.3-0.7l5.4-7.1
39
+			c0.6-0.8,0.5-1.9-0.3-2.5c-0.4-0.3-0.8-0.4-1.3-0.4z"/>
40
+	</g>
41
+	<g id="Layer_x0020_4" style="&st6;">
42
+		<path style="&st3;" d="M24,24H0V0h24v24z"/>
43
+	</g>
44
+</svg>
45
+
46
+      </property>
47
+    </producer>
48
+  </entry>
49
+</playlist>
50
+</westley>

BIN
demo/watermark1.png View File


+ 1
- 0
docs/TODO View File

@@ -0,0 +1 @@
1
+Review and documentation update. The review will yield a TODO with more tasks.

+ 339
- 0
docs/dvcp.txt View File

@@ -0,0 +1,339 @@
1
+Miracle Control Protocol (DVCP) Reference Documentation
2
+
3
+Copyright (C) 2004 Ushodaya Enterprised Limited
4
+Author: Dan Dennedy <dan@dennedy.org>
5
+Last Revision: 2004-03-20
6
+
7
+
8
+General Format
9
+--------------
10
+	DVCP is an ASCII-based request/response TCP protocol much like FTP and
11
+	inspired by the SGI MVCP (Multiport Video Computer Protocol). Each
12
+	command is three to eight characters long followed by zero or more
13
+	arguments. Every item (command or argument) in the request is delimited
14
+	by a space and terminated with a new line. Arguments that contain spaces
15
+	must be surrounded by double quotation marks. The new line must contain
16
+	a line feed optionally preceeded by a carriage return. There are no
17
+	request header lines or body.
18
+
19
+
20
+Response Codes
21
+--------------
22
+	Responses consist of a numeric result code followed by a space folowed
23
+	by a brief textual description of the result. No quoting is applied to
24
+	descriptions regardless if it contains spaces. The result codes are
25
+	grouped by the hundreds into general categories of responses. Anything
26
+	in the 200-299 range is considered a success and anything 300 and above
27
+	is an error or exception. Most responses do not contain a body except
28
+	some of the success results that report information and sometimes the
29
+	500 Server Error returns specific information. 
30
+
31
+	A 200 result code contains no body.
32
+	A 201 result code contains one or more lines in the body, and an empty
33
+	line terminates the response.
34
+	A 202 result code contains only a single response line in the body.
35
+
36
+	Errors in the 400 range indicate a normally handled error where the
37
+	command could not perform its action due to protocol syntax errors or
38
+	problems with validation of one or more of the arguments. This usually
39
+	indicates that the client is responsible for performing an illegal
40
+	request.
41
+	
42
+	Errors in the 500 range indicate a server error or exception.
43
+	
44
+	The following is a list of response codes and their descriptions:
45
+	200 OK
46
+	201 OK
47
+	202 OK
48
+	400 Unknown command
49
+	401 Operation timed out
50
+	402 Argument missing
51
+	403 Unit not found
52
+	404 Failed to locate or open clip
53
+	405 Argument value out of range
54
+	500 Server Error
55
+
56
+
57
+Establishing a Connection
58
+-------------------------
59
+	One can connect to the miracle server using telnet or a custom client,
60
+	preferrably one developed using the valerie client API. The default port
61
+	is 5250. Connections can be broken at will or use the BYE command to
62
+	request the server to terminate the connection.
63
+
64
+
65
+General Command Information
66
+---------------------------
67
+
68
+	All commands are case insensitive. Arguments may or may not be case
69
+	sensitive. There are two categories of commands: global and unit. Global
70
+	commands operate at the server level. Unit commands address a specific
71
+	unit. miracle is a multi-unit system. Units are named as U? where ?
72
+	is the unit number, for example, U0. As units are added to the server,
73
+	the unit number increases; the first unit is U0.
74
+	
75
+	The command HELP lists all commands known to the server with a brief
76
+	description of their purpose and arguments. Most commands take zero or
77
+	one argument outside of the unit name. Sometimes an argument is
78
+	optional, and an optional argument always follows required arguments.
79
+	All units command required a unit name argument.
80
+	
81
+	{} = required argument
82
+	[] = optional argument
83
+	() = one of a set of pre-defined values
84
+	
85
+
86
+Global Commands
87
+---------------
88
+
89
+HELP
90
+	List the commands and their brief description.
91
+
92
+BYE
93
+	Close the connection.
94
+	
95
+SHUTDOWN
96
+	Shutdown the server and all client connections.
97
+
98
+SET {key=value}
99
+	Set a global server configuration property.
100
+	Currently, the only planned key is "root" to set the base directory
101
+	path for the CLS and LOAD commands. The default root value is /.
102
+
103
+GET {key}
104
+	Get the current value of a configuration property.
105
+	The value is returned by itself in the body of the response.
106
+
107
+CLS {path}
108
+	List the clips and subdirectories at {path} on the server.
109
+	Only subdirectories, non-hidden regular files, symbolic links, and NFS
110
+	shares are supported.
111
+	The response body contains one line per item.
112
+	The name of the subdirectory/file is always surrounded by double
113
+	quotation marks in case it contains spaces.
114
+	Subdirectories are listed before files and have a trailing / in their
115
+	name.
116
+	File entries have a size value in bytes in the second column position.
117
+
118
+RUN {file}
119
+	Process the commands in a file located on the server.
120
+	Commands are executed one after the other with no delay until the end
121
+	of file is reached or a command returns a response code not in the 200
122
+	range.
123
+	The response body contains each command sent along with its arguments,
124
+	followed by each command's response status code and response body.
125
+
126
+
127
+STATUS
128
+	Responds with the output of USTA for each unit and accepts no further
129
+	input. Each time the state of the unit changes, a new row is returned by
130
+	the server containing the state of the unit. 
131
+
132
+Unit Management
133
+
134
+	The following global commands manage the DV units within the server.
135
+	Currently there is a maximum of four units, and units can not be
136
+	removed. Each unit may be in an online or offline state. Offline units
137
+	can not be used, and any unit commands issued against an offline unit
138
+	results in a 403 response. 
139
+	
140
+NLS
141
+	* NOT IMPLEMENTED IN MIRACLE YET *
142
+
143
+
144
+UADD mlt-consumer[:argument]
145
+	Add a unit based upon the mlt-consumer id and optional constructor
146
+	argument.
147
+	If the consumer is not found, then it still added but in an
148
+	offline manner. Later, by adding the device to the bus, the unit will
149
+	automatically become online.
150
+	The response body contains the name of the new unit: U0, U1, U2, or U3.
151
+	Channel is an optional setting. 
152
+
153
+ULS
154
+	List the units.
155
+	The response body contains a space-delimited row for each unit in the
156
+	server containing the following columns:
157
+	- unit name (one of U0, U1, U2, or U3)
158
+	- mlt-consumer[:argument] from uadd
159
+	- 1394 node GUID (defunt - always 0 with miracle for now)
160
+	- online flag (1 = online, 0 = offline)
161
+
162
+SHUTDOWN
163
+	Shutdown the server.
164
+
165
+
166
+Unit Commands
167
+-------------
168
+
169
+	The first argument of any unit command is the unit name (U0 - U3). A
170
+	unit must be loaded with a file before it can play anything. A "clip"
171
+	refers to the presence of a file loaded into the unit. A clip can
172
+	contain an in and out point to set the playback region. The default in
173
+	point is 0, and the default out point is the number of frames in the
174
+	file minus one. Therefore, all frame positions are zero-based.
175
+
176
+USET {unit} {key=value}
177
+	Set a unit's configuration property.
178
+	Key is one of the following: eof, points.
179
+	
180
+	Property "eof" determines what the playback engine does when it reaches
181
+	the end of a clip. The eof property takes one of the following values:
182
+	stop, loop, continue or pause. The default is pause.
183
+	
184
+	Property "points" determines whether the playback engine restricts the
185
+	playback region to the in and out points. It takes one of the following
186
+	values: use, ignore.
187
+	
188
+UGET {unit} {key}
189
+	Get a unit's configuration property.
190
+	Key is one of the following: eof, points.
191
+	The response body contains only the key's value. See USET for information 
192
+	about each property.
193
+
194
+LIST {unit}
195
+	List the clips associated to the unit.
196
+	The response body consists of two sections - the first section is a single row
197
+	containing the generation number of the playlist associated to the unit (an
198
+	integer starting from 0 which is incremented on each action which changes the
199
+	playlist). The second sections contais a space-delimited row for each clip in the
200
+	units playlistcontaining the following columns:
201
+	- clip index (starts from 0)
202
+	- file name
203
+	- in point
204
+	- out point
205
+	- real length of the files
206
+	- calculated length of file
207
+	When USET points=use is specified (default), the calculated size is (out-in)+1. 
208
+	When points are ignored, the real length of the file is returned.
209
+
210
+LOAD {unit} {filename} [in out]
211
+	Load a clip into the unit.
212
+	Optionally set the in and out points to the specified absolute frame numbers.
213
+	Sets the current position to the first frame in the clip.
214
+	Preface the filename with '!' to tell the disk reader thread to remove only
215
+	duplicate frames from the tail of its buffer queue (from a previously loaded
216
+	and playing clip). Otherwise, miracle flushes all of its buffers upon LOAD
217
+	to make the effect of LOAD instantaneous. The LOAD !, USET eof=pause, and
218
+	extended USTA information can be used for client-side playlists (see the 
219
+	demo programs).
220
+
221
+APND {unit} {filename} [in out]
222
+	Append a clip onto the unit's playlist.
223
+	Optionally set the in and out points to the specified absolute frame numbers.
224
+	
225
+INSERT {unit} {filename} [ [+|-]clip [ in out ] ]
226
+	Insert a clip into the units playlist at the specified clip index or relative
227
+	to the currently playing clip index.
228
+
229
+REMOVE {unit} [ [+|-]clip ]
230
+	Removes a clip from the specified clip index or position relative to the 
231
+	currently playing clip index.
232
+	
233
+CLEAN {unit}
234
+	Removes all by the playing clip.
235
+	
236
+WIPE {unit}
237
+	Removes all clips before the playing clip.
238
+	
239
+MOVE {unit} [+|-]clip [ [+|-]clip ]
240
+	Move a clip in the playlist to position specified or position relative to the
241
+	currently playing clip.
242
+
243
+PLAY {unit} [speed]
244
+	Commence unit playback from the current position.
245
+	The default speed is 100% if not specified.
246
+	Speed is represented as a percentage value multiplied by 10. Therefore
247
+	the default playback speed is 1000 (1X or 100%), 2X is 2000.
248
+	Negative speed values play in reverse.
249
+
250
+STOP {unit}
251
+	Terminate the unit playback resulting in no video being sent.
252
+
253
+PAUSE {unit}
254
+	Pause the unit playback causing the current frame position to he held
255
+	indefinitely.
256
+
257
+REW {unit}
258
+	Rewind the unit.
259
+	If the unit it playing, then REW sets the playback speed to -2000
260
+	(200%).
261
+	If the unit is stopped, then the frame position is reset to the first
262
+	frame. First frame depends upon the "points" unit configuration property
263
+	and whether an in point has been established for the clip using the SIN
264
+	command.
265
+	Set the currently loaded clip's in point.
266
+	Frame is zero-based and absolute. It is not dependent upon the clip's
267
+	current in point.
268
+	A frame-number of -1, resets the in point to 0.
269
+
270
+FF {unit}
271
+	Fast forward the unit.
272
+	If the unit it playing, then FF sets the playback speed to 2000 (200%
273
+	in reverse).
274
+	If the unit is stopped, then the frame position is reset to the first
275
+	frame. First frame depends upon the "points" unit configuration property
276
+	and whether an in point has been established for the clip using the SIN
277
+	command.
278
+
279
+STEP {unit} {number-of-frames}
280
+	Adjust the current frame position by the number of frames specified.
281
+	Number-of-frames can accept positive or negative values.
282
+
283
+GOTO {unit} {frame-number} [ [+|-]clip ]
284
+	Set the current frame position to frame-number.
285
+	Frame-number is zero-based and absolute within the clip, which means it is 
286
+	relative to the file beginning and not the clip in point.
287
+	It does not alter the playback status of the unit. 
288
+
289
+SIN {unit} {frame-number} [ [+|-]clip ]
290
+	Set the currently loaded clip's in point.
291
+	The in point is the logical starting frame of the clip.
292
+	Frame is zero-based and absolute. It is not dependent upon the clip's
293
+	current in point.
294
+	A frame-number of -1, resets the in point to 0.
295
+
296
+SOUT {unit} {frame-number} [ [+|-]clip ]
297
+	Set the currently loaded clip's out point.
298
+	The out point is the logical last frame of the clip.
299
+	Frame is zero-based and absolute. It is not dependent upon the clip's
300
+	current out point.
301
+	A frame-number of -1, resets the out point to the number of frames in
302
+	the file minus 1.
303
+
304
+USTA {unit}
305
+	Get the unit status report.
306
+	The response body contains the following fields delimited by spaces:
307
+	- unit number: U0, U1, U2, or U3 without the "U" prefix
308
+	- mode: (offline|not_loaded|playing|stopped|paused|disconnected|unknown)
309
+	  "unknown" means the unit has not been added
310
+	  "disconnected" means the server has closed the connection to the client.
311
+	- current clip name: filename
312
+	- current position: in absolute frame number units
313
+	- speed: playback rate in (percent * 10)
314
+	- fps: frames-per-second of loaded clip
315
+	- current in-point: starting frame number
316
+	- current out-point: ending frame number
317
+	- length of the clip
318
+	- buffer tail clip name: filename
319
+	- buffer tail position: in absolute frame number units
320
+	- buffer tail in-point: starting frame number
321
+	- buffer tail out-point: ending frame number
322
+	- buffer tail length: length of clip in buffer tail
323
+	- seekable flag: indicates if the current clip is seekable (relates to head)
324
+	- playlist generation number
325
+	- current clip index (relates to head)
326
+	 
327
+	The status contains information based not only on the current frame being
328
+	output (current above) but also based upon the most recent frame read by
329
+	the disk reader thread and added to the tail of the input buffer queue
330
+	(buffer tail above).
331
+
332
+XFER {unit} {target-unit}
333
+	Transfer the unit's clip to the target unit.
334
+	The clip inherently includes the in- and out-point information.
335
+	The target unit's "points" configuration property is set to "use."
336
+
337
+
338
+
339
+

+ 1341
- 0
docs/framework.txt
File diff suppressed because it is too large
View File


+ 378
- 0
docs/inigo.txt View File

@@ -0,0 +1,378 @@
1
+Inigo Documentation
2
+
3
+Copyright (C) 2004 Ushodaya Enterprised Limited
4
+Author: Charles Yates <charles.yates@pandora.be>
5
+Last Revision: 2004-03-20
6
+
7
+
8
+INIGO
9
+-----
10
+
11
+Preamble:
12
+
13
+	inigo was developed as a test tool for the MLT framework. It can be thought
14
+	of as a powerful, if somewhat obscure, multitrack command line oriented 
15
+	video editor.
16
+
17
+	The following details the usage of the tool and as a result, provides a lot 
18
+	of insight into the workings of the MLT framework.
19
+
20
+
21
+Usage:
22
+
23
+	inigo [ -group [ name=value ]* ]
24
+	      [ -consumer id[:arg] [ name=value ]* ]
25
+	      [ -filter filter[:arg] [ name=value ] * ]
26
+	      [ -attach filter[:arg] [ name=value ] * ]
27
+	      [ -mix length [ -mixer transition ]* ]
28
+	      [ -transition id[:arg] [ name=value ] * ]
29
+	      [ -blank frames ]
30
+	      [ -track ]
31
+	      [ -split relative-frame ]
32
+	      [ -join clips ]
33
+	      [ -repeat times ]
34
+	      [ producer [ name=value ] * ]+
35
+
36
+
37
+General rules:
38
+
39
+	1. Order is incredibly important;
40
+
41
+	2. Error checking on command line parsing is weak;
42
+
43
+	3. Please refer to services.txt for details on services available;
44
+
45
+	4. The MLT framework, from which inigo has inherited its naming convention,
46
+	is very mlt-centric. Producers produce MLT frame objects and consumers 
47
+	consume MLT frame objects.  The distinction is important - a DV producer 
48
+	does not produce DV, it produces MLT frames from a DV source, and similarly
49
+	a DV consumer does not consume DV, it consumes MLT frames and produces DV
50
+	frames.
51
+
52
+
53
+Terminology:
54
+
55
+	'Producers' typically refer to files but may also indicate devices (such as
56
+	dv1394 input or video4linux). Hence, the more generic term is used [the more 
57
+	generic usage is out of scope for now...].
58
+
59
+	'Filters' are frame modifiers - they always guarantee that for every frame 
60
+	they receive, they output *precisely* one frame.  Never more, never less, 
61
+	ever. Nothing says that a filter cannot generate frames though
62
+	
63
+	'Transitions' collect frames from two tracks (a and b) and output 1 
64
+	modified frame on their 'a track', and 1 unmodified frame on their 'b track'.
65
+	Never more, never less, ever.
66
+	
67
+	'Consumers' collect frames from a producer, do something with them and
68
+	destroy them.
69
+	
70
+	Collectively, these are known as 'services'. 
71
+	
72
+	All services have 'properties' associated to them. These are typically
73
+	defaulted or evaluated and may be overriden on a case by case basis.
74
+	
75
+	All services except consumers obey in and out properties.
76
+	
77
+	Consumers have no say in the flow of frames [though they may give the
78
+	illusion that they do]. They get frames from a connected producer, use them, 
79
+	destroy them and get more.
80
+
81
+
82
+Basics:
83
+
84
+	To play a file with the default SDL PAL consumer, usage is:
85
+	
86
+	$ inigo file
87
+
88
+	Note that 'file' can be anything that inigo has a known 'producer' mapping 
89
+	for (so this can be anything from .dv to .txt).
90
+
91
+	You can also specify the producer directly, for example:
92
+
93
+	$ inigo avformat:file.mpeg
94
+
95
+	Would force the direct use of avformat for loading the file.
96
+
97
+
98
+Properties:
99
+
100
+	Properties can be assigned to the producer by adding additional name=value
101
+	pairs after the producer:
102
+	
103
+	$ inigo file in=50 out=100 something="something else"
104
+	
105
+	Note that while some properties have meaning to all producers (for example:
106
+	in, out and length are guaranteed to be valid for all, though typically, 
107
+	length is determined automatically), the validity of others are dependent on 
108
+	the producer - however, properties will always be assigned and silently 
109
+	ignored if they won't be used.
110
+
111
+
112
+Multiple Files:
113
+
114
+	Multiple files of different types can be used:
115
+	
116
+	$ inigo a.dv b.mpg c.png
117
+	
118
+	Properties can be assigned to each file:
119
+	
120
+	$ inigo a.dv in=50 out=100 b.mpg out=500 c.png out=500
121
+
122
+	MLT will take care of 'normalising' the output of a producer to ensure
123
+	that the consumer gets what it needs. So, in the case above, the mlt
124
+	framework will ensure that images are rescaled and audio resampled to meet
125
+	the requirements of your configuration (which, by default, will be PAL).
126
+	See 'Appendix A: Normalisation Rules' below.
127
+
128
+
129
+Filters:
130
+
131
+	Filters are frame modifiers - they can change the contents of the audio or
132
+	the images associated to a frame.
133
+
134
+	$ inigo a.dv -filter greyscale
135
+
136
+	As with producers, properties may be specified on filters too.
137
+	
138
+	Again, in and out properties are common to all, so to apply a filter to a
139
+	range of frames, you would use something like:
140
+	
141
+	$ inigo a.dv -filter greyscale in=0 out=50
142
+	
143
+	Again, filters have their own set of rules about properties and will
144
+	silently ignore properties that do not apply.
145