Commit Graph

5874 Commits

Author SHA1 Message Date
Steve Underwood a2b5af5669 Added tiff-4.0.2 as the first step in moving from libtiff 3.8.2 to libtiff 4.0.2 2012-09-01 17:59:43 +08:00
Steve Underwood 9a862b6667 More cleanups of the FAX modems 2012-08-29 10:10:13 +08:00
Anthony Minessale 7d38669801 fix wrong len in ESL sendMSG method 2012-08-28 12:04:50 -05:00
Steve Underwood 72c073c6cb Bring fax_modem handling in the fax_tester code into line with the upstream code 2012-08-28 15:32:00 +08:00
Steve Underwood 1b3710d5d0 This update brings the fax modem handling into line with the upstream code 2012-08-28 13:32:43 +08:00
Steve Underwood 11cc977391 More cleanups of fax modem stuff 2012-08-27 23:04:05 +08:00
Jeff Lenk 59e1d56cb5 spandsp windows build fix 2012-08-26 16:04:36 -05:00
Steve Underwood 2733e21cd5 More tweaks to spandsp 2012-08-27 00:41:19 +08:00
Steve Underwood e1be1639de Tweaks 2012-08-26 22:53:24 +08:00
Steve Underwood 0e4fb82ecf Tweaks 2012-08-26 22:18:26 +08:00
Steve Underwood acf7c40717 More tweaks 2012-08-26 22:07:01 +08:00
Steve Underwood 3b9dac029e Tweaks 2012-08-26 20:58:54 +08:00
Steve Underwood 124a0742d4 Tweaks 2012-08-26 20:45:49 +08:00
Steve Underwood fe5ac498f7 More tweaks 2012-08-26 20:39:33 +08:00
Steve Underwood dbec2dcbaf More tweaks 2012-08-26 20:28:48 +08:00
Steve Underwood 3b4aafe945 More tweaks 2012-08-26 20:24:20 +08:00
Steve Underwood e60d204a59 More tweaks 2012-08-26 20:11:39 +08:00
Steve Underwood 7f40c5fb41 More tweaks 2012-08-26 19:37:14 +08:00
Steve Underwood ac9656015a More fax modem tweaks 2012-08-26 19:30:42 +08:00
Steve Underwood 887c373c92 Tweaks 2012-08-26 18:12:44 +08:00
Steve Underwood 8cb975f345 Various fax_modems.c related improvements 2012-08-26 15:43:15 +08:00
Stefan Knoblich 7da8e15e96 FreeTDM: Remove oz{rename,replace}.sh scripts.
Remnants from the olden days of the big OpenZAP migration.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-24 20:49:53 +02:00
Stefan Knoblich 5b499e8a59 ftmod_misdn: Use a per-span I/O thread to handle B-channel data.
Move the B-channel message handling into a per-span I/O thread,
to solve most of the problems caused by the intermixed data + control
socket interface of mISDN, missing write poll() support on
mISDN B-channels and the FreeTDM I/O model. This eliminates most of
the audio problems (except for a few minor glitches).

A unix stream socket pair is used as a bi-directional pipe replacement
(the pipe code is still included in this commit, but will be removed later),
with the RX and TX buffer sizes carefully tuned to avoid excessive buffering
(= latency) and a deadlock situation between the write() call in ftdm_write()
and the code in misdn_span_run() that needs a minimum amount of data in the
TX buffer, before sending out a PH_DATA_REQ to the mISDN socket
(see misdn_span_run() comments for more details).

The minimum size for pipes is PAGE_SIZE (4k), which is ~500 ms worth of
audio. A socket pair RX/TX buffer size of 3k, seems to hold a maximum
amount of around 500 bytes data in practice, giving us a much lower
maximum latency than a unix pipe. (The socket pair might be replaced by a
custom ring buffer / fifo data structure to get even more fine grained
control of the maximum latency.)

The newly introduced span_start / span_stop callbacks in
ftdm_io_interface_t are used to start / stop the I/O thread. The callback
functions will wait up to 10 seconds for the thread to successfully
start up or shut down (using a mutex + condition var).

NOTE: Using any of the locking ftdm_span_() functions in the I/O will cause
      a deadlock between the I/O thread (trying to lock span->mutex) and the
      thread calling ftdm_start()/_stop() (holding the span->mutex).
      (The I/O thread currently uses direct span member access to avoid this.)

The I/O thread uses the epoll(7) family of functions for event handling.
An epoll context is created on startup and all B-channel sockets are
registered (READ, PRI and ERR). Before entering the event loop,
the I/O thread will send a signal on the condition variable, to
indicate it has completed the startup procedure.

Incoming b-channel and command pipe events are handled by the event loop.
Payload of incoming PH_DATA_IND frames (= audio data) is sent to the
rx_audio_pipe_in end of the b-channel's socket pair and, if enough data is
available, a PH_DATA_REQ of the same size is sent to the b-channel mISDN socket
to transmit audio.

A MISDN_CMD_STOP command on the event pipe will wake up the I/O thread and
cause it to shut down. All b-channels will be unregistered from the epoll context
and the epoll fd closed. The I/O thread terminates itself after signalling the
successfull shutdown on the condition variable.

TODOs:
    - Move D-Channel into I/O thread too

    - Custom FIFO/ring buffer for data (even lower latency)

    - Improve epoll() code (per-channel struct w/ callback, for epfd.data.ptr)

    - Use mISDN DSP for audio (e.g. tone generator, dtmf detector, echo cancel)

    - Use a per-port / span control socket to execute channel commands
      synchronously, or add misdn_commands (queue?) that can be used that way

    - Name I/O threads 'mISDN-%SPAN_NAME%', e.g. 'mISDN-M_BRI1'
      (= add ftdm_thread_set_namef(thread, fmt, ...) / ftdm_thread_set_name(thread, name))

TL;DR: "tweak", solves "booboo" with audio

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-24 18:03:31 +02:00
Jeff Lenk 72d67cdbd8 FS-4219 --resolve 2012-08-24 08:24:18 -05:00
Stefan Knoblich a4216351c0 ftmod_libpri: Implement channel hunting in NT-mode.
Hunt for a free channel for incoming calls that do not
preselect a channel (pevent->ring.channel == -1).

Verify the preselected channel for calls that do specify a channel
and in case the channel is already taken, hunt for a free one,
or abort with an error message (if the preselection was exclusive).

TE-mode channel selection is the same as before
(there's still room for improvement, though, but i'll save that for later).

The MSN/DDI filter code is moved into the TE-mode section (only useful there).

The duplicate ring detection had to be reworked. We now store the
call reference (CRV) in caller_data->call_reference of the selected channel
and do a CRV -> channel look up with find_channel_by_cref()
at the top of on_ring().

NOTE: This is only lightly tested (NT/TE mode), i'd either have to
      write a lot of custom code to check it toroughly or the need for
      a scriptable ISDN stack...

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-24 00:36:34 +02:00
Stefan Knoblich 716f4c0675 ftmod_libpri: Check for '#' key to leave overlap receiving state.
Same as ftmod_isdn, '#' key ends overlap receive and moves the incoming
call to RING state.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-23 22:26:49 +02:00
Steve Underwood fa5569caac A line got deleted somewhere along the line. I didn't do it, honest.
Its them damn gremlins.
2012-08-21 20:09:59 +08:00
Jeff Lenk bdb73beb8e FS-4526 --resolve 2012-08-17 19:46:54 -05:00
Jeff Lenk 0807b39c8d FS-4543 --resolve thanks Peter 2012-08-17 19:31:47 -05:00
Steve Underwood e399c69765 Fixed a typo in the fixed point image translate code 2012-08-17 18:36:29 +08:00
Anthony Minessale f454b79b9b fix color coding to be OS appropriate 2012-08-16 13:04:33 -05:00
Robert Jongbloed cd21b67c1d Updated mod_opal to latest stable OPAL version.
Enhancements to trace logging, include threads and context ID.

Changed default opal_conf.xml to allow more than just G.711 uLaw and not to clutter log file with debug logs.

Added to opal_conf.xml item for "disable-transcoding".

Updated build/buildopal.sh to use correct ./configure items for PTLib, allow for something other than standard install directory for PTLib/OPAL and be able to easily bind to a specific release of PTLib/OPAL.
2012-08-16 14:23:48 +10:00
Anthony Minessale bb69310259 FS-4079 FS-4540 please update to this version 2012-08-15 22:51:41 -05:00
Stefan Knoblich 548222f9f3 FreeTDM: Add span start/stop callbacks to ftdm_io_interface.
Callbacks are invoked from ftdm_span_start/_stop().
I/O is started before SIG and shut down in reverse order.

This is needed for ftmod_misdn, to move the mISDN message handling
into a separate thread (solving the mISDN socket vs. FreeTDM API issues).

With these callbacks, the I/O thread can be started after the span I/O configuration
has been (successfully) completed and stopped before destroying the span.

NOTE: Both SIG and I/O callbacks are called with the span mutex locked,
so threads created or destroyed synchronously in either of the custom
start/stop functions, can not use ftdm_span_*() functions that lock
the span mutex (e.g. ftdm_span_get_channel_count()).

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-15 13:34:22 +02:00
Stefan Knoblich 431f7dd6bf spandsp: Fix libjpeg checks for --enable-builtin-tiff builds.
The --enable-builtin-tiff option appends libs/tiff-3.8.2/libtiff/libtiff.la
to LIBS, causing the AC_CHECK_LIB([jpeg]...) check to fail, because
libtiff.la does not exist at configure time.

Temporarily store tiff and jpeg libs in TIFF_-/JPEG_LIBS variables and
append them to LIBS after all library checks have run.

Example error output:
    configure:20049: checking for jpeg_start_compress in -ljpeg
    configure:20074: cc -o conftest -O2 -pipe -fno-strict-aliasing    -L/usr/local/lib conftest.c -ljpeg  -lm  /usr/home/ports/net/freeswitch-core-devel/work/freeswitch-1.2.1/libs/tiff-3.8.2/libtiff/libtiff.la >&5
    cc: /usr/home/ports/net/freeswitch-core-devel/work/freeswitch-1.2.1/libs/tiff-3.8.2/libtiff/libtiff.la: No such file or directory

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-15 12:52:28 +02:00
Steve Underwood 0b763a6286 Merge branch 'master' of git.freeswitch.org:freeswitch 2012-08-14 22:33:17 +08:00
Steve Underwood e30406cea6 Improvements to image translation 2012-08-14 22:32:30 +08:00
Jeff Lenk 3d9d42b798 FS-4517 --resolve 2012-08-13 21:31:46 -05:00
Jeff Lenk a293512f60 FS-4219 --resolve 2012-08-13 21:30:10 -05:00
Anthony Minessale fa5113557b stub for mod_html5 2012-08-13 15:20:41 -05:00
Anthony Minessale 61ab0b8878 libwebsocket inline configure 2012-08-13 14:29:04 -05:00
Anthony Minessale a05e414c41 fix libwebsocket build 2012-08-13 14:15:06 -05:00
Steve Underwood 5f12c3dc1c Improvements to T.4 end of image handling, and the related tests.
A lot of tiny tidy up edits
2012-08-12 22:11:06 +08:00
Steve Underwood e69a5a3037 Various little tweaks
A bug in end of image handling fixed, which could mean some T.85 images would
screw up.
2012-08-11 18:32:00 +08:00
Stefan Knoblich 2ad2b6d31b ftmod_isdn: Avoid stack smashing buffer overflow in isdn_tones_run().
The len variable can, in certain situations (large burst of incoming non-SLIN audio),
exceed the size of the on-stack frame buffer, which causes ftdm_buffer_read_loop() to
overwrite the dt_buffer pointer.

Use ftdm_min() to make sure len (after conversion to SLIN units) isn't larger
than the frame buffer size.

Also adds are couple more code comments.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-10 17:16:05 +02:00
Stefan Knoblich 036063d2a9 mod_freetdm: Fix typo.
Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
2012-08-10 17:16:05 +02:00
Jeff Lenk 659c06d356 FS-4219 -- resolve windows version string. thanks Peter 2012-08-10 07:47:10 -05:00
Jeff Lenk 6e8736bb06 FS-4504 vs2008 pro still need express 2012-08-09 13:42:21 -05:00
Steve Underwood d3c89bae34 Fixed a misplaced #endif that only causes trouble when you hit the right
combination
2012-08-09 22:19:49 +08:00
Steve Underwood d1b45ae65b A couple of typos in spandsp
Improvements to image flattening in spandsp's image translate code
2012-08-09 21:58:22 +08:00