From 69afd5dfd0d652eea8fe31e07599d75c374f9800421d6e336ae09afefe6f73d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Lie?= Date: Thu, 26 Jan 2023 17:25:20 +0000 Subject: [PATCH 1/2] Accepting request 1061311 from GNOME:Next - Update to version 1.22.0: + AV1 video codec support improvements + New HLS, DASH and Microsoft Smooth Streaming adaptive streaming clients + Qt6 support for rendering video inside a QML scene + Minimal builds optimised for binary size, including only the individual elements needed + Playbin3, Decodebin3, UriDecodebin3, Parsebin enhancements and stabilisation + WebRTC simulcast support and support for Google Congestion Control + WebRTC-based media server ingestion/egress (WHIP/WHEP) support + New easy to use batteries-included WebRTC sender plugin + Easy RTP sender timestamp reconstruction for RTP and RTSP + ONVIF timed metadata support + New fragmented MP4 muxer and non-fragmented MP4 muxer + New plugins for Amazon AWS storage and audio transcription services + New gtk4paintablesink and gtkwaylandsink renderers + New videocolorscale element that can convert and scale in one go for better performance + High bit-depth video improvements + Touchscreen event support in navigation API + Rust plugins now shipped in macOS and Windows/MSVC binary packages + H.264/H.265 timestamp correction elements for PTS/DTS reconstruction before muxers + Improved design for DMA buffer sharing and modifier handling for hardware-accelerated video decoders/encoders/filters and capturing/rendering on Linux + Video4Linux2 hardware accelerated decoder improvements + CUDA integration and Direct3D11 integration and plugin improvements + New H.264 / AVC, H.265 / HEVC and AV1 hardware-accelerated video encoders for AMD GPUs using the Advanced Media Framework (AMF) SDK + applemedia: H.265 / HEVC video encoding + decoding support + androidmedia: H.265 / HEVC video encoding support + New "force-live" property for audiomixer, compositor, glvideomixer, d3d11compositor etc. + Lots of new plugins, features, performance improvements and bug fixes - Rebase patches with quilt. OBS-URL: https://build.opensuse.org/request/show/1061311 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/gstreamer?expand=0&rev=190 --- gstreamer-1.20.5.tar.xz | 3 --- gstreamer-1.22.0.tar.xz | 3 +++ gstreamer-pie.patch | 20 ++++++++--------- gstreamer-rpm-prov.patch | 28 ++++++++++++------------ gstreamer.changes | 47 ++++++++++++++++++++++++++++++++++++++++ gstreamer.spec | 10 ++++----- 6 files changed, 79 insertions(+), 32 deletions(-) delete mode 100644 gstreamer-1.20.5.tar.xz create mode 100644 gstreamer-1.22.0.tar.xz diff --git a/gstreamer-1.20.5.tar.xz b/gstreamer-1.20.5.tar.xz deleted file mode 100644 index 7c3ab74..0000000 --- a/gstreamer-1.20.5.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a19083faaf361d21fc391124f78ba6d609be55845a82fa8f658230e5fa03dff -size 2690968 diff --git a/gstreamer-1.22.0.tar.xz b/gstreamer-1.22.0.tar.xz new file mode 100644 index 0000000..05c3b20 --- /dev/null +++ b/gstreamer-1.22.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d21b5469ac93edafc6d8ceb63bc82f6cbbee94d2f866cca6b9252157ee0a09 +size 1775960 diff --git a/gstreamer-pie.patch b/gstreamer-pie.patch index 0abc9d4..5f3a721 100644 --- a/gstreamer-pie.patch +++ b/gstreamer-pie.patch @@ -1,26 +1,26 @@ -Index: gstreamer-1.18.5/libs/gst/helpers/meson.build +Index: gstreamer-1.22.0/libs/gst/helpers/meson.build =================================================================== ---- gstreamer-1.18.5.orig/libs/gst/helpers/meson.build -+++ gstreamer-1.18.5/libs/gst/helpers/meson.build -@@ -5,6 +5,7 @@ executable('gst-plugin-scanner', - dependencies : [gobject_dep, gmodule_dep, glib_dep, mathlib, gst_dep], +--- gstreamer-1.22.0.orig/libs/gst/helpers/meson.build ++++ gstreamer-1.22.0/libs/gst/helpers/meson.build +@@ -5,6 +5,7 @@ exe = executable('gst-plugin-scanner', + dependencies : [gst_dep, mathlib, gmodule_dep,], install_dir : helpers_install_dir, install: true, + pie: true, ) - # Used in test env setup to make tests find plugin scanner in build tree -@@ -18,6 +19,7 @@ if bashcomp_found - dependencies : [gobject_dep, glib_dep, gst_dep], + meson.add_devenv({'GST_PLUGIN_SCANNER': exe.full_path()}) +@@ -21,6 +22,7 @@ if bashcomp_found install_dir : helpers_install_dir, + install_tag : 'bin', install: true, + pie: true, ) endif -@@ -114,7 +116,8 @@ if have_ptp +@@ -117,7 +119,8 @@ if have_ptp include_directories : [configinc, libsinc], - dependencies : [gio_dep, gobject_dep, glib_dep, mathlib, gst_dep, cap_dep], + dependencies : [gst_dep, gio_dep, mathlib, cap_dep], install_dir : helpers_install_dir, - install : true) + install : true, diff --git a/gstreamer-rpm-prov.patch b/gstreamer-rpm-prov.patch index 744ea17..ee9f20e 100644 --- a/gstreamer-rpm-prov.patch +++ b/gstreamer-rpm-prov.patch @@ -1,8 +1,8 @@ -Index: gstreamer-1.18.5/tools/gst-inspect.c +Index: gstreamer-1.22.0/tools/gst-inspect.c =================================================================== ---- gstreamer-1.18.5.orig/tools/gst-inspect.c -+++ gstreamer-1.18.5/tools/gst-inspect.c -@@ -1750,7 +1750,224 @@ print_tracer_info (GstPluginFeature * fe +--- gstreamer-1.22.0.orig/tools/gst-inspect.c ++++ gstreamer-1.22.0/tools/gst-inspect.c +@@ -1869,7 +1869,224 @@ print_tracer_info (GstPluginFeature * fe * is meant for machines, not humans. */ static void @@ -228,7 +228,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c { GstPadDirection direction; const gchar *type_name; -@@ -1776,6 +1993,13 @@ print_plugin_automatic_install_info_code +@@ -1895,6 +2112,13 @@ print_plugin_automatic_install_info_code return; } @@ -242,7 +242,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c /* decoder/demuxer sink pads should always be static and there should only * be one, the same applies to encoders/muxers and source pads */ static_templates = gst_element_factory_get_static_pad_templates (factory); -@@ -1812,15 +2036,20 @@ print_plugin_automatic_install_info_code +@@ -1931,15 +2155,20 @@ print_plugin_automatic_install_info_code gst_structure_remove_field (s, "rate"); gst_structure_remove_field (s, "depth"); gst_structure_remove_field (s, "clock-rate"); @@ -267,7 +267,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c { const gchar *const *protocols; -@@ -1829,13 +2058,19 @@ print_plugin_automatic_install_info_prot +@@ -1948,13 +2177,19 @@ print_plugin_automatic_install_info_prot switch (gst_element_factory_get_uri_type (factory)) { case GST_URI_SINK: while (*protocols != NULL) { @@ -289,7 +289,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c ++protocols; } break; -@@ -1846,7 +2081,7 @@ print_plugin_automatic_install_info_prot +@@ -1965,7 +2200,7 @@ print_plugin_automatic_install_info_prot } static void @@ -298,7 +298,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c { GList *features, *l; -@@ -1865,11 +2100,15 @@ print_plugin_automatic_install_info (Gst +@@ -1984,11 +2219,15 @@ print_plugin_automatic_install_info (Gst if (feature_plugin == plugin) { GstElementFactory *factory; @@ -317,7 +317,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c } if (feature_plugin) gst_object_unref (feature_plugin); -@@ -1891,7 +2130,7 @@ print_all_plugin_automatic_install_info +@@ -2012,7 +2251,7 @@ print_all_plugin_automatic_install_info plugin = (GstPlugin *) (plugins->data); plugins = g_list_next (plugins); @@ -326,7 +326,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c } gst_plugin_list_free (orig_plugins); } -@@ -1958,6 +2197,7 @@ main (int argc, char *argv[]) +@@ -2098,6 +2337,7 @@ real_main (int argc, char *argv[]) gboolean do_print_blacklist = FALSE; gboolean plugin_name = FALSE; gboolean print_aii = FALSE; @@ -334,7 +334,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c gboolean uri_handlers = FALSE; gboolean check_exists = FALSE; gboolean color_always = FALSE; -@@ -1979,6 +2219,9 @@ main (int argc, char *argv[]) +@@ -2119,6 +2359,9 @@ real_main (int argc, char *argv[]) "or all plugins provide.\n " "Useful in connection with external automatic plugin " "installation mechanisms"), NULL}, @@ -344,7 +344,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c {"plugin", '\0', 0, G_OPTION_ARG_NONE, &plugin_name, N_("List the plugin contents"), NULL}, {"types", 't', 0, G_OPTION_ARG_STRING, &types, -@@ -2144,7 +2387,7 @@ main (int argc, char *argv[]) +@@ -2284,7 +2527,7 @@ real_main (int argc, char *argv[]) /* if there is such a plugin, print out info */ if (plugin) { if (print_aii) { @@ -353,7 +353,7 @@ Index: gstreamer-1.18.5/tools/gst-inspect.c } else { print_plugin_info (plugin); print_plugin_features (plugin); -@@ -2157,13 +2400,17 @@ main (int argc, char *argv[]) +@@ -2297,13 +2540,17 @@ real_main (int argc, char *argv[]) if (plugin) { if (print_aii) { diff --git a/gstreamer.changes b/gstreamer.changes index 3058969..43d22b9 100644 --- a/gstreamer.changes +++ b/gstreamer.changes @@ -1,3 +1,50 @@ +------------------------------------------------------------------- +Tue Jan 24 16:46:29 UTC 2023 - Bjørn Lie + +- Update to version 1.22.0: + + AV1 video codec support improvements + + New HLS, DASH and Microsoft Smooth Streaming adaptive streaming + clients + + Qt6 support for rendering video inside a QML scene + + Minimal builds optimised for binary size, including only the + individual elements needed + + Playbin3, Decodebin3, UriDecodebin3, Parsebin enhancements and + stabilisation + + WebRTC simulcast support and support for Google Congestion + Control + + WebRTC-based media server ingestion/egress (WHIP/WHEP) support + + New easy to use batteries-included WebRTC sender plugin + + Easy RTP sender timestamp reconstruction for RTP and RTSP + + ONVIF timed metadata support + + New fragmented MP4 muxer and non-fragmented MP4 muxer + + New plugins for Amazon AWS storage and audio transcription + services + + New gtk4paintablesink and gtkwaylandsink renderers + + New videocolorscale element that can convert and scale in one + go for better performance + + High bit-depth video improvements + + Touchscreen event support in navigation API + + Rust plugins now shipped in macOS and Windows/MSVC binary + packages + + H.264/H.265 timestamp correction elements for PTS/DTS + reconstruction before muxers + + Improved design for DMA buffer sharing and modifier handling + for hardware-accelerated video decoders/encoders/filters and + capturing/rendering on Linux + + Video4Linux2 hardware accelerated decoder improvements + + CUDA integration and Direct3D11 integration and plugin + improvements + + New H.264 / AVC, H.265 / HEVC and AV1 hardware-accelerated + video encoders for AMD GPUs using the Advanced Media Framework + (AMF) SDK + + applemedia: H.265 / HEVC video encoding + decoding support + + androidmedia: H.265 / HEVC video encoding support + + New "force-live" property for audiomixer, compositor, + glvideomixer, d3d11compositor etc. + + Lots of new plugins, features, performance improvements and bug + fixes +- Rebase patches with quilt. + ------------------------------------------------------------------- Thu Dec 22 12:43:08 UTC 2022 - Dirk Müller diff --git a/gstreamer.spec b/gstreamer.spec index cf48ad9..25a81e5 100644 --- a/gstreamer.spec +++ b/gstreamer.spec @@ -1,7 +1,7 @@ # # spec file for package gstreamer # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define gst_branch 1.0 Name: gstreamer -Version: 1.20.5 +Version: 1.22.0 Release: 0 Summary: Streaming-Media Framework Runtime License: LGPL-2.1-or-later @@ -41,14 +41,14 @@ BuildRequires: flex >= 2.5.31 BuildRequires: gobject-introspection-devel >= 1.31.1 BuildRequires: libcap-devel BuildRequires: libcap-progs -BuildRequires: meson >= 0.59 +BuildRequires: meson >= 0.62 BuildRequires: pkgconfig BuildRequires: python3-base BuildRequires: python3-xml BuildRequires: pkgconfig(bash-completion) >= 2.0 BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) -BuildRequires: pkgconfig(glib-2.0) >= 2.40.0 +BuildRequires: pkgconfig(glib-2.0) >= 2.62.0 BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(libdw) @@ -137,7 +137,7 @@ sed -i -e '1{s,^#!/usr/bin/env python3,#!%{_bindir}/python3,}' docs/gst-plugins- %build export PYTHON=%{_bindir}/python3 -sed -i "s/^executable('gst-plugin-scanner',/executable('gst-plugin-scanner-%{_target_cpu}',/" libs/gst/helpers/meson.build +sed -i "s/executable('gst-plugin-scanner',/executable('gst-plugin-scanner-%{_target_cpu}',/" libs/gst/helpers/meson.build sed -i "s/gst-plugin-scanner/gst-plugin-scanner-%{_target_cpu}/" meson.build # TODO: enable dbghelp %meson \ From b1e5b89d317ed59e373aafc00bc2957dffb902da85e533629ce48c21bcc14c8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Lie?= Date: Fri, 27 Jan 2023 12:32:35 +0000 Subject: [PATCH 2/2] Accepting request 1061504 from home:alarrosa:branches:multimedia:libs - Add patch to reduce the required meson version to 0.61.0 since that's what we have in SLE 15: * reduce-required-meson.patch - Probably because of a problem in SLE's meson, the generated pkgconfig files are missing some variables that are needed by rpm to generate the pkgconfig(...) provides correctly. In order to fix this, we now check for those variables and insert them in the pc files before installation if they're missing. OBS-URL: https://build.opensuse.org/request/show/1061504 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/gstreamer?expand=0&rev=191 --- gstreamer.changes | 12 ++++++++++++ gstreamer.spec | 13 ++++++++++++- reduce-required-meson.patch | 12 ++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 reduce-required-meson.patch diff --git a/gstreamer.changes b/gstreamer.changes index 43d22b9..aa2fe19 100644 --- a/gstreamer.changes +++ b/gstreamer.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Jan 27 10:10:31 UTC 2023 - Antonio Larrosa + +- Add patch to reduce the required meson version to 0.61.0 since + that's what we have in SLE 15: + * reduce-required-meson.patch +- Probably because of a problem in SLE's meson, the generated + pkgconfig files are missing some variables that are needed by + rpm to generate the pkgconfig(...) provides correctly. In order + to fix this, we now check for those variables and insert them + in the pc files before installation if they're missing. + ------------------------------------------------------------------- Tue Jan 24 16:46:29 UTC 2023 - Bjørn Lie diff --git a/gstreamer.spec b/gstreamer.spec index 25a81e5..1cb7431 100644 --- a/gstreamer.spec +++ b/gstreamer.spec @@ -34,6 +34,8 @@ Source99: baselibs.conf Patch1: gstreamer-rpm-prov.patch # PATCH-FIX-OPENSUSE gstreamer-pie.patch mgorse@suse.com -- create position-independent executables. Patch2: gstreamer-pie.patch +# PATCH-FIX-OPENSUSE reduce-required-meson.patch alarrosa@suse.com -- build with meson 0.61 +Patch3: reduce-required-meson.patch BuildRequires: bison >= 2.4 BuildRequires: check-devel @@ -41,7 +43,7 @@ BuildRequires: flex >= 2.5.31 BuildRequires: gobject-introspection-devel >= 1.31.1 BuildRequires: libcap-devel BuildRequires: libcap-progs -BuildRequires: meson >= 0.62 +BuildRequires: meson >= 0.61 BuildRequires: pkgconfig BuildRequires: python3-base BuildRequires: python3-xml @@ -155,6 +157,15 @@ sed -i "s/gst-plugin-scanner/gst-plugin-scanner-%{_target_cpu}/" meson.build %{nil} %meson_build +# meson 0.61.4 in SLE 15 SP5 doesn't generate all variables needed in the pc files +# As a result the pkgconfig(...) provides are not generated in the rpm file so +# we have to add the variables to the pc files if they're missing +for pc in *-suse-linux/meson-private/*.pc ; do + grep -q ^datarootdir= $pc || sed -ie "/^pluginsdir=.*/a datarootdir=\${prefix}\/share" $pc ; + grep -q ^datadir= $pc || sed -ie "/^datarootdir=.*/a datadir=\${datarootdir}" $pc ; + grep -q ^libexecdir= $pc || sed -ie "/^datadir=.*/a libexecdir=\${prefix}\/libexec" $pc ; +done + %install %meson_install %find_lang %{name}-%{gst_branch} diff --git a/reduce-required-meson.patch b/reduce-required-meson.patch new file mode 100644 index 0000000..48727ab --- /dev/null +++ b/reduce-required-meson.patch @@ -0,0 +1,12 @@ +Index: gstreamer-1.22.0/meson.build +=================================================================== +--- gstreamer-1.22.0.orig/meson.build ++++ gstreamer-1.22.0/meson.build +@@ -1,6 +1,6 @@ + project('gstreamer', 'c', + version : '1.22.0', +- meson_version : '>= 0.62', ++ meson_version : '>= 0.61', + default_options : [ 'warning_level=1', + 'buildtype=debugoptimized' ]) +