Merge branch '0.10'
[platform/upstream/gstreamer.git] / ges / ges-enums.c
1 /* GStreamer Editing Services
2  * Copyright (C) 2010 Brandon Lewis <brandon.lewis@collabora.co.uk>
3  *               2010 Nokia Corporation
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21 #include "ges-enums.h"
22
23 #define C_ENUM(v) ((guint) v)
24 static void
25 register_ges_track_type_select_result (GType * id)
26 {
27   static const GFlagsValue values[] = {
28     {C_ENUM (GES_TRACK_TYPE_UNKNOWN), "GES_TRACK_TYPE_UNKNOWN", "unknown"},
29     {C_ENUM (GES_TRACK_TYPE_AUDIO), "GES_TRACK_TYPE_AUDIO", "audio"},
30     {C_ENUM (GES_TRACK_TYPE_VIDEO), "GES_TRACK_TYPE_VIDEO", "video"},
31     {C_ENUM (GES_TRACK_TYPE_TEXT), "GES_TRACK_TYPE_TEXT", "text"},
32     {C_ENUM (GES_TRACK_TYPE_CUSTOM), "GES_TRACK_TYPE_CUSTOM", "custom"},
33     {0, NULL, NULL}
34   };
35
36   *id = g_flags_register_static ("GESTrackType", values);
37 }
38
39 GType
40 ges_track_type_get_type (void)
41 {
42   static GType id;
43   static GOnce once = G_ONCE_INIT;
44
45   g_once (&once, (GThreadFunc) register_ges_track_type_select_result, &id);
46   return id;
47 }
48
49 static void
50 register_ges_pipeline_flags (GType * id)
51 {
52   static const GFlagsValue values[] = {
53     {C_ENUM (TIMELINE_MODE_PREVIEW_AUDIO), "TIMELINE_MODE_PREVIEW_AUDIO",
54         "audio_preview"},
55     {C_ENUM (TIMELINE_MODE_PREVIEW_VIDEO), "TIMELINE_MODE_PREVIEW_VIDEO",
56         "video_preview"},
57     {C_ENUM (TIMELINE_MODE_PREVIEW), "TIMELINE_MODE_PREVIEW", "full_preview"},
58     {C_ENUM (TIMELINE_MODE_RENDER), "TIMELINE_MODE_RENDER", "render"},
59     {C_ENUM (TIMELINE_MODE_SMART_RENDER), "TIMELINE_MODE_SMART_RENDER",
60         "smart_render"},
61     {0, NULL, NULL}
62   };
63
64   *id = g_flags_register_static ("GESPipelineFlags", values);
65 }
66
67 GType
68 ges_pipeline_flags_get_type (void)
69 {
70   static GType id;
71   static GOnce once = G_ONCE_INIT;
72
73   g_once (&once, (GThreadFunc) register_ges_pipeline_flags, &id);
74   return id;
75 }
76
77 static GEnumValue transition_types[] = {
78   {
79         0,
80         "Transition has not been set",
81       "none"}
82   ,
83   {
84         1,
85         "A bar moves from left to right",
86       "bar-wipe-lr"}
87   ,
88   {
89         2,
90         "A bar moves from top to bottom",
91       "bar-wipe-tb"}
92   ,
93   {
94         3,
95         "A box expands from the upper-left corner to the lower-right corner",
96       "box-wipe-tl"}
97   ,
98   {
99         4,
100         "A box expands from the upper-right corner to the lower-left corner",
101       "box-wipe-tr"}
102   ,
103   {
104         5,
105         "A box expands from the lower-right corner to the upper-left corner",
106       "box-wipe-br"}
107   ,
108   {
109         6,
110         "A box expands from the lower-left corner to the upper-right corner",
111       "box-wipe-bl"}
112   ,
113   {
114         7,
115         "A box shape expands from each of the four corners toward the center",
116       "four-box-wipe-ci"}
117   ,
118   {
119         8,
120         "A box shape expands from the center of each quadrant toward the corners of each quadrant",
121       "four-box-wipe-co"}
122   ,
123   {
124         21,
125         "A central, vertical line splits and expands toward the left and right edges",
126       "barndoor-v"}
127   ,
128   {
129         22,
130         "A central, horizontal line splits and expands toward the top and bottom edges",
131       "barndoor-h"}
132   ,
133   {
134         23,
135         "A box expands from the top edge's midpoint to the bottom corners",
136       "box-wipe-tc"}
137   ,
138   {
139         24,
140         "A box expands from the right edge's midpoint to the left corners",
141       "box-wipe-rc"}
142   ,
143   {
144         25,
145         "A box expands from the bottom edge's midpoint to the top corners",
146       "box-wipe-bc"}
147   ,
148   {
149         26,
150         "A box expands from the left edge's midpoint to the right corners",
151       "box-wipe-lc"}
152   ,
153   {
154         41,
155         "A diagonal line moves from the upper-left corner to the lower-right corner",
156       "diagonal-tl"}
157   ,
158   {
159         42,
160         "A diagonal line moves from the upper right corner to the lower-left corner",
161       "diagonal-tr"}
162   ,
163   {
164         43,
165         "Two wedge shapes slide in from the top and bottom edges toward the center",
166       "bowtie-v"}
167   ,
168   {
169         44,
170         "Two wedge shapes slide in from the left and right edges toward the center",
171       "bowtie-h"}
172   ,
173   {
174         45,
175         "A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners",
176       "barndoor-dbl"}
177   ,
178   {
179         46,
180         "A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners",
181       "barndoor-dtl"}
182   ,
183   {
184         47,
185         "Four wedge shapes split from the center and retract toward the four edges",
186       "misc-diagonal-dbd"}
187   ,
188   {
189         48,
190         "A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges",
191       "misc-diagonal-dd"}
192   ,
193   {
194         61,
195         "A wedge shape moves from top to bottom",
196       "vee-d"}
197   ,
198   {
199         62,
200         "A wedge shape moves from right to left",
201       "vee-l"}
202   ,
203   {
204         63,
205         "A wedge shape moves from bottom to top",
206       "vee-u"}
207   ,
208   {
209         64,
210         "A wedge shape moves from left to right",
211       "vee-r"}
212   ,
213   {
214         65,
215         "A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
216       "barnvee-d"}
217   ,
218   {
219         66,
220         "A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
221       "barnvee-l"}
222   ,
223   {
224         67,
225         "A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
226       "barnvee-u"}
227   ,
228   {
229         68,
230         "A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
231       "barnvee-r"}
232   ,
233   {
234         101,
235         "A rectangle expands from the center.",
236       "iris-rect"}
237   ,
238   {
239         201,
240         "A radial hand sweeps clockwise from the twelve o'clock position",
241       "clock-cw12"}
242   ,
243   {
244         202,
245         "A radial hand sweeps clockwise from the three o'clock position",
246       "clock-cw3"}
247   ,
248   {
249         203,
250         "A radial hand sweeps clockwise from the six o'clock position",
251       "clock-cw6"}
252   ,
253   {
254         204,
255         "A radial hand sweeps clockwise from the nine o'clock position",
256       "clock-cw9"}
257   ,
258   {
259         205,
260         "Two radial hands sweep clockwise from the twelve and six o'clock positions",
261       "pinwheel-tbv"}
262   ,
263   {
264         206,
265         "Two radial hands sweep clockwise from the nine and three o'clock positions",
266       "pinwheel-tbh"}
267   ,
268   {
269         207,
270         "Four radial hands sweep clockwise",
271       "pinwheel-fb"}
272   ,
273   {
274         211,
275         "A fan unfolds from the top edge, the fan axis at the center",
276       "fan-ct"}
277   ,
278   {
279         212,
280         "A fan unfolds from the right edge, the fan axis at the center",
281       "fan-cr"}
282   ,
283   {
284         213,
285         "Two fans, their axes at the center, unfold from the top and bottom",
286       "doublefan-fov"}
287   ,
288   {
289         214,
290         "Two fans, their axes at the center, unfold from the left and right",
291       "doublefan-foh"}
292   ,
293   {
294         221,
295         "A radial hand sweeps clockwise from the top edge's midpoint",
296       "singlesweep-cwt"}
297   ,
298   {
299         222,
300         "A radial hand sweeps clockwise from the right edge's midpoint",
301       "singlesweep-cwr"}
302   ,
303   {
304         223,
305         "A radial hand sweeps clockwise from the bottom edge's midpoint",
306       "singlesweep-cwb"}
307   ,
308   {
309         224,
310         "A radial hand sweeps clockwise from the left edge's midpoint",
311       "singlesweep-cwl"}
312   ,
313   {
314         225,
315         "Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints",
316       "doublesweep-pv"}
317   ,
318   {
319         226,
320         "Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints",
321       "doublesweep-pd"}
322   ,
323   {
324         227,
325         "Two radial hands attached at the top and bottom edges' midpoints sweep from right to left",
326       "doublesweep-ov"}
327   ,
328   {
329         228,
330         "Two radial hands attached at the left and right edges' midpoints sweep from top to bottom",
331       "doublesweep-oh"}
332   ,
333   {
334         231,
335         "A fan unfolds from the bottom, the fan axis at the top edge's midpoint",
336       "fan-t"}
337   ,
338   {
339         232,
340         "A fan unfolds from the left, the fan axis at the right edge's midpoint",
341       "fan-r"}
342   ,
343   {
344         233,
345         "A fan unfolds from the top, the fan axis at the bottom edge's midpoint",
346       "fan-b"}
347   ,
348   {
349         234,
350         "A fan unfolds from the right, the fan axis at the left edge's midpoint",
351       "fan-l"}
352   ,
353   {
354         235,
355         "Two fans, their axes at the top and bottom, unfold from the center",
356       "doublefan-fiv"}
357   ,
358   {
359         236,
360         "Two fans, their axes at the left and right, unfold from the center",
361       "doublefan-fih"}
362   ,
363   {
364         241,
365         "A radial hand sweeps clockwise from the upper-left corner",
366       "singlesweep-cwtl"}
367   ,
368   {
369         242,
370         "A radial hand sweeps counter-clockwise from the lower-left corner.",
371       "singlesweep-cwbl"}
372   ,
373   {
374         243,
375         "A radial hand sweeps clockwise from the lower-right corner",
376       "singlesweep-cwbr"}
377   ,
378   {
379         244,
380         "A radial hand sweeps counter-clockwise from the upper-right corner",
381       "singlesweep-cwtr"}
382   ,
383   {
384         245,
385         "Two radial hands attached at the upper-left and lower-right corners sweep down and up",
386       "doublesweep-pdtl"}
387   ,
388   {
389         246,
390         "Two radial hands attached at the lower-left and upper-right corners sweep down and up",
391       "doublesweep-pdbl"}
392   ,
393   {
394         251,
395         "Two radial hands attached at the upper-left and upper-right corners sweep down",
396       "saloondoor-t"}
397   ,
398   {
399         252,
400         "Two radial hands attached at the upper-left and lower-left corners sweep to the right",
401       "saloondoor-l"}
402   ,
403   {
404         253,
405         "Two radial hands attached at the lower-left and lower-right corners sweep up",
406       "saloondoor-b"}
407   ,
408   {
409         254,
410         "Two radial hands attached at the upper-right and lower-right corners sweep to the left",
411       "saloondoor-r"}
412   ,
413   {
414         261,
415         "Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left",
416       "windshield-r"}
417   ,
418   {
419         262,
420         "Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom",
421       "windshield-u"}
422   ,
423   {
424         263,
425         "Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top",
426       "windshield-v"}
427   ,
428   {
429         264,
430         "Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left",
431       "windshield-h"}
432   ,
433   {
434         GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE,
435         "Crossfade between two clips",
436       "crossfade"}
437   ,
438   {0, NULL, NULL}
439 };
440
441 GType
442 ges_video_standard_transition_type_get_type (void)
443 {
444   static GType the_type = 0;
445   static gsize once = 0;
446
447   if (g_once_init_enter (&once)) {
448     g_assert (!once);
449
450     the_type = g_enum_register_static ("GESVideoStandardTransitionType",
451         transition_types);
452     g_once_init_leave (&once, 1);
453   }
454
455   return the_type;
456 }
457
458 GType
459 ges_text_valign_get_type (void)
460 {
461   static GType text_overlay_valign_type = 0;
462   static gsize initialized = 0;
463   static const GEnumValue text_overlay_valign[] = {
464     {GES_TEXT_VALIGN_BASELINE, "baseline", "baseline"},
465     {GES_TEXT_VALIGN_BOTTOM, "bottom", "bottom"},
466     {GES_TEXT_VALIGN_TOP, "top", "top"},
467     {GES_TEXT_VALIGN_POSITION, "position", "position"},
468     {GES_TEXT_VALIGN_CENTER, "center", "center"},
469     {0, NULL, NULL},
470   };
471
472   if (g_once_init_enter (&initialized)) {
473     text_overlay_valign_type =
474         g_enum_register_static ("GESTextVAlign", text_overlay_valign);
475     g_once_init_leave (&initialized, 1);
476   }
477   return text_overlay_valign_type;
478 }
479
480 GType
481 ges_text_halign_get_type (void)
482 {
483   static GType text_overlay_halign_type = 0;
484   static gsize initialized = 0;
485   static const GEnumValue text_overlay_halign[] = {
486     {GES_TEXT_HALIGN_LEFT, "left", "left"},
487     {GES_TEXT_HALIGN_CENTER, "center", "center"},
488     {GES_TEXT_HALIGN_RIGHT, "right", "right"},
489     {GES_TEXT_HALIGN_POSITION, "position", "position"},
490     {0, NULL, NULL},
491   };
492
493   if (g_once_init_enter (&initialized)) {
494     text_overlay_halign_type =
495         g_enum_register_static ("GESTextHAlign", text_overlay_halign);
496     g_once_init_leave (&initialized, 1);
497   }
498   return text_overlay_halign_type;
499 }
500
501 /* table more-or-less copied from gstvideotestsrc.c */
502 static GEnumValue vpattern_enum_values[] = {
503   {GES_VIDEO_TEST_PATTERN_SMPTE, "SMPTE 100% color bars", "smpte"}
504   ,
505   {GES_VIDEO_TEST_PATTERN_SNOW, "Random (television snow)", "snow"}
506   ,
507   {GES_VIDEO_TEST_PATTERN_BLACK, "100% Black", "black"}
508   ,
509   {GES_VIDEO_TEST_PATTERN_WHITE, "100% White", "white"}
510   ,
511   {GES_VIDEO_TEST_PATTERN_RED, "Red", "red"}
512   ,
513   {GES_VIDEO_TEST_PATTERN_GREEN, "Green", "green"}
514   ,
515   {GES_VIDEO_TEST_PATTERN_BLUE, "Blue", "blue"}
516   ,
517   {GES_VIDEO_TEST_PATTERN_CHECKERS1, "Checkers 1px", "checkers-1"}
518   ,
519   {GES_VIDEO_TEST_PATTERN_CHECKERS2, "Checkers 2px", "checkers-2"}
520   ,
521   {GES_VIDEO_TEST_PATTERN_CHECKERS4, "Checkers 4px", "checkers-4"}
522   ,
523   {GES_VIDEO_TEST_PATTERN_CHECKERS8, "Checkers 8px", "checkers-8"}
524   ,
525   {GES_VIDEO_TEST_PATTERN_CIRCULAR, "Circular", "circular"}
526   ,
527   {GES_VIDEO_TEST_PATTERN_BLINK, "Blink", "blink"}
528   ,
529   {GES_VIDEO_TEST_PATTERN_SMPTE75, "SMPTE 75% color bars", "smpte75"}
530   ,
531   {0, NULL, NULL}
532 };
533
534 GType
535 ges_video_test_pattern_get_type (void)
536 {
537
538   static gsize once = 0;
539   static GType theType = 0;
540
541   if (g_once_init_enter (&once)) {
542     theType = g_enum_register_static ("GESVideoTestPattern",
543         vpattern_enum_values);
544     g_once_init_leave (&once, 1);
545   };
546
547   return theType;
548 }