#gstreamer #plugins #gold
OSS, построенный на консалтинге - зло, так же как и OSS, основанный на продаже вендорам закрытых версий своего же OSS кода.
Пока за фичу кто-то не заплатит, хрен она появится в публичной репе, даже если будут желающие ее запилить просто так.
Вот, например, авторы gstreamer последние 15 лет всем рассказывают, как же динамически загружаемые плагины - это круто.
Но стоило появиться Хуавею, который покрутил пальцем у виска, сказал, что хочет все, как у белых людей, и дал денег, так gstreamer сразу переехал в монорепу, и запилил "почти" статическую сборку.
https://www.collabora.com/news-and-blog/news-and-events/generate-mininal-gstreamer-build-tailored-to-your-needs.html
Конечно, все это сделано максимально говенным способом, накрутили каких-то скриптов поверх meson https://github.com/GStreamer/gst-build/blob/master/scripts/generate_init_static_plugins.py, накостылили прокидывание настроек из основного meson файла в вспомогательные, и, самая мякотка - сказали, "а мы будем собирать все, что найдем, как обычно, а вы потом в отдельном файлике имплементируйте функцию, которая зарегистрирует все нужные вам плагины".
Понять по названию кодека, чо там за плагин ему нужен, я не знаю, как, поэтому у меня в epiphany до сих пор видосы не смотрятся, потому что это адовый итерационный процесс - пересобирать браузер, смотреть, чо ему дальше не хватает, и добавлять в эту фабрику.
Написал однажды, и напишу еще раз.
Самый лучший опенсорс - это опенсорс от больших компаний, который:
* решает побочную для этих компаний задачу, поэтому им нет смысла вот так вот мелко гадить, типа chromium, protobuf, tensorflow, llvm, catboost, etc
* который делается по нормальным корпоративным лекалам, с тестами и KPI
OSS, построенный на консалтинге - зло, так же как и OSS, основанный на продаже вендорам закрытых версий своего же OSS кода.
Пока за фичу кто-то не заплатит, хрен она появится в публичной репе, даже если будут желающие ее запилить просто так.
Вот, например, авторы gstreamer последние 15 лет всем рассказывают, как же динамически загружаемые плагины - это круто.
Но стоило появиться Хуавею, который покрутил пальцем у виска, сказал, что хочет все, как у белых людей, и дал денег, так gstreamer сразу переехал в монорепу, и запилил "почти" статическую сборку.
https://www.collabora.com/news-and-blog/news-and-events/generate-mininal-gstreamer-build-tailored-to-your-needs.html
Конечно, все это сделано максимально говенным способом, накрутили каких-то скриптов поверх meson https://github.com/GStreamer/gst-build/blob/master/scripts/generate_init_static_plugins.py, накостылили прокидывание настроек из основного meson файла в вспомогательные, и, самая мякотка - сказали, "а мы будем собирать все, что найдем, как обычно, а вы потом в отдельном файлике имплементируйте функцию, которая зарегистрирует все нужные вам плагины".
Понять по названию кодека, чо там за плагин ему нужен, я не знаю, как, поэтому у меня в epiphany до сих пор видосы не смотрятся, потому что это адовый итерационный процесс - пересобирать браузер, смотреть, чо ему дальше не хватает, и добавлять в эту фабрику.
Написал однажды, и напишу еще раз.
Самый лучший опенсорс - это опенсорс от больших компаний, который:
* решает побочную для этих компаний задачу, поэтому им нет смысла вот так вот мелко гадить, типа chromium, protobuf, tensorflow, llvm, catboost, etc
* который делается по нормальным корпоративным лекалам, с тестами и KPI
Collabora | Open Source Consulting
Generate a minimal GStreamer build, tailored to your needs
Thanks to a partnership with Huawei, you can now use gst-build to generate a minimal GStreamer build, tailored to a specific application, or set of applications. Here's how.
🔥7👍3👎1🤔1
https://www.phoronix.com/news/Qt-6.5-LTS-Released
Вышел новый #QT, и ничего такого не случилось - все приложения собрались, и продолжили работать, как им и положено.
Разве что, разрабы опять сломали сборку в кросс-компилируемом окружении, но они это делают наждый раз, я даже начинаю думать, что разрабы берут деньги за суппорт. Хммм...
"With Qt 6.5's multimedia support the FFmpeg back-end is now the default for macOS / Windows / Android / desktop Linux while for embedded systems GStreamer is the default"
Теперь, по умолчанию, для проигрывания видосов используется ffmpeg, и это очень, очень хорошо. Чем быстрее помрет фабрика по загрузке .so с диска под названием #gstreamer, тем лучше.
Но, на самом деле, мой глаз зацепился за фразу "The Qt 6.5 toolkit brings improved theme and styling support, including better support around dark mode handling on Windows", и я вспомнил, что уже какое-то время хочу рассказать, что, наконец, понял, почему авторы #gtk/#gnome так хейтят сторонние темы!
Считайте меня слоупоком, но я это понял совсем недавно.
В #gtk виджеты не совсем виджеты, а, по сути, настройки для канвы.
Все очень и очень похоже на html + css, берешь любой div, приделываешь к нему рамки из картинок, навешиваешь onClick(), и, пожалуйста, это не div, а уже кнопка.
Поэтому сделать кастомную тему для gtk - это как сделать кастомную css тему для нескольких веб сайтов одновременно. Иногда даже может работать, но, чаще всего, ползет какая-то херня из всех углов!
Что я пока не понимаю - перешли ли разработчики QT на темную сторону со своими qt quick, или еще не перешли.
Вышел новый #QT, и ничего такого не случилось - все приложения собрались, и продолжили работать, как им и положено.
Разве что, разрабы опять сломали сборку в кросс-компилируемом окружении, но они это делают наждый раз, я даже начинаю думать, что разрабы берут деньги за суппорт. Хммм...
"With Qt 6.5's multimedia support the FFmpeg back-end is now the default for macOS / Windows / Android / desktop Linux while for embedded systems GStreamer is the default"
Теперь, по умолчанию, для проигрывания видосов используется ffmpeg, и это очень, очень хорошо. Чем быстрее помрет фабрика по загрузке .so с диска под названием #gstreamer, тем лучше.
Но, на самом деле, мой глаз зацепился за фразу "The Qt 6.5 toolkit brings improved theme and styling support, including better support around dark mode handling on Windows", и я вспомнил, что уже какое-то время хочу рассказать, что, наконец, понял, почему авторы #gtk/#gnome так хейтят сторонние темы!
Считайте меня слоупоком, но я это понял совсем недавно.
В #gtk виджеты не совсем виджеты, а, по сути, настройки для канвы.
Все очень и очень похоже на html + css, берешь любой div, приделываешь к нему рамки из картинок, навешиваешь onClick(), и, пожалуйста, это не div, а уже кнопка.
Поэтому сделать кастомную тему для gtk - это как сделать кастомную css тему для нескольких веб сайтов одновременно. Иногда даже может работать, но, чаще всего, ползет какая-то херня из всех углов!
Что я пока не понимаю - перешли ли разработчики QT на темную сторону со своими qt quick, или еще не перешли.
Phoronix
Qt 6.5 LTS Released With Many Improvements
Out today is the Qt 6.5 toolkit that is also now the second Qt6 long-term support release.
👍4🔥2❤1🤮1
commit -m "better"
#gstreamer #plugins #gold OSS, построенный на консалтинге - зло, так же как и OSS, основанный на продаже вендорам закрытых версий своего же OSS кода. Пока за фичу кто-то не заплатит, хрен она появится в публичной репе, даже если будут желающие ее запилить…
Будни #bootstrap
Я вот как-то писал, что #gstreamer получил "упрощенный" режим сборки (балагодаря Хуавею), когда не нужно разбираться, что же у него за такие "The Good, the Bad and the Ugly" плагины (я не шучу), а можно собрать одну "Full" библиотеку.
Оказалось:
* https://github.com/GStreamer/gstreamer/blob/main/meson.build#L385-L397 gstreamer теперь сам умеет себе строить gst_init_static_plugins(), без необходимости указывать их вручную.
* А если его особенно хорошо попросить - https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/gst/gst.c#L122-L124, то он даже позовет эту функцию инициализации сам - https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/gst/gst.c#L625-L627 без изъебов с dlopen.
В совокупности с тем, что у него есть биндинги в ffmpeg, а все остальное гуано из него можно выпилить, gstreamer превращается в почти безвредную библиотеку, с существованием которой можно смириться (ну предоставляет себе API ffmpeg немножко иначе, ну и хрен с ним, это не загрузка плагинов на любой чих).
Я вот как-то писал, что #gstreamer получил "упрощенный" режим сборки (балагодаря Хуавею), когда не нужно разбираться, что же у него за такие "The Good, the Bad and the Ugly" плагины (я не шучу), а можно собрать одну "Full" библиотеку.
Оказалось:
* https://github.com/GStreamer/gstreamer/blob/main/meson.build#L385-L397 gstreamer теперь сам умеет себе строить gst_init_static_plugins(), без необходимости указывать их вручную.
* А если его особенно хорошо попросить - https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/gst/gst.c#L122-L124, то он даже позовет эту функцию инициализации сам - https://github.com/GStreamer/gstreamer/blob/main/subprojects/gstreamer/gst/gst.c#L625-L627 без изъебов с dlopen.
В совокупности с тем, что у него есть биндинги в ffmpeg, а все остальное гуано из него можно выпилить, gstreamer превращается в почти безвредную библиотеку, с существованием которой можно смириться (ну предоставляет себе API ffmpeg немножко иначе, ну и хрен с ним, это не загрузка плагинов на любой чих).
GitHub
gstreamer/meson.build at main · GStreamer/gstreamer
GStreamer open-source multimedia framework. Contribute to GStreamer/gstreamer development by creating an account on GitHub.
👍14🔥5🆒3
Будни #bootstrap
Я тут запилил звук в #gstreamer. Раньше его не было, и порно приходилось смотреть без звука, потому что мой браузер (webkit) зачем-то использует gstreamer. А это, как вы понимаете, никуда не годится!
Это было не так просто, потому что я использую #sndiod (пробовал #cras, но пока вот так), а плагин для него в gstreamer находится в плачевном состоянии.
В конце-концов, протоптал дорожку через OpenAL: gstreamer -> openal -> sndio, потому что поддержка в openal у sndio вполне норм, а поддержка openal в gstreamer сильно лучше, чем sndio.
Пришлось по пути соорудить #herobora, потому что openal плагин лежит в gstreamer-bad, и если оттуда включить хоть один плагин, то в библиотеку начинает приезжать тонна говна, потому что все плагины по умолчанию "auto", а не "disabled": https://github.com/GStreamer/gstreamer/blob/main/subprojects/gst-plugins-bad/meson_options.txt
В meson вроде как есть
https://mesonbuild.com/Commands.html
Но как это прокинуть в subproject, я не понял, даже в cmake лучше сделано.
Поэтому я поступил по-рабоче-крестьянски (а тут реально две черточки нужны?):
https://github.com/pg83/ix/blob/main/pkgs/lib/gstreamer/ix.sh#L65-L66
Я тут запилил звук в #gstreamer. Раньше его не было, и порно приходилось смотреть без звука, потому что мой браузер (webkit) зачем-то использует gstreamer. А это, как вы понимаете, никуда не годится!
Это было не так просто, потому что я использую #sndiod (пробовал #cras, но пока вот так), а плагин для него в gstreamer находится в плачевном состоянии.
В конце-концов, протоптал дорожку через OpenAL: gstreamer -> openal -> sndio, потому что поддержка в openal у sndio вполне норм, а поддержка openal в gstreamer сильно лучше, чем sndio.
Пришлось по пути соорудить #herobora, потому что openal плагин лежит в gstreamer-bad, и если оттуда включить хоть один плагин, то в библиотеку начинает приезжать тонна говна, потому что все плагины по умолчанию "auto", а не "disabled": https://github.com/GStreamer/gstreamer/blob/main/subprojects/gst-plugins-bad/meson_options.txt
В meson вроде как есть
[--auto-features {enabled,disabled,auto}]
https://mesonbuild.com/Commands.html
Но как это прокинуть в subproject, я не понял, даже в cmake лучше сделано.
Поэтому я поступил по-рабоче-крестьянски (а тут реально две черточки нужны?):
https://github.com/pg83/ix/blob/main/pkgs/lib/gstreamer/ix.sh#L65-L66
GitHub
gstreamer/subprojects/gst-plugins-bad/meson_options.txt at main · GStreamer/gstreamer
GStreamer open-source multimedia framework. Contribute to GStreamer/gstreamer development by creating an account on GitHub.
😁12👍5🍓4🔥2🐳2
https://www.opennet.ru/opennews/art.shtml?num=62441
29 новых уязвимостей в #gstreamer.
Текст про описание подхода - https://github.blog/security/vulnerability-research/uncovering-gstreamer-secrets/
TL;DR - был использован fuzzer, отдельный интерес представляет то, как коллега строил корпус для фаззинга.
Полагаю, что это только начало, потому что он нашел ошибки только в тех контейнерах, которые он явно таргетировал, а таргетировал он далеко не все, что бывает (mkv/mp4).
29 новых уязвимостей в #gstreamer.
Текст про описание подхода - https://github.blog/security/vulnerability-research/uncovering-gstreamer-secrets/
TL;DR - был использован fuzzer, отдельный интерес представляет то, как коллега строил корпус для фаззинга.
Полагаю, что это только начало, потому что он нашел ошибки только в тех контейнерах, которые он явно таргетировал, а таргетировал он далеко не все, что бывает (mkv/mp4).
www.opennet.ru
В мультимедийном фреймворке GStreamer выявлено 29 уязвимостей
В мультимедийном фреймворке GStreamer, используемом в GNOME, выявлено 29 уязвимостей. Восемь уязвимостей приводят к записи данных за пределы буфера, а одна (CVE-2024-47540) к перезаписи указателя на функцию. Указанные уязвимости могут потенциально использоваться…
🔥15👍5🆒3