Після півтора року розробки відбувся реліз GStreamer 1.20, написаного мовою Сі кросплатформового набору компонентів для створення широкого спектру мультимедіа додатків, від медіаплеєрів та конвертерів аудіо/відео файлів, до VoIP-додатків та систем потокового мовлення. Код GStreamer розповсюджується під ліцензією LGPLv2.1. Одночасно доступні оновлення плагінів gst-plugins-base 1.20, gst-plugins-good 1.20, gst-plugins-bad 1.20, gst-plugins-ugly 1.20, а також обв'язування gst-libav 1.20 та сервер потокового мовлення gst-rtsp-. На рівні API та ABI новий випуск назад сумісний із гілкою 20. Бінарні збірки незабаром будуть підготовлені для Android, iOS, macOS та Windows (в Linux рекомендується використовувати пакети з дистрибутива).
Ключові покращення GStreamer 1.20:
- Розробка на GitLab перекладена використання єдиного репозиторію, спільного всім модулів.
- Додано нову високорівневу бібліотеку GstPlay, яка прийшла на зміну API GstPlayer і пропонує подібні функції для відтворення контенту, що відрізняються використанням для повідомлення шини повідомлень замість сигналів GObject.
- Додано підтримку декодування інформації про прозорість у форматі WebM, яка дозволяє відтворювати відео VP8/VP9 з прозорими областями.
- У профілі кодування додано підтримку налаштування додаткових властивостей, специфічних для додатків.
- У Compositor реалізована підтримка перетворення та змішування відео у багатопотоковому режимі.
- У класах depayloader та payloader уніфіковано підтримку роботи з додатковими заголовками RTP (RTP Header Extensions).
- Додано підтримку механізму попереджувальної корекції помилок SMPTE 2022-1 2-D (Forward Error Correction).
- У encodebin і transcodebin для кодеків VP8, VP9 і H.265 реалізований розумний режим кодування («smart encoding»), у якому перекодування виконується лише за необхідності, а решту часу виконується прокидання наявного потоку.
- Забезпечено сумісність плагіна souphttpsrc c libsoup2 та libsoup3.
- Додана можливість декодування вхідних даних на рівні проміжних кадрів (sub-frame), що дозволяє розпочати декодування, не чекаючи отримання повного кадру. Підтримка цієї оптимізації задіяна у декодувальниках OpenJPEG JPEG 2000, FFmpeg H.264 та OpenMAX H.264/H.265.
- При декодуванні відео для протоколів RTP, WebRTC та RTSP забезпечено автоматичне оброблення втрати пакетів, пошкодження даних та запитів ключових кадрів.
- У пакувальники медіаконтейнерів mp4 та Matroska додано підтримку зміни даних кодека на льоту, що дозволяє змінювати профіль, рівень та дозвіл для вхідних потоків H.264/H.265.
- Додано режим створення фрагментованих медіаконтейнерів mp4.
- До порту на базі WPE (WebKit Port for Embedded) додано підтримку звуку.
- Додано можливість використання CUDA для перетворення колірного простору, масштабування елементів та завантаження елементів.
- Для елементів OpenGL glupload та gldownload додано підтримку пам'яті NVMM (NVIDIA Memory Module).
- Поліпшено підтримку WebRTC.
- Запропоновано новий плагін для VA-API (Video Acceleration API), який підтримує більше декодувальників та елементів постпроцесингу.
- В API AppSink додано підтримку подій на додаток до буферів та списків буферів.
- AppSrc додає додаткові налаштування внутрішніх черг.
- Оновлено прив'язки на мові Rust та додано 26 нових плагінів, написаних на Rust (gst-plugins-rs).
- Додані елементи aesdec та aesenc для шифрування та розшифрування за допомогою алгоритму AES.
- Додані елементи fakeaudiosink та videocodectestsink для тестування та налагодження.
- Поліпшено засоби для створення мінімалістичних збірок GStreamer.
- Додана можливість збирання з FFmpeg 5.0.
- Для Linux реалізовані варіанти кодеків MPEG-2 та VP9, які працюють без збереження стану (Stateless).
- Для Windows у декодувальник на базі Direct3D11/DXVA додано підтримку AV1 та MPEG-2.
Джерело: opennet.ru