/**
 * ges_track_audio_raw_new:
 *
 * Creates a new #GESTrack of type #GES_TRACK_TYPE_AUDIO and with generic
 * raw audio caps ("audio/x-raw-int;audio/x-raw-float");
 *
 * Returns: A new #GESTrack.
 */
GESTrack *
ges_track_audio_raw_new (void)
{
  GESTrack *track;
  GstCaps *caps = gst_caps_from_string ("audio/x-raw-int;audio/x-raw-float");

  track = ges_track_new (GES_TRACK_TYPE_AUDIO, caps);

  return track;
}
/**
 * ges_track_video_raw_new:
 *
 * Creates a new #GESTrack of type #GES_TRACK_TYPE_VIDEO and with generic
 * raw video caps ("video/x-raw-yuv;video/x-raw-rgb");
 *
 * Returns: A new #GESTrack.
 */
GESTrack *
ges_track_video_raw_new (void)
{
  GESTrack *track;
  GstCaps *caps = gst_caps_from_string ("video/x-raw-yuv;video/x-raw-rgb");

  track = ges_track_new (GES_TRACK_TYPE_VIDEO, caps);

  return track;
}
void
ges_base_xml_formatter_add_track (GESBaseXmlFormatter * self,
    GESTrackType track_type, GstCaps * caps, const gchar * id,
    GstStructure * properties, const gchar * metadatas, GError ** error)
{
  GESTrack *track;
  GESBaseXmlFormatterPrivate *priv = _GET_PRIV (self);

  if (priv->check_only) {
    if (caps)
      gst_caps_unref (caps);

    return;
  }

  track = ges_track_new (track_type, caps);
  ges_timeline_add_track (GES_FORMATTER (self)->timeline, track);

  if (properties) {
    gchar *restriction;
    GstCaps *caps;

    gst_structure_get (properties, "restriction-caps", G_TYPE_STRING,
        &restriction, NULL);
    gst_structure_remove_fields (properties, "restriction-caps", "caps",
        "message-forward", NULL);
    if (g_strcmp0 (restriction, "NULL")) {
      caps = gst_caps_from_string (restriction);
      ges_track_set_restriction_caps (track, caps);
    }
    gst_structure_foreach (properties,
        (GstStructureForeachFunc) set_property_foreach, track);
  }

  g_hash_table_insert (priv->tracks, g_strdup (id), gst_object_ref (track));
  if (metadatas)
    ges_meta_container_add_metas_from_string (GES_META_CONTAINER (track),
        metadatas);
}