1. Описание технической архитектуры программного модуля «Передача видеопотока по протоколу RTSP»
Настоящий документ представляет собой описание внутренней архитектуры программного модуля «Передача видеопотока по протоколу RTSP» и содержит основополагающие сведения о структуре, компонентах и взаимодействии элементов системы.
2. Структура
Система построена по монолитной архитектуре без возможности разделения на какие-либо независимые составные части. Зависимости от каких-либо сторонних библиотек и компонентов отсутствуют.
3. Компоненты
Программный модуль состоит из следующих компонентов:
– TCP-сервер: выполняет открытие и прослушивание порта, прием входящих подключений по протоколу TCP. На каждое установленное соединение создает отдельный сокет.
– Сокет: отвечает за прием и передачу данных в рамках отдельно взятого TCP соединения, отслеживание состояния соединения (активно/разорвано), позволяет принудительно закрывать соединение.
– RTSP парсер: выполняет анализ поступающих через сокет запросов согласно протоколу RTSP, генерирует на основании них события для управляющей программы и осуществляет коммутацию входных данных (сжатых кадров) от управляющей программы на сокеты, а также, структурирование этих данных согласно требованиям протокола RTSP.
– Очередь задач: реализует возможность параллельной обработки запросов и подготовки данных, отправляемых клиентам, в отдельных потоках с целью достижения максимальной эффективности использования имеющихся аппаратных ресурсов.
– База данных: не используется. Библиотека не хранит никакой информации в постоянной памяти.
4. Взаимодействие
Инициализация, задание параметров работы и подача входных данных осуществляется посредством вызова интерфейсных функций управляющей программой. Обратная связь со стороны библиотеки (информирование о событиях) осуществляется посредством вызова callback функций, указатели на которые заранее передаются библиотеке управляющей программой.
5. Технологии
В работе программного модуля используются следующие технологии:
– C++11,
– CMake,
– TCP/IP,
– RTSP.
6. Паттерны
В работе программного модуля используются следующие паттерны:
– Singleton,
– Adapter,
– Facade,
– Command,
– RAII.