gchar * ges_project_try_updating_id (GESProject * project, GESAsset * asset, GError * error) { gchar *new_id = NULL; g_return_val_if_fail (GES_IS_PROJECT (project), NULL); g_return_val_if_fail (GES_IS_ASSET (asset), NULL); g_return_val_if_fail (error, NULL); GST_DEBUG_OBJECT (project, "Try to proxy %s", ges_asset_get_id (asset)); if (ges_asset_request_id_update (asset, &new_id, error) == FALSE) { GST_DEBUG_OBJECT (project, "Type: %s can not be proxied for id: %s", g_type_name (G_OBJECT_TYPE (asset)), ges_asset_get_id (asset)); return NULL; } if (new_id == NULL) g_signal_emit (project, _signals[MISSING_URI_SIGNAL], 0, error, asset, &new_id); if (new_id) { if (!ges_asset_set_proxy (asset, new_id)) { g_free (new_id); new_id = NULL; } } g_hash_table_remove (project->priv->loading_assets, ges_asset_get_id (asset)); return new_id; }
gchar * ges_project_try_updating_id (GESProject * project, GESAsset * asset, GError * error) { gchar *new_id = NULL; const gchar *id; g_return_val_if_fail (GES_IS_PROJECT (project), NULL); g_return_val_if_fail (GES_IS_ASSET (asset), NULL); g_return_val_if_fail (error, NULL); id = ges_asset_get_id (asset); GST_DEBUG_OBJECT (project, "Try to proxy %s", id); if (ges_asset_request_id_update (asset, &new_id, error) == FALSE) { GST_DEBUG_OBJECT (project, "Type: %s can not be proxied for id: %s " "and error: %s", g_type_name (G_OBJECT_TYPE (asset)), id, error->message); _send_error_loading_asset (project, asset, error); return NULL; } if (new_id == NULL) { GST_DEBUG_OBJECT (project, "Sending 'missing-uri' signal for %s", id); g_signal_emit (project, _signals[MISSING_URI_SIGNAL], 0, error, asset, &new_id); } if (new_id) { GST_DEBUG_OBJECT (project, "new id found: %s", new_id); if (!ges_asset_set_proxy (asset, new_id)) { g_free (new_id); new_id = NULL; } } else { GST_DEBUG_OBJECT (project, "No new id found for %s", id); } g_hash_table_remove (project->priv->loading_assets, id); if (new_id == NULL) _send_error_loading_asset (project, asset, error); return new_id; }
/** * ges_layer_add_asset: * @layer: a #GESLayer * @asset: The asset to add to * @start: The start value to set on the new #GESClip * @inpoint: The inpoint value to set on the new #GESClip * @duration: The duration value to set on the new #GESClip * @track_types: The #GESTrackType to set on the the new #GESClip * * Creates Clip from asset, adds it to layer and * returns a reference to it. * * Returns: (transfer none): Created #GESClip */ GESClip * ges_layer_add_asset (GESLayer * layer, GESAsset * asset, GstClockTime start, GstClockTime inpoint, GstClockTime duration, GESTrackType track_types) { GESClip *clip; g_return_val_if_fail (GES_IS_LAYER (layer), NULL); g_return_val_if_fail (GES_IS_ASSET (asset), NULL); g_return_val_if_fail (g_type_is_a (ges_asset_get_extractable_type (asset), GES_TYPE_CLIP), NULL); GST_DEBUG_OBJECT (layer, "Adding asset %s with: start: %" GST_TIME_FORMAT " inpoint: %" GST_TIME_FORMAT " duration: %" GST_TIME_FORMAT " track types: %d (%s)", ges_asset_get_id (asset), GST_TIME_ARGS (start), GST_TIME_ARGS (inpoint), GST_TIME_ARGS (duration), track_types, ges_track_type_name (track_types)); clip = GES_CLIP (ges_asset_extract (asset, NULL)); _set_start0 (GES_TIMELINE_ELEMENT (clip), start); _set_inpoint0 (GES_TIMELINE_ELEMENT (clip), inpoint); if (track_types != GES_TRACK_TYPE_UNKNOWN) ges_clip_set_supported_formats (clip, track_types); if (GST_CLOCK_TIME_IS_VALID (duration)) { _set_duration0 (GES_TIMELINE_ELEMENT (clip), duration); } if (!ges_layer_add_clip (layer, clip)) { gst_object_unref (clip); return NULL; } return clip; }