[Freeswitch-svn] [commit] r4501 - in freeswitch/trunk/src: . include

Freeswitch SVN brian at freeswitch.org
Fri Mar 9 21:36:56 EST 2007


Author: brian
Date: Fri Mar  9 21:36:55 2007
New Revision: 4501

Modified:
   freeswitch/trunk/src/include/switch_types.h
   freeswitch/trunk/src/include/switch_utils.h
   freeswitch/trunk/src/switch_core.c
   freeswitch/trunk/src/switch_ivr.c

Log:
add url syntax for playback

Modified: freeswitch/trunk/src/include/switch_types.h
==============================================================================
--- freeswitch/trunk/src/include/switch_types.h	(original)
+++ freeswitch/trunk/src/include/switch_types.h	Fri Mar  9 21:36:55 2007
@@ -105,6 +105,8 @@
 #define SWITCH_PATH_SEPARATOR "/"
 #endif
 
+#define SWITCH_URL_SEPARATOR "://"
+
 #ifndef SWITCH_PREFIX_DIR
 #define SWITCH_PREFIX_DIR "."
 #endif

Modified: freeswitch/trunk/src/include/switch_utils.h
==============================================================================
--- freeswitch/trunk/src/include/switch_utils.h	(original)
+++ freeswitch/trunk/src/include/switch_utils.h	Fri Mar  9 21:36:55 2007
@@ -54,9 +54,9 @@
                                                  codec->implementation->microseconds_per_frame / 1000)
 
 #ifdef WIN32
-#define switch_is_file_path(file) (*(file +1) == ':' || *file == '/')
+#define switch_is_file_path(file) (*(file +1) == ':' || *file == '/' || strstr(file, SWITCH_URL_SEPARATOR))
 #else
-#define switch_is_file_path(file) (*file == '/')
+#define switch_is_file_path(file) ((*file == '/') || strstr(file, SWITCH_URL_SEPARATOR))
 #endif
 
 /*!

Modified: freeswitch/trunk/src/switch_core.c
==============================================================================
--- freeswitch/trunk/src/switch_core.c	(original)
+++ freeswitch/trunk/src/switch_core.c	Fri Mar  9 21:36:55 2007
@@ -1019,12 +1019,20 @@
 {
 	char *ext;
 	switch_status_t status;
+	char stream_name[128] = "";
+	char *rhs = NULL;
 
-	if ((ext = strrchr(file_path, '.')) == 0) {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Format\n");
-		return SWITCH_STATUS_FALSE;
+	if ((rhs = strstr(file_path, SWITCH_URL_SEPARATOR))) {
+		switch_copy_string(stream_name, file_path, (rhs+1) - file_path);
+		ext = stream_name;
+		file_path = rhs + 3;
+	} else {
+		if ((ext = strrchr(file_path, '.')) == 0) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Format\n");
+			return SWITCH_STATUS_FALSE;
+		}
+		ext++;
 	}
-	ext++;
 
 	if ((fh->file_interface = switch_loadable_module_get_file_interface(ext)) == 0) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "invalid file format [%s]!\n", ext);

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Fri Mar  9 21:36:55 2007
@@ -1112,15 +1112,19 @@
     prefix = switch_channel_get_variable(channel, "sound_prefix");
     timer_name = switch_channel_get_variable(channel, "timer_name");
 	
-	if (file) {
-        if (prefix && *file != '/' && *file != '\\' && *(file+1) != ':') {
-            char *new_file;
-            uint32_t len;
-            len = (uint32_t)strlen(file) + (uint32_t)strlen(prefix) + 10;
-            new_file = switch_core_session_alloc(session, len);
-            snprintf(new_file, len, "%s/%s", prefix, file);
-            file = new_file;
-        }
+	if (!file) {
+		return SWITCH_STATUS_FALSE;
+	}
+
+	if (!strstr(file, SWITCH_URL_SEPARATOR)) {
+		if (prefix && *file != '/' && *file != '\\' && *(file+1) != ':') {
+			char *new_file;
+			uint32_t len;
+			len = (uint32_t)strlen(file) + (uint32_t)strlen(prefix) + 10;
+			new_file = switch_core_session_alloc(session, len);
+			snprintf(new_file, len, "%s/%s", prefix, file);
+			file = new_file;
+		}
 
 		if ((ext = strrchr(file, '.'))) {
 			ext++;
@@ -1135,6 +1139,7 @@
 			asis = 1;
 		}
 	}
+	
 
 	if (!fh) {
 		fh = &lfh;
@@ -1146,7 +1151,7 @@
 		sample_start = fh->samples;
 		fh->samples = 0;
 	}
-
+	
 	if (switch_core_file_open(fh,
 							  file,
 							  SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT,



More information about the Freeswitch-svn mailing list