У меня есть опыт работы с захватом аудио в потоковом режиме. Но по долгу службы, возникла необходимость организовать захват короткого звукового фрагмента в строго определенные моменты времени. Для этого идеально было бы организовать незакольцованный буфер захвата нужной длинны. А как это сделать если в IDirectSoundCaptureBuffer::Start определен только один флаг — DSCBSTART_LOOPING?
Использование кольцовго метода не желательно, так как при этом возникнут ситуации когда нужный момент времени поподет на середину буфера и, соответственно, закончится в следующем буфере.
Вариант использования двух буферов (т.е. в нужный момент пишется первый буфер, и как только второй начинает писать тишину после нужного момента времени происходит прекращение захвата) не подходит, так как запись следующего нужного момента времени пойдет не сначала буфера. А достойного метода сброса маркера записи я не знаю.
Может я чего не понимаю? Или может аередать ноль функции IDirectSoundCaptureBuffer::Start?