Merge ../mlt
[melted] / src / framework / metaschema.yaml
1 --- # A metadata schema in Kwalify: http://www.kuwata-lab.com/kwalify/
2 # Version: 0.1 
3 type: map
4 mapping:
5   "schema_version": # This should match the version comment above
6     type: float
7     required: yes
8   "type": # A service type
9     type: str
10     required: yes
11     enum: [consumer, filter, producer, transition]
12   "identifier": # The same value used to register and create the service
13     type: str
14     required: yes
15     unique: yes
16   "title": # The UI can use this for a field label
17     type: str
18   "copyright": # Who owns the rights to the module and/or service?
19     type: str
20   "version": # The version of the service implementation
21     type: text
22   "license": # The software license for the service implementation
23     type: str
24   "language": # A 2 character ISO 639-1 language code
25     type: str
26     required: yes
27   "url": # A hyperlink to a related website
28     type: str
29   "creator": # The name and/or e-mail address of the original author
30     type: str
31   "contributor": # The name and/or e-mail of all source code contributors
32     type: seq
33     sequence:
34       - type: str
35   "tags": # A set of categories, this might become an enum
36     type: seq
37     sequence:
38       - type: str
39   "description": # A slightly longer description than title
40     type: str
41   "icon": # A graphical representation of the effect
42     type: map
43     mapping:
44       "filename":
45         type: str
46       "content-type":
47         type: str
48       "content-encoding":
49         type: str
50       "content":
51         type: str
52   "notes": # Details about the usage and/or implementation - can be long
53     type: str
54   "bugs": # A list of known problems that users can try to avoid
55     type: seq
56     sequence:
57       - type: str # Can be a sentence or paragraph, preferably not a hyperlink
58   "parameters": # A list of all of the options for the service
59     type: seq
60     sequence:
61       - type: map
62         mapping:
63           "identifier": # The key that must be used to set the mlt_property
64             type: str
65             required: yes
66           "type": # An mlt_property_type
67             type: str
68             enum:
69               - float
70               - geometry
71               - integer
72               - properties # for passing options to encapsulated services
73               - string
74               - time # currently, mlt_position (frame), soon to be a time value
75           "service-name": # for type: properties, a reference to another service
76             type: str     # format: type.service, e.g. transition.composite
77           "title": # A UI can use this for a field label
78             type: str
79           "description": # A UI can use this for a tool tip or what's-this
80             type: str
81           "readonly": # If you set this property, it will be ignored
82             type: bool
83             default: no
84           "required": # Is this property required?
85             type: bool
86             default: no
87           "mutable": # The service will change behavior if this is set after
88                      # processing the first frame
89             type: bool
90             default: no
91           "widget": # A hint to the UI about how to let the user set this
92             type: str
93             enum:
94               - checkbox
95               - color
96               - combo
97               - curve
98               - directory
99               - fileopen
100               - filesave
101               - font
102               - knob
103               - listbox
104               - dropdown # aka HTML select or GtkOptionMenu
105               - radio
106               - rectangle # for use with type: geometry
107               - slider
108               - spinner
109               - text
110               - textbox # multi-line
111               - timecode
112           "minimum": # For numeric types, the minimal value
113             type: number
114           "maximum": # For numeric types, the maximal value 
115             type: number
116           "default":     # The default value to be used in a UI
117             type: scalar # If not specified, the UI might be able to display
118                          # this as blank
119           "unit": # A UI can display this as a label after the widget (e.g. %)
120             type: str
121           "scale": # the number of digits after decimal point when type: float
122             type: int
123           "format": # A hint about a custom string encoding, possibly scanf
124           "values": # A list of acceptable string values
125             type: seq # A UI can allow something outside the list with
126                       # widget: combo or if "other" is in this sequence
127             sequence:
128               - type: scalar
129