FS-9028: [avmd] Check SMA buffer

Now SMA buffer is checked for successful memory
allocation dynamically with assertion omitted.
This commit is contained in:
Piotr Gregor 2016-04-07 00:17:21 +01:00
parent 5ea78d6da2
commit 7dd77c781e
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)); \
(b)->len = (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)->pos = 0; \
(b)->lpos = 0; \

View File

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