From: Gilbok Lee Date: Tue, 26 Dec 2023 06:02:43 +0000 (+0900) Subject: Merge branch 'tizen_gst_1.22.7' into tizen_gst_1.22.8 X-Git-Tag: accepted/tizen/unified/20240105.105444^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F50%2F303350%2F2;p=platform%2Fupstream%2Fgstreamer.git Merge branch 'tizen_gst_1.22.7' into tizen_gst_1.22.8 Change-Id: I98d135750db876b7e11c685e671a632a59b3b4aa --- 6de6b26fbebfa17d4c7468985b8872b1f9779375 diff --cc packaging/gstreamer.spec index 0000000,5cb78b7..76f77ce mode 000000,100644..100644 --- a/packaging/gstreamer.spec +++ b/packaging/gstreamer.spec @@@ -1,0 -1,1334 +1,1334 @@@ + %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.7 ++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 diff --cc subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c index 58c2099,a5a9757..e62b91c --- a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c +++ b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2bufferpool.c @@@ -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); diff --cc subprojects/gst-rtsp-server/NEWS index d561a39,e7c25cc..d561a39 mode 100644,100755..100755 --- a/subprojects/gst-rtsp-server/NEWS +++ b/subprojects/gst-rtsp-server/NEWS