- •«Томский политехнический университет»
- •Е.С. Чердынцев мультимедийные сети
- •Глава 1. Введение в мультимедиа
- •1.1. Классификация мультимедиа
- •1.2. Текст
- •1.3. Звук
- •1.4. Графика и анимация
- •1.6.1. Характеристики реального времени (ограничения на задержки и нестабильность)
- •1.5. Видео
- •1.6. Требования к передаче мультимедиа по сетям
- •1.6.2. Требование высокой пропускной способности
- •1.6.3. Требования к ошибкам
- •1.6.4. Поддержка мультикаста
- •1.6.5. Управление сессиями
- •1.6.6. Безопасность
- •1.6.7. Поддержка мобильности
- •Глава 2. Поддержка распределенного мультимедиа трафика в Интернете
- •2.1. Поддержка трафика реального времени в Интернете
- •2.1.1. Задержки при обработке пакетов
- •2.1.2. Задержки при передаче пакетов
- •2.1.3. Задержка передачи
- •2.1.4. Задержки маршрутизации и обработки очередей
- •2.2. Требование высокой пропускной способности
- •2.3. Ошибки характеристик сети
- •2.4. Предлагаемые модели сервисов Интернет
- •2.4.1. Уточнение требований к сервисам и описанию трафика
- •2.4.2. Управление доступом
- •2.4.3. Управление трафиком
- •2.4.4. Классификация пакетов
- •2.4.5. Планирование пакетов
- •2.4.6. Потеря пакетов
- •2.4.7. Маршрутизация на основе QoS
- •2.5. Интегрированные сервисы
- •2.5.1. Классы гарантированного обслуживания
- •2.5.2. Сервис управления загрузкой
- •2.5.3. Сервис негарантированной доставки
- •2.5.4. Недостатки модели Intserv для Интернета
- •2.6. Дифферецированный сервис
- •2.6.1. Per Hop Behavior
- •2.7. Мультипротокольная коммутация по меткам
- •Глава 3. Расширение стека протоколов tcp/ip для поддержки функциональных требований распределенных мультимедийных приложений
- •3.1. Поддержка мультикаста
- •3.2. Управление сессиями
- •3.3. Безопасность
- •3.4. Мобильность
- •3.6. Session Initiation Protocol
- •Глава 4. Введение в rtp
- •4.1. Базовые принципы rtp
- •4.2. Стандартные элементы rtp
- •4.3. Связанные с rtp стандарты
- •Глава 5. Описание протокола rtp
- •5.1. Сессии rtp
- •5.2. Структура пакета rtp
- •5.3. Проверка качества пакета
- •5.4. Трансляторы и миксеры
- •Глава 6. Описание протокола rtсp
- •6.1. Компоненты rtcp
- •6.2. Передача пакетов rtcp
- •6.3. Формат пакетов rtcp
- •6.4. Безопасность и конфиденциальность
- •6.5. Проверка корректности данных
- •6.6. База данных участников сессии
- •6.7. Управление характеристиками времени
- •6.7.1. Отчетные интервалы
- •6.7.2. Базовые правила передачи
- •6.7.3. Процедура пересмотра вперед
- •6.7.4. Процедура пересмотра назад
- •6.7.5. Пересмотр пакетов bye
- •6.7.6. Общие проблемы реализации
- •Глава 7. Захват мультимедиа, проигрывание и управление характеристиками времени
- •7.1. Поведение отправителя
- •7.2. Захват мультимедиа и сжатие
- •7.2.1. Захват и сжатие звука
- •7.2.2. Захват и сжатие изображения
- •7.2.3. Использование предварительно записанной информации
- •7.3. Генерация пакетов rtp
- •7.3.1. Метки времени и модель времени rtp
- •7.3.2. Фрагментация
- •7.3.3. Заголовки, зависящие от формата данных
- •7.4. Поведение получателя
- •7.5. Получение пакетов
- •7.5.1. Получение пакетов данных
- •7.5.2. Получение управляющих пакетов
- •7.6. Буфер проигрывания
- •7.7. Декодирование, смешивание и проигрывание
- •7.7.1. Декодирование
- •7.7.2. Смешивание звука
- •Глава 8. Синхронизация звука и изображения
- •8.1. Поведение отправителя
- •8.2. Поведение получателя
- •8.3. Точность синхронизации
- •Глава 9. Компенсация ошибок
- •9.1. Компенсация потерь звука
- •9.1.1. Измерение качества звука
- •9.1.2. Замещение периодами тишины
- •9.1.3. Замещение шума
- •Глава 10. Исправление ошибок
- •10.1. Прямое исправление ошибок
- •Глава 11. Контроль перегрузок
- •11.1. Необходимость контроля перегрузок
- •10.1.1. Контроль четности
- •References
- •Multimedia networks
- •Published in author’s version
7.5. Получение пакетов
RTP сессия включает в себя как потоки данных, так и потоки управления, работающие с назначенными портами (обычно четным для потока данных и нечетным для потока управления). Это означает, что принимающее потоки приложение должно открывать два сокета (сокет – объект, являющийся конечным элементом соединения, обеспечивающего взаимодействие между процессами транспортного уровня сети), один – для данных, второй – для управления. Так как RTP работает в стеке протоколов UDP/IP, он использует стандартные сокеты SOCK_DGRAM.
После создания сокетов приложение подготавливается к получению пакетов по сети и хранению их для последующей обработки. Многие приложения реализуют это в виде цикла, повторяющегося при получении очередных пакетов.
Пакеты данных и управления проверяются на корректность, как описывалось в предыдущих разделах. Интервал повторения цикла получения пакетов выбирается по интервалу между фреймами.
Для организации процесса получения пакетов может использоваться и событийный подход: пакеты в этом случае обрабатываются по мере их поступления. Обычно такой подход применяется при условии работы в реальном времени.
7.5.1. Получение пакетов данных
Первой стадией проигрывания данных мультимедиа по сети является получение пакетов и их буферизация для дальнейшей обработки. Так как сеть часто изменяет интервал времени между пакетами, как показано на рис. 7.5, то несколько пакетов могут появиться в короткий интервал времени или могут возникнуть большие паузы между поступлением пакетов. Получатель не знает заранее, когда прибудут очередные пакеты, поэтому он должен быть готов к получению нескольких пакетов сразу, причем в любом порядке.
После получения пакетов они проверяются на корректность и добавляются в очередь для дальнейшей обработки в порядке возрастания их меток времени. Эти шаги разрывают связь между временем прибытия пакетов и временем их обработки и проигрывания для пользователя. На рис. 7.6 показано разделение между получением пакетов и программами проигрывания, которые имеют доступ только к входным очередям.
Рис. 7.5. Нарушение интервала времени между пакетами при их транспортировке по сети
Рис. 6.6. Отделение процесса получения пакетов от их проигрывания
Важно запоминать точное время прибытия пакетов M, чтобы иметь возможность рассчитать соответствующие статистические характеристики. Неточное измерение может привести к появлению задержек в передаче пакетов. Время прибытия измеряется по реальному времени получателя T и преобразуется в потоковое время R:
M=T×R+смещение
Здесь смещение используется для перехода от относительного времени к потоковому времени, корректируя разницу между ними.
Как отмечалось ранее, процесс приемки пакетов в приложении может чередоваться с их обработкой, или эти действия могут быть разделены по разным ветвям логики работы приложения. В первом случае одна ветвь осуществляет и прием пакетов, и их обработку перед проигрыванием. За один цикл работы все пришедшие пакеты считываются из сокета и вставляются в правильном порядке в очередь проигрывания. Во втором случае одна ветвь приложения занимается приемкой пакетов и формированием из них очереди. Другие ветви занимаются декодированием данных и подготовкой их к проигрыванию.
Независимо от выбранного варианта приложение не может принимать и обрабатывать пакеты непрерывно. Входные очереди сглаживают флуктуации для процесса проигрывания в приложении, но что делать с задержками в поступлении пакетов? К счастью, большинство операционных систем общего назначения управляют приемкой пакетов UDP/IP на основе управления прерываниями и могут буферизовать пакеты на уровне сокета, даже если в это время принимающее приложение занято. Принятый по умолчанию буфер сокета подходит для большинства приложений, но приложения, работающие с высокоскоростными сетями, могут увеличить размер буфера до необходимого. Правда, это может привести к увеличению задержек в получении пакетов, но в приложении можно соответственно увеличить значение задержки проигрывания, что компенсирует данный отрицательный эффект.
