Вот кусок кода, ответственный за это
Код: Выделить всё
static struct ast_frame *audiohook_read_frame_both(struct ast_audiohook *audiohook, size_t samples)
{
int i = 0, usable_read, usable_write;
short buf1[samples], buf2[samples], *read_buf = NULL, *write_buf = NULL, *final_buf = NULL, *data1 = NULL, *data2 = NULL;
struct ast_frame frame = {
.frametype = AST_FRAME_VOICE,
.subclass = AST_FORMAT_SLINEAR,
.data = NULL,
.datalen = sizeof(buf1),
.samples = samples,
};
/* Make sure both factories have the required samples */
usable_read = (ast_slinfactory_available(&audiohook->read_factory) >= samples ? 1 : 0);
usable_write = (ast_slinfactory_available(&audiohook->write_factory) >= samples ? 1 : 0);
if (!usable_read && !usable_write) {
/* If both factories are unusable bail out */
ast_debug(1, "Read factory %p and write factory %p both fail to provide %zd samples\n", &audiohook->read_factory, &audiohook->write_factory, samples);
return NULL;
}
Могу программеры что-то сказать по этому поводу?
Могут быть глюки уровня модулей НВА ядра Линукс.
Проверить например так:
1) воткнуть в Астериск USB флэшку, смонтировать, и перенсти для теста запись на неё. На день какой-нить 4ГБ хватит. Если проблемы не будет
2) попытаться подключить внешний USB-диск.
Несмотря на то, что на первый взгляд эти варианты медленнее, чем FC, нужно попробовать просто, чтобы обойти дрова другими дровами.
Как-то так.