У меня есть два звуковых потока. По сути, это пакеты в формате u-law. Как можно объединить эти два потока, чтобы в результирующем был звук из обоих? В какую сторону мне "копать"?
Если надо будет конвертить потоки в PCM — нет проблем.
Я краем слуха слышал, что в windows наравне с кодеками звука есть фильтры звука. Есть ли у них подобная возможность?
КВ>У меня есть два звуковых потока. По сути, это пакеты в формате u-law. Как можно объединить эти два потока, чтобы в результирующем был звук из обоих? В какую сторону мне "копать"? КВ>Если надо будет конвертить потоки в PCM — нет проблем. КВ>Я краем слуха слышал, что в windows наравне с кодеками звука есть фильтры звука. Есть ли у них подобная возможность?
Это называется микшированием, точнее сказать эта операция сумирования сигналов на выходе мастер шины, после обработки (громкость/панорама/insert'ы):
Хотябы вот так:
Здравствуйте, nen777w, Вы писали:
КВ>>У меня есть два звуковых потока. По сути, это пакеты в формате u-law. Как можно объединить эти два потока, чтобы в результирующем был звук из обоих? В какую сторону мне "копать"? КВ>>Если надо будет конвертить потоки в PCM — нет проблем. КВ>>Я краем слуха слышал, что в windows наравне с кодеками звука есть фильтры звука. Есть ли у них подобная возможность?
N>Это называется микшированием, точнее сказать эта операция сумирования сигналов на выходе мастер шины, после обработки (громкость/панорама/insert'ы): N>Хотябы вот так:
N>[ccode] N>inline void process(float** input, float** output, long frames) ... N>Где отсчёты на каждый канал идут в порядке (LR)(LR)(LR)...
Большое спасибо за ответ. Но, как и следовало ожидать, у меня будет вопрос о том, как из потоков PCM-формата выуживать эти float. И что это за отчеты (LR)(LR)(LR).
КВ>Большое спасибо за ответ. Но, как и следовало ожидать, у меня будет вопрос о том, как из потоков PCM-формата выуживать эти float.
Возьмите libsndfile он всё сделает за вас. А вообще преобразования из WORD/DWORD в float и обратно не сложно, зная разрядность оцифрованного звука.
И что это за отсчеты (LR)(LR)(LR).
Для стерео файла это один семпл т.е. два значения на каждый канал L и R. Левый по умолчанию идёт первым.
Если у вас mono файлы придется делать дублирование каждого семпла или изменить алгоритм суммирования. Есть смешанные m/s проще будет сделать дублирование в вашем кольцевом буфере.