1 /* video_track.c generated by valac, the Vala compiler
2 * generated from video_track.vala, do not modify */
4 /* Copyright 2009 Yorba Foundation
6 * This software is licensed under the GNU Lesser General Public License
7 * (version 2.1 or later). See the COPYING file in this distribution.
11 #include <glib-object.h>
21 #define MODEL_TYPE_TRACK (model_track_get_type ())
22 #define MODEL_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRACK, ModelTrack))
23 #define MODEL_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRACK, ModelTrackClass))
24 #define MODEL_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRACK))
25 #define MODEL_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRACK))
26 #define MODEL_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRACK, ModelTrackClass))
28 typedef struct _ModelTrack ModelTrack;
29 typedef struct _ModelTrackClass ModelTrackClass;
30 typedef struct _ModelTrackPrivate ModelTrackPrivate;
32 #define MODEL_TYPE_MEDIA_TYPE (model_media_type_get_type ())
34 #define MODEL_TYPE_CLIP (model_clip_get_type ())
35 #define MODEL_CLIP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP, ModelClip))
36 #define MODEL_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP, ModelClipClass))
37 #define MODEL_IS_CLIP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP))
38 #define MODEL_IS_CLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP))
39 #define MODEL_CLIP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP, ModelClipClass))
41 typedef struct _ModelClip ModelClip;
42 typedef struct _ModelClipClass ModelClipClass;
44 #define MODEL_TYPE_PROJECT (model_project_get_type ())
45 #define MODEL_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT, ModelProject))
46 #define MODEL_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT, ModelProjectClass))
47 #define MODEL_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT))
48 #define MODEL_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT))
49 #define MODEL_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT, ModelProjectClass))
51 typedef struct _ModelProject ModelProject;
52 typedef struct _ModelProjectClass ModelProjectClass;
54 #define MODEL_TYPE_VIDEO_TRACK (model_video_track_get_type ())
55 #define MODEL_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrack))
56 #define MODEL_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass))
57 #define MODEL_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_TRACK))
58 #define MODEL_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_TRACK))
59 #define MODEL_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_TRACK, ModelVideoTrackClass))
61 typedef struct _ModelVideoTrack ModelVideoTrack;
62 typedef struct _ModelVideoTrackClass ModelVideoTrackClass;
63 typedef struct _ModelVideoTrackPrivate ModelVideoTrackPrivate;
65 #define TYPE_FRACTION (fraction_get_type ())
66 typedef struct _Fraction Fraction;
67 typedef struct _ModelClipPrivate ModelClipPrivate;
69 #define MODEL_TYPE_CLIP_FILE (model_clip_file_get_type ())
70 #define MODEL_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFile))
71 #define MODEL_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
72 #define MODEL_IS_CLIP_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_CLIP_FILE))
73 #define MODEL_IS_CLIP_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_CLIP_FILE))
74 #define MODEL_CLIP_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_CLIP_FILE, ModelClipFileClass))
76 typedef struct _ModelClipFile ModelClipFile;
77 typedef struct _ModelClipFileClass ModelClipFileClass;
78 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
80 #define MODEL_TYPE_TEMPO_INFORMATION (model_tempo_information_get_type ())
81 #define MODEL_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformation))
82 #define MODEL_IS_TEMPO_INFORMATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TEMPO_INFORMATION))
83 #define MODEL_TEMPO_INFORMATION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MODEL_TYPE_TEMPO_INFORMATION, ModelTempoInformationIface))
85 typedef struct _ModelTempoInformation ModelTempoInformation;
86 typedef struct _ModelTempoInformationIface ModelTempoInformationIface;
87 typedef struct _ModelProjectPrivate ModelProjectPrivate;
89 #define TYPE_TIME_CODE (time_code_get_type ())
90 typedef struct _TimeCode TimeCode;
92 #define VIEW_TYPE_MEDIA_ENGINE (view_media_engine_get_type ())
93 #define VIEW_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngine))
94 #define VIEW_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
95 #define VIEW_IS_MEDIA_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIEW_TYPE_MEDIA_ENGINE))
96 #define VIEW_IS_MEDIA_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIEW_TYPE_MEDIA_ENGINE))
97 #define VIEW_MEDIA_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIEW_TYPE_MEDIA_ENGINE, ViewMediaEngineClass))
99 typedef struct _ViewMediaEngine ViewMediaEngine;
100 typedef struct _ViewMediaEngineClass ViewMediaEngineClass;
102 #define MODEL_TYPE_PROJECT_LOADER (model_project_loader_get_type ())
103 #define MODEL_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoader))
104 #define MODEL_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
105 #define MODEL_IS_PROJECT_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_PROJECT_LOADER))
106 #define MODEL_IS_PROJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_PROJECT_LOADER))
107 #define MODEL_PROJECT_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_PROJECT_LOADER, ModelProjectLoaderClass))
109 typedef struct _ModelProjectLoader ModelProjectLoader;
110 typedef struct _ModelProjectLoaderClass ModelProjectLoaderClass;
112 #define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ())
113 #define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager))
114 #define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
115 #define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER))
116 #define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER))
117 #define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
119 typedef struct _ModelUndoManager ModelUndoManager;
120 typedef struct _ModelUndoManagerClass ModelUndoManagerClass;
122 #define MODEL_TYPE_LIBRARY_IMPORTER (model_library_importer_get_type ())
123 #define MODEL_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporter))
124 #define MODEL_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
125 #define MODEL_IS_LIBRARY_IMPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_LIBRARY_IMPORTER))
126 #define MODEL_IS_LIBRARY_IMPORTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_LIBRARY_IMPORTER))
127 #define MODEL_LIBRARY_IMPORTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_LIBRARY_IMPORTER, ModelLibraryImporterClass))
129 typedef struct _ModelLibraryImporter ModelLibraryImporter;
130 typedef struct _ModelLibraryImporterClass ModelLibraryImporterClass;
133 MODEL_MEDIA_TYPE_AUDIO,
134 MODEL_MEDIA_TYPE_VIDEO
138 GObject parent_instance;
139 ModelTrackPrivate * priv;
140 ModelProject* project;
145 struct _ModelTrackClass {
146 GObjectClass parent_class;
147 char* (*name) (ModelTrack* self);
148 ModelMediaType (*media_type) (ModelTrack* self);
149 gboolean (*check) (ModelTrack* self, ModelClip* clip);
150 void (*on_clip_updated) (ModelTrack* self, ModelClip* clip);
151 void (*write_attributes) (ModelTrack* self, FILE* f);
154 struct _ModelVideoTrack {
155 ModelTrack parent_instance;
156 ModelVideoTrackPrivate * priv;
159 struct _ModelVideoTrackClass {
160 ModelTrackClass parent_class;
169 GObject parent_instance;
170 ModelClipPrivate * priv;
171 ModelClipFile* clipfile;
173 gboolean is_recording;
177 struct _ModelClipClass {
178 GObjectClass parent_class;
181 struct _ModelTempoInformationIface {
182 GTypeInterface parent_iface;
183 void (*get_time_signature) (ModelTempoInformation* self, Fraction* result);
184 gint (*get_bpm) (ModelTempoInformation* self);
195 struct _ModelProject {
196 GObject parent_instance;
197 ModelProjectPrivate * priv;
198 GeeArrayList* tracks;
199 GeeArrayList* inactive_tracks;
200 GeeArrayList* clipfiles;
201 ViewMediaEngine* media_engine;
203 ModelProjectLoader* loader;
204 ModelUndoManager* undo_manager;
205 ModelLibraryImporter* importer;
206 Fraction default_framerate;
207 gboolean click_during_play;
208 gboolean click_during_record;
210 gboolean library_visible;
212 gboolean snap_to_clip;
215 struct _ModelProjectClass {
216 GObjectClass parent_class;
217 void (*get_clip_time) (ModelProject* self, ModelClipFile* f, TimeCode* result);
218 char* (*get_project_file) (ModelProject* self);
219 void (*do_append) (ModelProject* self, ModelTrack* track, ModelClipFile* clipfile, const char* name, gint64 insert_time);
220 void (*add_track) (ModelProject* self, ModelTrack* track);
221 void (*insert_track) (ModelProject* self, gint index, ModelTrack* track);
222 void (*load) (ModelProject* self, const char* fname);
223 void (*save) (ModelProject* self, const char* filename);
224 char* (*get_app_name) (ModelProject* self);
225 void (*load_complete) (ModelProject* self);
229 extern Fraction model_project_INVALID_FRAME_RATE;
230 static gpointer model_video_track_parent_class = NULL;
232 GType model_track_get_type (void);
233 GType model_media_type_get_type (void);
234 GType model_clip_get_type (void);
235 GType model_project_get_type (void);
236 GType model_video_track_get_type (void);
238 MODEL_VIDEO_TRACK_DUMMY_PROPERTY
240 ModelTrack* model_track_construct (GType object_type, ModelProject* project, const char* display_name);
241 ModelVideoTrack* model_video_track_new (ModelProject* project);
242 ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project);
243 static char* model_video_track_real_name (ModelTrack* base);
244 static ModelMediaType model_video_track_real_media_type (ModelTrack* base);
245 GType fraction_get_type (void);
246 Fraction* fraction_dup (const Fraction* self);
247 void fraction_free (Fraction* self);
248 GType model_clip_file_get_type (void);
249 gboolean model_clip_file_is_online (ModelClipFile* self);
250 gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate);
251 gboolean model_clip_file_get_frame_rate (ModelClipFile* self, Fraction* rate);
252 gboolean fraction_equal (Fraction *self, Fraction* f);
253 static gboolean model_video_track_real_check (ModelTrack* base, ModelClip* clip);
254 static gint64 model_video_track_frame_to_time (ModelVideoTrack* self, gint frame);
255 gint time_to_frame_with_rate (gint64 time, Fraction* rate);
256 static gint model_video_track_time_to_frame (ModelVideoTrack* self, gint64 time);
257 gint model_video_track_get_current_frame (ModelVideoTrack* self, gint64 time);
258 gint64 model_video_track_previous_frame (ModelVideoTrack* self, gint64 position);
259 gint64 model_video_track_next_frame (ModelVideoTrack* self, gint64 position);
260 GType model_tempo_information_get_type (void);
261 GType time_code_get_type (void);
262 TimeCode* time_code_dup (const TimeCode* self);
263 void time_code_free (TimeCode* self);
264 GType view_media_engine_get_type (void);
265 GType model_project_loader_get_type (void);
266 gpointer model_undo_manager_ref (gpointer instance);
267 void model_undo_manager_unref (gpointer instance);
268 GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
269 void model_value_set_undo_manager (GValue* value, gpointer v_object);
270 void model_value_take_undo_manager (GValue* value, gpointer v_object);
271 gpointer model_value_get_undo_manager (const GValue* value);
272 GType model_undo_manager_get_type (void);
273 GType model_library_importer_get_type (void);
277 #line 11 "video_track.vala"
278 ModelVideoTrack* model_video_track_construct (GType object_type, ModelProject* project) {
279 #line 280 "video_track.c"
280 ModelVideoTrack * self;
281 #line 11 "video_track.vala"
282 g_return_val_if_fail (MODEL_IS_PROJECT (project), NULL);
283 #line 12 "video_track.vala"
284 self = (ModelVideoTrack*) model_track_construct (object_type, project, "Video Track");
285 #line 286 "video_track.c"
290 #line 11 "video_track.vala"
291 ModelVideoTrack* model_video_track_new (ModelProject* project) {
292 #line 11 "video_track.vala"
293 return model_video_track_construct (MODEL_TYPE_VIDEO_TRACK, project);
294 #line 295 "video_track.c"
298 #line 15 "video_track.vala"
299 static char* model_video_track_real_name (ModelTrack* base) {
300 #line 301 "video_track.c"
301 ModelVideoTrack * self;
303 self = MODEL_VIDEO_TRACK (base);
304 result = g_strdup ("video");
305 #line 15 "video_track.vala"
307 #line 308 "video_track.c"
311 #line 17 "video_track.vala"
312 static ModelMediaType model_video_track_real_media_type (ModelTrack* base) {
313 #line 314 "video_track.c"
314 ModelVideoTrack * self;
315 ModelMediaType result = 0;
316 self = MODEL_VIDEO_TRACK (base);
317 result = MODEL_MEDIA_TYPE_VIDEO;
318 #line 18 "video_track.vala"
320 #line 321 "video_track.c"
324 #line 21 "video_track.vala"
325 static gboolean model_video_track_real_check (ModelTrack* base, ModelClip* clip) {
326 #line 327 "video_track.c"
327 ModelVideoTrack * self;
328 gboolean result = FALSE;
329 Fraction rate1 = {0};
330 Fraction rate2 = {0};
331 self = MODEL_VIDEO_TRACK (base);
332 #line 21 "video_track.vala"
333 g_return_val_if_fail (MODEL_IS_CLIP (clip), FALSE);
334 #line 25 "video_track.vala"
335 if (!model_clip_file_is_online (clip->clipfile)) {
336 #line 337 "video_track.c"
338 #line 26 "video_track.vala"
340 #line 341 "video_track.c"
342 #line 28 "video_track.vala"
343 if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) {
344 #line 345 "video_track.c"
346 #line 29 "video_track.vala"
348 #line 349 "video_track.c"
350 #line 31 "video_track.vala"
351 if (!model_video_track_get_framerate (self, &rate2)) {
352 #line 32 "video_track.vala"
353 g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "Cannot get initial frame rate!", NULL);
354 #line 355 "video_track.c"
356 #line 33 "video_track.vala"
358 #line 359 "video_track.c"
360 #line 36 "video_track.vala"
361 if (!model_clip_file_get_frame_rate (clip->clipfile, &rate1)) {
362 #line 37 "video_track.vala"
363 g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "can't get frame rate", NULL);
364 #line 365 "video_track.c"
366 #line 38 "video_track.vala"
368 #line 369 "video_track.c"
370 #line 41 "video_track.vala"
371 if (!fraction_equal (&rate1, &rate2)) {
372 #line 42 "video_track.vala"
373 g_signal_emit_by_name (MODEL_TRACK (self), "error-occurred", "can't insert clip with different frame rate", NULL);
374 #line 375 "video_track.c"
376 #line 43 "video_track.vala"
378 #line 379 "video_track.c"
381 #line 45 "video_track.vala"
383 #line 384 "video_track.c"
387 #line 63 "video_track.vala"
388 static gint64 model_video_track_frame_to_time (ModelVideoTrack* self, gint frame) {
389 #line 390 "video_track.c"
392 #line 63 "video_track.vala"
393 g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0LL);
394 #line 65 "video_track.vala"
395 if (!model_video_track_get_framerate (self, &rate)) {
396 #line 397 "video_track.c"
398 #line 66 "video_track.vala"
400 #line 401 "video_track.c"
402 result = (gint64) gst_util_uint64_scale ((guint64) frame, (guint64) (GST_SECOND * rate.denominator), (guint64) rate.numerator);
403 #line 68 "video_track.vala"
405 #line 406 "video_track.c"
409 #line 71 "video_track.vala"
410 static gint model_video_track_time_to_frame (ModelVideoTrack* self, gint64 time) {
411 #line 412 "video_track.c"
414 #line 71 "video_track.vala"
415 g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0);
416 #line 73 "video_track.vala"
417 if (!model_video_track_get_framerate (self, &rate)) {
418 #line 419 "video_track.c"
420 #line 74 "video_track.vala"
422 #line 423 "video_track.c"
424 result = time_to_frame_with_rate (time, &rate);
425 #line 75 "video_track.vala"
427 #line 428 "video_track.c"
431 #line 78 "video_track.vala"
432 gint model_video_track_get_current_frame (ModelVideoTrack* self, gint64 time) {
433 #line 434 "video_track.c"
435 #line 78 "video_track.vala"
436 g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0);
437 #line 438 "video_track.c"
438 result = model_video_track_time_to_frame (self, time);
439 #line 79 "video_track.vala"
441 #line 442 "video_track.c"
445 #line 82 "video_track.vala"
446 gint64 model_video_track_previous_frame (ModelVideoTrack* self, gint64 position) {
447 #line 448 "video_track.c"
450 #line 82 "video_track.vala"
451 g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0LL);
452 #line 83 "video_track.vala"
453 frame = model_video_track_time_to_frame (self, position);
454 #line 455 "video_track.c"
455 result = model_video_track_frame_to_time (self, frame - 1);
456 #line 84 "video_track.vala"
458 #line 459 "video_track.c"
462 #line 87 "video_track.vala"
463 gint64 model_video_track_next_frame (ModelVideoTrack* self, gint64 position) {
464 #line 465 "video_track.c"
467 #line 87 "video_track.vala"
468 g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), 0LL);
469 #line 88 "video_track.vala"
470 frame = model_video_track_time_to_frame (self, position);
471 #line 472 "video_track.c"
472 result = model_video_track_frame_to_time (self, frame + 1);
473 #line 89 "video_track.vala"
475 #line 476 "video_track.c"
479 #line 92 "video_track.vala"
480 gboolean model_video_track_get_framerate (ModelVideoTrack* self, Fraction* rate) {
481 #line 482 "video_track.c"
482 gboolean result = FALSE;
483 #line 92 "video_track.vala"
484 g_return_val_if_fail (MODEL_IS_VIDEO_TRACK (self), FALSE);
485 #line 93 "video_track.vala"
486 if (gee_collection_get_size (GEE_COLLECTION (MODEL_TRACK (self)->clips)) == 0) {
487 #line 488 "video_track.c"
489 #line 94 "video_track.vala"
491 #line 492 "video_track.c"
495 _c_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_TRACK (self)->clips));
496 #line 96 "video_track.vala"
498 #line 499 "video_track.c"
500 #line 96 "video_track.vala"
501 if (!gee_iterator_next (_c_it)) {
502 #line 96 "video_track.vala"
504 #line 505 "video_track.c"
506 #line 96 "video_track.vala"
507 c = (ModelClip*) gee_iterator_get (_c_it);
508 #line 97 "video_track.vala"
509 if (model_clip_file_is_online (c->clipfile)) {
510 #line 511 "video_track.c"
512 #line 98 "video_track.vala"
513 can = model_clip_file_get_frame_rate (c->clipfile, rate);
514 #line 99 "video_track.vala"
516 #line 517 "video_track.c"
518 _g_object_unref0 (c);
519 _g_object_unref0 (_c_it);
520 #line 101 "video_track.vala"
522 #line 523 "video_track.c"
524 _g_object_unref0 (c);
526 _g_object_unref0 (_c_it);
528 #line 105 "video_track.vala"
529 if (fraction_equal (&MODEL_TRACK (self)->project->default_framerate, &model_project_INVALID_FRAME_RATE)) {
530 #line 531 "video_track.c"
532 #line 106 "video_track.vala"
534 #line 535 "video_track.c"
536 #line 108 "video_track.vala"
537 *rate = MODEL_TRACK (self)->project->default_framerate;
538 #line 539 "video_track.c"
540 #line 109 "video_track.vala"
542 #line 543 "video_track.c"
546 static void model_video_track_class_init (ModelVideoTrackClass * klass) {
547 model_video_track_parent_class = g_type_class_peek_parent (klass);
548 MODEL_TRACK_CLASS (klass)->name = model_video_track_real_name;
549 MODEL_TRACK_CLASS (klass)->media_type = model_video_track_real_media_type;
550 MODEL_TRACK_CLASS (klass)->check = model_video_track_real_check;
554 static void model_video_track_instance_init (ModelVideoTrack * self) {
558 GType model_video_track_get_type (void) {
559 static volatile gsize model_video_track_type_id__volatile = 0;
560 if (g_once_init_enter (&model_video_track_type_id__volatile)) {
561 static const GTypeInfo g_define_type_info = { sizeof (ModelVideoTrackClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_video_track_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelVideoTrack), 0, (GInstanceInitFunc) model_video_track_instance_init, NULL };
562 GType model_video_track_type_id;
563 model_video_track_type_id = g_type_register_static (MODEL_TYPE_TRACK, "ModelVideoTrack", &g_define_type_info, 0);
564 g_once_init_leave (&model_video_track_type_id__volatile, model_video_track_type_id);
566 return model_video_track_type_id__volatile;