Потоковый транспортный протокол передачи аудио- и видеоинформации (пример реализации RTP)
Введение
В предыдущей главе приведены основные сведения о потоковой передаче данных, описаны протоколы, применяемые для обеспечения доставки данных в реальном времени, показана организация библиотеки RTP и приведены данные о ее размере. В настоящей главе продолжается описание этой темы; проводится сравнение степени сложности библиотеки поддержки средств передачи данных в реальном времени общего назначения и приложения потоковой обработки, разработанного в качестве примера. Лучшие носки купить киев Leggeri - интернет-магазин премиум брендов
Интегрированная реализация
Чтобы сравнить степень сложности кода библиотеки общего назначения, описанной в предыдущей главе, и приложения, которое непосредственно включает все необходимые средства, авторы построили простейшую версию такого интегрированного приложения. Эта версия включает модуль воспроизведения аудиоинформации с использованием метода кодирования выборок по закону "мю", который поддерживается аппаратным обеспечением во многих версиях операционной системы Linux. В приложение встроены необходимые средства поддержки RTP и RTCP. Однако в нем предусмотрены только самые основные функциональные средства; все, что не требуется для поддержки только одного сеанса, одного потока аудиоинформации или одной кодировки, было опущено. После описания общей архитектуры программы перейдем к рассмотрению кода.
Архитектура программы
Хотя рассматриваемый пример программы обеспечивает минимальный набор функций, эта реализация RTP вполне соответствует стандарту. В частности, кроме кода, предназначенного для приема и обработки пакетов данных RTP, в этом примере программы предусмотрен код для передачи и приема минимального набора сообщений RTCP. Как будет показано ниже, даже в этой простейшей реализации приходится учитывать множество тонкостей. В целях максимального упрощения программы ее структура основана на применении четырех потоков выполнения, как показано на рис. 29.1.
Кроме основного потока, который извлекает и воспроизводит звуковые данные, программа включает три вспомогательных потока. Один из них обрабатывает входящие пакеты RTCP. Второй обеспечивает передачу отчетов RTCP, а третий принимает пакеты RTP.