3 Authors: Charles Yates <charles.yates@pandora.be>
4 Dan Dennedy <dan@dennedy.org>
11 Services marked as "(Proprietary)" are not distributed with the LGPL
21 ffmpeg libavformat based producer for video and audio.
25 'file' - a filename specification or URL in the form:
26 [{protocol}|{format}]:{resource}[?{format-parameter}[&{format-parameter}...]]
27 For example, video4linux:/dev/video1?width:320&height:240
28 Note: on the bash command line, & must be escaped as '\&'.
29 Also, note the use of ':' instead of '=' for parameters.
30 Use 'ffmpeg -formats' to see a list of supported protocols
35 Format parameters only appear to be useful with 'video4linux' or
36 'audio_device' formats. For 'video4linux' the parameters are
37 width, height, frame_rate, frame_rate_base, and standard (ntsc|pal).
38 For 'audio_device' the parameters are channels and sample_rate.
40 Initialisation Properties
42 int video_index - index of video stream to use (-1 is off)
43 int audio_index - index of audio stream to use (-1 is off)
49 string resource - file location
50 double source_fps - the framerate of the resource
51 double aspect_ratio - sample aspect ratio of the resource
52 - this is determined on every frame read
60 Audio sync discrepancy with some content.
61 Not all libavformat supported formats are seekable.
62 Fails to play beyond first frame of video of sources with PTS not
63 starting at 0 (video4linux).
69 A friendly giant that likes to rhyme and throw rocks
73 'file' - a filename specification:
74 [{mlt-service}:]{resource} | {mlt-service}
75 - can also be the name of a producer service that can
76 accept the resource specified post construction.
78 Initialisation Properties
82 + all producer initialising properties
86 string resource - file location
87 + all producer read only properties
91 This producer has two roles:
93 1. it handles the mappings of all file names to the other
95 2. it attaches normalising filters (rescale, resize and resample)
96 to the producers (when necessary).
98 This producer simplifies many aspects of use. Essentially, it
99 ensures that a consumer will receive images and audio precisely as
115 A simple colour generator.
119 colour - A colour value is a hexadecimal representation of RGB plus
120 alpha channel as 0xrrggbbaa.
121 - Also colours can be the words: white, black, red, green,
123 - The default colour is black.
125 Initialisation Properties
146 libdv based decoder for video and audio.
150 'file' - produce a/v from file
152 Initialisation Properties
159 string resource - file location
160 double fps - output frames per second
161 int length - duration of resource (in frames)
165 string quality - one of "best," "fast" or anything else chooses
174 DVCPRO is incorrectly identified as 16:9 aspect ratio. You must use
175 libdv from CVS or a post 0.101 release.
181 MainConcept based dv decoder for video and audio.
185 'file' - produce a/v from file
187 Initialisation Properties
194 string resource - file location
195 double fps - output frames per second
196 int length - duration of resource (in frames)
200 MainConcept DV or DVCPRO SDK, libdv.
201 "dv_sdk" installed parallel to mlt.
211 MainConcept based mpeg decoder for video and audio.
215 'file' - produce a/v from file
217 Initialisation Properties
224 string resource - file location
225 double fps - output frames per second
226 double aspect_ratio - sample aspect ratio of video
227 int length - duration of resource (in frames)
231 MainConcept MPEG SDK.
232 "mpeg_sdk_release" installed parallel to mlt.
248 Initialisation Properties
255 string resource - file location
256 double fps - output frames per second
257 double aspect_ratio - sample aspect ratio of video
258 int length - duration of resource (in frames)
272 A title generator that uses the Pango international text layout
273 and Freetype2 font renderer.
277 string file - a text file containing Pango markup, see:
278 http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html
279 - requires xml-like encoding special chars from:
280 <, >, & -to- <, >, &
284 Supplying a filename with extension ".txt" causes the Fezzik
285 producer to load with pango. If the filename begins with "+" the
286 pango producer interprets the filename as pango text. This is a
287 shortcut to embed titles in inigo commands. For westley, it is
288 recommended that you embed the title text in the property value.
290 Pango has builtin scaling. It will rescale the originally rendered
291 title to whatever the consumer requests. Therefore, it will lose
292 its aspect ratio if so requested, and it is up to the consumer to
293 request a proper width and height that maintains the image aspect.
295 Initialisation Properties
302 string markup - a string containing Pango markup see:
303 http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html
304 - requires xml-like encoding special chars from:
305 <, >, & -to- <, >, &
306 string fgcolour - an RGBA colour specification of the text
308 string bgcolour - an RGBA colour of the background rectangle
309 string align - paragraph alignment: left, centre, right
310 - also, numbers 0, 1 and 2 can be used respectively.
311 int pad - the number of pixels to pad the background rectangle
312 beyond edges of text. default 0.
313 string markup - see constructor argument
314 string text - non-markup string in UTF-8 encoding (can contain
315 markup chars un-encoded)
316 string font - the default typeface to use when not using markup.
317 default "Sans 48". FreeType2 renders at 72 dpi.
318 string encoding - the text encoding type of the input if not UTF-8.
319 - see 'iconv --list' for a list of possible inputs.
320 int weight - the weight of the font (default is 400)
324 string resource - the text/markup file or "pango" if no file.
325 int real_width - the original, unscaled width of the rendered title.
326 int real_height - the original, unscaled height of the title.
327 int width - the last requested scaled image width.
328 int height - the last requested scaled image height.
332 libpango-1.0, libpangoft2-1.0, libfreetype, libgdk_pixbuf-2.0,
333 libglib-2.0, libgobject-2.0, libgmodule-2.0, libfontconfig.
337 The foreground and background Pango markup span attributes are not
339 Word wrapping is not supported.
345 A still graphics to video generator using gdk-pixbuf
349 'file' - The name of a graphics file loadable by
350 a gdk-pixbuf loader. see /usr/lib/gdk-pixbuf/loaders
351 definitely png, jpeg, tiff, pnm, and xpm
352 - If "%" in filename, the filename is used with sprintf
353 generate a filename from a counter for multi-file/flipbook
354 animation. The file sequence ends when numeric
356 - If filename contains "/.all.", suffix with an extension to
357 load all pictures with matching extension from a directory.
358 - If filename contains the string "<svg", then pixbuf tries
359 to load the filename as inline SVG XML, which is convenient
364 Pixbuf has builtin scaling. It will rescale the originally rendered
365 title to whatever the consumer requests. Therefore, it will lose
366 its aspect ratio if so requested, and it is up to the consumer to
367 request a proper width and height that maintains the image aspect.
369 Initialisation Properties
373 int begin - when using an image sequence, this sets the starting
378 int ttl - how long (in frames) to repeat each picture in file
379 sequences. default is 25.
383 string resource - file location. See Constructor Argument above.
384 int real_width - the original, unscaled width of the rendered title.
385 int real_height - the original, unscaled height of the title.
386 int width - the last requested scaled image width.
387 int height - the last requested scaled image height.
391 libgdk_pixbuf-2.0, libglib-2.0, libgobject-2.0, libgmodule-2.0
395 XXX: in/out settings are incorrectly handled.
401 Reads a stream of contiguous PPM images.
405 command - a shell command to run something that produces ppm
408 Initialisation Properties
414 string resource - the command
422 Since it uses pipes, it is not compatible with bluefish.
428 Construct a service network from an XML description.
429 See docs/westley.txt.
433 URL - an XML text file containing westley XML (schema/DTD pending)
434 - Since westley files can be parameterised, the URL syntax is:
435 {file-name}[?{param-name}{'='|':'}{param-value}[&{param-name}{'='|':'}{param-value}...]]
436 A colon is allowed instead of an equal sign to pacify inigo,
437 who tokenises anything with an equal sign as a property
438 setting. Also, when running inigo from the shell, beware of
439 the '?' and shell filename expansion. You can surround the URL
440 with single quotations to prevent expansion. Finally, fezzik
441 will fail to match the filename when you use parameters, so
442 preface the url with 'westley:' to force fezzik to load with
447 string resource - file location
455 Non-referenced producers and playlists are not destroyed until the
456 network is destroyed.
457 A referenced producer or playlist must appear before the reference.
458 A filter that occurs before a producer has been defined causes a
465 OGG Vorbis file reader.
469 'file' - file to use (only .ogg supported at the moment)
471 Initialisation Properties
478 double fps - this is fixed at 25 for PAL currently
486 Fixed frame size (PAL audio chunks).
487 Doesn't cover ogg files with multiple, differing sections.
496 Shift the luma component using a constant value.
500 start - the constant floating point numeric value to apply.
503 Initialisation Properties
507 double start - see Constructor Argument above.
508 double end - the ending adjustment value. the filter interpolates
509 between the start and end adjustments over the
510 duration of the effect.
522 Does not go completely to black or white.
529 Copy audio from one channel to another channel.
533 to - the 0-indexed channel to copy into, default is 1.
538 int from - the channel from which to copy, default is 0.
554 Deinterlace a frame consisting of two fields using bob, weave,
555 greedy, one-field, and linear blend methods. This code is
556 appropriated from the Xine XV video output plugin.
560 method - a string containing the deinterlace method: bob, weave,
561 greedy, onefield, or linearblend. The default is
564 Initialisation Properties
579 If the frame properties "progressive" or "consumer_progressive"
580 are non-zero, then the filter is not applied. Also, if applied,
581 this sets the frame property "progressive" to 1.
589 Not a bug, but it only provides fair quality.
596 Adjust image luma using a non-linear power-law curve
600 gamma - a floating point value. The default is 1.0, or none.
602 Initialisation Properties
609 double gamma - the exponential factor of the power-law curve
624 Convert colour image to greyscale
630 Initialisation Properties
651 Scale the producer video frame size to match the consumer.
652 This filter is designed for use as a Fezzik normaliser.
656 interpolation - the rescaling method, one of:
657 nearest (lowest quality, fastest),
659 bilinear (default; good quality, moderate speed),
660 hyper (best quality, slowest).
662 Initialisation Properties
669 string interpolation - see constructor argument above
671 If a property "consumer_aspect_ratio" exists on the frame, then
672 rescaler normalises the producer's aspect ratio and maximises the
673 size of the frame, but may not produce the consumer's requested
674 dimension. Therefore, this option works best in conjunction with the
675 resize filter. This behavior can be disabled by another service by
676 either removing the property, setting it to zero, or setting
677 frame property "distort" to 1.
681 libgdk_pixbuf-2.0, libglib-2.0, libgobject-2.0, libgmodule-2.0
691 Creates Jack ports and runs a JackRack project to process audio
692 through a stack of LADSPA filters.
696 src - a JackRack file
700 If you are using a consumer that uses ALSA, then you should start
701 jackd with the dummy driver: jackd -d dummy.
702 I also recommend using a period size of 2048: -p 2048.
704 jackd -ddummy -r48000 -p2048
706 Initialisation Properties
711 The following can be used without a rack file in order to connect
712 filter_jackrack to a running instance of JackRack:
713 string out_1 - Jack port to connect MLT's output port (JackRack's input)
714 string out_2 - Jack port to connect MLT's output port (JackRack's input)
715 string in_1 - Jack port to connect MLT's input port (JackRack's output)
716 string in_2 - Jack port to connect MLT's input port (JackRack's output)
728 Jack, LADSPA, glib-2.0, libxml2
732 Currently, due to timing and synchronisation issues, the audio
733 is distorted with repeated samples and latency clicks.
734 no encapsulated resampling and jack runs at a fixed frequency
740 Runs a JackRack project to process audio through a stack of
741 LADSPA filters without using Jack.
745 src - a JackRack file
749 Due to audio integrity issues with the jackrack filter, this
750 filter is better for runtime, while jackrack is more suitable
751 for prototyping a rack file using the Jack Rack GUI.
753 Initialisation Properties
768 Jack, LADSPA, glib-2.0, libxml2
769 Jack is still required because this coexists with the jackrack
774 no encapsulated resampling and jack runs at a fixed frequency
780 Applies a luma transition between the current and next frames.
781 Useful for transitions from a slideshow created using producer
788 Initialisation Properties
799 int period - how long to wait between success iterations of the
800 transition. For best results set this to a multiple
801 of ttl used in pixbuf. The default is 24.
803 luma. - all properties beginning with "luma." are passed to the
804 encapsulated luma transition. For example, luma.out controls
805 the duration of the wipe.
809 transition_luma and its dependencies
819 Scale the producer video frame size to match the consumer.
820 This filter is designed for use as a Fezzik normaliser.
824 interpolation - the rescaling method, one of:
825 nearest (lowest quality, fastest),
826 bilinear (default; good quality, moderate speed),
827 hyper (best quality, slowest).
829 Initialisation Properties
836 string interpolation - see constructor argument above
838 If a property "consumer_aspect_ratio" exists on the frame, then
839 rescaler normalises the producer's aspect ratio and maximises the
840 size of the frame, but may not produce the consumer's requested
841 dimension. Therefore, this option works best in conjunction with the
842 resize filter. This behavior can be disabled by another service by
843 either removing the property, setting it to zero, or setting
844 frame property "distort" to 1.
848 the mainconcept rescaling sdk.
858 Provides various mirror and image reversing effects.
862 mirror - horizontal, vertical, diagonal, flip, flop
864 Initialisation Properties
866 int reverse - being 0 or 1
891 Mix all channels of audio into a mono signal and output it as
896 channels - the number of output channels (default 2)
898 Initialisation Properties
929 Initialisation Properties
931 string start - in the format X,Y:WxH[:PWxPY]
932 - PWxPY is the size of the averaging region in pixels.
933 string end - in the format X,Y:WxH[:PWxPY]
953 Apply one or more filters to a region of the video image. The region
954 can be shaped as well using the alpha channel of another producer.
958 resource - A file whose alpha channel will "shape" the region.
959 - The string "circle" is a shortcut but it requires pixbuf with
960 the librsvg loader. The circle is automatically stretched
961 to the region to create an ellipse.
963 Initialisation Properties
967 plus and region transition properties
971 see the region transition
979 "circle" is unpredictable in the absence of the librsvg pixbuf loader.
986 Adjust an audio stream's sampling rate, and duplicate channels if
987 producer provides less than consumer requested.
989 This filter is automatically invoked by Fezzik for the sake of
990 normalisation over inputs and with the consumer.
994 frequency - a numeric value for the new sample rate
996 Initialisation Properties
1003 int frequency - the target sample rate
1011 Assumes 2 channels during libsamplerate initialisation. Untested
1018 Scale the producer video frame size to match the consumer.
1019 This filter is designed for use as a Fezzik normaliser.
1021 Constructor Argument
1025 Initialisation Properties
1032 If a property "consumer_aspect_ratio" exists on the frame, then
1033 rescaler normalises the producer's aspect ratio and maximises the
1034 size of the frame, but may not produce the consumer's requested
1035 dimension. Therefore, this option works best in conjunction with the
1036 resize filter. This behavior can be disabled by another service by
1037 either removing the property, setting it to zero, or setting
1038 frame property "distort" to 1.
1046 none but... it only implements a nearest neighbour scaling - it is
1047 used as the base class for the gtkrescale and mcrescale filters.
1053 Image scaling and padding and field order adjustment.
1057 Normally resize is used to pad the producer's
1058 output to what the consumer has requested after an upstream rescale
1059 filter first scales the image to maximise usage of the image area.
1060 This filter also adjusts the field order to lower field first
1061 if the frame property "top_field_first" has been set to 1.
1062 Therefore, when done, it sets the top_field_first to 0.
1063 This filter is automatically invoked by Fezzik as part of image
1064 sample aspect ratio normalisation.
1066 Constructor Argument
1068 scale - "affine" to use affine transform scaling, otherwise
1071 Initialisation Properties
1076 Read Only Properties
1086 Assumes lower field first output.
1092 Adjust an audio stream's volume level
1093 - based on the 'normalize' utility
1095 Constructor Argument
1097 gain - a string containing one of:
1098 - a floating point value of the gain adjustment
1099 - a numeric value with the suffix "dB" to adjust in terms of decibels
1100 - "normalise" to normalise the volume to the target amplitude -12dBFS
1102 Initialisation Properties
1106 int window - the number of video frames over which to smooth normalisation.
1111 string gain - same as constructor argument above
1113 string normalise - normalise the volume to the amplitude:
1114 - a numeric value with the suffix "dB" to set amplitude in decibels
1115 - a floating point value of the relative volume
1116 - an unspecified value uses the default -12dBFS
1118 string limiter - limit all samples above:
1119 - a numeric value with the suffix "dB"
1120 - a floating point value ( dB = 20 * log10(x) )
1121 - an unspecified value uses the default -6dBFS
1123 double max_gain - a floating point or decibel value of the maximum gain that
1124 can be applied during normalisation.
1125 - an unspecified value uses the default 20dB
1127 string end - a gain value just like the gain property above.
1128 This causes the gain to be interpolated from 'gain' to 'end'
1131 int window - the size of the normalising smoothing buffer in video frame units.
1132 - the smoothing buffer prevents erratic gain changes.
1133 - the default value is 75 video frames.
1135 gain can be applied as a factor to the normalise amplitude!
1149 Add a watermark to the frames.
1151 Constructor Argument
1153 resource - the producer to use (ie: a .png)
1155 Initialisation Properties
1157 string resource - the producer to use
1158 string factory - producer required for the resource ('fezzik')
1159 string geometry - composite geometry
1160 string distort - control scaling
1170 mlt core modules and optionally, fezzik
1183 A key-framable alpha-channel compositor for two frames.
1187 Performs dissolves and luma wipes in addition to alpha compositing.
1189 By default, the aspect ratio of the B frame is respected and the
1190 size portion of the geometry specification simply defines a
1193 This performs field-based rendering unless the A frame property
1194 "progressive" or "consumer_progressive" or the transition property
1195 "progressive" is set to 1.
1197 Constructor Argument
1201 Initialisation Properties
1205 string factory - The name of a factory service used as a non-PGM
1206 producer loader. The default is fezzik.
1208 Read Only Properties
1215 string geometry - key frame specification
1216 - this is a ; delimited form of the deprecated start,
1217 key[n], end properties
1218 int progressive - set to 1 to disable field-based rendering.
1219 string distort - when set, causes the B frame image to fill the WxH
1220 completely with no regard to B's aspect ratio.
1221 string halign - when not distorting, set the horizontal alignment
1222 of B within the geometry rectangle.
1223 - one of: left (0), centre (1), or right (2).
1224 - the default is left.
1225 string valign - when not distorting, set the vertical alignment of
1226 B within the geometry rectangle.
1227 - one of: top (0), middle (1), or bottom (2).
1228 - the default is top.
1229 string luma - the luma map file name. If not supplied, a dissolve.
1230 double softness - only when using a luma map, how soft to make the
1231 edges between A and B. 0.0 = no softness. 1.0 =
1233 Any property starting with "luma." is passed to the non-PGM luma
1236 Deprecated Properties
1238 string start - a geometry specification as X,Y:WxH[!][:mix]
1239 - X, Y, W, H are assumed to pixel units unless they
1241 - '!' is a shortcut to specify distort, see below.
1242 - mix is always a 2 digit percentage, defaults to 100.
1243 - default is "85%,5%:10%x10%"
1244 string end - the ending size and position.
1245 string key[F] - X,Y:WxH[:mix] - set a key frame for geometry between
1246 the in and out. F is a frame number and can be
1247 negative to make it relative to the out point.
1255 Assumes lower field first during field rendering.
1261 A generic dissolve and wipe transition processor.
1266 from how it uses a grayscale "map" file. As the luma value varies
1267 over time, a threshold filter is applied to the map to determine
1268 what parts of frame A vs. frame B to show. It reads PGM files
1269 up to 16 bits! Alternatively, it can use the first frame from any
1270 producer that outputs yuv, but it will be limited to the luma
1271 gamut of 220 values.
1272 This performs field-based rendering unless the A frame property
1273 "progressive" or "consumer_progressive" or the transition property
1274 "progressive" is set to 1.
1276 Constructor Argument
1278 string resource - the luma map file name - either PGM or any other
1280 - If not supplied, a dissolve.
1282 Initialisation Properties
1286 string factory - The name of a factory service used as a non-PGM
1287 producer loader. The default is Fezzik.
1291 string resource - same as above
1292 double softness - only when using a luma map, how soft to make the
1293 edges between A and B. 0.0 = no softness. 1.0 =
1295 int reverse - reverse the direction of the transition.
1296 Any property starting with "producer." is passed to the non-PGM luma
1299 Read Only Properties
1309 Assumes lower field first output.
1315 An two stream audio mixer.
1317 Constructor Argument
1321 Initalisation Properties
1328 double start - the mix level to apply to the second frame.
1329 - any negative value causes an automatic crossfade from 0 to 1.
1330 double end - the ending value of the mix level. mix level will be interpolated
1331 from start to end over the in-out range.
1332 int reverse - set to 1 to reverse the direction of the mix.
1334 Read Only Properties
1344 Samples from the longer of the two frames are discarded.
1351 Apply zero or more filters to B frame as it is composited onto
1352 a region of the A frame. The "shape" of the region can be defined
1353 by the alpha channel of a third producer.
1355 Constructor Argument
1357 resource - a shape producer
1359 Initialisation Properties
1361 string resource - nothing is rectangle, "circle" is a pixbuf-
1362 generated SVG circle, anything else is loaded by the factory.
1363 string factory - the service that creates the shape producer.
1364 - the default is fezzik.
1365 string filter[N] - one or more filters to apply. All filter
1366 properties are passed using the same filter "key"
1367 Any property starting with "composite." is passed to the
1368 encapsulated composite transition.
1370 Read Only Properties
1376 transition_composite
1390 Multiformat transcoding consumer.
1392 Constructor Argument
1394 string target - the filename to write to, e.g. test.mpeg.
1396 Initialisation Properties
1398 int buffer - the number of frames to buffer, minimum 1, default 25.
1399 string rescale - a rescale method, see the Filters/rescale.
1400 int progressive - indicates whether to use progressive or field-
1401 based rendering, default 0 (off).
1403 Read Only Properties
1415 bluefish (Proprietary)
1419 BlueFish444 audio and video output module.
1421 Constructor Argument
1423 card - a numeric card id starting at 1, default is 1.
1425 Initialisation Properties
1427 string standard - "PAL" (default) or "NTSC"
1428 - default is based upon MLT_NORMALISATION
1429 environment variable, which defaults to PAL.
1430 int frames - the number of DMA video frames. default is 8.
1431 minimum is 2. maximum on my system is 11.
1432 int buffer - the number of frames to buffer within MLT, minimum 1,
1434 string rescale - a rescale method, see the Filters/rescale.
1436 Read Only Properties
1442 BlueVelvet SDK installed parallel to mlt in "bluefish."
1446 Does not work with any service that uses pipes!
1448 If mlt crashes, you might need to reload the BlueDriver kernel
1449 module due to unreleased DMA buffers.
1451 Only supports 2 channel audio at the moment.
1459 Constructor Argument
1461 string target - the filename to write to, e.g. /dev/dv1394.
1463 Initialisation Properties
1465 int buffer - the number of frames to buffer, minimum 1, default 25.
1466 string rescale - a rescale method, see the Filters/rescale.
1470 int progressive - indicates whether to use progressive or field-
1471 based rendering, default 0 (off).
1473 Read Only Properties
1489 Mainconcept MPEG encoder.
1491 Constructor Argument
1493 string target - the filename to write to.
1495 Initialisation Properties
1497 int buffer - the number of frames to buffer, minimum 1, default 25.
1498 string rescale - a rescale method, see the Filters/rescale.
1499 string format - vcd [default], svcd or dvd provide base settings
1500 int motion_search_type - 0 to 16 - reduces quality/cpu usage
1501 int gop - group of picture size (default: format dependent)
1505 int progressive - indicates whether to use progressive or field-
1506 based rendering, default 0 (off).
1508 Read Only Properties
1514 Mainconcept MPEG SDK
1524 Simple DirectMedia Layer audio and video output module.
1526 Constructor Argument
1528 string video_standard - "PAL" (default), "NTSC", or "WxH"
1530 Initialisation Properties
1532 int buffer - the number of frames to buffer, minimum 1, default 25.
1533 string rescale - a rescale method, see the Filters/rescale.
1534 - Hint: "none" works very good with SDL output.
1538 double volume - audio level factor
1539 int video_off - if 1, disable video output
1540 int audio_off - if 1, disable audio output
1542 int progressive - indicates whether to use progressive or field-
1543 based rendering, default 0 (off).
1544 int audio_buffer - size of the sdl audio buffer (default: 1024)
1546 Read Only Properties
1552 libSDL-1.2, libasound, libaudio, libXt, libX11, libXext, libSM, libICE
1562 Serialise the service network to XML.
1563 See docs/westley.txt for more information.
1565 Constructor Argument
1567 resource - the name of a file in which to store the XML.
1568 - stdout is default.
1570 Initialisation Properties
1572 string resource - same as above.
1580 Untested arbitrary nesting of multitracks and playlists.
1581 Property "id" is generated as service type followed by number if
1582 no property named "id" exists, but it fails to guarantee uniqueness.