	else if (strstr(template, "$FSRC$") != NULL) return GF_TRUE;
	else if (strstr(template, "$SourcePath$") != NULL) return GF_TRUE;
	else if (strstr(template, "$FURL$") != NULL) return GF_TRUE;
	else if (strstr(template, "$URL$") != NULL) return GF_TRUE;
	return GF_FALSE;
}

static void dasher_set_content_components(GF_DashStream *ds)
{
	GF_MPD_ContentComponent *component;
	GF_DashStream *base_ds = ds->muxed_base ? ds->muxed_base : ds;

	GF_SAFEALLOC(component, GF_MPD_ContentComponent);
	if (!component) return;

	component->id = ds->pid_id;
	switch (ds->stream_type) {
	case GF_STREAM_TEXT:
		component->type = gf_strdup("text");
		break;
	case GF_STREAM_VISUAL:
		component->type = gf_strdup("video");
		break;
	case GF_STREAM_AUDIO:
		component->type = gf_strdup("audio");
		break;
	case GF_STREAM_SCENE:
	case GF_STREAM_OD:
	default:
		component->type = gf_strdup("application");
		break;
	else if (strstr(template, "$FSRC$") != NULL) return GF_TRUE;
	else if (strstr(template, "$SourcePath$") != NULL) return GF_TRUE;
	else if (strstr(template, "$FURL$") != NULL) return GF_TRUE;
	else if (strstr(template, "$URL$") != NULL) return GF_TRUE;
	return GF_FALSE;
}

static void dasher_set_content_components(GF_DashStream *ds)
{
	GF_MPD_ContentComponent *component;
	GF_DashStream *base_ds = ds->muxed_base ? ds->muxed_base : ds;

	GF_SAFEALLOC(component, GF_MPD_ContentComponent);
	if (!component) return;

	component->id = ds->pid_id;
	switch (ds->stream_type) {
	case GF_STREAM_TEXT:
		component->type = gf_strdup("text");
		break;
	case GF_STREAM_VISUAL:
		component->type = gf_strdup("video");
		break;
	case GF_STREAM_AUDIO:
		component->type = gf_strdup("audio");
		break;
	case GF_STREAM_SCENE:
	case GF_STREAM_OD:
	default:
		component->type = gf_strdup("application");
		break;