Merge pull request #797 in FS/freeswitch from ~PIOTRGREGOR/freeswitch:feature/FS-9028-avmd-check-sma-buffer-for-successful to master

* commit '7dd77c781e7ac336515b28d5cd3060a44c06c6ef':
  FS-9028: [avmd] Check SMA buffer
This commit is contained in:
Mike Jerris 2016-04-07 10:14:50 -05:00
commit 266f76cdac
2 changed files with 30 additions and 14 deletions

View File

@ -32,8 +32,6 @@ typedef struct {
(void)memset((b), 0, sizeof(sma_buffer_t)); \ (void)memset((b), 0, sizeof(sma_buffer_t)); \
(b)->len = (l); \ (b)->len = (l); \
(b)->data = (BUFF_TYPE *)switch_core_session_alloc((s), sizeof(BUFF_TYPE) * (l)); \ (b)->data = (BUFF_TYPE *)switch_core_session_alloc((s), sizeof(BUFF_TYPE) * (l)); \
assert((b)->data != NULL); \
(void)memset((b)->data, 0, sizeof(BUFF_TYPE) * (l)); \
(b)->sma = 0.0; \ (b)->sma = 0.0; \
(b)->pos = 0; \ (b)->pos = 0; \
(b)->lpos = 0; \ (b)->lpos = 0; \

View File

@ -163,8 +163,10 @@ static void init_avmd_session_data(avmd_session_t *avmd_session,
static void init_avmd_session_data(avmd_session_t *avmd_session, static void init_avmd_session_data(avmd_session_t *avmd_session,
switch_core_session_t *fs_session) switch_core_session_t *fs_session)
{ {
/*! This is a worst case sample rate estimate */ size_t buf_sz;
avmd_session->rate = 48000;
/*! This is a worst case sample rate estimate */
avmd_session->rate = 48000;
INIT_CIRC_BUFFER(&avmd_session->b, INIT_CIRC_BUFFER(&avmd_session->b,
(size_t)BEEP_LEN(avmd_session->rate), (size_t)BEEP_LEN(avmd_session->rate),
(size_t)FRAME_LEN(avmd_session->rate), (size_t)FRAME_LEN(avmd_session->rate),
@ -184,16 +186,32 @@ static void init_avmd_session_data(avmd_session_t *avmd_session,
avmd_session->samples_streak = SAMPLES_CONSECUTIVE_STREAK; avmd_session->samples_streak = SAMPLES_CONSECUTIVE_STREAK;
#endif #endif
avmd_session->sample_count = 0; avmd_session->sample_count = 0;
INIT_SMA_BUFFER(
&avmd_session->sma_b, buf_sz = BEEP_LEN(avmd_session->rate) / SINE_LEN(avmd_session->rate);
BEEP_LEN(avmd_session->rate) / SINE_LEN(avmd_session->rate), if (buf_sz < 1) {
fs_session switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session),
); SWITCH_LOG_ERROR, "Failed to init avmd session."
INIT_SMA_BUFFER( " SMA buffer size is 0!\n");
&avmd_session->sqa_b, return;
BEEP_LEN(avmd_session->rate) / SINE_LEN(avmd_session->rate), }
fs_session
); INIT_SMA_BUFFER(&avmd_session->sma_b, buf_sz, fs_session);
if (avmd_session->sma_b.data == NULL) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session),
SWITCH_LOG_ERROR, "Failed to init avmd session."
" SMA buffer error\n");
return;
}
memset(avmd_session->sma_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
INIT_SMA_BUFFER(&avmd_session->sqa_b, buf_sz, fs_session);
if (avmd_session->sqa_b.data == NULL) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session),
SWITCH_LOG_ERROR, "Failed to init avmd session."
" SMA sqa buffer error\n");
return;
}
memset(avmd_session->sqa_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
} }