[Freeswitch-svn] [commit] r5202 - in freeswitch/branches/greenlizard/src: . include mod/formats/mod_shout mod/languages/mod_python
Freeswitch SVN
greenlizard at freeswitch.org
Thu May 17 14:34:07 EDT 2007
Author: greenlizard
Date: Thu May 17 14:34:07 2007
New Revision: 5202
Modified:
freeswitch/branches/greenlizard/src/include/switch_cpp.h
freeswitch/branches/greenlizard/src/mod/formats/mod_shout/mod_shout.c
freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch.py
freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.cpp
freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.h
freeswitch/branches/greenlizard/src/mod/languages/mod_python/mod_python_wrap.cpp
freeswitch/branches/greenlizard/src/switch_cpp.cpp
Log:
Sync up changes from trunk version 5186 to 5202. streamfile method is working for mod_python now
Modified: freeswitch/branches/greenlizard/src/include/switch_cpp.h
==============================================================================
--- freeswitch/branches/greenlizard/src/include/switch_cpp.h (original)
+++ freeswitch/branches/greenlizard/src/include/switch_cpp.h Thu May 17 14:34:07 2007
@@ -44,6 +44,7 @@
int playAndGetDigits(int min_digits, int max_digits, int max_tries, int timeout, char *terminators,
char *audio_files, char *bad_input_audio_files, char *dtmf_buf,
char *digits_regex);
+ int streamfile(char *file, void *cb_func, char *funcargs, int starting_sample_count);
void execute(char *app, char *data);
void begin_allow_threads();
void end_allow_threads();
Modified: freeswitch/branches/greenlizard/src/mod/formats/mod_shout/mod_shout.c
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/formats/mod_shout/mod_shout.c (original)
+++ freeswitch/branches/greenlizard/src/mod/formats/mod_shout/mod_shout.c Thu May 17 14:34:07 2007
@@ -271,7 +271,8 @@
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Decoder Error!\n");
}
dlen = 0;
- continue;
+ //continue;
+ goto error;
}
context->mp3err = 0;
@@ -728,7 +729,11 @@
} else if (context->fp) {
*cur_sample = fseek(context->fp, *cur_sample, whence);
}
+
+ ExitMP3(&context->mp);
+ InitMP3(&context->mp, OUTSCALE, context->samplerate);
switch_buffer_zero(context->audio_buffer);
+
} else {
context->err++;
}
Modified: freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch.py
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch.py (original)
+++ freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch.py Thu May 17 14:34:07 2007
@@ -77,6 +77,7 @@
def getDigits(*args): return _freeswitch.CoreSession_getDigits(*args)
def transfer(*args): return _freeswitch.CoreSession_transfer(*args)
def playAndGetDigits(*args): return _freeswitch.CoreSession_playAndGetDigits(*args)
+ def streamfile(*args): return _freeswitch.CoreSession_streamfile(*args)
def execute(*args): return _freeswitch.CoreSession_execute(*args)
def begin_allow_threads(*args): return _freeswitch.CoreSession_begin_allow_threads(*args)
def end_allow_threads(*args): return _freeswitch.CoreSession_end_allow_threads(*args)
Modified: freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.cpp
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.cpp (original)
+++ freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.cpp Thu May 17 14:34:07 2007
@@ -14,25 +14,16 @@
}
}
-int PySession::streamfile(char *file, PyObject *pyfunc, PyObject *funcargs, int starting_sample_count)
+int PySession::streamfile(char *file, PyObject *pyfunc, char *funcargs, int starting_sample_count)
{
- // TODO: callback_args is currently ignored
- // NOTE: funcargs is expected to contain a string
-
switch_status_t status;
switch_input_args_t args = { 0 }, *ap = NULL;
struct input_callback_state cb_state = { 0 };
switch_file_handle_t fh = { 0 };
- char *s;
sanity_check(-1);
- if (PyArg_ParseTuple(funcargs, "s", &s)) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "funcargs: %s.", s);
- cb_state.funcargs = s;
- }
- else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "could not get funcargs");
- }
+ cb_state.funcargs = funcargs;
+ fh.samples = starting_sample_count;
if (!PyCallable_Check(pyfunc)) {
dtmfCallbackFunction = NULL;
@@ -42,15 +33,13 @@
dtmfCallbackFunction = pyfunc;
}
- fh.samples = starting_sample_count;
-
if (dtmfCallbackFunction) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Setting DTMF callback\n");
cb_state.function = dtmfCallbackFunction;
cb_state.extra = &fh;
args.buf = &cb_state;
args.buflen = sizeof(cb_state); // not sure what this is used for, copy mod_spidermonkey
- args.input_callback = PythonDTMFCallback; // defined in mod_python.i, will use stuff in cb_state
+ args.input_callback = PythonDTMFCallback; // defined in mod_python.i, will use ptrs in cb_state
ap = &args;
}
else {
@@ -65,7 +54,6 @@
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
-
}
Modified: freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.h
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.h (original)
+++ freeswitch/branches/greenlizard/src/mod/languages/mod_python/freeswitch_python.h Thu May 17 14:34:07 2007
@@ -41,7 +41,7 @@
PySession(char *uuid) : CoreSession(uuid) {};
PySession(switch_core_session_t *session) : CoreSession(session) {};
~PySession();
- int streamfile(char *file, PyObject *pyfunc, PyObject *funcargs, int starting_sample_count);
+ int streamfile(char *file, PyObject *pyfunc, char *funcargs, int starting_sample_count);
void set_dtmf_callback(PyObject *pyfunc);
void begin_allow_threads();
void end_allow_threads();
Modified: freeswitch/branches/greenlizard/src/mod/languages/mod_python/mod_python_wrap.cpp
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/languages/mod_python/mod_python_wrap.cpp (original)
+++ freeswitch/branches/greenlizard/src/mod/languages/mod_python/mod_python_wrap.cpp Thu May 17 14:34:07 2007
@@ -4039,6 +4039,68 @@
}
+SWIGINTERN PyObject *_wrap_CoreSession_streamfile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ CoreSession *arg1 = (CoreSession *) 0 ;
+ char *arg2 = (char *) 0 ;
+ void *arg3 = (void *) 0 ;
+ char *arg4 = (char *) 0 ;
+ int arg5 ;
+ int result;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ int res2 ;
+ char *buf2 = 0 ;
+ int alloc2 = 0 ;
+ int res3 ;
+ int res4 ;
+ char *buf4 = 0 ;
+ int alloc4 = 0 ;
+ int val5 ;
+ int ecode5 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ PyObject * obj2 = 0 ;
+ PyObject * obj3 = 0 ;
+ PyObject * obj4 = 0 ;
+
+ if (!PyArg_ParseTuple(args,(char *)"OOOOO:CoreSession_streamfile",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_CoreSession, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_streamfile" "', argument " "1"" of type '" "CoreSession *""'");
+ }
+ arg1 = reinterpret_cast< CoreSession * >(argp1);
+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_streamfile" "', argument " "2"" of type '" "char *""'");
+ }
+ arg2 = buf2;
+ res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0);
+ if (!SWIG_IsOK(res3)) {
+ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "CoreSession_streamfile" "', argument " "3"" of type '" "void *""'");
+ }
+ res4 = SWIG_AsCharPtrAndSize(obj3, &buf4, NULL, &alloc4);
+ if (!SWIG_IsOK(res4)) {
+ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "CoreSession_streamfile" "', argument " "4"" of type '" "char *""'");
+ }
+ arg4 = buf4;
+ ecode5 = SWIG_AsVal_int(obj4, &val5);
+ if (!SWIG_IsOK(ecode5)) {
+ SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "CoreSession_streamfile" "', argument " "5"" of type '" "int""'");
+ }
+ arg5 = static_cast< int >(val5);
+ result = (int)(arg1)->streamfile(arg2,arg3,arg4,arg5);
+ resultobj = SWIG_From_int(static_cast< int >(result));
+ if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+ if (alloc4 == SWIG_NEWOBJ) delete[] buf4;
+ return resultobj;
+fail:
+ if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+ if (alloc4 == SWIG_NEWOBJ) delete[] buf4;
+ return NULL;
+}
+
+
SWIGINTERN PyObject *_wrap_CoreSession_execute(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
CoreSession *arg1 = (CoreSession *) 0 ;
@@ -4557,7 +4619,7 @@
PySession *arg1 = (PySession *) 0 ;
char *arg2 = (char *) 0 ;
PyObject *arg3 = (PyObject *) 0 ;
- PyObject *arg4 = (PyObject *) 0 ;
+ char *arg4 = (char *) 0 ;
int arg5 ;
int result;
void *argp1 = 0 ;
@@ -4565,6 +4627,9 @@
int res2 ;
char *buf2 = 0 ;
int alloc2 = 0 ;
+ int res4 ;
+ char *buf4 = 0 ;
+ int alloc4 = 0 ;
int val5 ;
int ecode5 = 0 ;
PyObject * obj0 = 0 ;
@@ -4585,7 +4650,11 @@
}
arg2 = buf2;
arg3 = obj2;
- arg4 = obj3;
+ res4 = SWIG_AsCharPtrAndSize(obj3, &buf4, NULL, &alloc4);
+ if (!SWIG_IsOK(res4)) {
+ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "PySession_streamfile" "', argument " "4"" of type '" "char *""'");
+ }
+ arg4 = buf4;
ecode5 = SWIG_AsVal_int(obj4, &val5);
if (!SWIG_IsOK(ecode5)) {
SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "PySession_streamfile" "', argument " "5"" of type '" "int""'");
@@ -4594,9 +4663,11 @@
result = (int)(arg1)->streamfile(arg2,arg3,arg4,arg5);
resultobj = SWIG_From_int(static_cast< int >(result));
if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+ if (alloc4 == SWIG_NEWOBJ) delete[] buf4;
return resultobj;
fail:
if (alloc2 == SWIG_NEWOBJ) delete[] buf2;
+ if (alloc4 == SWIG_NEWOBJ) delete[] buf4;
return NULL;
}
@@ -4698,6 +4769,7 @@
{ (char *)"CoreSession_getDigits", _wrap_CoreSession_getDigits, METH_VARARGS, NULL},
{ (char *)"CoreSession_transfer", _wrap_CoreSession_transfer, METH_VARARGS, NULL},
{ (char *)"CoreSession_playAndGetDigits", _wrap_CoreSession_playAndGetDigits, METH_VARARGS, NULL},
+ { (char *)"CoreSession_streamfile", _wrap_CoreSession_streamfile, METH_VARARGS, NULL},
{ (char *)"CoreSession_execute", _wrap_CoreSession_execute, METH_VARARGS, NULL},
{ (char *)"CoreSession_begin_allow_threads", _wrap_CoreSession_begin_allow_threads, METH_VARARGS, NULL},
{ (char *)"CoreSession_end_allow_threads", _wrap_CoreSession_end_allow_threads, METH_VARARGS, NULL},
Modified: freeswitch/branches/greenlizard/src/switch_cpp.cpp
==============================================================================
--- freeswitch/branches/greenlizard/src/switch_cpp.cpp (original)
+++ freeswitch/branches/greenlizard/src/switch_cpp.cpp Thu May 17 14:34:07 2007
@@ -171,6 +171,10 @@
return status == SWITCH_STATUS_SUCCESS ? 1 : 0;
}
+int CoreSession::streamfile(char *file, void *cb_func, char *funcargs, int starting_sample_count) {
+ return 0;
+}
+
void CoreSession::begin_allow_threads() {
}
More information about the Freeswitch-svn
mailing list