if (dmachine->last_matching_binding->callback) {
s = dmachine->last_matching_binding->callback(&dmachine->match);
-
+
switch(s) {
case SWITCH_STATUS_CONTINUE:
r = SWITCH_STATUS_SUCCESS;
case SWITCH_STATUS_SUCCESS:
break;
default:
- r = SWITCH_STATUS_NOTFOUND;
+ r = SWITCH_STATUS_BREAK;
break;
}
}
case SWITCH_STATUS_SUCCESS:
break;
default:
- r = SWITCH_STATUS_NOTFOUND;
+ r = SWITCH_STATUS_BREAK;
break;
}
r = SWITCH_STATUS_SUCCESS;
}
- if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS) {
+ if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS && r != SWITCH_STATUS_BREAK) {
switch_set_string(dmachine->last_failed_digits, dmachine->digits);
dmachine->match.match_digits = dmachine->last_failed_digits;
case SWITCH_STATUS_SUCCESS:
break;
default:
- r = SWITCH_STATUS_NOTFOUND;
+ r = SWITCH_STATUS_BREAK;
break;
}
uint32_t pos = 0;
switch_core_file_seek(fh, &pos, 0, SEEK_SET);
switch_core_file_seek(fh, &pos, sample_start, SEEK_CUR);
+ switch_clear_flag(fh, SWITCH_FILE_SEEK);
}
if (switch_core_file_get_string(fh, SWITCH_AUDIO_COL_STR_TITLE, &p) == SWITCH_STATUS_SUCCESS) {
}
}
+ fh->offset_pos += asis ? bread : bread / 2;
+
if (bread < framelen) {
memset(abuf + bread, 255, framelen - bread);
}
}
switch_buffer_write(fh->audio_buffer, abuf, asis ? olen : olen * 2);
olen = switch_buffer_read(fh->audio_buffer, abuf, framelen);
+ fh->offset_pos += olen / 2;
+
if (!asis) {
olen /= 2;
}
+
}
if (done || olen <= 0) {
}
more_data = 0;
-
write_frame.samples = (uint32_t) olen;
if (asis) {
switch_change_sln_volume(write_frame.data, write_frame.datalen / 2, fh->vol);
}
- fh->offset_pos += write_frame.samples / 2;
status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0);
if (timeout_samples) {