- •«Томский политехнический университет»
- •Е.С. Чердынцев мультимедийные сети
- •Глава 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
9.1.3. Замещение шума
Процесс замещения шума показан на рис. 9.2.
Рис. 9.2. Замещение шума
Ниже приведена программа на псевдокоде, реализующая этот процесс.
void
substitute_noise(sample previous_frame[samples_per_frame],
sample missing_frame[samples_per_frame)
{
double energy;
// Calculate energy (amplitude) of the previous frame
energy = 0.0;
for(j = 0; j < samples_per_frame; j++) {
energy += previous_frame[j] * previous_frame[j];
}
energy = sqrt(energy);
// Fill in the noise
for(j = 0; j < samples_per_frame; j++) {
missing_frame[j] = energy * random(-1,1);
}
}
9.1.4. Повторение
На рис. 9.3 показан типичный речевой сигнал.
Рис. 9.3. Типичный речевой сигнал
На рис. 9.4 показано восстановление речевого сигнала путем повторения.
Рис. 9.4. Восстановление речевого сигнала
9.2. Компенсация потерь изображения
Многие кодеки видео используют межфреймовую компрессию, посылаю не следующий фрейм, а его отличия от предыдущего, как показано на рис. 9.5.
Потеря пакета с промежуточной информацией приведет в этом случае к незначительному искажению части передаваемого кадра. С другой стороны, потеря основного кадра может влиять на ряд следующих пакетов.
Рис. 9.5. Межфреймовая компрессия
9.2.1. Компенсация передвижения
Часто при потере пакета вместо него используют содержимое предыдущего пакета. Но это напрямую допустимо только при отсутствии существенного передвижения в кадре. В противном случае приходится восстанавливать вектор движения, анализируя сохранившиеся кадры. На рис. 9.6 показано восстановление положения единственного потерянного блока.
Рис. 9.6. Восстановление потерянного блока
9.3. Чередование (Interleaving)
При применении технологии чередования меняется порядок данных перед их передачей, в результате чего соседние данные передаются на достаточно большом расстоянии между ними. На рис. 9.7 потеря четырех пакетов в потоке с чередованием приводит потере четырех изолированных пакетов после восстановления исходного порядка данных.
Рис. 9.7. Передача с чередованием
Чередование может применяться на уровне пакетов RTP, но чаще всего происходит чередование фреймов в передаваемых пакетах. В последнем случае в пакетах нарушается последовательность меток времени. Примером применения такой схемы является известный формат для передачи звука MP3.
Глава 10. Исправление ошибок
Хотя сглаживание ошибок достаточно важно, лучше их избегать или исправлять. Рассмотрим две базовые категории технологий исправления ошибок.
10.1. Прямое исправление ошибок
Алгоритмы системы прямого исправления ошибок FEC (Forward error correction) преобразуют битовый поток, делая его устойчивым к передаче. Дополнительная информация, содержащаяся в преобразованном битовом потоке, позволяет получателю точно реконструировать исходный битовый поток при наличии ошибок передачи.
Если отправитель пакетов RTP использует FEC, он должен на основе анализа ошибок сети определить долю дополнительной информации корректировки ошибок, помещаемой в каждый пакет. Одним из способов решения данной задачи является наблюдение за пакетами RTCP, приходящими от получателей.
Теоретически путем выбора схемы FEC можно гарантировать отсутствие ошибок при приеме данных. Практически же приходится учитывать, что дополнительная информация, передаваемая в потоке, еще больше нагружает сеть и увеличивает количество ее ошибок. Поэтому речь идет о корректировке ошибок с определенным уровнем вероятности.
Ключевое преимущество схемы FEC заключается в возможности ее применения к большим сессиям, в которых некоторые получатели вообще не отсылают пакетов RTCP, а главный недостаток – в прямой зависимости объемов дополнительной информации от уровня ошибок в сети.
