в directsound, для IDirectSoundBuffer, какой метод отвечает за позицию записи в буфере.

Мы знаем, что в directsound вызов IDirectSoundBuffer :: getcurrentposition () приведет к получению позиции воспроизведения и позиции записи в буфере directsound. Но я думаю, что копирование данных в буфер должно изменить положение записи (такое поведение, изменяющее write_position, будет вызвано каким способом разблокировать?). Я думаю, что только функция копирования данных должна влиять только на данные в буфере, а не на позицию записи.

0

Решение

Но я думаю, что копирование данных в буфер должно изменить положение записи

Существует только одна позиция, которая отслеживает вас, и это «текущая позиция», позиция, в которой происходит аппаратное воспроизведение, вам возвращаются приблизительно, потому что она постоянно меняется со временем.

Ваши манипуляции с данными, очевидно, не влияют на эту позицию. Вместо этого вы, как правило, хотите продолжать отбрасывать все больше и больше данных перед текущей позицией, чтобы при воспроизведении не происходило переполнение буфера и плавное воспроизведение данных. Таким образом, вы отслеживаете свою собственную дополнительную «позицию записи» внутри: вы добавляете данные в эту позицию и сами продвигаете этот указатель.

Позиция записи возвращается вам во втором аргументе GetCurrentPosition Вызов только для информации, чтобы вы знали, в какую позицию по-прежнему безопасно записывать данные (уже поздно изменять данные между позициями воспроизведения и записи, потому что эти данные уже буферизованы для воспроизведения):

Курсор записи указывает положение, в котором безопасно записывать новые данные в буфер. Курсор записи всегда опережает курсор воспроизведения, как правило, на 15 миллисекунд аудиоданных.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]