LINUX.ORG.RU

История изменений

Исправление James_Holden, (текущая версия) :

Либо расскажи как это реализовано, чтобы прям за 0пикосекунд оно было например.

Бесшовно - это не значит за 0 пикосекунд конечно. Давай считать.

Пусть частота дискретизации - 44100 герц. Значит, один семпл звучит 1/44100 секунды = 22,67 микросекунд (округленно). Вот за это время DAC должен перескочить.

А теперь - ты точно хорошо представляешь, как работает оперативная память? Выставляем адрес на шину адреса, появляется содержимое ячейки на шине данных. Это занимает некоторое время.

А теперь скажи, есть ли разница по затратам времени - изменить адрес на шине адреса на предыдущий + 1, или изменить адрес на шине адреса на 0 (ноль)? Да неужели есть? А какая ему разница? (речь о памяти карты, тут нету кешей и миссов)

То есть, если DAC успевает прочитать из памяти каждый следующий семпл, то он успеет и перескочить с конца буфера на начало. За 22,67 микросекунд.

Это называется не кольцевой буфер, а двойная буферизация.

Нет, это именно кольцевой буфер. Смотри картинки по своим же ссылкам. Там ясно и понятно - нарисован перескок с последней ячейки в первую. Двойная буферизация, как правило, предполагает наличие двух буферов с копированием данных между ними. Тут такого нет, буфер один но пишется в два присеста.

Исходная версия James_Holden, :

Либо расскажи как это реализовано, чтобы прям за 0пикосекунд оно было например.

Бесшовно - это не значит за 0 пикосекунд конечно. Давай считать.

Пусть частота дискретизации - 44100 герц. Значит, один семпл звучит 1/44100 секунды = 22,67 микросекунд (округленно). Вот за это время DAC должен перескочить.

А теперь - ты точно хорошо представляешь, как работает оперативная память? Выставляем адрес на шину адреса, появляется содержимое ячейки на шине данных. Это занимает некоторое время.

А теперь скажи, есть ли разница по затратам времени - изменить адрес на шине адреса на предыдущий + 1, или изменить адрес на шине адреса на 0 (ноль)? Да неужели есть? А какая ему разница?

То есть, если DAC успевает прочитать из памяти каждый следующий семпл, то он успеет и перескочить с конца буфера на начало. За 22,67 микросекунд.

Это называется не кольцевой буфер, а двойная буферизация.

Нет, это именно кольцевой буфер. Смотри картинки по своим же ссылкам. Там ясно и понятно - нарисован перескок с последней ячейки в первую. Двойная буферизация, как правило, предполагает наличие двух буферов с копированием данных между ними. Тут такого нет, буфер один но пишется в два присеста.