diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index 71d6c86d60..79df35188f 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/build/modmake.rulesam noinst_PROGRAMS = switch_event switch_hash switch_ivr_originate switch_utils switch_core switch_console switch_vpx \ - switch_ivr_play_say + switch_ivr_play_say switch_core_codec noinst_PROGRAMS+= switch_core_video AM_LDFLAGS = -avoid-version -no-undefined $(SWITCH_AM_LDFLAGS) $(openssl_LIBS) AM_LDFLAGS += $(FREESWITCH_LIBS) $(switch_builddir)/libfreeswitch.la $(CORE_LIBS) $(APR_LIBS) diff --git a/tests/unit/switch_core_codec.c b/tests/unit/switch_core_codec.c new file mode 100644 index 0000000000..4926de6b84 --- /dev/null +++ b/tests/unit/switch_core_codec.c @@ -0,0 +1,110 @@ +/* + * 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): + * Chris Rienzo + * Seven Du + * Dragos Oancea + * + * switch_core_codec.c -- tests codec core functions + * + */ +#include +#include + +#include + +FST_CORE_BEGIN("./conf") +{ + FST_SUITE_BEGIN(switch_core_codec) + { + FST_SETUP_BEGIN() + { + } + FST_SETUP_END() + + FST_TEARDOWN_BEGIN() + { + } + FST_TEARDOWN_END() + + FST_SETUP_BEGIN() + { + fst_requires_module("mod_opus"); + } + FST_SETUP_END() + + FST_TEST_BEGIN(test_switch_core_codec_copy) + { + switch_codec_t orig_codec = { 0 }; + switch_codec_t new_codec = { 0 }; + switch_status_t status; + switch_codec_settings_t codec_settings = {{ 0 }}; + status = switch_core_codec_init(&orig_codec, + "OPUS", + "mod_opus", + NULL, + 48000, + 20, + 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + &codec_settings, fst_pool); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_core_codec_copy(&orig_codec, &new_codec, NULL, NULL); + fst_check(orig_codec.implementation->samples_per_second == new_codec.implementation->samples_per_second); + fst_check(orig_codec.implementation->actual_samples_per_second == new_codec.implementation->actual_samples_per_second); + + status = switch_core_codec_init(&orig_codec, + "OPUS", + "mod_opus", + NULL, + 16000, + 20, + 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + &codec_settings, fst_pool); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_core_codec_copy(&orig_codec, &new_codec, NULL, NULL); + fst_check(orig_codec.implementation->samples_per_second == new_codec.implementation->samples_per_second); + fst_check(orig_codec.implementation->actual_samples_per_second == new_codec.implementation->actual_samples_per_second); + + status = switch_core_codec_init(&orig_codec, + "OPUS", + "mod_opus", + NULL, + 8000, + 20, + 1, SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, + &codec_settings, fst_pool); + fst_check(status == SWITCH_STATUS_SUCCESS); + + switch_core_codec_copy(&orig_codec, &new_codec, NULL, NULL); + fst_check(orig_codec.implementation->samples_per_second == new_codec.implementation->samples_per_second); + fst_check(orig_codec.implementation->actual_samples_per_second == new_codec.implementation->actual_samples_per_second); + + } + FST_TEST_END() + } + FST_SUITE_END() +} +FST_CORE_END()