После почти года разработки представлен релиз GStreamer 1.28, кроссплатформенного набора компонентов для создания широкого спектра мультимедиа приложений, от медиаплееров и конвертеров аудио/видео файлов, до VoIP-приложений и систем потокового вещания. Код GStreamer распространяется под лицензией LGPLv2.1. Отдельно развиваются обновления плагинов gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, а также обвязка gst-libav и сервер потокового вещания gst-rtsp-server. На уровне API и ABI новый выпуск обратно совместим с веткой 1.0. Бинарные сборки в скором времени будут подготовлены для Android, iOS, macOS и Windows (в Linux рекомендуется использовать пакеты из дистрибутива).
Ключевые улучшения GStreamer 1.28:
- Добавлен новый плагин HIP (Heterogeneous-computing Interface for Portability) для поддержки развиваемого компанией AMD программного интерфейса для гетерогенных вычислений, в которых помимо CPU используются средства параллельных вычислений GPU. HIP упрощает реализацию поддержки разных GPU в одной кодовой базе (для выполнения на GPU AMD задействован стек ROCm, а на GPU NVIDIA — прослойка для трансляции в CUDA). Плагином предоставляются компоненты, реализованные с использованием HIP, для выполнения таких операций, как смешивание видео, преобразования из одного цветового пространства в другое, изменение размера видео и организация обмена данными между системной памятью и видеопамятью. Дополнительно подготовлена библиотека для интеграции поддержки HIP в приложения.
- Добавлена поддержка стандарта кодирования видео LCEVC (Low Complexity Enhancement Video Coding), реализующего поверх штатных кодеков H.265 и H.266 дополнительный слой с метаданными для улучшения качества видео. Реализация кодировщика и декодировщика LCEVC базируется на библиотеках из SDK V-Nova.
- Добавлена поддержка возможностей графического API Vulkan для ускорения декодирования видео в форматах AV1 и VP9, а также кодирования видео в формате H.264. В базирующийся на Vulkan декодировщик видео H.265 добавлена поддержка глубины цвета с 10-битами на канал.
- В элементе gtkwaylandsink, предназначенном для отрисовки с использованием GTK4 и Wayland, расширены возможности для работы с цветом, например, добавлена поддержка разбора и выставления метаданных HDR10.
- Добавлен новый элемент для разделения источников звука (например, разделения голоса и фоновой музыки), основанный на библиотеке charon-audio, реализующей метод Demucs на языке Rust. Кроме того, в состав включён плагин Deepgram для распознавания речи, написанный на Rust.
- Расширены возможности аналитики и распознавания объектов. Добавлены элементы для объединения и разделения аналитики. Реализованы классификатор tensor-decoder, детектор лиц facedetector, детектор объектов YOLOv8, элемент для выполнения и декодировщик для модели распознавания объектов YOLOX. Добавлены элемент tensordecodebin для автоподключения декодировщиков и элемент для выполнения AI-моделей при помощи LiteRT (пришёл на смену TensorFlow Lite).
- Добавлен новый элемент для декодирования GIF-изображений, написанный на Rust и поддерживающий зацикленную анимацию.
- В элементе input-selector реализован двухфазный механизм переключения между входными потоками (sinkpad), исключающий возникновение состояния гонки при переключении.
- В элемент webrtcsink добавлена поддержка аппаратного ускорения кодирования при помощи VA-API и возможность повторного согласования соединения.
- Добавлены элементы для комбинирования и извлечения потоков в формате стандарта телевещания ST-2038.
- В элемент fallbacksrc добавлена поддержка кодированных потоков.
- В мультимедийном контейнере FLV, используемом для RTMP-вещания, улучшена поддержка видео H.265 и добавлена поддержка многотоекового звука.
- В элемент glupload добавлена поддержка загрузчика на базе udmabuf, позволяющего совместно использовать буферы между программными декодировщиками/источниками и GPU, дисплейными движками (wayland) и прочими устройствами.
- Добавлен элемент qml6 для отрисовки при помощи Qt6 QML.
- В библиотеку для работы с видео добавлены операции для кадрирования, масштабирования, поворота и сдвига.
- Добавлен объект GstContext, позволяющий использовать совместный пул потоков при выполнении элементов для повышения производительности таких операций, как композитинг и преобразование видео.
- Добавлен элемент icecastsink для приёма потоков из IceCast, поддерживающий формат AAC и написанный на Rust.
- Добавлен новый элемент клонирования голоса ElevenLabs.
- В синтезатор речи добавлен режим для ускорения воспроизведения с сохранением высоты тона.
- Добавлен элемент vmaf для оценки восприятия качества видео с использованием фреймворка VMAF от Netflix.
- Добавлен новый плагин декодирования звука MPEG-H, основанный на декодировщике Fraunhofer MPEG-H и поддерживающий распаковку медиаконтейнеров MP4.
- Расширена поддержка скрытых субтитров (CC — Closed Captions) и обработки текста.
Աղբյուր: opennet.ru
