+Westley Documentation
+
+Copyright (C) 2004 Ushodaya Enterprised Limited
+Authors: Charles Yates <charles.yates@pandora.be>
+Last Revision: 2004-03-20
+
+
WESTLEY
-------
Preamble:
Westley is the MLT projects XML serialisation/deserialisation format -
- as such, it closely mirrors the internal structure of the MLT API.
+ as such, it closely mirrors the internal structure of the MLT API.
+
+ If you just want to go straight to the DTD, then see
+ mlt/src/modules/westley/westley.dtd, which gets installed at
+ $(prefix)/share/mlt/modules/westley.dtd. Currently, the westley parser is
+ non-validating.
Introduction:
appear to be an exception - it isn't - it simply has a route back to the
application to allow the application to interpret key presses).
- Whether this is better or worse than a traditional graph approach is a moot
- point. The author of this document likes it anyway :-).
-
Tractors:
<westley>
<producer id="producer0">
- <property name="resource">clip1.dv</property>
+ <property name="resource">clip1.dv</property>
</producer>
<playlist id="playlist0">
- <entry producer="producer0"/>
+ <entry producer="producer0"/>
</playlist>
<producer id="producer1">
- <property name="resource">clip2.mpeg</property>
+ <property name="resource">clip2.mpeg</property>
</producer>
<playlist id="playlist1">
- <blank length="50"/>
- <entry producer="producer1"/>
+ <blank length="50"/>
+ <entry producer="producer1"/>
</playlist>
<tractor id="tractor0" in="0" out="315">
- <multitrack id="multitrack0">
- <track producer="playlist0"/>
- <track producer="playlist1"/>
- </multitrack>
- <transition id="transition0" in="50" out="74">
- <property name="a_track">0</property>
- <property name="b_track">1</property>
- <property name="mlt_service">luma</property>
- </transition>
- <transition id="transition1" in="50" out="74">
- <property name="a_track">0</property>
- <property name="b_track">1</property>
- <property name="mlt_service">mix</property>
- <property name="start">0.0</property>
- <property name="end">1.0</property>
- </transition>
+ <multitrack id="multitrack0">
+ <track producer="playlist0"/>
+ <track producer="playlist1"/>
+ </multitrack>
+ <transition id="transition0" in="50" out="74">
+ <property name="a_track">0</property>
+ <property name="b_track">1</property>
+ <property name="mlt_service">luma</property>
+ </transition>
+ <transition id="transition1" in="50" out="74">
+ <property name="a_track">0</property>
+ <property name="b_track">1</property>
+ <property name="mlt_service">mix</property>
+ <property name="start">0.0</property>
+ <property name="end">1.0</property>
+ </transition>
</tractor>
</westley>
between the gain scaling factors between the start and end properties -
in this example, from 0.0 (none of track B) to 1.0 (all of track B).
Because the bottom track starts out with a gap specified using the <blank>
- element, the upper track appears during the blank segment. See the demos and
+ element, the upper track appears during the blank segment. See the demos and
services.txt to get an idea of the capabilities of the included transitions.
Flexibility:
<?xml version="1.0"?>
<!DOCTYPE westley [
- <!ENTITY msg "Hello world!">
+ <!ENTITY msg "Hello world!">
]>
<westley>
<producer id="producer0">
- <property name="mlt_service">pango</property>
- <property name="text">&msg;</property>
+ <property name="mlt_service">pango</property>
+ <property name="text">&msg;</property>
</producer>
</westley>
If you are embedding another XML document into a property value not using
a CNODE section, then any DOCTYPE section must be relocated before any of
- the xml elements to be well-formed. See demo/dvg.westley for an example.
+ the xml elements to be well-formed. See demo/svg.westley for an example.
Entities can be used to parameterise westley! Using the above example, the
entity declared serves as the default value for &msg;. The entity content
prevent shell filename expansion, or similar.
Needless to say, the ability to parameterise westley XML compositions is
- an extremely powerful tool. The above example is avialable in
- demo/entity.westley for you to try out. Override the message from inigo:
- inigo 'westley:entity.westley?msg:Amazing!'
+ an extremely powerful tool. An example for you to play with is available in
+ demo/entity.westley. Try overriding the name from inigo:
+ inigo 'westley:entity.westley?name:Charlie'
Technically, the entity declaration is not needed in the head of the XML
document if you always supply the parameter. However, you run the risk
If one finds the above hierarchical, abbreviated format intuitive,
start with a simple template and fill and extend as needed:
- <westley>
- <multitrack>
- <playlist>
- </playlist>
- ...add a playlist for each track...
- </multitrack>
- ...add filters and transitions...
- </westley>
-
+ <westley>
+ <multitrack>
+ <playlist>
+ </playlist>
+ ...add a playlist for each track...
+ </multitrack>
+ ...add filters and transitions...
+ </westley>
+
By using a playlist for each track, it is easier to iteratively add new
- clips and blank regions as you develop the project. You will not have to
+ clips and blank regions as you develop the project. You will not have to
use <track> or later add <playlist> when necessary.
A more advanced template that allows sequencing multitracks is:
- <playlist>
- <entry>
- <multitrack>
- <playlist>
- </playlist>
- ...add a playlist for each track...
- </multitrack>
- ...add filters and transitions...
- </entry>
-
- <entry>
- <multitrack>
- <playlist>
- </playlist>
- ...add a playlist for each track...
- </multitrack>
- ...add filters and transitions...
- </entry>
- </playlist>
+ <playlist>
+ <entry>
+ <multitrack>
+ <playlist>
+ </playlist>
+ ...add a playlist for each track...
+ </multitrack>
+ ...add filters and transitions...
+ </entry>
+
+ <entry>
+ <multitrack>
+ <playlist>
+ </playlist>
+ ...add a playlist for each track...
+ </multitrack>
+ ...add filters and transitions...
+ </entry>
+ </playlist>
If you end up making a collection of templates for various situations, then
consider using XML Entities to make the template more effective by moving