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 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15615 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
aa43d92311
commit
3e843f59eb
|
@ -1 +1 @@
|
|||
Fri Nov 20 16:02:03 CST 2009
|
||||
Mon Nov 23 10:00:46 CST 2009
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue