Esempio n. 1
0
GF_ClientService *gf_term_service_new(GF_Terminal *term, struct _od_manager *owner, const char *url, const char *parent_url, GF_Err *ret_code)
{
	GF_DownloadSession *download_session = NULL;
	char *sURL;
	const char *opt;
	GF_ClientService *serv;
	GF_InputService *ifce = gf_term_can_handle_service(term, url, parent_url, 0, &sURL, ret_code, &download_session);
	if (!ifce) return NULL;

	GF_SAFEALLOC(serv, GF_ClientService);
	serv->term = term;
	serv->owner = owner;
	serv->ifce = ifce;
	serv->url = sURL;
	serv->Clocks = gf_list_new();
	serv->dnloads = gf_list_new();
	serv->pending_service_session = download_session;

	opt = gf_cfg_get_key(term->user->config, "Network", "HTTPRebuffer");
	if (!opt) {
		opt = "5000";
		gf_cfg_set_key(term->user->config, "Network", "HTTPRebuffer", "5000");
	}
	serv->download_rebuffer = atoi(opt);
	opt = gf_cfg_get_key(term->user->config, "Network", "HTTPAutoRebuffer");
	if (!opt) {
		opt = "no";
		gf_cfg_set_key(term->user->config, "Network", "HTTPAutoRebuffer", "no");
	}
	serv->auto_rebuffer = !strcmp(opt, "yes") ? 1 : 0;

	gf_list_add(term->net_services, serv);

	return serv;
}
Esempio n. 2
0
GF_EXPORT
Bool gf_term_is_supported_url(GF_Terminal *term, const char *fileName, Bool use_parent_url, Bool no_mime_check)
{
	GF_InputService *ifce;
	GF_Err e;
	char *sURL;
	char *parent_url = NULL;
	if (use_parent_url && term->root_scene) parent_url = term->root_scene->root_od->net_service->url;

	ifce = gf_term_can_handle_service(term, fileName, parent_url, no_mime_check, &sURL, &e, NULL);
	if (!ifce) return 0;
	gf_modules_close_interface((GF_BaseInterface *) ifce);
	gf_free(sURL);
	return 1;
}
Esempio n. 3
0
GF_ClientService *gf_term_service_new(GF_Terminal *term, struct _od_manager *owner, const char *url, const char *parent_url, GF_Err *ret_code)
{
	GF_DownloadSession *download_session = NULL;
	char *sURL;
	char *mime;
	GF_ClientService *serv;
	GF_InputService *ifce = gf_term_can_handle_service(term, url, parent_url, 0, &sURL, ret_code, &download_session, &mime);
	if (!ifce) {
		if (owner->subscene) gf_scene_notify_event(owner->subscene, GF_EVENT_SCENE_ATTACHED, NULL, NULL, *ret_code, GF_FALSE);
		return NULL;
	}
	GF_SAFEALLOC(serv, GF_ClientService);
	if (!serv) {
		GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[Terminal] Failed to allocate network service\n"));
		return NULL;
	}
	serv->term = term;
	serv->owner = owner;
	serv->ifce = ifce;
	serv->url = sURL;
	serv->mime = mime;
	serv->Clocks = gf_list_new();
	serv->dnloads = gf_list_new();
	serv->pending_service_session = download_session;

	gf_term_lock_media_queue(term, 1);
	gf_list_add(term->net_services, serv);
	gf_term_lock_media_queue(term, 0);


	serv->fn_connect_ack = term_on_connect;
	serv->fn_disconnect_ack = term_on_disconnect;
	serv->fn_command = term_on_command;
	serv->fn_data_packet = term_on_data_packet;
	serv->fn_add_media = term_on_media_add;
	return serv;
}