SWITCH_FILE_DONE = (1 << 13),
SWITCH_FILE_BUFFER_DONE = (1 << 14),
SWITCH_FILE_WRITE_APPEND = (1 << 15),
- SWITCH_FILE_WRITE_OVER = (1 << 16)
+ SWITCH_FILE_WRITE_OVER = (1 << 16),
+ SWITCH_FILE_NOMUX = (1 << 17)
} switch_file_flag_enum_t;
typedef uint32_t switch_file_flag_t;
handle->speed = context->fh.speed;
handle->interval = context->fh.interval;
handle->channels = context->fh.channels;
+ handle->flags |= SWITCH_FILE_NOMUX;
if (switch_test_flag((&context->fh), SWITCH_FILE_NATIVE)) {
switch_set_flag(handle, SWITCH_FILE_NATIVE);
fh->pre_buffer_data = switch_core_alloc(fh->memory_pool, fh->pre_buffer_datalen * fh->channels);
}
- if (fh->channels > 1 && (flags & SWITCH_FILE_FLAG_READ)) {
+ if (fh->channels > 1 && (flags & SWITCH_FILE_FLAG_READ) && !(fh->flags & SWITCH_FILE_NOMUX)) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "File has %d channels, muxing to mono will occur.\n", fh->channels);
}
switch_set_flag(fh, SWITCH_FILE_BUFFER_DONE);
} else {
fh->samples_in += rlen;
- if (fh->channels > 1) {
+ if (fh->channels > 1 && !switch_test_flag(fh, SWITCH_FILE_NOMUX)) {
switch_mux_channels((int16_t *) fh->pre_buffer_data, rlen, fh->channels);
}
switch_buffer_write(fh->pre_buffer, fh->pre_buffer_data, asis ? rlen : rlen * 2);
fh->samples_in += *len;
- if (fh->channels > 1) {
+ if (fh->channels > 1 && !switch_test_flag(fh, SWITCH_FILE_NOMUX)) {
switch_mux_channels((int16_t *) data, *len, fh->channels);
}