2010-01-16 4 views
2

Существует очень распространенная ошибка программного обеспечения, которая вызывает около 1 секунды звука для воспроизведения несколько раз подряд, создавая своего рода заикание. Я замечаю это чаще всего при игре в видеоигры. Я знаю, что это не архитектура, я видел, как это происходит в консолях, на старых компьютерах, и это произошло только 5 минут назад, когда я загрузил окна 7.Что заставляет затухать аудиовыход?

Вопрос в том, что является основной причиной этой непоследовательности? Оказывает ли этот тип несоответствия другие части вычислительной техники? Например, если модем заикался, передача была бы повреждена.

ответ

9

Звук обычно выводится с использованием circular buffer, который затем обрабатывается аппаратным обеспечением и драйвером. Таким образом, вам не нужно выводить один образец каждые 0,02 миллисекунды или около того, но вы можете получить больше результатов за один раз. Это также означает, что игра может потратить еще немного времени на логику игры, не прерывая себя, чтобы декодировать новый образец. Когда игра заканчивает выполнение итерации в логике игры, а состояние игры обновляется, а графика перерисовывается, игра может затем декодировать больше образцов.

Проблема возникает, если она не заканчивается достаточно быстро - это может быть связано с тем, что ей нужно сделать намного больше работы, или потому что другие процессы требуют слишком много времени процессора. Если буфер не заполнен, звуковая карта просто продолжит считывать из буфера - и когда он прочитает все буферизованные сэмплы, следующие образцы - это те, которые они уже сыграли. Это приводит к небольшому циклу, который вы видели.

+0

+1 Это гораздо глубже, чем я ожидал. :-) –

2

Как я предполагаю, это связано с тем, что звуковой буфер не обновляется достаточно быстро и, следовательно, он просто воспроизводит устаревшие данные, находящиеся в буфере.

Тем не менее, я хотел бы подумать, что кто-то здесь сможет углубиться куда глубже. :-)

+0

Это именно то, что: Недопустимый буфер. Скорее всего, ОС имеет более важные функции, чем обновление внутреннего звукового буфера. –

Смежные вопросы