Нарушения воспроизведения и сложности при обработке отметок времени

Опубликовано в Технологии > Серверные технологии Продолжение

Разработка проекта затрудняется, а сложность результирующего программного обеспечения увеличивается также в связи с тем, что в нем приходится учитывать некоторые другие тонкости передачи данных в реальном времени. При определенном сочетании таких факторов, как скорость передачи, размер базового буфера и режим функционирования устройства, может возникнуть неожиданное нарушение в работе: при увеличении объема данных, записываемых на устройство при каждой передаче, в процессе воспроизведения могут возникать пропуски. Чтобы понять, с чем это связано, рассмотрим звуковое устройство, которое буферизует 16000 выборок аудиоинформации в кодировке РСМ (т.е. звуковой сигнал продолжительностью две секунды). Если приложение пишет блок из 12000 выборок, драйвер копирует данные в буфер устройства и позволяет приложению продолжить выполнение на то время, пока воспроизводятся эти выходные данные. Вывод данных происходит бесперебойно, поскольку в распоряжении рассматриваемого приложения имеются полторы секунды на формирование блока tffl, после того как драйвер принял блок N. Хорошие кровати от 3700 руб - кровать. Скидки на мебель и аксессуары.

Но если в приложении будет предпринята попытка записать 16001 выборок, драйвер скопирует первые 16000 из них в буфер, заблокирует поток и начнет воспроизведение. После того как буфер почти полностью освободится (например, в нем останется меньше десятка выборок), устройство активизирует прерывание. Получив сигнал прерывания, драйвер скопирует последнюю выборку в буфер, возобновит работу прикладного потока и даст возможность устройству продолжить воспроизведение. К сожалению, после этого у прикладного потока останется лишь короткое время (которое не превышает времени воспроизведения десятка выборок) для формирования следующего блока данных. Если для работы потока потребуется больше времени по сравнению со временем воспроизведения, то устройство исчерпает весь объем воспроизводимых данных и звучание прекратится. Поэтому на выходе появится пропуск.

Особенно сложной может стать задача сравнения отметок времени, поскольку при воспроизведении достаточно продолжительного потока RTP значения отметки времени могут зацикливаться. Например, при использовании кодировки MPEG, при которой выборки формируются с частотой 90 КГц, значение в 32-битовом поле с отметкой времени зацикливается приблизительно через 13,27 часа. При поступлении пакета получатель должен определить, остается ли записанная в нем отметка времени достаточно близкой к значению текущего времени, так как в ином случае пакет будет рассматриваться как недействительный. Эта проверка становится очень сложной, поскольку получатель должен не только учесть разницу между местным временем получателя и временем отправителя мультимедийной информации, но и предусмотреть возможность зацикливания значений отметки времени. Для упрощения такого вычисления при разработке программного обеспечения принимается предположение, что все отметки времени, которые должны в нем обрабатываться, отстоят друг от друга не более чем на половину адресного пространства (т.е. находятся в пределах 231).

Похожие статьи
  • Определение символов TELNET
  • Организация записи при параллельном доступе
  • кровать. Скидки на мебель и аксессуары. Файл спецификации содержит константы, определения типов и объявления для клиентской и серверной программ. Точнее, файл спецификации содержит: объявления для констант, используемых в клиенте или, чаще всего,..." href="/servernie-tehnologii/setevie-tehnologii/131-tretiy-etap.html">Этап 3: создание спецификации rpcgen