From 08317fc5c3fbd28dc1a3b6db940fa1df4c014316 Mon Sep 17 00:00:00 2001 From: Dragos Oancea Date: Thu, 9 Jan 2020 20:17:42 +0000 Subject: [PATCH] [mod_sndfile] fix playing "raw" and other formats ("r8", "r16", "r24", "r32"), add unit-test [mod_sndfile] add stereo to mono support for file formats that need it (eg: gsm, vox), add unit test for stereo [mod_sndfile] mono to stereo and stereo to mono unit tests. [unit-tests] mod_sndfile: don't wait for recording file to be flushed to disk by the core, use switch_ivr_stop_record_session() [mod_sndfile] fix format "wve" (Psion Series 3) [mod_sndfile] fix format "htk" (Hidden Markov Model Tool Kit) [mod_sndfile] fix file format "iff" (AIFF) [mod_sndfile] fix file format "xi" (FastTracker 2) [mod_sndfile] fix file format "sds" (Midi Sample Dump Standard) [uni-tests] add more audio file extensions to sndfile unit tests. [mod_sndfile] add config file support (with one param currently: "allowed-extensions") [mod_sndfile] add sample file sndfile.conf.xml to 'testing' and 'vanilla' cfg trees. [mod_sndfile] free() cfg xml [unit-tests] mod_sndfile: unload module test. [unit-tests] mod_sndfile: add conf file unit-test (param that allows only certain file extensions) [unit-tests] adjusts Makefile.am for new CI (tests) [unit-tests] adjust path to sound file. [unit-tests] [mod_sndfile] remove Makefile.am from test/ [unit-tests] [mod_sndfile] fix build (Andrey) --- .../testing/autoload_configs/sndfile.conf.xml | 9 + .../vanilla/autoload_configs/sndfile.conf.xml | 9 + src/mod/formats/mod_sndfile/Makefile.am | 22 +- src/mod/formats/mod_sndfile/mod_sndfile.c | 165 ++++++- .../mod_sndfile/test/sounds/hello_stereo.wav | Bin 0 -> 225324 bytes .../formats/mod_sndfile/test/sounds/hi.wav | Bin 0 -> 68844 bytes .../mod_sndfile/test/test_conf/freeswitch.xml | 27 ++ .../test/test_conf/freeswitch.xml.fsxml | 27 ++ .../test_formats_and_muxing/freeswitch.xml | 21 + .../formats/mod_sndfile/test/test_sndfile.c | 451 ++++++++++++++++++ .../mod_sndfile/test/test_sndfile_conf.c | 154 ++++++ 11 files changed, 872 insertions(+), 13 deletions(-) create mode 100644 conf/testing/autoload_configs/sndfile.conf.xml create mode 100644 conf/vanilla/autoload_configs/sndfile.conf.xml create mode 100644 src/mod/formats/mod_sndfile/test/sounds/hello_stereo.wav create mode 100644 src/mod/formats/mod_sndfile/test/sounds/hi.wav create mode 100644 src/mod/formats/mod_sndfile/test/test_conf/freeswitch.xml create mode 100644 src/mod/formats/mod_sndfile/test/test_conf/freeswitch.xml.fsxml create mode 100644 src/mod/formats/mod_sndfile/test/test_formats_and_muxing/freeswitch.xml create mode 100644 src/mod/formats/mod_sndfile/test/test_sndfile.c create mode 100644 src/mod/formats/mod_sndfile/test/test_sndfile_conf.c diff --git a/conf/testing/autoload_configs/sndfile.conf.xml b/conf/testing/autoload_configs/sndfile.conf.xml new file mode 100644 index 0000000000..d9e0cff75d --- /dev/null +++ b/conf/testing/autoload_configs/sndfile.conf.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/conf/vanilla/autoload_configs/sndfile.conf.xml b/conf/vanilla/autoload_configs/sndfile.conf.xml new file mode 100644 index 0000000000..d9e0cff75d --- /dev/null +++ b/conf/vanilla/autoload_configs/sndfile.conf.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/src/mod/formats/mod_sndfile/Makefile.am b/src/mod/formats/mod_sndfile/Makefile.am index e94b9cb100..27f77440e3 100644 --- a/src/mod/formats/mod_sndfile/Makefile.am +++ b/src/mod/formats/mod_sndfile/Makefile.am @@ -3,12 +3,30 @@ MODNAME=mod_sndfile if HAVE_SNDFILE +noinst_LTLIBRARIES = libsndfilemod.la +libsndfilemod_la_SOURCES = mod_sndfile.c +libsndfilemod_la_CFLAGS = $(AM_CFLAGS) $(SNDFILE_CFLAGS) + mod_LTLIBRARIES = mod_sndfile.la -mod_sndfile_la_SOURCES = mod_sndfile.c +mod_sndfile_la_SOURCES = mod_sndfile_la_CFLAGS = $(AM_CFLAGS) $(SNDFILE_CFLAGS) -mod_sndfile_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SNDFILE_LIBS) +mod_sndfile_la_LIBADD = libsndfilemod.la $(switch_builddir)/libfreeswitch.la $(SNDFILE_LIBS) mod_sndfile_la_LDFLAGS = -avoid-version -module -no-undefined -shared +noinst_PROGRAMS = test/test_sndfile test/test_sndfile_conf + +test_test_sndfile_SOURCES = test/test_sndfile.c +test_test_sndfile_CFLAGS = $(AM_CFLAGS) -I./ -I../ -DSWITCH_TEST_BASE_DIR_FOR_CONF=\"${abs_builddir}/test\" -DSWITCH_TEST_BASE_DIR_OVERRIDE=\"${abs_builddir}/test\" +test_test_sndfile_LDFLAGS = $(AM_LDFLAGS) -avoid-version -no-undefined $(freeswitch_LDFLAGS) $(switch_builddir)/libfreeswitch.la $(CORE_LIBS) $(APR_LIBS) +test_test_sndfile_LDADD = libsndfilemod.la + +test_test_sndfile_conf_SOURCES = test/test_sndfile_conf.c +test_test_sndfile_conf_CFLAGS = $(AM_CFLAGS) -I./ -I../ -DSWITCH_TEST_BASE_DIR_FOR_CONF=\"${abs_builddir}/test\" -DSWITCH_TEST_BASE_DIR_OVERRIDE=\"${abs_builddir}/test\" +test_test_sndfile_conf_LDFLAGS = $(AM_LDFLAGS) -avoid-version -no-undefined $(freeswitch_LDFLAGS) $(switch_builddir)/libfreeswitch.la $(CORE_LIBS) $(APR_LIBS) +test_test_sndfile_conf_LDADD = libsndfilemod.la + +TESTS = $(noinst_PROGRAMS) + else install: error all: error diff --git a/src/mod/formats/mod_sndfile/mod_sndfile.c b/src/mod/formats/mod_sndfile/mod_sndfile.c index a03e28af5c..7e826b7c46 100644 --- a/src/mod/formats/mod_sndfile/mod_sndfile.c +++ b/src/mod/formats/mod_sndfile/mod_sndfile.c @@ -39,6 +39,9 @@ SWITCH_MODULE_DEFINITION(mod_sndfile, mod_sndfile_load, mod_sndfile_shutdown, NU static struct { switch_hash_t *format_hash; + int debug; + char *allowed_extensions[100]; + int allowed_extensions_count; } globals; struct format_map { @@ -56,6 +59,16 @@ typedef struct sndfile_context sndfile_context; static switch_status_t sndfile_perform_open(sndfile_context *context, const char *path, int mode, switch_file_handle_t *handle); +static void reverse_channel_count(switch_file_handle_t *handle) { + /* for recording stereo conferences and stereo calls in audio file formats that support only 1 channel. + * "{force_channels=1}" does similar, but here switch_core_open_file() was already called and we + * have the handle and we chane the count before _read_ or _write_ are called (where muxing is done). */ + if (handle->channels > 1) { + handle->real_channels = handle->channels; + handle->channels = handle->mm.channels = 1; + } +} + static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const char *path) { sndfile_context *context; @@ -119,41 +132,107 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha if (!strcmp(ext, "raw")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_PCM_16; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 8000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "r8")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_PCM_16; - context->sfinfo.samplerate = 8000; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 8000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "r16")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_PCM_16; - context->sfinfo.samplerate = 16000; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 16000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "r24")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_PCM_24; - context->sfinfo.samplerate = 24000; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 24000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "r32")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_PCM_32; - context->sfinfo.samplerate = 32000; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 32000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "gsm")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_GSM610; context->sfinfo.channels = 1; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } context->sfinfo.samplerate = 8000; } else if (!strcmp(ext, "ul") || !strcmp(ext, "ulaw")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_ULAW; - context->sfinfo.channels = 1; - context->sfinfo.samplerate = 8000; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 8000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "al") || !strcmp(ext, "alaw")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_ALAW; - context->sfinfo.channels = 1; - context->sfinfo.samplerate = 8000; + if (mode & SFM_READ) { + context->sfinfo.samplerate = 8000; + context->sfinfo.channels = 1; + } } else if (!strcmp(ext, "vox")) { context->sfinfo.format = SF_FORMAT_RAW | SF_FORMAT_VOX_ADPCM; context->sfinfo.channels = 1; context->sfinfo.samplerate = 8000; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } } else if (!strcmp(ext, "adpcm")) { context->sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_IMA_ADPCM; context->sfinfo.channels = 1; context->sfinfo.samplerate = 8000; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } } else if (!strcmp(ext, "oga") || !strcmp(ext, "ogg")) { context->sfinfo.format = SF_FORMAT_OGG | SF_FORMAT_VORBIS; - context->sfinfo.samplerate = handle->samplerate; + if (mode & SFM_READ) { + context->sfinfo.samplerate = handle->samplerate; + } + } else if (!strcmp(ext, "wve")) { + context->sfinfo.format = SF_FORMAT_WVE | SF_FORMAT_ALAW; + context->sfinfo.channels = 1; + context->sfinfo.samplerate = 8000; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } + } else if (!strcmp(ext, "htk")) { + context->sfinfo.format = SF_FORMAT_HTK | SF_FORMAT_PCM_16; + context->sfinfo.channels = 1; + context->sfinfo.samplerate = 8000; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } + } else if (!strcmp(ext, "iff")) { + context->sfinfo.format = SF_FORMAT_AIFF | SF_FORMAT_PCM_16; + context->sfinfo.channels = 1; + context->sfinfo.samplerate = 8000; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } + } else if (!strcmp(ext, "xi")) { + context->sfinfo.format = SF_FORMAT_XI | SF_FORMAT_DPCM_16; + context->sfinfo.channels = 1; + context->sfinfo.samplerate = 44100; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } + } else if (!strcmp(ext, "sds")) { + context->sfinfo.format = SF_FORMAT_SDS | SF_FORMAT_PCM_16; + context->sfinfo.channels = 1; + context->sfinfo.samplerate = 8000; + if (mode & SFM_WRITE) { + reverse_channel_count(handle); + } } if ((mode & SFM_WRITE) && sf_format_check(&context->sfinfo) == 0) { @@ -204,7 +283,10 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha goto end; } } - //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Opening File [%s] rate %dhz\n", path, context->sfinfo.samplerate); + if (globals.debug) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, + "Opening File [%s] rate [%dhz] channels: [%d]\n", path, context->sfinfo.samplerate, (uint8_t) context->sfinfo.channels); + } handle->samples = (unsigned int) context->sfinfo.frames; handle->samplerate = context->sfinfo.samplerate; handle->channels = (uint8_t) context->sfinfo.channels; @@ -365,6 +447,20 @@ static switch_status_t sndfile_file_get_string(switch_file_handle_t *handle, swi return SWITCH_STATUS_FALSE; } +static switch_bool_t exten_is_allowed(const char *exten) { + int i; + if (!globals.allowed_extensions[0]) { + // defaults to allowing all extensions if param "allowed-extensions" not set in cfg + return SWITCH_TRUE; + } + for (i = 0 ; i < globals.allowed_extensions_count; i++) { + if (exten && globals.allowed_extensions[i] && !strcasecmp(globals.allowed_extensions[i], exten)) { + return SWITCH_TRUE; + } + } + return SWITCH_FALSE; +} + /* Registration */ static char **supported_formats; @@ -407,6 +503,9 @@ static switch_status_t setup_formats(switch_memory_pool_t *pool) skip = 0; info.format = m; sf_command(NULL, SFC_GET_FORMAT_MAJOR, &info, sizeof(info)); + if (!exten_is_allowed(info.extension)) { + continue; + } switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_INFO, "%s (extension \"%s\")\n", info.name, info.extension); for (x = 0; x < len; x++) { if (supported_formats[x] == info.extension) { @@ -470,7 +569,9 @@ static switch_status_t setup_formats(switch_memory_pool_t *pool) } } for (m = 0; m < exlen; m++) { - supported_formats[len++] = extras[m]; + if (exten_is_allowed(extras[m])) { + supported_formats[len++] = extras[m]; + } } switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, SWITCH_LOG_NOTICE, "================================================================================\n"); @@ -478,12 +579,49 @@ static switch_status_t setup_formats(switch_memory_pool_t *pool) return SWITCH_STATUS_SUCCESS; } +#define SNDFILE_DEBUG_SYNTAX "" +SWITCH_STANDARD_API(mod_sndfile_debug) +{ + if (zstr(cmd)) { + stream->write_function(stream, "-USAGE: %s\n", SNDFILE_DEBUG_SYNTAX); + } else { + if (!strcasecmp(cmd, "on")) { + globals.debug = 1; + stream->write_function(stream, "Sndfile Debug: on\n"); + } else if (!strcasecmp(cmd, "off")) { + globals.debug = 0; + stream->write_function(stream, "Sndfile Debug: off\n"); + } else { + stream->write_function(stream, "-USAGE: %s\n", SNDFILE_DEBUG_SYNTAX); + } + } + return SWITCH_STATUS_SUCCESS; +} + SWITCH_MODULE_LOAD_FUNCTION(mod_sndfile_load) { switch_file_interface_t *file_interface; + switch_api_interface_t *commands_api_interface; + char *cf = "sndfile.conf"; + switch_xml_t cfg, xml, settings, param; + + memset(&globals, 0, sizeof(globals)); switch_core_hash_init(&globals.format_hash); + if ((xml = switch_xml_open_cfg(cf, &cfg, NULL))) { + if ((settings = switch_xml_child(cfg, "settings"))) { + for (param = switch_xml_child(settings, "param"); param; param = param->next) { + char *var = (char *) switch_xml_attr_soft(param, "name"); + char *val = (char *) switch_xml_attr_soft(param, "value"); + if (!strcasecmp(var, "allowed-extensions") && val) { + globals.allowed_extensions_count = switch_separate_string(val, ',', globals.allowed_extensions, (sizeof(globals.allowed_extensions) / sizeof(globals.allowed_extensions[0]))); + } + } + } + switch_xml_free(xml); + } + if (setup_formats(pool) != SWITCH_STATUS_SUCCESS) { return SWITCH_STATUS_FALSE; } @@ -502,6 +640,11 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sndfile_load) file_interface->file_set_string = sndfile_file_set_string; file_interface->file_get_string = sndfile_file_get_string; + SWITCH_ADD_API(commands_api_interface, "sndfile_debug", "Set sndfile debug", mod_sndfile_debug, SNDFILE_DEBUG_SYNTAX); + + switch_console_set_complete("add sndfile_debug on"); + switch_console_set_complete("add sndfile_debug off"); + /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_SUCCESS; } diff --git a/src/mod/formats/mod_sndfile/test/sounds/hello_stereo.wav b/src/mod/formats/mod_sndfile/test/sounds/hello_stereo.wav new file mode 100644 index 0000000000000000000000000000000000000000..83e838894826ffb2207349986b117c18320cd780 GIT binary patch literal 225324 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 Sx}m)B&z9+|)`!N&FaI9~-x0$A literal 0 HcmV?d00001 diff --git a/src/mod/formats/mod_sndfile/test/sounds/hi.wav b/src/mod/formats/mod_sndfile/test/sounds/hi.wav new file mode 100644 index 0000000000000000000000000000000000000000..fec0d6b0734918b9085ec5369dc20c9dcbbb6f95 GIT binary patch literal 68844 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 + +
+ + + + + + + + + + + + +
+ +
+ + + + + + + +
+ diff --git a/src/mod/formats/mod_sndfile/test/test_conf/freeswitch.xml.fsxml b/src/mod/formats/mod_sndfile/test/test_conf/freeswitch.xml.fsxml new file mode 100644 index 0000000000..c29aed8991 --- /dev/null +++ b/src/mod/formats/mod_sndfile/test/test_conf/freeswitch.xml.fsxml @@ -0,0 +1,27 @@ + + +
+ + + + + + + + + + + + +
+ +
+ + + + + + + +
+
diff --git a/src/mod/formats/mod_sndfile/test/test_formats_and_muxing/freeswitch.xml b/src/mod/formats/mod_sndfile/test/test_formats_and_muxing/freeswitch.xml new file mode 100644 index 0000000000..39178db499 --- /dev/null +++ b/src/mod/formats/mod_sndfile/test/test_formats_and_muxing/freeswitch.xml @@ -0,0 +1,21 @@ + + +
+ + + + + + +
+ +
+ + + + + + + +
+
diff --git a/src/mod/formats/mod_sndfile/test/test_sndfile.c b/src/mod/formats/mod_sndfile/test/test_sndfile.c new file mode 100644 index 0000000000..a9783ffa15 --- /dev/null +++ b/src/mod/formats/mod_sndfile/test/test_sndfile.c @@ -0,0 +1,451 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2018, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Dragos Oancea + * + * test_sndfile.c -- tests mod_sndfile + * + */ +#include +#include + +#include + +/* Media files used: + * + * 1. hi.wav + * + * General + * Complete name : test/sounds/hi.wav + * Format : Wave + * File size : 67.2 KiB + * Duration : 2 s 150 ms + * Overall bit rate mode : Constant + * Overall bit rate : 256 kb/s + * + * Audio + * Format : PCM + * Format settings, Endianness : Little + * Format settings, Sign : Signed + * Codec ID : 1 + * Duration : 2 s 150 ms + * Bit rate mode : Constant + * Bit rate : 256 kb/s + * Channel(s) : 1 channel + * Sampling rate : 16.0 kHz + * Bit depth : 16 bits + * Stream size : 67.2 KiB (100%) + * + * + * 2. hello_stereo.wav + * + * + * General + * Complete name : sounds/hello_stereo.wav + * Format : Wave + * File size : 220 KiB + * Duration : 1 s 277 ms + * Overall bit rate mode : Constant + * Overall bit rate : 1 412 kb/s + * + * Audio + * Format : PCM + * Format settings, Endianness : Little + * Format settings, Sign : Signed + * Codec ID : 1 + * Duration : 1 s 277 ms + * Bit rate mode : Constant + * Bit rate : 1 411.2 kb/s + * Channel(s) : 2 channels + * Sampling rate : 44.1 kHz + * Bit depth : 16 bits + * Stream size : 220 KiB (100%) + * + +*/ + +char *extensions[] = { + "aiff", "au", "avr", "caf", + "flac", "htk", "iff", "mat", + "mpc", "paf", "pvf", "rf64", + "sd2", "sds", "sf", "voc", + "w64", "wav", "wve", "xi", + "raw", "r8", "r16", "r24", + "r32", "ul", "ulaw", "al", + "alaw", "gsm", "vox", "oga", "ogg"}; + +FST_CORE_BEGIN("test_formats_and_muxing") +{ + FST_SUITE_BEGIN(test_sndfile) + { + FST_SETUP_BEGIN() + { + fst_requires_module("mod_loopback"); + fst_requires_module("mod_sndfile"); + } + FST_SETUP_END() + + FST_TEARDOWN_BEGIN() + { + } + FST_TEARDOWN_END() + + FST_TEST_BEGIN(sndfile_write_read_mono) + { + /* play mono, record mono, open mono */ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_call_cause_t cause; + static char play_filename[] = "../sounds/hi.wav"; + char path[4096]; + switch_file_handle_t fh = { 0 }; + int16_t *audiobuf; + switch_size_t len, rd; + char *recording; + int i, exlen, timeout_sec = 2, duration = 3000; /*ms*/ + switch_stream_handle_t stream = { 0 }; + + sprintf(path, "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, play_filename); + + SWITCH_STANDARD_STREAM(stream); + + switch_api_execute("sndfile_debug", "on", session, &stream); + + switch_safe_free(stream.data); + + exlen = (sizeof(extensions) / sizeof(extensions[0])); + + status = switch_ivr_originate(NULL, &session, &cause, "null/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_requires(session); + fst_check(status == SWITCH_STATUS_SUCCESS); + + for (i = 0; i < exlen; i++) { + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Testing media file extension: [%s]\n", extensions[i]); + + recording = switch_mprintf("/tmp/%s.%s", switch_core_session_get_uuid(session), extensions[i]); + status = switch_ivr_record_session(session, recording, duration, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + status = switch_ivr_play_file(session, NULL, path, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_sleep(1000 * duration); // wait for audio to finish playing + + switch_ivr_stop_record_session(session, "all"); + + status = switch_core_file_open(&fh, recording, 1, 8000, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + rd = 320; // samples + len = rd * sizeof(*audiobuf); + switch_zmalloc(audiobuf, len); + + status = switch_core_file_read(&fh, audiobuf, &rd); + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_check(rd = 320); // check that we read the wanted number of samples + + status = switch_core_file_close(&fh); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + switch_safe_free(audiobuf); + + unlink(recording); + + switch_safe_free(recording); + + switch_sleep(1000000); + } + + channel = switch_core_session_get_channel(session); + fst_requires(channel); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + fst_check(!switch_channel_ready(channel)); + + switch_core_session_rwunlock(session); + } + + FST_TEST_END() + + FST_TEST_BEGIN(sndfile_write_read_m2s) + { + /* play mono file, record mono, open stereo */ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_call_cause_t cause; + static char play_filename[] = "../sounds/hi.wav"; + char path[4096]; + switch_file_handle_t fh = { 0 }; + int16_t *audiobuf; + switch_size_t len, rd; + char *recording; + int i, exlen, channels = 2, timeout_sec = 2, duration = 3000; /*ms*/ + switch_stream_handle_t stream = { 0 }; + + sprintf(path, "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, play_filename); + + SWITCH_STANDARD_STREAM(stream); + + switch_api_execute("sndfile_debug", "on", session, &stream); + + switch_safe_free(stream.data); + + exlen = (sizeof(extensions) / sizeof(extensions[0])); + + for (i = 0; i < exlen; i++) { + + status = switch_ivr_originate(NULL, &session, &cause, "null/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_requires(session); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Testing media file extension: [%s]\n", extensions[i]); + + recording = switch_mprintf("/tmp/%s.%s", switch_core_session_get_uuid(session), extensions[i]); + + status = switch_ivr_record_session(session, recording, duration, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + status = switch_ivr_play_file(session, NULL, path, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_sleep(1000 * duration); // wait for audio to finish playing + + switch_ivr_stop_record_session(session, "all"); + + channel = switch_core_session_get_channel(session); + fst_requires(channel); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + fst_check(!switch_channel_ready(channel)); + + switch_core_session_rwunlock(session); + + status = switch_core_file_open(&fh, recording, channels, 8000, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + rd = 320; // samples + len = rd * sizeof(*audiobuf) * channels; + switch_zmalloc(audiobuf, len); + + status = switch_core_file_read(&fh, audiobuf, &rd); + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_check(rd = 320); // check that we read the wanted number of samples + + status = switch_core_file_close(&fh); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + switch_safe_free(audiobuf); + + unlink(recording); + + switch_safe_free(recording); + + switch_sleep(1000000); + } + } + FST_TEST_END() + + FST_TEST_BEGIN(sndfile_write_read_s2m) + { + /* play stereo wav, record stereo, open stereo file */ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_call_cause_t cause; + static char play_filename[] = "../sounds/hello_stereo.wav"; + char path[4096]; + switch_file_handle_t fh = { 0 }; + int16_t *audiobuf; + switch_size_t len, rd; + char *recording, *rec_path; + int i, exlen, channels = 2, timeout_sec = 2, duration = 3000; /*ms*/ + switch_stream_handle_t stream = { 0 }; + + sprintf(path, "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, play_filename); + + SWITCH_STANDARD_STREAM(stream); + + switch_api_execute("sndfile_debug", "on", session, &stream); + + switch_safe_free(stream.data); + + exlen = (sizeof(extensions) / sizeof(extensions[0])); + + for (i = 0; i < exlen; i++) { + + status = switch_ivr_originate(NULL, &session, &cause, "null/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + + fst_requires(session); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Testing media file extension: [%s]\n", extensions[i]); + + rec_path = switch_mprintf("/tmp/%s.%s", switch_core_session_get_uuid(session), extensions[i]); + recording = switch_mprintf("{force_channels=2}%s", rec_path); + + channel = switch_core_session_get_channel(session); + fst_requires(channel); + + switch_channel_set_variable(channel, "enable_file_write_buffering", "true"); + + status = switch_ivr_record_session(session, recording, duration, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + status = switch_ivr_play_file(session, NULL, path, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_sleep(1000 * duration); // wait for audio to finish playing + + switch_ivr_stop_record_session(session, "all"); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + fst_check(!switch_channel_ready(channel)); + + switch_core_session_rwunlock(session); + + status = switch_core_file_open(&fh, recording, channels, 8000, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + rd = 320; // samples + len = rd * sizeof(*audiobuf) * channels; + switch_zmalloc(audiobuf, len); + + status = switch_core_file_read(&fh, audiobuf, &rd); + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_check(rd = 320); // check that we read the wanted number of samples + + status = switch_core_file_close(&fh); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + switch_safe_free(audiobuf); + + unlink(rec_path); + + switch_safe_free(rec_path); + switch_safe_free(recording); + + switch_sleep(1000000); + } + } + + FST_TEST_END() + + FST_TEST_BEGIN(sndfile_write_read_stereo) + { + /* play stereo wav, record stereo, open stereo file */ + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_call_cause_t cause; + static char play_filename[] = "../sounds/hello_stereo.wav"; + char path[4096]; + switch_file_handle_t fh = { 0 }; + int16_t *audiobuf; + switch_size_t len, rd; + char *recording, *rec_path; + int i, exlen, channels = 2, timeout_sec = 2, duration = 3000; /*ms*/ + switch_stream_handle_t stream = { 0 }; + + sprintf(path, "%s%s%s", SWITCH_GLOBAL_dirs.conf_dir, SWITCH_PATH_SEPARATOR, play_filename); + + SWITCH_STANDARD_STREAM(stream); + + switch_api_execute("sndfile_debug", "on", session, &stream); + + switch_safe_free(stream.data); + + exlen = (sizeof(extensions) / sizeof(extensions[0])); + + for (i = 0; i < exlen; i++) { + + status = switch_ivr_originate(NULL, &session, &cause, "null/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_requires(session); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Testing media file extension: [%s]\n", extensions[i]); + + rec_path = switch_mprintf("/tmp/%s.%s", switch_core_session_get_uuid(session), extensions[i]); + recording = switch_mprintf("{force_channels=2}%s", rec_path); + + channel = switch_core_session_get_channel(session); + fst_requires(channel); + + switch_channel_set_variable(channel, "RECORD_STEREO", "true"); + switch_channel_set_variable(channel, "enable_file_write_buffering", "true"); + + status = switch_ivr_record_session(session, recording, duration, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + status = switch_ivr_play_file(session, NULL, path, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_sleep(1000 * duration); // wait for audio to finish playing + + switch_ivr_stop_record_session(session, "all"); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + fst_check(!switch_channel_ready(channel)); + + switch_core_session_rwunlock(session); + + status = switch_core_file_open(&fh, recording, channels, 8000, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + rd = 320; // samples + len = rd * sizeof(*audiobuf) * channels; + switch_zmalloc(audiobuf, len); + + status = switch_core_file_read(&fh, audiobuf, &rd); + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_check(rd = 320); // check that we read the wanted number of samples + + status = switch_core_file_close(&fh); + fst_requires(status == SWITCH_STATUS_SUCCESS); + + switch_safe_free(audiobuf); + + unlink(rec_path); + + switch_safe_free(rec_path); + switch_safe_free(recording); + + switch_sleep(1000000); + } + } + FST_TEST_END() + + FST_TEST_BEGIN(unload_mod_sndfile) + { + const char *err = NULL; + switch_sleep(1000000); + fst_check(switch_loadable_module_unload_module((char *)"../.libs", (char *)"mod_sndfile", SWITCH_TRUE, &err) == SWITCH_STATUS_SUCCESS); + } + FST_TEST_END() + } + FST_SUITE_END() +} +FST_CORE_END() diff --git a/src/mod/formats/mod_sndfile/test/test_sndfile_conf.c b/src/mod/formats/mod_sndfile/test/test_sndfile_conf.c new file mode 100644 index 0000000000..5150591922 --- /dev/null +++ b/src/mod/formats/mod_sndfile/test/test_sndfile_conf.c @@ -0,0 +1,154 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2018, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Dragos Oancea + * + * test_sndfile_conf.c -- tests mod_sndfile config + * + */ +#include +#include + +#include + +char *extensions_will_fail[] = { // not allowed through conf file. + "ul", "gsm", "vox", "ogg" +}; + +char *extensions_will_succeed[] = { // allowed through conf file. + "wav", "raw", "r8", "r16" +}; + +FST_CORE_BEGIN("test_conf") +{ + FST_SUITE_BEGIN(test_sndfile) + { + FST_SETUP_BEGIN() + { + fst_requires_module("mod_loopback"); + fst_requires_module("mod_sndfile"); + } + FST_SETUP_END() + + FST_TEARDOWN_BEGIN() + { + } + FST_TEARDOWN_END() + + FST_TEST_BEGIN(sndfile_exten_not_allowed) + { + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_call_cause_t cause; + char *recording; + int i, exlen, timeout_sec = 2; + switch_stream_handle_t stream = { 0 }; + + SWITCH_STANDARD_STREAM(stream); + + switch_api_execute("sndfile_debug", "on", session, &stream); + + switch_safe_free(stream.data); + + exlen = (sizeof(extensions_will_fail) / sizeof(extensions_will_fail[0])); + + status = switch_ivr_originate(NULL, &session, &cause, "null/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_requires(session); + fst_check(status == SWITCH_STATUS_SUCCESS); + + for (i = 0; i < exlen; i++) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Testing media file extension: [%s]\n", extensions_will_fail[i]); + + recording = switch_mprintf("/tmp/%s.%s", switch_core_session_get_uuid(session), extensions_will_fail[i]); + status = switch_ivr_record_session(session, recording, 3000, NULL); + fst_check(status == SWITCH_STATUS_GENERR); + if (status == SWITCH_STATUS_SUCCESS) { + // not expected + unlink(recording); + } + + switch_safe_free(recording); + } + + channel = switch_core_session_get_channel(session); + fst_requires(channel); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + fst_check(!switch_channel_ready(channel)); + + switch_core_session_rwunlock(session); + + switch_sleep(1000000); + } + FST_TEST_END() + FST_TEST_BEGIN(sndfile_exten_allowed) + { + switch_core_session_t *session = NULL; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_call_cause_t cause; + char *recording; + int i, exlen, timeout_sec = 2; + switch_stream_handle_t stream = { 0 }; + + SWITCH_STANDARD_STREAM(stream); + + switch_api_execute("sndfile_debug", "on", session, &stream); + + switch_safe_free(stream.data); + + exlen = (sizeof(extensions_will_succeed) / sizeof(extensions_will_succeed[0])); + + status = switch_ivr_originate(NULL, &session, &cause, "null/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + fst_requires(session); + fst_check(status == SWITCH_STATUS_SUCCESS); + + for (i = 0; i < exlen; i++) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Testing media file extension: [%s]\n", extensions_will_succeed[i]); + + recording = switch_mprintf("/tmp/%s.%s", switch_core_session_get_uuid(session), extensions_will_succeed[i]); + status = switch_ivr_record_session(session, recording, 3000, NULL); + fst_check(status == SWITCH_STATUS_SUCCESS); + + unlink(recording); + + switch_safe_free(recording); + } + + channel = switch_core_session_get_channel(session); + fst_requires(channel); + + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + fst_check(!switch_channel_ready(channel)); + + switch_core_session_rwunlock(session); + + switch_sleep(1000000); + } + FST_TEST_END() + } + FST_SUITE_END() +} +FST_CORE_END()