static void ges_effect_asset_class_init (GESEffectAssetClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GESAssetClass *asset_class = GES_ASSET_CLASS (klass); g_type_class_add_private (klass, sizeof (GESEffectAssetPrivate)); object_class->finalize = ges_effect_asset_finalize; object_class->constructed = ges_effect_asset_constructed; asset_class->extract = _extract; }
/* GESAsset virtual methods implementation */ static GESExtractable * _extract (GESAsset * asset, GError ** error) { GESExtractable *effect; effect = GES_ASSET_CLASS (ges_effect_asset_parent_class)->extract (asset, error); if (effect == NULL || (error && *error)) { effect = NULL; return NULL; } return effect; }
static void ges_project_class_init (GESProjectClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); g_type_class_add_private (klass, sizeof (GESProjectPrivate)); klass->asset_added = NULL; klass->missing_uri = NULL; klass->loading_error = NULL; klass->asset_removed = NULL; object_class->get_property = (GObjectGetPropertyFunc) _get_property; object_class->set_property = (GObjectSetPropertyFunc) _set_property; /** * GESProject::uri: * * The location of the project to use. */ _properties[PROP_URI] = g_param_spec_string ("uri", "URI", "uri of the project", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, PROP_LAST, _properties); /** * GESProject::asset-added: * @formatter: the #GESProject * @asset: The #GESAsset that has been added to @project */ _signals[ASSET_ADDED_SIGNAL] = g_signal_new ("asset-added", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GESProjectClass, asset_added), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, GES_TYPE_ASSET); /** * GESProject::asset-removed: * @formatter: the #GESProject * @asset: The #GESAsset that has been removed from @project */ _signals[ASSET_REMOVED_SIGNAL] = g_signal_new ("asset-removed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GESProjectClass, asset_removed), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, GES_TYPE_ASSET); /** * GESProject::loaded: * @project: the #GESProject that is done loading a project. * @timeline: The #GESTimeline that complete loading */ _signals[LOADED_SIGNAL] = g_signal_new ("loaded", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GESProjectClass, loaded), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, GES_TYPE_TIMELINE); /** * GESProject::missing-uri: * @project: the #GESProject reporting that a file has moved * @error: The error that happened * @wrong_asset: The asset with the wrong ID, you should us it and its content * only to find out what the new location is. * * |[ * static gchar * source_moved_cb (GESProject *project, GError *error, GESAsset *asset_with_error) * { * return g_strdup ("file:///the/new/uri.ogg"); * } * * static int * main (int argc, gchar ** argv) * { * GESTimeline *timeline; * GESProject *project = ges_project_new ("file:///some/uri.xges"); * * g_signal_connect (project, "missing-uri", source_moved_cb, NULL); * timeline = ges_asset_extract (GES_ASSET (project)); * } * ]| * * Returns: (transfer full) (allow-none): The new URI of @wrong_asset */ _signals[MISSING_URI_SIGNAL] = g_signal_new ("missing-uri", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GESProjectClass, missing_uri), _uri_missing_accumulator, NULL, g_cclosure_marshal_generic, G_TYPE_STRING, 2, G_TYPE_ERROR, GES_TYPE_ASSET); /** * GESProject::error-loading-asset: * @project: the #GESProject on which a problem happend when creted a #GESAsset * @error: The #GError defining the error that accured, might be %NULL * @id: The @id of the asset that failed loading * @extractable_type: The @extractable_type of the asset that * failed loading * * Informs you that a #GESAsset could not be created. In case of * missing GStreamer plugins, the error will be set to #GST_CORE_ERROR * #GST_CORE_ERROR_MISSING_PLUGIN */ _signals[ERROR_LOADING_ASSET] = g_signal_new ("error-loading-asset", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GESProjectClass, loading_error), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 3, G_TYPE_ERROR, G_TYPE_STRING, G_TYPE_GTYPE); object_class->dispose = _dispose; object_class->finalize = _finalize; GES_ASSET_CLASS (klass)->extract = ges_project_extract; }