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