]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Update to unimrcp 1297, remove API change
authorMichael Jerris <mike@jerris.com>
Mon, 23 Nov 2009 16:02:06 +0000 (16:02 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 23 Nov 2009 16:02:06 +0000 (16:02 +0000)
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

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15615 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/unimrcp/.update
libs/unimrcp/libs/mpf/include/mpf_engine.h
libs/unimrcp/libs/mpf/include/mpf_scheduler.h
libs/unimrcp/libs/mpf/src/mpf_engine.c
libs/unimrcp/libs/mpf/src/mpf_scheduler.c
libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c
libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c
libs/unimrcp/tests/mpftest/src/mpf_suite.c

index 1f21897168855ab7bf459a585c9f8ac421057bfa..a1c014671da0698053e890648261b7a3e9b37f89 100644 (file)
@@ -1 +1 @@
-Fri Nov 20 16:02:03 CST 2009
+Mon Nov 23 10:00:46 CST 2009
index e784d07d6c3a53808740dc46e220fcdd41bd3f41..149de69ce4143e8abcf15f9456c63eb7047b0a41 100644 (file)
@@ -32,10 +32,9 @@ typedef apt_task_msg_t mpf_task_msg_t;
 
 /**
  * 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,6 +141,13 @@ MPF_DECLARE(apt_bool_t) mpf_engine_topology_message_add(
  */
 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
 
index 87122661f965c7f4d1a38c839008e7098cc34dec..6617511fe72ec79f15dec3f2707e9e8766d19556 100644 (file)
@@ -30,7 +30,7 @@ APT_BEGIN_EXTERN_C
 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_DECLARE(apt_bool_t) mpf_scheduler_timer_clock_set(
                                                                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);
 
index ad78904d5baedc07b025f3177af7c35018b8d980..087b24888454888236be939da24dc24f40706e23 100644 (file)
@@ -52,7 +52,7 @@ mpf_codec_t* mpf_codec_l16_create(apr_pool_t *pool);
 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 @@ MPF_DECLARE(mpf_engine_t*) mpf_engine_create(unsigned long rate, apr_pool_t *poo
        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 @@ MPF_DECLARE(apt_bool_t) mpf_engine_codec_manager_register(mpf_engine_t *engine,
        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);
+}
index aefc5132aec4b0e9ed604019438ca582d776eda9..bccc8837e6e7d06eb3768c0da5f04da51b7fbdeb 100644 (file)
@@ -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 @@ struct mpf_scheduler_t {
 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_DECLARE(apt_bool_t) mpf_scheduler_media_clock_set(
                                                                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_DECLARE(apt_bool_t) mpf_scheduler_timer_clock_set(
                                                                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) {
index d159582886ea70eb0f662bd02daa923cb382e1b1..f871e083201468f9cb9d8c7685b717f91c091bb3 100644 (file)
@@ -462,8 +462,9 @@ static apt_bool_t unimrcp_client_media_engines_load(mrcp_client_t *client, const
                                }
                        }
                        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);
                        }
                }
index bf51ef16b0866dcb44596943ff1b4049bdcfbebc..7ddcad1bdeb252e649f32c07cbabe76b646ba93d 100644 (file)
@@ -495,8 +495,9 @@ static apt_bool_t unimrcp_server_media_engines_load(mrcp_server_t *server, const
                                }
                        }
                        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);
                        }
                }
index 446c1ab5773c481ae59d897e297f88067a5abb23..36b468e40d23ceb816c455883a6d9a05899b1a8a 100644 (file)
@@ -95,7 +95,7 @@ static apt_bool_t mpf_test_run(apt_test_suite_t *suite, int argc, const char * c
 
        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;