#c #audio #record #wasapi
Вопрос:
Здравствуйте, я пытался использовать wasapi для записи и воспроизведения с использованием двух потоков, но я столкнулся с одной проблемой, которая заключается в том, что я не знаю, как сохранить оба потока в одном буфере. Есть ли способ сделать это, например, смешать два буфера в одном файле волны без отбрасывания данных?
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
2. Не используйте 2 потока, достаточно 1. Вызовите оба IAudioRenderClient::GetBuffer и IAudioCaptureClient::GetBuffer в цикле, чтобы получить доступ сразу к 2 буферам. Если вы не получаете буферы одинакового размера (что весьма вероятно), вы можете либо заполнить/удалить образцы на месте, либо ввести тройной буфер (и связанную с ним задержку), чтобы свести к минимуму сбои. Конечно, этот троичный буфер в конечном итоге также будет подвержен риску недостаточного потока/переполнения. В любом случае, wasapi не обеспечивает полный дуплекс из коробки, так что вы в основном сами по себе с точки зрения синхронизации потоков.