/*! deinitalize a codec handle using this implementation */
switch_core_codec_destroy_func_t destroy)
{
-
- switch_codec_implementation_t *impl = (switch_codec_implementation_t *) switch_core_alloc(pool, sizeof(*impl));
- impl->codec_type = codec_type;
- impl->ianacode = ianacode;
- impl->iananame = iananame;
- impl->fmtp = fmtp;
- impl->samples_per_second = samples_per_second;
- impl->actual_samples_per_second = actual_samples_per_second;
- impl->bits_per_second = bits_per_second;
- impl->microseconds_per_frame = microseconds_per_frame;
- impl->samples_per_frame = samples_per_frame;
- impl->bytes_per_frame = bytes_per_frame;
- impl->encoded_bytes_per_frame = encoded_bytes_per_frame;
- impl->number_of_channels = number_of_channels;
- impl->pref_frames_per_packet = pref_frames_per_packet;
- impl->max_frames_per_packet = max_frames_per_packet;
- impl->init = init;
- impl->encode = encode;
- impl->decode = decode;
- impl->destroy = destroy;
-
- impl->next = codec_interface->implementations;
- codec_interface->implementations = impl;
-
+ if (SWITCH_ACCEPTABLE_INTERVAL(microseconds_per_frame / 1000)) {
+ switch_codec_implementation_t *impl = (switch_codec_implementation_t *) switch_core_alloc(pool, sizeof(*impl));
+ impl->codec_type = codec_type;
+ impl->ianacode = ianacode;
+ impl->iananame = iananame;
+ impl->fmtp = fmtp;
+ impl->samples_per_second = samples_per_second;
+ impl->actual_samples_per_second = actual_samples_per_second;
+ impl->bits_per_second = bits_per_second;
+ impl->microseconds_per_frame = microseconds_per_frame;
+ impl->samples_per_frame = samples_per_frame;
+ impl->bytes_per_frame = bytes_per_frame;
+ impl->encoded_bytes_per_frame = encoded_bytes_per_frame;
+ impl->number_of_channels = number_of_channels;
+ impl->pref_frames_per_packet = pref_frames_per_packet;
+ impl->max_frames_per_packet = max_frames_per_packet;
+ impl->init = init;
+ impl->encode = encode;
+ impl->decode = decode;
+ impl->destroy = destroy;
+
+ impl->next = codec_interface->implementations;
+ codec_interface->implementations = impl;
+ }
}
///\}
#define SWITCH_CORE_QUEUE_LEN 100000
#define SWITCH_MAX_MANAGEMENT_BUFFER_LEN 1024 * 8
-#define SWITCH_ACCEPTABLE_INTERVAL(_i) (_i <= SWITCH_MAX_INTERVAL && (_i % 10) == 0)
+#define SWITCH_ACCEPTABLE_INTERVAL(_i) (_i && _i <= SWITCH_MAX_INTERVAL && (_i % 10) == 0)
typedef enum {
SWITCH_CPF_SCREEN = (1 << 0),
{
conference_obj_t *conference;
switch_xml_t xml_kvp;
- char *rate_name = NULL;
- char *interval_name = NULL;
char *timer_name = NULL;
char *domain = NULL;
char *tts_engine = NULL;
if (!strcasecmp(var, "rate") && !switch_strlen_zero(val)) {
uint32_t tmp = atoi(val);
if (tmp == 8000 || tmp == 16000 || tmp == 32000) {
- rate_name = val;
+ rate = tmp;
}
} else if (!strcasecmp(var, "domain") && !switch_strlen_zero(val)) {
domain = val;
} else if (!strcasecmp(var, "interval") && !switch_strlen_zero(val)) {
- interval_name = val;
+ uint32_t tmp = atoi(val);
+ if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
+ interval = tmp;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
+ "Interval must be multipe of 10 and less than %d, Using default of 20\n", SWITCH_MAX_INTERVAL);
+ }
} else if (!strcasecmp(var, "timer-name") && !switch_strlen_zero(val)) {
timer_name = val;
} else if (!strcasecmp(var, "tts-engine") && !switch_strlen_zero(val)) {
/* Set defaults and various paramaters */
- /* Speed in hertz */
- if (!switch_strlen_zero(rate_name)) {
- uint32_t r = atoi(rate_name);
- if (r) {
- rate = r;
- }
- }
-
- /* Packet Interval in milliseconds */
- if (!switch_strlen_zero(interval_name)) {
- uint32_t i = atoi(interval_name);
- if (i) {
- interval = i;
- }
- }
-
/* Timer module to use */
if (switch_strlen_zero(timer_name)) {
timer_name = "soft";
switch_gsm_init, switch_gsm_encode, switch_gsm_decode, switch_gsm_destroy);
}
/* LPC10 */
- SWITCH_ADD_CODEC(codec_interface, "LPC-10");
- switch_core_codec_add_implementation(pool, codec_interface,
- SWITCH_CODEC_TYPE_AUDIO, 7, "LPC", NULL, 8000, 8000, 2400,
- 90000, 720, 1440, 28, 1, 1, 1,
- switch_lpc10_init, switch_lpc10_encode, switch_lpc10_decode, switch_lpc10_destroy);
-
+ if (SWITCH_MAX_INTERVAL >= 90) {
+ SWITCH_ADD_CODEC(codec_interface, "LPC-10");
+ switch_core_codec_add_implementation(pool, codec_interface,
+ SWITCH_CODEC_TYPE_AUDIO, 7, "LPC", NULL, 8000, 8000, 2400,
+ 90000, 720, 1440, 28, 1, 1, 1,
+ switch_lpc10_init, switch_lpc10_encode, switch_lpc10_decode, switch_lpc10_destroy);
+ }
/* indicate that the module should continue to be loaded */
return SWITCH_STATUS_SUCCESS;
}
} else if (!strcmp(var, "sample-rate")) {
globals.sample_rate = atoi(val);
} else if (!strcmp(var, "codec-ms")) {
- globals.codec_ms = atoi(val);
+ int tmp = atoi(val);
+ if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
+ globals.codec_ms = tmp;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
+ "codec-ms must be multipe of 10 and less than %d, Using default of 20\n", SWITCH_MAX_INTERVAL);
+ }
} else if (!strcmp(var, "dialplan")) {
set_global_dialplan(val);
} else if (!strcmp(var, "cid-name")) {
} else if (!strcmp(var, "sample-rate")) {
globals.sample_rate = atoi(val);
} else if (!strcmp(var, "codec-ms")) {
- globals.codec_ms = atoi(val);
+ int tmp = atoi(val);
+ if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
+ globals.codec_ms = tmp;
+ } else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
+ "codec-ms must be multipe of 10 and less than %d, Using default of 20\n", SWITCH_MAX_INTERVAL);
+ }
} else if (!strcmp(var, "dialplan")) {
set_global_dialplan(val);
} else if (!strcmp(var, "cid-name")) {
}
} else if (!strcasecmp(var, "interval")) {
int tmp = atoi(val);
- if (tmp >= 10) {
+ if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
source->interval = tmp;
} else {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't set interval to less than 10\n");
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
+ "Interval must be multipe of 10 and less than %d, Using default of 20\n", SWITCH_MAX_INTERVAL);
}
} else if (!strcasecmp(var, "timer-name")) {
source->timer_name = switch_core_strdup(source->pool, val);