Revision
15615
Author
mikej
Date
2009-11-23 10:02:06 -0600 (Mon, 23 Nov 2009)

Log Message

Update to unimrcp 1297, remove API change

commit b3466f12a82fcfe9261d6af57fb8ad74d5140bc0
Author: achaloyan <achaloyan@f001bc3a-424a-0410-80a0-a715b8f413a8>
Date:   Sun Nov 22 19:30:30 2009 +0000

    Provided the same functionality to change scheduler rate (if needed) without modifying existing API (ensured backward compatibility)
    
    git-svn-id: https://unimrcp.googlecode.com/svn/trunk@1297 f001bc3a-424a-0410-80a0-a715b8f413a8

Modified Paths

Diff

Modified: freeswitch/trunk/libs/unimrcp/.update (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/.update	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/.update	2009-11-23 16:02:06 UTC (rev 15615)
@@ -1 +1 @@
-Fri Nov 20 16:02:03 CST 2009
+Mon Nov 23 10:00:46 CST 2009

Modified: freeswitch/trunk/libs/unimrcp/libs/mpf/include/mpf_engine.h (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/libs/mpf/include/mpf_engine.h	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/libs/mpf/include/mpf_engine.h	2009-11-23 16:02:06 UTC (rev 15615)
@@ -32,10 +32,9 @@
 
 /**
  * Create MPF engine.
- * @param rate the rate (n times faster than real-time)
  * @param pool the pool to allocate memory from
  */
-MPF_DECLARE(mpf_engine_t*) mpf_engine_create(unsigned long rate, apr_pool_t *pool);
+MPF_DECLARE(mpf_engine_t*) mpf_engine_create(apr_pool_t *pool);
 
 /**
  * Create MPF codec manager.
@@ -142,7 +141,14 @@
  */
 MPF_DECLARE(apt_bool_t) mpf_engine_message_send(mpf_engine_t *engine, mpf_task_msg_t **task_msg);
 
+/**
+ * Set scheduler rate.
+ * @param engine the engine to set rate for
+ * @param rate the rate (n times faster than real-time)
+ */
+MPF_DECLARE(apt_bool_t) mpf_engine_scheduler_rate_set(mpf_engine_t *engine, unsigned long rate);
 
+
 APT_END_EXTERN_C
 
 #endif /*__MPF_ENGINE_H__*/

Modified: freeswitch/trunk/libs/unimrcp/libs/mpf/include/mpf_scheduler.h (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/libs/mpf/include/mpf_scheduler.h	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/libs/mpf/include/mpf_scheduler.h	2009-11-23 16:02:06 UTC (rev 15615)
@@ -30,7 +30,7 @@
 typedef void (*mpf_scheduler_proc_f)(mpf_scheduler_t *scheduler, void *obj);
 
 /** Create scheduler */
-MPF_DECLARE(mpf_scheduler_t*) mpf_scheduler_create(unsigned long rate, apr_pool_t *pool);
+MPF_DECLARE(mpf_scheduler_t*) mpf_scheduler_create(apr_pool_t *pool);
 
 /** Destroy scheduler */
 MPF_DECLARE(void) mpf_scheduler_destroy(mpf_scheduler_t *scheduler);
@@ -49,6 +49,11 @@
 								mpf_scheduler_proc_f proc,
 								void *obj);
 
+/** Set scheduler rate (n times faster than real-time) */
+MPF_DECLARE(apt_bool_t) mpf_scheduler_rate_set(
+								mpf_scheduler_t *scheduler,
+								unsigned long rate);
+
 /** Start scheduler */
 MPF_DECLARE(apt_bool_t) mpf_scheduler_start(mpf_scheduler_t *scheduler);
 

Modified: freeswitch/trunk/libs/unimrcp/libs/mpf/src/mpf_engine.c (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/libs/mpf/src/mpf_engine.c	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/libs/mpf/src/mpf_engine.c	2009-11-23 16:02:06 UTC (rev 15615)
@@ -52,7 +52,7 @@
 mpf_codec_t* mpf_codec_g711u_create(apr_pool_t *pool);
 mpf_codec_t* mpf_codec_g711a_create(apr_pool_t *pool);
 
-MPF_DECLARE(mpf_engine_t*) mpf_engine_create(unsigned long rate, apr_pool_t *pool)
+MPF_DECLARE(mpf_engine_t*) mpf_engine_create(apr_pool_t *pool)
 {
 	apt_task_vtable_t *vtable;
 	apt_task_msg_pool_t *msg_pool;
@@ -87,7 +87,7 @@
 	engine->request_queue = apt_cyclic_queue_create(CYCLIC_QUEUE_DEFAULT_SIZE);
 	apr_thread_mutex_create(&engine->request_queue_guard,APR_THREAD_MUTEX_UNNESTED,engine->pool);
 
-	engine->scheduler = mpf_scheduler_create(rate,engine->pool);
+	engine->scheduler = mpf_scheduler_create(engine->pool);
 	mpf_scheduler_media_clock_set(engine->scheduler,CODEC_FRAME_TIME_BASE,mpf_engine_main,engine);
 
 	engine->timer_manager = mpf_timer_manager_create(engine->scheduler,engine->pool);
@@ -426,3 +426,8 @@
 	engine->codec_manager = codec_manager;
 	return TRUE;
 }
+
+MPF_DECLARE(apt_bool_t) mpf_engine_scheduler_rate_set(mpf_engine_t *engine, unsigned long rate)
+{
+	return mpf_scheduler_rate_set(engine->scheduler,rate);
+}

Modified: freeswitch/trunk/libs/unimrcp/libs/mpf/src/mpf_scheduler.c (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/libs/mpf/src/mpf_scheduler.c	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/libs/mpf/src/mpf_scheduler.c	2009-11-23 16:02:06 UTC (rev 15615)
@@ -38,7 +38,6 @@
 struct mpf_scheduler_t {
 	apr_pool_t          *pool;
 	unsigned long        resolution; /* scheduler resolution */
-	unsigned long        rate; /* faster than real-time simulation */
 
 	unsigned long        media_resolution;
 	mpf_scheduler_proc_f media_proc;
@@ -60,19 +59,12 @@
 static APR_INLINE void mpf_scheduler_init(mpf_scheduler_t *scheduler);
 
 /** Create scheduler */
-MPF_DECLARE(mpf_scheduler_t*) mpf_scheduler_create(unsigned long rate, apr_pool_t *pool)
+MPF_DECLARE(mpf_scheduler_t*) mpf_scheduler_create(apr_pool_t *pool)
 {
 	mpf_scheduler_t *scheduler = apr_palloc(pool,sizeof(mpf_scheduler_t));
 	mpf_scheduler_init(scheduler);
 	scheduler->pool = pool;
 	scheduler->resolution = 0;
-	if(rate == 0 || rate > 10) {
-		/* rate shows how many times scheduler should be faster than real-time,
-		1 is the defualt and probably the only reasonable value, 
-		however, the rates up to 10 times faster should be acceptable */
-		rate = 1;
-	}
-	scheduler->rate = rate;
 
 	scheduler->media_resolution = 0;
 	scheduler->media_obj = NULL;
@@ -98,7 +90,7 @@
 								mpf_scheduler_proc_f proc,
 								void *obj)
 {
-	scheduler->media_resolution = resolution / scheduler->rate;
+	scheduler->media_resolution = resolution;
 	scheduler->media_proc = proc;
 	scheduler->media_obj = obj;
 	return TRUE;
@@ -111,13 +103,30 @@
 								mpf_scheduler_proc_f proc,
 								void *obj)
 {
-	scheduler->timer_resolution = resolution / scheduler->rate;
+	scheduler->timer_resolution = resolution;
 	scheduler->timer_elapsed_time = 0;
 	scheduler->timer_proc = proc;
 	scheduler->timer_obj = obj;
 	return TRUE;
 }
 
+/** Set scheduler rate (n times faster than real-time) */
+MPF_DECLARE(apt_bool_t) mpf_scheduler_rate_set(
+								mpf_scheduler_t *scheduler,
+								unsigned long rate)
+{
+	if(rate == 0 || rate > 10) {
+		/* rate shows how many times scheduler should be faster than real-time,
+		1 is the defualt and probably the only reasonable value, 
+		however, the rates up to 10 times faster should be acceptable */
+		rate = 1;
+	}
+	
+	scheduler->media_resolution /= rate;
+	scheduler->timer_resolution /= rate;
+	return TRUE;
+}
+
 static APR_INLINE void mpf_scheduler_resolution_set(mpf_scheduler_t *scheduler)
 {
 	if(scheduler->media_resolution) {

Modified: freeswitch/trunk/libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c	2009-11-23 16:02:06 UTC (rev 15615)
@@ -462,8 +462,9 @@
 				}
 			}
 			apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Media Engine");
-			media_engine = mpf_engine_create(rate,pool);
+			media_engine = mpf_engine_create(pool);
 			if(media_engine) {
+				mpf_engine_scheduler_rate_set(media_engine,rate);
 				mrcp_client_media_engine_register(client,media_engine,name);
 			}
 		}

Modified: freeswitch/trunk/libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c	2009-11-23 16:02:06 UTC (rev 15615)
@@ -495,8 +495,9 @@
 				}
 			}
 			apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Media Engine");
-			media_engine = mpf_engine_create(rate,pool);
+			media_engine = mpf_engine_create(pool);
 			if(media_engine) {
+				mpf_engine_scheduler_rate_set(media_engine,rate);
 				mrcp_server_media_engine_register(server,media_engine,name);
 			}
 		}

Modified: freeswitch/trunk/libs/unimrcp/tests/mpftest/src/mpf_suite.c (15614 => 15615)


--- freeswitch/trunk/libs/unimrcp/tests/mpftest/src/mpf_suite.c	2009-11-23 15:39:03 UTC (rev 15614)
+++ freeswitch/trunk/libs/unimrcp/tests/mpftest/src/mpf_suite.c	2009-11-23 16:02:06 UTC (rev 15615)
@@ -95,7 +95,7 @@
 
 	suite_engine = apr_palloc(suite->pool,sizeof(mpf_suite_engine_t));
 
-	engine = mpf_engine_create(1,suite->pool);
+	engine = mpf_engine_create(suite->pool);
 	if(!engine) {
 		apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create MPF Engine");
 		return FALSE;