[Freeswitch-branches] [commit] r5202 - in freeswitch/branches/greenlizard/src: . include mod/formats/mod_shout mod/languages/mod_python
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() { }
participants (1)
-
Freeswitch SVN