From 1b5daa6b5976fea907f8dd426aafd000cf77edd3 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Sat, 9 Jun 2007 23:07:00 +0000 Subject: [PATCH] add adjustable buffering to mod_shout (see example in config file) git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5303 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/languages/mod_python/freeswitch_python.cpp | 8 ++++++++ src/mod/languages/mod_spidermonkey/mod_spidermonkey.c | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/src/mod/languages/mod_python/freeswitch_python.cpp b/src/mod/languages/mod_python/freeswitch_python.cpp index 4fc9f004f7..324842bd5a 100644 --- a/src/mod/languages/mod_python/freeswitch_python.cpp +++ b/src/mod/languages/mod_python/freeswitch_python.cpp @@ -9,6 +9,7 @@ int PySession::streamfile(char *file, PyObject *pyfunc, char *funcargs, int star switch_input_args_t args = { 0 }, *ap = NULL; struct input_callback_state cb_state = { 0 }; switch_file_handle_t fh = { 0 }; + char *prebuf; sanity_check(-1); cb_state.funcargs = funcargs; @@ -31,6 +32,13 @@ int PySession::streamfile(char *file, PyObject *pyfunc, char *funcargs, int star ap = &args; } + if ((prebuf = switch_channel_get_variable(this->channel, "stream_prebuffer"))) { + int maybe = atoi(prebuf); + if (maybe > 0) { + fh.prebuf = maybe; + } + } + this->begin_allow_threads(); cb_state.threadState = threadState; // pass threadState so the dtmfhandler can pick it up diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index e247db0d55..3c86948900 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -1357,6 +1357,7 @@ static JSBool session_streamfile(JSContext * cx, JSObject * obj, uintN argc, jsv switch_file_handle_t fh = { 0 }; JSFunction *function; switch_input_args_t args = { 0 }; + char *prebuf; if (!jss || !jss->session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "You must call the session.originate method before calling this method!\n"); @@ -1404,6 +1405,14 @@ static JSBool session_streamfile(JSContext * cx, JSObject * obj, uintN argc, jsv JS_ValueToInt32(cx, argv[3], &samps); fh.samples = samps; } + + if ((prebuf = switch_channel_get_variable(channel, "stream_prebuffer"))) { + int maybe = atoi(prebuf); + if (maybe > 0) { + fh.prebuf = maybe; + } + } + cb_state.extra = &fh; cb_state.ret = BOOLEAN_TO_JSVAL(JS_FALSE);