Merge branch 'tizen_gst_1.22.7' into tizen_gst_1.22.8 50/303350/2 tizen_gst_1.22.8
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 26 Dec 2023 06:02:43 +0000 (15:02 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 26 Dec 2023 06:27:33 +0000 (15:27 +0900)
Change-Id: I98d135750db876b7e11c685e671a632a59b3b4aa

20 files changed:
1  2 
meson.build
packaging/gstreamer.spec
subprojects/gst-editing-services/meson.build
subprojects/gst-libav/meson.build
subprojects/gst-omx/meson.build
subprojects/gst-plugins-bad/meson.build
subprojects/gst-plugins-bad/meson_options.txt
subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c
subprojects/gst-plugins-base/meson.build
subprojects/gst-plugins-good/gst/isomp4/qtdemux.c
subprojects/gst-plugins-good/gst/matroska/matroska-demux.c
subprojects/gst-plugins-good/meson.build
subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c
subprojects/gst-plugins-ugly/meson.build
subprojects/gst-rtsp-server/NEWS
subprojects/gst-rtsp-server/gst-rtsp-server.doap
subprojects/gst-rtsp-server/meson.build
subprojects/gstreamer/gst/gstpad.c
subprojects/gstreamer/libs/gst/base/gstbaseparse.c
subprojects/gstreamer/meson.build

diff --cc meson.build
Simple merge
index 0000000000000000000000000000000000000000,5cb78b73357a98484bce85c72da499247b359aab..76f77cea81fb774b1d8e04dfe6555b3c0fa8ab40
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,1334 +1,1334 @@@
 -Version:        1.22.7
+ %bcond_with x
+ %bcond_with wayland
+ %define gst_branch 1.0
+ %define _lib_gstreamer_dir %{_libdir}/gstreamer-%{gst_branch}
+ %define _lib_girepository %{_libdir}/girepository-%{gst_branch}
+ %define _enable_v4l2h264enc 0
+ %define _enable_introspection 0
+ #######################################################################
+ ## how to build each plugin :
+ ## add define option at gbs build cmd like [ --define "plugin bad" ]
+ ## if not, all the source code in subprojects will be built
+ #######################################################################
+ %if 0%{?plugin:1}
+   %if "%{plugin}" == "core"
+     %define _name gstreamer
+     %define _core_opt ""
+   %endif
+   %if "%{plugin}" == "base" || "%{plugin}" == "good" || "%{plugin}" == "bad" || "%{plugin}" == "ugly"
+     %define _name gst-plugins-%{plugin}
+     %define _base_opt ""
+     %define _good_opt ""
+     %define _bad_opt ""
+     %define _ugly_opt ""
+   %endif
+   %if "%{plugin}" == "omx" || "%{plugin}" == "libav"
+     %define _name gst-%{plugin}
+     %define _omx_opt ""
+     %define _libav_opt ""
+   %endif
+   %if "%{plugin}" == "rs"
+     %define _name gst-rtsp-server
+     %define _rs_opt ""
+   %endif
+   %if "%{plugin}" == "es"
+     %define _name gst-editing-services
+     %define _es_opt ""
+   %endif
+   %define _source_path subprojects/%{_name}
+ %else
+   %define plugin all
+   %define _name gstreamer
+   %define _source_path .
+   # plugin option prefix
+   %define _core_opt gstreamer:
+   %define _base_opt gst-plugins-base:
+   %define _good_opt gst-plugins-good:
+   %define _bad_opt gst-plugins-bad:
+   %define _ugly_opt gst-plugins-ugly:
+   %define _omx_opt gst-omx:
+   %define _libav_opt gst-libav:
+   %define _rs_opt gst-rtsp-server:
+   %define _es_opt gst-editing-services:
+ %endif
+ Name:           %{_name}
++Version:        1.22.8
+ Release:        0
+ Summary:        Streaming-Media Framework Runtime
+ License:        LGPL-2.0+
+ Group:          Multimedia/Framework
+ Url:            http://gstreamer.freedesktop.org/
+ Source0:        gstreamer-%{version}.tar.gz
+ Source1001:     gstreamer.manifest
+ BuildRequires:  meson >= 0.62.0
+ BuildRequires:  gettext-tools
+ BuildRequires:  pkgconfig(glib-2.0) >= 2.32.0
+ %if "%{plugin}" == "all" || "%{plugin}" == "core"
+ BuildRequires:  bison
+ BuildRequires:  fdupes
+ BuildRequires:  flex
+ BuildRequires:  libtool
+ BuildRequires:  pkgconfig(dlog)
+ %if "%{_enable_introspection}" == "1"
+ BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
+ %endif
+ BuildRequires:  pkgconfig(libxml-2.0)
+ %description -n gstreamer
+ GStreamer is a streaming-media framework, based on graphs of filters
+ which operate on media data. Applications using this library can do
+ anything from real-time sound processing to playing videos, and just
+ about anything else media-related.  Its plug-in-based architecture
+ means that new data types or processing capabilities can be added by
+ installing new plug-ins.
+ %package -n gstreamer-utils
+ Summary:        Streaming-Media Framework Runtime
+ Group:          Multimedia/Framework
+ Provides:       gstreamer:%{_bindir}/gst-launch-%{gst_branch} = %{version}
+ # Symbol for unversioned wrappers:
+ Provides:       gstreamer-utils_versioned = %{version}
+ %description -n gstreamer-utils
+ GStreamer is a streaming-media framework, based on graphs of filters
+ which operate on media data. Applications using this library can do
+ anything from real-time sound processing to playing videos, and just
+ about anything else media-related.  Its plug-in-based architecture
+ means that new data types or processing capabilities can be added by
+ installing new plug-ins.
+ %package -n gstreamer-devel
+ Summary:        Include Files and Libraries mandatory for Development
+ Group:          Development/Libraries
+ # gstreamer-utils is required for the gstreamer-provides rpm magic.
+ Requires:       gstreamer-utils = %{version}
+ Requires:       gstreamer = %{version}
+ %description -n gstreamer-devel
+ This package contains all necessary include files and libraries needed
+ to develop applications that require these.
+ %else
+ BuildRequires:  pkgconfig(gstreamer-1.0)
+ %if "%{plugin}" != "base"
+ BuildRequires:  pkgconfig(gstreamer-plugins-base-1.0)
+ %endif
+ %endif
+ #######################################################
+ ## Package info of Base Plugin
+ #######################################################
+ %if "%{plugin}" == "all"
+ %package -n gst-plugins-base
+ Summary:        GStreamer Streaming-Media Framework Plug-Ins
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "base"
+ BuildRequires:  orc >= 0.4.16
+ BuildRequires:  python
+ BuildRequires:  pkgconfig(alsa) >= 0.9.1
+ BuildRequires:  pkgconfig(freetype2) >= 2.0.9
+ BuildRequires:  pkgconfig(libdrm)
+ BuildRequires:  pkgconfig(libtbm)
+ BuildRequires:  pkgconfig(libxml-2.0)
+ BuildRequires:  pkgconfig(ogg) >= 1.0
+ BuildRequires:  pkgconfig(opus)
+ BuildRequires:  pkgconfig(theoradec) >= 1.1
+ BuildRequires:  pkgconfig(theoraenc) >= 1.1
+ BuildRequires:  pkgconfig(vorbis) >= 1.0
+ BuildRequires:  pkgconfig(vorbisenc) >= 1.0
+ BuildRequires:  pkgconfig(zlib)
+ %if "%{_enable_introspection}" == "1"
+ BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.31.1
+ %endif
+ %if "%{tizen_profile_name}" != "tv"
+ BuildRequires:  update-desktop-files
+ %endif
+ %if %{with wayland}
+ %if 0%{?enable_gl:1}
+ BuildRequires:  pkgconfig(gles20)
+ BuildRequires:  pkgconfig(wayland-egl) >= 9.0
+ %endif # wayland
+ %endif # gl
+ %if %{with x}
+ BuildRequires:  pkgconfig(dri2proto)
+ BuildRequires:  pkgconfig(libdri2)
+ BuildRequires:  pkgconfig(ice)
+ BuildRequires:  pkgconfig(sm)
+ BuildRequires:  pkgconfig(xext)
+ BuildRequires:  pkgconfig(xv)
+ BuildRequires:  pkgconfig(xfixes)
+ %endif
+ # gstreamer-utils is required for the gstreamer-provides rpm magic.
+ Requires:       gstreamer >= 1.0.0
+ Requires:       opus
+ Supplements:    gstreamer
+ %description -n gst-plugins-base
+ GStreamer is a streaming media framework based on graphs of filters
+ that operate on media data. Applications using this library can do
+ anything media-related, from real-time sound processing to playing
+ videos. Its plug-in-based architecture means that new data types or
+ processing capabilities can be added simply by installing new plug-ins.
+ %if "%{tizen_profile_name}" != "tv"
+ %package -n gst-plugins-base-extension-adder
+ Summary:        libgstadder.so for gst-plugins-base
+ Requires:       gst-plugins-base = %{version}-%{release}
+ Provides:       gst-plugins-base-profile_mobile = %{version}-%{release}
+ %description -n gst-plugins-base-extension-adder
+ Libgstadder.so for gst-plugin-base. Supplicant for gst-plugin-base.
+ This is for Tizen mobile profile.
+ %endif
+ %package -n gst-plugins-base-devel
+ Summary:        Include files and Libraries
+ Requires:       gst-plugins-base = %{version}
+ %description -n gst-plugins-base-devel
+ This package contains all necessary include files and libraries needed
+ to compile and link applications that use gstreamer-plugins-base.
+ %endif
+ #######################################################
+ ## Package info of Good Plugin
+ #######################################################
+ %if "%{plugin}" == "all"
+ %package -n gst-plugins-good
+ Summary:        GStreamer Streaming-Media Framework Plug-Ins
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "good"
+ BuildRequires:  libjpeg-devel
+ BuildRequires:  orc >= 0.4.16
+ BuildRequires:  python
+ BuildRequires:  xsltproc
+ BuildRequires:  pkgconfig(bzip2)
+ BuildRequires:  pkgconfig(gio-2.0)
+ BuildRequires:  pkgconfig(libpulse) >= 1.0
+ BuildRequires:  pkgconfig(libsoup-2.4)
+ BuildRequires:  pkgconfig(libtbm)
+ BuildRequires:  pkgconfig(libxml-2.0) >= 2.4.9
+ BuildRequires:  pkgconfig(vconf)
+ BuildRequires:  pkgconfig(vpx)
+ BuildRequires:  pkgconfig(zlib)
+ %if "%{tizen_profile_name}" != "tv"
+ BuildRequires:  pkgconfig(libpng) >= 1.2
+ %endif
+ %if %{with x}
+ BuildRequires:  pkgconfig(ice)
+ BuildRequires:  pkgconfig(sm)
+ BuildRequires:  pkgconfig(xdamage)
+ BuildRequires:  pkgconfig(xfixes)
+ # used by libgstvideo4linux2.so
+ BuildRequires:  pkgconfig(xv)
+ %endif
+ Requires:       gstreamer >= %{version}
+ Requires:       gst-plugins-base >= %{version}
+ Requires:       libsoup
+ %description -n gst-plugins-good
+ GStreamer is a streaming media framework based on graphs of filters
+ that operate on media data. Applications using this library can do
+ anything media-related, from real-time sound processing to playing
+ videos. Its plug-in-based architecture means that new data types or
+ processing capabilities can be added simply by installing new plug-ins.
+ %package -n gst-plugins-good-extra
+ Summary:        Complementary plugins for gst-plugins-good
+ Group:          Productivity/Multimedia/Other
+ Requires:       gst-plugins-good = %{version}
+ Enhances:       gst-plugins-good
+ %description -n gst-plugins-good-extra
+ This package provides complementary plugins for gst-plugins-good and
+ plugins not included in official Tizen images, which may be used for development / experimental purposes.
+ %if "%{tizen_profile_name}" != "tv"
+ %package -n gst-plugins-good-cairo
+ Summary:        Cairo plugin for gst-plugins-good
+ Group:          Multimedia/Framework
+ BuildRequires:  pkgconfig(cairo)
+ BuildRequires:  pkgconfig(cairo-gobject)
+ Requires:       gst-plugins-good = %{version}
+ Enhances:       gst-plugins-good
+ %description -n gst-plugins-good-cairo
+ This package provides cairo plugin for gst-plugins-good and
+ this is not included in Tizen headless image.
+ %package -n gst-plugins-good-v4l2
+ Summary:        Video4Linux2 plugin for gst-plugins-good
+ Group:          Multimedia/Framework
+ BuildRequires:  pkgconfig(libv4l2)
+ Requires:       gst-plugins-good = %{version}
+ Enhances:       gst-plugins-good
+ %description -n gst-plugins-good-v4l2
+ This package provides Video4Linux2 plugin for gst-plugins-good.
+ %endif
+ %endif
+ #######################################################
+ ## Package info of Bad Plugin
+ #######################################################
+ %if "%{plugin}" == "all"
+ %package -n gst-plugins-bad
+ Summary:        GStreamer Streaming-Media Framework Plug-Ins
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "bad"
+ BuildRequires:  python
+ BuildRequires:  xsltproc
+ BuildRequires:  pkgconfig(gio-2.0) >= 2.25.0
+ BuildRequires:  pkgconfig(libcurl) >= 7.21.0
+ BuildRequires:  pkgconfig(libexif) >= 0.6.16
+ BuildRequires:  pkgconfig(libsrtp2) >= 2.1.0
+ BuildRequires:  pkgconfig(libusb-1.0)
+ BuildRequires:  pkgconfig(nice)
+ BuildRequires:  pkgconfig(openal)
+ BuildRequires:  pkgconfig(openssl1.1)
+ BuildRequires:  pkgconfig(opus)
+ BuildRequires:  pkgconfig(orc-0.4) >= 0.4.11
+ BuildRequires:  pkgconfig(sndfile) >= 1.0.16
+ BuildRequires:  pkgconfig(soundtouch) > 1.4
+ %if "%{tizen_profile_name}" != "tv"
+ BuildRequires:  pkgconfig(srt)
+ %endif
+ %if %{with wayland}
+ BuildRequires:  pkgconfig(libdrm)
+ BuildRequires:  pkgconfig(libxml-2.0)
+ BuildRequires:  pkgconfig(wayland-client) >= 1.0.0
+ BuildRequires:  pkgconfig(wayland-cursor) >= 1.0.0
+ BuildRequires:  pkgconfig(wayland-protocols)
+ %endif
+ %if %{with x}
+ BuildRequires:  pkgconfig(x11)
+ %endif
+ Requires:       gstreamer >= %{version}
+ %description -n gst-plugins-bad
+ GStreamer is a streaming media framework based on graphs of filters
+ that operate on media data. Applications using this library can do
+ anything media-related,from real-time sound processing to playing
+ videos. Its plug-in-based architecture means that new data types or
+ processing capabilities can be added simply by installing new plug-ins.
+ %package -n gst-plugins-bad-devel
+ Summary:        GStreamer Streaming-Media Framework Plug-Ins
+ Requires:       gst-plugins-bad = %{version}-%{release}
+ Requires:       gst-plugins-base-devel
+ %description -n gst-plugins-bad-devel
+ GStreamer is a streaming media framework based on graphs of filters
+ that operate on media data. Applications using this library can do
+ anything media-related,from real-time sound processing to playing
+ videos. Its plug-in-based architecture means that new data types or
+ processing capabilities can be added simply by installing new plug-ins.
+ %endif
+ #######################################################
+ ## Package info of Ugly Plugin
+ #######################################################
+ %if "%{plugin}" == "all"
+ %package -n gst-plugins-ugly
+ Summary:        GStreamer plugins from the "ugly" set
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "ugly"
+ BuildRequires:  which
+ BuildRequires:  pkgconfig(opencore-amrwb)
+ %if "%{tizen_profile_name}" != "tv"
+ BuildRequires:  pkgconfig(opencore-amrnb)
+ %endif
+ %description -n gst-plugins-ugly
+  GStreamer is a streaming media framework, based on graphs of filters
+  which operate on media data.  Applications using this library can do
+  anything from real-time sound processing to playing videos, and just
+  about anything else media-related.  Its plugin-based architecture means
+  that new data types or processing capabilities can be added simply by
+  installing new plug-ins.
+  .
+  This packages contains plugins from the "ugly" set, a set of
+  good-quality plug-ins that might pose distribution problems.
+ %endif
+ #######################################################
+ ## Package info of Omx Plugin
+ #######################################################
+ %if "%{tizen_profile_name}" != "tv"
+ %ifarch %{arm} aarch64 riscv64
+ %if "%{plugin}" == "all"
+ %package -n gst-omx
+ Summary:        GStreamer plug-in that allows communication with OpenMAX IL components
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "omx"
+ BuildRequires:  which
+ BuildRequires:  pkgconfig(libtbm)
+ BuildRequires:  pkgconfig(mm-common)
+ %if "%{target}" == "rpi"
+ BuildRequires:  pkgconfig(bcm_host)
+ BuildRequires:  pkgconfig(brcmegl)
+ %endif
+ %description -n gst-omx
+ gst-openmax is a GStreamer plug-in that allows communication with OpenMAX IL components.
+ Multiple OpenMAX IL implementations can be used.
+ %endif # plugin
+ %endif # arch
+ %endif # profile
+ #######################################################
+ ## Package info of libav Plugin
+ #######################################################
+ %if "%{plugin}" == "all"
+ %package -n gst-libav
+ Summary:        Libav plugin for GStreamer
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "libav"
+ BuildRequires:  bzip2-devel
+ BuildRequires:  gettext
+ BuildRequires:  which
+ BuildRequires:  yasm
+ BuildRequires:  pkgconfig(libavcodec)
+ BuildRequires:  pkgconfig(libavfilter)
+ BuildRequires:  pkgconfig(libavformat)
+ BuildRequires:  pkgconfig(libavutil)
+ BuildRequires:  pkgconfig(orc-0.4)
+ BuildRequires:  pkgconfig(theora)
+ BuildRequires:  pkgconfig(vorbis)
+ BuildRequires:  pkgconfig(zlib)
+ %description -n gst-libav
+ This GStreamer plugin supports a large number of audio and video compression
+ formats through the use of the libav library.  The plugin contains GStreamer
+ elements for decoding 90+ formats (AVI, MPEG, OGG, Matroska, ASF, ...),
+ demuxing 30+ formats and colorspace conversion.
+ %endif
+ #######################################################
+ ## Package info of rtsp-server Plugin
+ #######################################################
+ %if "%{plugin}" == "all"
+ %package -n gst-rtsp-server
+ Summary:        Multimedia Framework Library
+ Group:          System/Libraries
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "rs"
+ Requires(post):  /sbin/ldconfig
+ Requires(postun):  /sbin/ldconfig
+ %description -n gst-rtsp-server
+ This GStreamer plugin supports a large number of audio and video compression
+ formats through the use of the libav library.  The plugin contains GStreamer
+ elements for decoding 90+ formats (AVI, MPEG, OGG, Matroska, ASF, ...),
+ demuxing 30+ formats and colorspace conversion.
+ %package -n gst-rtsp-server-devel
+ Summary:        Multimedia Framework RTSP server library (DEV)
+ Group:          Development/Libraries
+ Requires:       gst-rtsp-server = %{version}-%{release}
+ %description -n gst-rtsp-server-devel
+ %endif
+ #######################################################
+ ## Package info of editing-services Plugin
+ #######################################################
+ %if "%{tizen_profile_name}" != "tv"
+ %if "%{plugin}" == "all"
+ %package -n gst-editing-services
+ Summary:        GStreamer Editing Service Plug-Ins
+ Group:          Multimedia/Framework
+ %endif
+ %if "%{plugin}" == "all" || "%{plugin}" == "es"
+ BuildRequires:  flex
+ BuildRequires:  gtk-doc
+ BuildRequires:  pkgconfig(libxml-2.0)
+ Requires:       gstreamer >= 1.0.0
+ Supplements:    gstreamer
+ %description -n gst-editing-services
+ This is a high-level library for facilitating the creation of audio/video
+ non-linear editors.
+ %package -n gst-editing-services-devel
+ Summary:        Development files for gst-editing-services
+ Requires:       gst-editing-services = %{version}-%{release}
+ %description -n gst-editing-services-devel
+ This package contains libraries and header files for
+ developing applications that use %{name}
+ %endif # plugin
+ %endif # profile
+ #######################################################
+ ## Prep
+ #######################################################
+ %prep
+ %setup -q -n gstreamer-%{version}
+ cp %{SOURCE1001} ./gstreamer.manifest
+ cp %{SOURCE1001} ./gst-plugins-base.manifest
+ cp %{SOURCE1001} ./gst-plugins-good.manifest
+ cp %{SOURCE1001} ./gst-plugins-bad.manifest
+ cp %{SOURCE1001} ./gst-plugins-ugly.manifest
+ cp %{SOURCE1001} ./gst-libav.manifest
+ cp %{SOURCE1001} ./gst-rtsp-server.manifest
+ %if "%{tizen_profile_name}" != "tv"
+ cp %{SOURCE1001} ./gst-omx.manifest
+ cp %{SOURCE1001} ./gst-editing-services.manifest
+ %endif
+ #######################################################
+ ## Build
+ #######################################################
+ %build
+ %if "%{plugin}" != "all"
+ pushd %{_source_path}
+ %endif
+ mkdir -p build
+ export CFLAGS="%{optflags} \
+   -fno-strict-aliasing\
+   -fstack-protector-strong\
+   -Wl,-z,relro\
+ %if "%{tizen_profile_name}" == "tv"
+   -Wno-declaration-after-statement\
+ %endif
+   -D_FORTIFY_SOURCE=2"
+ export CXXFLAGS+=" -Wno-error"
+ export LDFLAGS+=" -pthread"
+ meson --auto-features=disabled --prefix=/usr --libdir=%{_libdir} --datadir=%{_datadir} --sysconfdir=%{_hal_sysconfdir} \
+ %if "%{plugin}" == "all"
+   %if "%{tizen_profile_name}" == "tv"
+     -D ges=disabled \
+     -D omx=disabled \
+   %endif # profile
+   %ifarch x86_64 %{ix86}
+     -D omx=disabled \
+   %endif # arch
+ %endif # plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "core"
+   -D %{_core_opt}check=enabled \
+   -D %{_core_opt}coretracers=enabled \
+   -D %{_core_opt}extra-checks=enabled \
+   -D %{_core_opt}ptp-helper-permissions=none \
+   -D %{_core_opt}tools=enabled \
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_core_opt}tv-profile=true \
+   %endif # profile
+   %if "%{_enable_introspection}" == "1"
+     -D %{_core_opt}introspection=enabled \
+   %endif # introspection
+ %endif # plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "base"
+   -D %{_base_opt}alsa=enabled \
+   -D %{_base_opt}app=enabled \
+   -D %{_base_opt}audioconvert=enabled \
+   -D %{_base_opt}audiomixer=enabled \
+   -D %{_base_opt}audiorate=enabled \
+   -D %{_base_opt}audioresample=enabled \
+   -D %{_base_opt}audiotestsrc=enabled \
+   -D %{_base_opt}compositor=enabled \
+   -D %{_base_opt}gio=enabled \
+   -D %{_base_opt}gio-typefinder=enabled \
+   -D %{_base_opt}ogg=enabled \
+   -D %{_base_opt}opus=enabled \
+   -D %{_base_opt}overlaycomposition=enabled \
+   -D %{_base_opt}pbtypes=enabled \
+   -D %{_base_opt}playback=enabled \
+   -D %{_base_opt}rawparse=enabled \
+   -D %{_base_opt}subparse=enabled \
+   -D %{_base_opt}tbm=true \
+   -D %{_base_opt}tcp=enabled \
+   -D %{_base_opt}tools=disabled \
+   -D %{_base_opt}theora=enabled \
+   -D %{_base_opt}typefind=enabled \
+   -D %{_base_opt}videoconvertscale=enabled \
+   -D %{_base_opt}videorate=enabled \
+   -D %{_base_opt}videotestsrc=enabled \
+   -D %{_base_opt}volume=enabled \
+   -D %{_base_opt}vorbis=enabled \
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_base_opt}tv-profile=true \
+   %else
+     -D %{_base_opt}adder=enabled \
+     -D %{_base_opt}encoding=enabled \
+     %if 0%{?enable_gl:1}
+       -D %{_base_opt}gl=enabled \
+     %endif # gl
+   %endif # profile
+   %if "%{_enable_introspection}" == "1"
+     -D %{_base_opt}introspection=enabled \
+   %endif # introspection
+ %endif # base plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "good"
+   %if 0%{?ENABLE_AALIB}
+     -D %{_good_opt}aalib=enabled \
+   %endif
+   -D %{_good_opt}adaptivedemux2=enabled \
+   -D %{_good_opt}apetag=enabled \
+   -D %{_good_opt}audiofx=enabled \
+   -D %{_good_opt}audioparsers=enabled \
+   -D %{_good_opt}autodetect=enabled \
+   -D %{_good_opt}avi=enabled \
+   -D %{_good_opt}debugutils=enabled \
+   -D %{_good_opt}deinterlace=enabled \
+   -D %{_good_opt}icydemux=enabled \
+   -D %{_good_opt}id3demux=enabled \
+   -D %{_good_opt}interleave=enabled \
+   -D %{_good_opt}isomp4=enabled \
+   -D %{_good_opt}jpeg=enabled \
+   -D %{_good_opt}law=enabled \
+   -D %{_good_opt}pulse=enabled \
+   -D %{_good_opt}replaygain=enabled \
+   -D %{_good_opt}rtp=enabled \
+   -D %{_good_opt}rtpmanager=enabled \
+   -D %{_good_opt}rtsp=enabled \
+   -D %{_good_opt}soup=enabled \
+   -D %{_good_opt}tbm=true \
+   -D %{_good_opt}udp=enabled \
+   -D %{_good_opt}videocrop=enabled \
+   -D %{_good_opt}videofilter=enabled \
+   -D %{_good_opt}vpx=enabled \
+   -D %{_good_opt}wavenc=enabled \
+   -D %{_good_opt}wavparse=enabled \
+   %if "%{_enable_v4l2h264enc}" == "1"
+     -D %{_good_opt}v4l2h264enc=enabled \
+   %endif
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_good_opt}tv-profile=true \
+     %ifnarch %{arm} aarch64
+       -D %{_good_opt}v4l2=enabled \
+     %endif
+   %else
+     -D %{_good_opt}cairo=enabled \
+     -D %{_good_opt}effectv=enabled \
+     -D %{_good_opt}flv=enabled \
+     -D %{_good_opt}imagefreeze=enabled \
+     -D %{_good_opt}matroska=enabled \
+     -D %{_good_opt}multifile=enabled \
+     -D %{_good_opt}png=enabled \
+     -D %{_good_opt}smpte=enabled \
+     -D %{_good_opt}v4l2=enabled \
+     -D %{_good_opt}v4l2-libv4l2=enabled \
+     -D %{_good_opt}v4l2-probe=true \
+     -D %{_good_opt}videobox=enabled \
+     -D %{_good_opt}videomixer=enabled \
+   %endif # profile
+ %endif # plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "bad"
+   -D %{_bad_opt}aes=enabled \
+   -D %{_bad_opt}audiobuffersplit=enabled \
+   -D %{_bad_opt}audiolatency=enabled \
+   -D %{_bad_opt}audiomixmatrix=enabled \
+   -D %{_bad_opt}debugutils=enabled \
+   -D %{_bad_opt}dtls=enabled \
+   -D %{_bad_opt}gst_play_tests=false\
+   -D %{_bad_opt}introspection=disabled \
+   -D %{_bad_opt}ipcpipeline=enabled \
+   -D %{_bad_opt}midi=enabled \
+   -D %{_bad_opt}mpegtsdemux=enabled \
+   -D %{_bad_opt}mpegtsmux=enabled \
+   -D %{_bad_opt}netsim=enabled \
+   -D %{_bad_opt}openal=enabled \
+   -D %{_bad_opt}opus=enabled \
+   -D %{_bad_opt}proxy=enabled \
+   -D %{_bad_opt}sctp=enabled \
+   -D %{_bad_opt}sdp=enabled \
+   -D %{_bad_opt}shm=enabled \
+   -D %{_bad_opt}soundtouch=enabled \
+   -D %{_bad_opt}srtp=enabled \
+   -D %{_bad_opt}timecode=enabled \
+   -D %{_bad_opt}videoframe_audiolevel=enabled \
+   -D %{_bad_opt}videoparsers=enabled \
+   -D %{_bad_opt}wayland=enabled \
+   -D %{_bad_opt}webrtc=enabled \
+   %if %{with wayland}
+     -D %{_bad_opt}wayland=enabled \
+   %endif
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_bad_opt}tv-profile=true \
+   %else
+     -D %{_bad_opt}autoconvert=enabled \
+     -D %{_bad_opt}camerabin2=enabled \
+     -D %{_bad_opt}coloreffects=enabled \
+     -D %{_bad_opt}dash=enabled \
+     -D %{_bad_opt}gaudieffects=enabled \
+     -D %{_bad_opt}gdp=enabled \
+     -D %{_bad_opt}hls=enabled \
+     -D %{_bad_opt}id3tag=enabled \
+     -D %{_bad_opt}jpegformat=enabled \
+     -D %{_bad_opt}mpegdemux=enabled \
+     -D %{_bad_opt}rist=enabled \
+     -D %{_bad_opt}rtp=enabled \
+     -D %{_bad_opt}srt=enabled \
+     -D %{_bad_opt}smoothstreaming=enabled \
+     %if 0%{?enable_gl:1}
+       -D %{_bad_opt}gl=enabled \
+     %endif # gl
+   %endif # profile
+ %endif # plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "ugly"
+   -D %{_ugly_opt}amrwbdec=enabled \
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_ugly_opt}tv-profile=true \
+   %else
+     -D %{_ugly_opt}amrnb=enabled \
+     -D %{_ugly_opt}asfdemux=enabled \
+   %endif # profile
+ %endif # plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "libav"
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_libav_opt}tv-profile=true \
+   %endif # profile
+ %endif # plugin
+ %if "%{plugin}" == "all" || "%{plugin}" == "rs"
+   %if "%{tizen_profile_name}" == "tv"
+     -D %{_rs_opt}tv-profile=true \
+   %endif # profile
+   -D %{_rs_opt}introspection=disabled \
+   -D %{_rs_opt}rtspclientsink=enabled \
+ %endif
+ %if "%{tizen_profile_name}" != "tv"
+   %ifarch %{arm} aarch64 riscv64
+     %if "%{plugin}" == "all" || "%{plugin}" == "omx"
+       -D %{_omx_opt}tools=disabled \
+       %if "%{target}" == "rpi"
+         -D %{_omx_opt}header_path=/opt/vc/include/interface/vmcs_host/khronos/IL \
+         -D %{_omx_opt}target=rpi \
+       %else
+         %ifarch riscv64
+           -D %{_omx_opt}target=generic \
+         %else
+           %ifarch aarch64
+             -D %{_omx_opt}target=exynos64 \
+           %else
+             -D %{_omx_opt}target=exynos \
+             -D %{_omx_opt}vp9=true \
+           %endif # arch aarch64
+         %endif # arch riscv64
+       %endif # target
+     %endif # plugin
+   %endif # arch
+   %if "%{plugin}" == "all" || "%{plugin}" == "es"
+     -D %{_es_opt}introspection=disabled \
+     -D %{_es_opt}tools=enabled \
+     -D %{_es_opt}xptv=enabled \
+     -D %{_es_opt}python=enabled \
+   %endif # plugin
+ %endif # profile
+   build
+ ninja -C build all %{?_smp_mflags}
+ %if "%{plugin}" != "all"
+ popd
+ %endif
+ #######################################################
+ ## Install
+ #######################################################
+ %install
+ rm -rf %{buildroot}
+ export DESTDIR=%{buildroot}
+ ninja -C %{_source_path}/build install
+ mkdir -p %{buildroot}%{_datadir}/gstreamer-%{gst_branch}/presets
+ rm -rf %{buildroot}%{_datadir}/gstreamer-%{gst_branch}/encoding-profiles
+ rm -rf %{buildroot}%{_datadir}/locale
+ %clean
+ rm -rf $RPM_BUILD_ROOT
+ %post -p /sbin/ldconfig
+ %postun -p /sbin/ldconfig
+ #######################################################
+ ## Packaging rpms
+ #######################################################
+ ###################### gstreamer ######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "core"
+ %files -n gstreamer
+ %manifest gstreamer.manifest
+ %defattr(-, root, root)
+ %license subprojects/gstreamer/COPYING
+ %dir %{_datadir}/gstreamer-%{gst_branch}
+ %dir %{_datadir}/gstreamer-%{gst_branch}/presets
+ %dir %{_lib_gstreamer_dir}
+ %{_lib_gstreamer_dir}/libgstcoreelements.so
+ %{_lib_gstreamer_dir}/libgstcoretracers.so
+ %dir %{_libexecdir}/gstreamer-%{gst_branch}
+ %{_libexecdir}/gstreamer-%{gst_branch}/gst-hotdoc-plugins-scanner
+ %{_libexecdir}/gstreamer-%{gst_branch}/gst-plugin-scanner
+ %{_libexecdir}/gstreamer-%{gst_branch}/gst-ptp-helper
+ %exclude %{_libexecdir}/gstreamer-%{gst_branch}/gst-plugins-doc-cache-generator
+ %{_libdir}/libgstbase-%{gst_branch}.so.*
+ %{_libdir}/libgstcontroller-%{gst_branch}.so.*
+ %{_libdir}/libgstnet-%{gst_branch}.so.*
+ %{_libdir}/libgstcheck-%{gst_branch}.so.*
+ %{_libdir}/libgstreamer-%{gst_branch}.so.*
+ %if "%{_enable_introspection}" == "1"
+ %{_lib_girepository}/Gst-%{gst_branch}.typelib
+ %{_lib_girepository}/GstBase-%{gst_branch}.typelib
+ %{_lib_girepository}/GstController-%{gst_branch}.typelib
+ %{_lib_girepository}/GstNet-%{gst_branch}.typelib
+ %{_lib_girepository}/GstCheck-%{gst_branch}.typelib
+ %endif #introspection
+ %{_datadir}/gdb/auto-load/usr/%{_lib}/libgstreamer-%{gst_branch}*-gdb.py
+ %{_datadir}/gstreamer-%{gst_branch}/gdb/glib_gobject_helper.py
+ %{_datadir}/gstreamer-%{gst_branch}/gdb/gst_gdb.py
+ %files -n gstreamer-utils
+ %manifest gstreamer.manifest
+ %defattr(-, root, root)
+ %license subprojects/gstreamer/COPYING
+ %{_bindir}/gst-inspect-%{gst_branch}
+ %{_bindir}/gst-launch-%{gst_branch}
+ %{_bindir}/gst-stats-%{gst_branch}
+ %{_bindir}/gst-typefind-%{gst_branch}
+ %exclude %doc %{_mandir}/man?/*-%{gst_branch}.*
+ %files -n gstreamer-devel
+ %manifest gstreamer.manifest
+ %defattr(-, root, root)
+ %{_datadir}/aclocal/gst-element-check-%{gst_branch}.m4
+ %{_includedir}/gstreamer-%{gst_branch}/gst/*.h
+ %{_includedir}/gstreamer-%{gst_branch}/gst/base/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/controller/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/net/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/check/*
+ %{_libdir}/libgstbase-%{gst_branch}.so
+ %{_libdir}/libgstcontroller-%{gst_branch}.so
+ %{_libdir}/libgstnet-%{gst_branch}.so
+ %{_libdir}/libgstcheck-%{gst_branch}.so
+ %{_libdir}/libgstreamer-%{gst_branch}.so
+ %{_libdir}/pkgconfig/gstreamer-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-base-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-controller-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-net-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-check-%{gst_branch}.pc
+ %if "%{_enable_introspection}" == "1"
+ %{_datadir}/gir-%{gst_branch}/Gst-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstBase-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstController-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstNet-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstCheck-%{gst_branch}.gir
+ %endif #introspection
+ %changelog
+ %endif
+ ###################### gst-plugins-base ######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "base"
+ %files -n gst-plugins-base
+ %manifest gst-plugins-base.manifest
+ %defattr(-, root, root)
+ %license subprojects/gst-plugins-base/COPYING
+ %{_lib_gstreamer_dir}/libgstalsa.so
+ %{_lib_gstreamer_dir}/libgstapp.so
+ %{_lib_gstreamer_dir}/libgstaudioconvert.so
+ %{_lib_gstreamer_dir}/libgstaudiomixer.so
+ %{_lib_gstreamer_dir}/libgstaudiorate.so
+ %{_lib_gstreamer_dir}/libgstaudioresample.so
+ %{_lib_gstreamer_dir}/libgstaudiotestsrc.so
+ %{_lib_gstreamer_dir}/libgstcompositor.so
+ %{_lib_gstreamer_dir}/libgstgio.so
+ %{_lib_gstreamer_dir}/libgstogg.so
+ %{_lib_gstreamer_dir}/libgstopus.so
+ %{_lib_gstreamer_dir}/libgstoverlaycomposition.so
+ %{_lib_gstreamer_dir}/libgstpbtypes.so
+ %{_lib_gstreamer_dir}/libgstplayback.so
+ %{_lib_gstreamer_dir}/libgstrawparse.so
+ %{_lib_gstreamer_dir}/libgstsubparse.so
+ %{_lib_gstreamer_dir}/libgsttcp.so
+ %{_lib_gstreamer_dir}/libgsttheora.so
+ %{_lib_gstreamer_dir}/libgsttypefindfunctions.so
+ %{_lib_gstreamer_dir}/libgstvideoconvertscale.so
+ %{_lib_gstreamer_dir}/libgstvideorate.so
+ %{_lib_gstreamer_dir}/libgstvideotestsrc.so
+ %{_lib_gstreamer_dir}/libgstvolume.so
+ %{_lib_gstreamer_dir}/libgstvorbis.so
+ %if %{with x}
+ %{_lib_gstreamer_dir}/libgstximagesink.so
+ %{_lib_gstreamer_dir}/libgstxvimagesink.so
+ %endif
+ %{_libdir}/libgstallocators-%{gst_branch}.so.*
+ %{_libdir}/libgstapp-%{gst_branch}.so.*
+ %{_libdir}/libgstaudio-%{gst_branch}.so.*
+ %{_libdir}/libgstfft-%{gst_branch}.so.*
+ %{_libdir}/libgstpbutils-%{gst_branch}.so.*
+ %{_libdir}/libgstriff-%{gst_branch}.so.*
+ %{_libdir}/libgstrtp-%{gst_branch}.so.*
+ %{_libdir}/libgstrtsp-%{gst_branch}.so.*
+ %{_libdir}/libgstsdp-%{gst_branch}.so.*
+ %{_libdir}/libgsttag-%{gst_branch}.so.*
+ %{_libdir}/libgstvideo-%{gst_branch}.so.*
+ %if "%{tizen_profile_name}" != "tv"
+ %{_lib_gstreamer_dir}/libgstencoding.so
+ %endif #profile
+ %if "%{_enable_introspection}" == "1"
+ %{_lib_girepository}/GstAllocators-%{gst_branch}.typelib
+ %{_lib_girepository}/GstApp-%{gst_branch}.typelib
+ %{_lib_girepository}/GstAudio-%{gst_branch}.typelib
+ %{_lib_girepository}/GstPbutils-%{gst_branch}.typelib
+ %{_lib_girepository}/GstRtp-%{gst_branch}.typelib
+ %{_lib_girepository}/GstRtsp-%{gst_branch}.typelib
+ %{_lib_girepository}/GstSdp-%{gst_branch}.typelib
+ %{_lib_girepository}/GstTag-%{gst_branch}.typelib
+ %{_lib_girepository}/GstVideo-%{gst_branch}.typelib
+ %endif #introspection
+ %dir %{_datadir}/gst-plugins-base/
+ %dir %{_datadir}/gst-plugins-base/%{gst_branch}/
+ %{_datadir}/gst-plugins-base/%{gst_branch}/license-translations.dict
+ %if "%{tizen_profile_name}" != "tv"
+ %files -n gst-plugins-base-extension-adder
+ %{_lib_gstreamer_dir}/libgstadder.so
+ %license subprojects/gst-plugins-base/COPYING
+ %endif # profile
+ %files -n gst-plugins-base-devel
+ %manifest gst-plugins-base.manifest
+ %defattr(-, root, root)
+ %{_includedir}/gstreamer-%{gst_branch}/gst/allocators/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/app/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/audio/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/fft/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/pbutils/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/riff/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/rtp/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/rtsp/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/sdp/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/tag/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/video/*
+ %if "%{plugin}" == "all" && "%{tizen_profile_name}" != "tv"
+ %exclude %{_includedir}/gstreamer-%{gst_branch}/gst/audio/audio-bad-prelude.h
+ %exclude %{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstnonstreamaudiodecoder.h
+ %exclude %{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstplanaraudioadapter.h
+ %endif
+ %{_libdir}/libgstallocators-%{gst_branch}.so
+ %{_libdir}/libgstapp-%{gst_branch}.so
+ %{_libdir}/libgstaudio-%{gst_branch}.so
+ %{_libdir}/libgstfft-%{gst_branch}.so
+ %{_libdir}/libgstpbutils-%{gst_branch}.so
+ %{_libdir}/libgstriff-%{gst_branch}.so
+ %{_libdir}/libgstrtp-%{gst_branch}.so
+ %{_libdir}/libgstrtsp-%{gst_branch}*.so
+ %{_libdir}/libgstsdp-%{gst_branch}.so
+ %{_libdir}/libgsttag-%{gst_branch}.so
+ %{_libdir}/libgstvideo-%{gst_branch}.so
+ %{_libdir}/pkgconfig/gstreamer-allocators-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-app-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-audio-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-fft-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-pbutils-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-plugins-base-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-riff-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-rtp-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-rtsp-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-sdp-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-tag-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-video-%{gst_branch}.pc
+ %if "%{_enable_introspection}" == "1"
+ %{_datadir}/gir-%{gst_branch}/GstAllocators-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstApp-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstAudio-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstPbutils-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstRtp-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstRtsp-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstSdp-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstTag-%{gst_branch}.gir
+ %{_datadir}/gir-%{gst_branch}/GstVideo-%{gst_branch}.gir
+ %endif # introspection
+ %endif # plugin
+ ###################### gst-plugins-good ######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "good"
+ %files -n gst-plugins-good
+ %manifest gst-plugins-good.manifest
+ %defattr(-, root, root)
+ %license subprojects/gst-plugins-good/COPYING
+ %{_lib_gstreamer_dir}/libgstadaptivedemux2.so
+ %{_lib_gstreamer_dir}/libgstalaw.so
+ %{_lib_gstreamer_dir}/libgstapetag.so
+ %{_lib_gstreamer_dir}/libgstaudiofx.so
+ %{_lib_gstreamer_dir}/libgstaudioparsers.so
+ %{_lib_gstreamer_dir}/libgstautodetect.so
+ %{_lib_gstreamer_dir}/libgstavi.so
+ %{_lib_gstreamer_dir}/libgstdebug.so
+ %{_lib_gstreamer_dir}/libgstdeinterlace.so
+ %{_lib_gstreamer_dir}/libgsticydemux.so
+ %{_lib_gstreamer_dir}/libgstid3demux.so
+ %{_lib_gstreamer_dir}/libgstinterleave.so
+ %{_lib_gstreamer_dir}/libgstisomp4.so
+ %{_lib_gstreamer_dir}/libgstjpeg.so
+ %{_lib_gstreamer_dir}/libgstmulaw.so
+ %{_lib_gstreamer_dir}/libgstnavigationtest.so
+ %{_lib_gstreamer_dir}/libgstpulseaudio.so
+ %{_lib_gstreamer_dir}/libgstreplaygain.so
+ %{_lib_gstreamer_dir}/libgstrtp.so
+ %{_lib_gstreamer_dir}/libgstrtpmanager.so
+ %{_lib_gstreamer_dir}/libgstrtsp.so
+ %{_lib_gstreamer_dir}/libgstsoup.so
+ %{_lib_gstreamer_dir}/libgstudp.so
+ %{_lib_gstreamer_dir}/libgstvideocrop.so
+ %{_lib_gstreamer_dir}/libgstvideofilter.so
+ %{_lib_gstreamer_dir}/libgstvpx.so
+ %{_lib_gstreamer_dir}/libgstwavenc.so
+ %{_lib_gstreamer_dir}/libgstwavparse.so
+ %if %{with x}
+ %{_lib_gstreamer_dir}/libgstximagesrc.so
+ %endif # x
+ %if "%{tizen_profile_name}" != "tv"
+ %{_lib_gstreamer_dir}/libgsteffectv.so
+ %{_lib_gstreamer_dir}/libgstflv.so
+ %{_lib_gstreamer_dir}/libgstimagefreeze.so
+ %{_lib_gstreamer_dir}/libgstmatroska.so
+ %{_lib_gstreamer_dir}/libgstmultifile.so
+ %{_lib_gstreamer_dir}/libgstsmpte.so
+ %{_lib_gstreamer_dir}/libgstvideobox.so
+ %{_lib_gstreamer_dir}/libgstvideomixer.so
+ %else # profile
+ %ifnarch %{arm} aarch64
+ %{_lib_gstreamer_dir}/libgstvideo4linux2.so
+ %endif # arch
+ %endif # profile
+ %{_datadir}/gstreamer-%{gst_branch}/presets/GstQTMux.prs
+ %{_datadir}/gstreamer-%{gst_branch}/presets/GstVP8Enc.prs
+ %files -n gst-plugins-good-extra
+ %manifest gst-plugins-good.manifest
+ %defattr(-, root, root)
+ %license subprojects/gst-plugins-good/COPYING
+ %if 0%{?ENABLE_AALIB}
+ %{_lib_gstreamer_dir}/libgstaasink.so
+ %endif
+ %if "%{tizen_profile_name}" != "tv"
+ %{_lib_gstreamer_dir}/libgstimagefreeze.so
+ %{_lib_gstreamer_dir}/libgstpng.so
+ %endif
+ %if "%{tizen_profile_name}" != "tv"
+ %files -n gst-plugins-good-cairo
+ %manifest gst-plugins-good.manifest
+ %defattr(-, root, root)
+ %license subprojects/gst-plugins-good/COPYING
+ %{_lib_gstreamer_dir}/libgstcairo.so
+ %files -n gst-plugins-good-v4l2
+ %manifest gst-plugins-good.manifest
+ %defattr(-, root, root)
+ %license subprojects/gst-plugins-good/COPYING
+ %{_lib_gstreamer_dir}/libgstvideo4linux2.so
+ %endif
+ %endif
+ ###################### gst-plugins-bad ######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "bad"
+ %files -n gst-plugins-bad
+ %manifest gst-plugins-bad.manifest
+ %defattr(-, root, root)
+ %license subprojects/gst-plugins-bad/COPYING
+ %if "%{tizen_profile_name}" != "tv"
+ %{_lib_gstreamer_dir}/libgstautoconvert.so
+ %{_lib_gstreamer_dir}/libgstcamerabin.so
+ %{_lib_gstreamer_dir}/libgstcoloreffects.so
+ %{_lib_gstreamer_dir}/libgstdash.so
+ %{_lib_gstreamer_dir}/libgstgaudieffects.so
+ %{_lib_gstreamer_dir}/libgstgdp.so
+ %{_lib_gstreamer_dir}/libgsthls.so
+ %{_lib_gstreamer_dir}/libgstid3tag.so
+ %{_lib_gstreamer_dir}/libgstjpegformat.so
+ %{_lib_gstreamer_dir}/libgstmpegpsdemux.so
+ %{_lib_gstreamer_dir}/libgstrist.so
+ %{_lib_gstreamer_dir}/libgstsmoothstreaming.so
+ %{_lib_gstreamer_dir}/libgstsrt.so
+ %{_libdir}/libgstadaptivedemux-%{gst_branch}.so.0*
+ %{_libdir}/libgstbadaudio-%{gst_branch}.so.0*
+ %{_libdir}/libgstbasecamerabinsrc-%{gst_branch}.so.0*
+ %{_libdir}/libgstcuda-%{gst_branch}.so.0*
+ %{_libdir}/libgstinsertbin-%{gst_branch}.so.0*
+ %{_libdir}/libgstisoff-%{gst_branch}.so.0*
+ %{_libdir}/libgstphotography-%{gst_branch}.so.0*
+ %{_libdir}/libgstplay-%{gst_branch}.so.0*
+ %{_libdir}/libgstplayer-%{gst_branch}.so.0*
+ %{_libdir}/libgsturidownloader-%{gst_branch}.so.0*
+ %if 0%{?enable_gl:1}
+ %{_lib_gstreamer_dir}/libgstopengl.so
+ %{_libdir}/libgstgl-%{gst_branch}.so.0*
+ %endif
+ %endif # profile
+ %{_lib_gstreamer_dir}/libgstaes.so
+ %{_lib_gstreamer_dir}/libgstaudiobuffersplit.so
+ %{_lib_gstreamer_dir}/libgstaudiolatency.so
+ %{_lib_gstreamer_dir}/libgstaudiomixmatrix.so
+ %{_lib_gstreamer_dir}/libgstdebugutilsbad.so
+ %{_lib_gstreamer_dir}/libgstdtls.so
+ %{_lib_gstreamer_dir}/libgstipcpipeline.so
+ %{_lib_gstreamer_dir}/libgstmidi.so
+ %{_lib_gstreamer_dir}/libgstmpegtsdemux.so
+ %{_lib_gstreamer_dir}/libgstmpegtsmux.so
+ %{_lib_gstreamer_dir}/libgstnetsim.so
+ %{_lib_gstreamer_dir}/libgstnice.so
+ %{_lib_gstreamer_dir}/libgstopenal.so
+ %{_lib_gstreamer_dir}/libgstopusparse.so
+ %{_lib_gstreamer_dir}/libgstproxy.so
+ %if "%{tizen_profile_name}" != "tv"
+ %{_lib_gstreamer_dir}/libgstrtpmanagerbad.so
+ %endif
+ %{_lib_gstreamer_dir}/libgstsctp.so
+ %{_lib_gstreamer_dir}/libgstsdpelem.so
+ %{_lib_gstreamer_dir}/libgstshm.so
+ %{_lib_gstreamer_dir}/libgstsoundtouch.so
+ %{_lib_gstreamer_dir}/libgstsrtp.so
+ %{_lib_gstreamer_dir}/libgsttimecode.so
+ %{_lib_gstreamer_dir}/libgstvideoframe_audiolevel.so
+ %{_lib_gstreamer_dir}/libgstvideoparsersbad.so
+ %if %{with wayland}
+ %{_lib_gstreamer_dir}/libgstwaylandsink.so
+ %endif
+ %{_lib_gstreamer_dir}/libgstwebrtc.so
+ %{_libdir}/libgstcodecparsers-%{gst_branch}.so.0*
+ %{_libdir}/libgstcodecs-%{gst_branch}.so.0*
+ %{_libdir}/libgstmpegts-%{gst_branch}.so.0*
+ %{_libdir}/libgstsctp-%{gst_branch}.so.0*
+ %{_libdir}/libgsttranscoder-%{gst_branch}.so.0*
+ %if %{with wayland}
+ %{_libdir}/libgstwayland-%{gst_branch}.so.0*
+ %endif
+ %{_libdir}/libgstwebrtc-%{gst_branch}.so.0*
+ %{_libdir}/libgstwebrtcnice-%{gst_branch}.so.0*
+ %exclude %{_bindir}/gst-transcoder-%{gst_branch}
+ %files -n gst-plugins-bad-devel
+ %manifest gst-plugins-bad.manifest
+ %defattr(-, root, root)
+ %if "%{tizen_profile_name}" != "tv"
+ %{_includedir}/gstreamer-%{gst_branch}/gst/audio/audio-bad-prelude.h
+ %{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstnonstreamaudiodecoder.h
+ %{_includedir}/gstreamer-%{gst_branch}/gst/audio/gstplanaraudioadapter.h
+ %{_includedir}/gstreamer-%{gst_branch}/gst/basecamerabinsrc/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/cuda/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/insertbin/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/interfaces/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/isoff/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/play/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/player/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/uridownloader/*
+ %endif
+ %{_includedir}/gstreamer-%{gst_branch}/gst/codecparsers/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/mpegts/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/sctp/*
+ %{_includedir}/gstreamer-%{gst_branch}/gst/transcoder/*
+ %if %{with wayland}
+ %{_includedir}/gstreamer-%{gst_branch}/gst/wayland/*
+ %endif
+ %{_includedir}/gstreamer-%{gst_branch}/gst/webrtc/*
+ %if "%{tizen_profile_name}" != "tv"
+ %{_libdir}/libgstadaptivedemux*.so
+ %{_libdir}/libgstbadaudio*.so
+ %{_libdir}/libgstbasecamerabinsrc*.so
+ %{_libdir}/libgstcuda*.so
+ %{_libdir}/libgstinsertbin*.so
+ %{_libdir}/libgstisoff*.so
+ %{_libdir}/libgstphotography*.so
+ %{_libdir}/libgstplay*.so
+ %{_libdir}/libgsturidownloader*.so
+ %if 0%{?enable_gl:1}
+ %{_lib_gstreamer_dir}/include/gst/gl/*
+ %endif # gl
+ %endif # profile
+ %{_libdir}/libgstcodecparsers*.so
+ %{_libdir}/libgstcodecs*.so
+ %{_libdir}/libgstmpegts*.so
+ %{_libdir}/libgstsctp*.so
+ %{_libdir}/libgsttranscoder*.so
+ %if %{with wayland}
+ %{_libdir}/libgstwayland*.so
+ %endif
+ %{_libdir}/libgstwebrtc*.so
+ %{_libdir}/pkgconfig/gstreamer-codecparsers-%{gst_branch}.pc
+ %if "%{tizen_profile_name}" != "tv"
+ %{_libdir}/pkgconfig/gstreamer-bad-audio-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-cuda-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-insertbin-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-photography-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-play-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-player-%{gst_branch}.pc
+ %if 0%{?enable_gl:1}
+ %{_libdir}/pkgconfig/gstreamer-gl-*.pc
+ %endif # gl
+ %endif # profile
+ %{_libdir}/pkgconfig/gstreamer-mpegts-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-plugins-bad-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-sctp-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-transcoder-%{gst_branch}.pc
+ %if %{with wayland}
+ %{_libdir}/pkgconfig/gstreamer-wayland-%{gst_branch}.pc
+ %endif
+ %{_libdir}/pkgconfig/gstreamer-webrtc-%{gst_branch}.pc
+ %{_libdir}/pkgconfig/gstreamer-webrtc-nice-%{gst_branch}.pc
+ %endif # plugin
+ ###################### gst-plugins-ugly ######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "ugly"
+ %files -n gst-plugins-ugly
+ %manifest gst-plugins-ugly.manifest
+ %defattr(-,root,root,-)
+ %license subprojects/gst-plugins-ugly/COPYING
+ %if "%{tizen_profile_name}" != "tv"
+ %{_lib_gstreamer_dir}/libgstamrnb.so
+ %{_lib_gstreamer_dir}/libgstasf.so
+ %exclude %{_datadir}/gstreamer-%{gst_branch}/presets/GstAmrnbEnc.prs
+ %endif # profile
+ %{_lib_gstreamer_dir}/libgstamrwbdec.so
+ %endif # plugin
+ ######################## gst-libav ###########################
+ %if "%{plugin}" == "all" || "%{plugin}" == "libav"
+ %files -n gst-libav
+ %manifest gst-libav.manifest
+ %defattr(-,root,root,-)
+ %license subprojects/gst-libav/COPYING
+ %{_lib_gstreamer_dir}/libgstlibav.so
+ %endif
+ ###################### gst-rtsp-server #######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "rs"
+ %files -n gst-rtsp-server
+ %manifest gst-rtsp-server.manifest
+ %defattr(-,root,root,-)
+ %license subprojects/gst-rtsp-server/COPYING
+ %{_libdir}/libgstrtspserver*.so.*
+ %{_lib_gstreamer_dir}/libgstrtspclientsink.so
+ %files -n gst-rtsp-server-devel
+ %defattr(-,root,root,-)
+ %{_libdir}/libgstrtspserver*.so
+ %{_includedir}/gstreamer-%{gst_branch}/gst/rtsp-server/rtsp-*.h
+ %{_includedir}/gstreamer-%{gst_branch}/gst/rtsp-server/gstwfd*.h
+ %{_libdir}/pkgconfig/gstreamer-rtsp-server-%{gst_branch}.pc
+ %endif
+ %if "%{tizen_profile_name}" != "tv"
+ ########################## gst-omx ###########################
+ %ifarch %{arm} aarch64 riscv64
+ %if "%{plugin}" == "all" || "%{plugin}" == "omx"
+ %files -n gst-omx
+ %manifest gst-omx.manifest
+ %defattr(-,root,root,-)
+ %license subprojects/gst-omx/COPYING
+ %{_lib_gstreamer_dir}/libgstomx.so
+ %endif
+ %endif # arch
+ ###################### gst-editing-services #######################
+ %if "%{plugin}" == "all" || "%{plugin}" == "es"
+ %files -n gst-editing-services
+ %manifest gst-editing-services.manifest
+ %defattr(-,root,root,-)
+ %license subprojects/gst-editing-services/COPYING
+ %{_libdir}/libges-%{gst_branch}.so.*
+ %{_lib_gstreamer_dir}/libgstges.so
+ %{_lib_gstreamer_dir}/libgstnle.so
+ %exclude %{_libdir}/gst-validate-launcher/python/launcher/apps/geslaunch.py
+ %exclude %{_datadir}/gstreamer-%{gst_branch}/validate/scenarios/ges-edit-clip-while-paused.scenario
+ %{_bindir}/ges-launch-%{gst_branch}
+ %files -n gst-editing-services-devel
+ %{_libdir}/libges-%{gst_branch}.so
+ %{_includedir}/gstreamer-%{gst_branch}/ges/*
+ %{_libdir}/pkgconfig/gst-editing-services-%{gst_branch}.pc
+ %endif # plugin
+ %endif # profile
Simple merge
Simple merge
index 58c209929bc51d6586337b1af970d98cc879eb3b,a5a97573e95ecdc8736bab9b6314cd1d8ba5bcd3..e62b91c14097d57f398e0a5c3510d714311fae3e
@@@ -2284,9 -2502,11 +2505,13 @@@ gst_v4l2_buffer_pool_flush (GstV4l2Obje
  
    pool = GST_V4L2_BUFFER_POOL (bpool);
  
 +  GST_OBJECT_LOCK (pool);
+ #ifdef TIZEN_FEATURE_V4L2_TBM_SUPPORT
+   gst_v4l2_buffer_pool_streamoff (pool, FALSE);
+ #else
    gst_v4l2_buffer_pool_streamoff (pool);
+ #endif
 +  GST_OBJECT_UNLOCK (pool);
  
    if (!V4L2_TYPE_IS_OUTPUT (pool->obj->type)) {
      ret = gst_v4l2_buffer_pool_flush_events (v4l2object);
index d561a390c3d2176a2518643ee18ad383b43d2120,e7c25cc94ff295f9cba8dae44929af51b242c6e7..d561a390c3d2176a2518643ee18ad383b43d2120
mode 100644,100755..100755
Simple merge
Simple merge