--- /dev/null
- upstream_branch = upstream/1.12
+[general]
++upstream_branch = upstream/1.16
+upstream_tag = ${upstreamversion}
DIST_SUBDIRS = \
gst gst-libs sys ext pkgconfig \
- m4 common docs tests po tools
+ m4 common tests po tools
- # include before EXTRA_DIST for win32 assignment
- include $(top_srcdir)/common/win32.mak
-
EXTRA_DIST = \
depcomp \
AUTHORS COPYING NEWS README RELEASE REQUIREMENTS \
AC_SUBST(LIBUSB_CFLAGS)
AC_SUBST(LIBUSB_LIBS)
- dnl *** NVENC ***
- translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
- AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
+dnl check for tv profile
+AC_ARG_ENABLE(tv, AC_HELP_STRING([--enable-tv], [enable tv profile]),
+ [
+ case "${enableval}" in
+ yes) TV_PROFILE=yes ;;
+ no) TV_PROFILE=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-tv) ;;
+ esac
+ ],
+ [TV_PROFILE=no])
+AM_CONDITIONAL([TV_PROFILE], [test "x$TV_PROFILE" = "xyes"])
+
+ dnl *** CUDA ***
+ translit(dnm, m, l) AM_CONDITIONAL(USE_CUDA, true)
+ AG_GST_CHECK_FEATURE(CUDA, [NVIDIA CUDA API],, [
AC_ARG_WITH([cuda-prefix],
AS_HELP_STRING([--with-cuda-prefix],
[Use the provided prefix for detecting the cuda installation]),
],[
AM_PATH_LIBGCRYPT([1.2.0], [
AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if libgcrypt is available])
- HAVE_HLS="yes"
],[
- PKG_CHECK_MODULES(OPENSSL, openssl, [
+ PKG_CHECK_MODULES(OPENSSL, openssl1.1, [
AC_DEFINE(HAVE_OPENSSL, 1, [Define if openssl is available])
- HAVE_HLS="yes"
- ],[
- HAVE_HLS="no"
])
])
])
gst_hls_master_playlist_get_variant_for_bitrate (hlsdemux->master,
NULL, demux->connection_speed);
}
-
+#endif
- if (variant)
- gst_hls_demux_set_current_variant (hlsdemux, variant);
+ if (variant) {
+ GST_INFO_OBJECT (hlsdemux, "selected %s", variant->name);
+ gst_hls_demux_set_current_variant (hlsdemux, variant); // FIXME: inline?
+ }
/* get the selected media playlist (unless the inital list was one already) */
if (!hlsdemux->master->is_simple) {
# compiler and linker flags used to compile this plugin, set in configure.ac
libgstopenal_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(OPENAL_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
-libgstopenal_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ $(GST_BASE_LIBS) $(GST_LIBS) $(OPENAL_LIBS)
+libgstopenal_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ -lgstvideo-@GST_API_VERSION@ $(GST_BASE_LIBS) $(GST_LIBS) $(OPENAL_LIBS)
libgstopenal_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
- libgstopenal_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
# headers we need but don't want installed
noinst_HEADERS = gstopenalsink.h gstopenalsrc.h
OPENCV_DIR=opencv
endif
+if TV_PROFILE
+SUBDIRS = codecparsers mpegts $(WAYLAND_DIR)
+else
SUBDIRS = uridownloader adaptivedemux interfaces basecamerabinsrc codecparsers \
- insertbin mpegts base video audio player isoff allocators $(GL_DIR) $(WAYLAND_DIR) \
+ insertbin mpegts audio sctp player isoff webrtc $(WAYLAND_DIR) \
$(OPENCV_DIR)
+endif
noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
-
+if TV_PROFILE
+DIST_SUBDIRS = codecparsers mpegts wayland
+else
- DIST_SUBDIRS = uridownloader adaptivedemux interfaces gl basecamerabinsrc \
- codecparsers insertbin mpegts wayland opencv base video audio player isoff allocators
- endif
-
- #dependencies
- video, audio: base
- gl: allocators
+ DIST_SUBDIRS = uridownloader adaptivedemux interfaces basecamerabinsrc \
+ codecparsers insertbin mpegts wayland opencv audio player isoff sctp webrtc
++endif
adaptivedemux: uridownloader
+if TV_PROFILE
+INDEPENDENT_SUBDIRS = \
+ codecparsers mpegts $(WAYLAND_DIR)
+else
INDEPENDENT_SUBDIRS = \
interfaces basecamerabinsrc codecparsers insertbin uridownloader \
- mpegts base player isoff allocators $(GL_DIR) $(WAYLAND_DIR) $(OPENCV_DIR)
- endif
+ mpegts player isoff sctp $(WAYLAND_DIR) $(OPENCV_DIR)
++endif
.PHONY: independent-subdirs $(INDEPENDENT_SUBDIRS)
g_free (demux->manifest_base_uri);
demux->manifest_uri = NULL;
demux->manifest_base_uri = NULL;
+#ifdef TIZEN_FEATURE_ADAPTIVE_MODIFICATION
+ if (demux->user_agent)
+ g_free (demux->user_agent);
+ if (demux->cookies)
+ g_strfreev (demux->cookies);
+ demux->user_agent = NULL;
+ demux->cookies = NULL;
+#endif
gst_adapter_clear (demux->priv->input_adapter);
- demux->priv->have_manifest = FALSE;
+ g_atomic_int_set (&demux->priv->have_manifest, FALSE);
gst_segment_init (&demux->segment, GST_FORMAT_TIME);
g_clear_error (&err); \
} G_STMT_END
+ /* DEPRECATED */
#define GST_ADAPTIVE_DEMUX_FLOW_END_OF_FRAGMENT GST_FLOW_CUSTOM_SUCCESS_1
+#ifdef TIZEN_FEATURE_ADAPTIVE_MODIFICATION
+#define DEFAULT_ADAPTIVE_RETRY -1
+#define DEFAULT_ADAPTIVE_TIMEOUT -1
+#define PLAYLIST_ADAPTIVE_RETRY 3
+#define PLAYLIST_ADAPTIVE_TIMEOUT 2
+#define DEFAULT_ADAPTIVE_VARIANT -1
+#endif
typedef struct _GstAdaptiveDemuxStreamFragment GstAdaptiveDemuxStreamFragment;
typedef struct _GstAdaptiveDemuxStream GstAdaptiveDemuxStream;
GST_ADAPTIVE_DEMUX_API
GDateTime *gst_adaptive_demux_get_client_now_utc (GstAdaptiveDemux * demux);
+ GST_ADAPTIVE_DEMUX_API
+ gboolean gst_adaptive_demux_is_running (GstAdaptiveDemux * demux);
+
+#ifdef TIZEN_FEATURE_AVOID_PAD_SWITCHING
++GST_ADAPTIVE_DEMUX_API
+gboolean gst_adaptive_demux_stream_check_switch_pad (GstAdaptiveDemuxStream * stream,
+ GstCaps * caps, GstAdaptiveDemuxStreamCreatePadFunc create_pad_func);
+
++GST_ADAPTIVE_DEMUX_API
+void gst_adaptive_demux_push_fragment_finished_event (GstAdaptiveDemux * demux,
+ GstAdaptiveDemuxStream * stream);
+#endif
+
G_END_DECLS
#endif
}
}
- base->last_seek_seqnum = (guint32) - 1;
+#ifdef TIZEN_FEATURE_AVOID_PAD_SWITCHING
+static void
+mpegts_base_clear (MpegTSBase * base)
+{
+ mpegts_packetizer_clear (base->packetizer);
+ memset (base->is_pes, 0, 1024);
+ memset (base->known_psi, 0, 1024);
+
+ /* FIXME : Actually these are not *always* know SI streams
+ * depending on the variant of mpeg-ts being used. */
+
+ /* Known PIDs : PAT, TSDT, IPMP CIT */
+ MPEGTS_BIT_SET (base->known_psi, 0);
+ MPEGTS_BIT_SET (base->known_psi, 2);
+ MPEGTS_BIT_SET (base->known_psi, 3);
+ /* TDT, TOT, ST */
+ MPEGTS_BIT_SET (base->known_psi, 0x14);
+ /* network synchronization */
+ MPEGTS_BIT_SET (base->known_psi, 0x15);
+
+ /* ATSC */
+ MPEGTS_BIT_SET (base->known_psi, 0x1ffb);
+
+ if (base->pat) {
+ g_ptr_array_unref (base->pat);
+ base->pat = NULL;
+ }
+
+ gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED);
++ base->last_seek_seqnum = GST_SEQNUM_INVALID;
+
+ base->seen_pat = FALSE;
+ base->seek_offset = -1;
+
+ g_hash_table_foreach_remove (base->programs, (GHRFunc) remove_each_program,
+ base);
+}
+#endif
static void
mpegts_base_reset (MpegTSBase * base)
GstTsDemuxKeyFrameScanFunction scan_function;
TSDemuxH264ParsingInfos h264infos;
TSDemuxJP2KParsingInfos jp2kInfos;
- #endif
+#ifdef TIZEN_FEATURE_AVOID_PAD_SWITCHING
+ /* For pad matching to avoid switching pads */
+ TSDemuxStream *matched_stream;
++#endif
};
#define VIDEO_CAPS \
static void gst_ts_demux_stream_flush (TSDemuxStream * stream,
GstTSDemux * demux, gboolean hard);
+#ifdef TIZEN_FEATURE_AVOID_PAD_SWITCHING
+static void gst_ts_demux_remove_stream (GstTSDemux * tsdemux,
+ TSDemuxStream * stream, gboolean push_eos);
+static void gst_ts_demux_remove_old_streams (GstTSDemux * demux,
+ gboolean push_eos);
+#endif
static gboolean push_event (MpegTSBase * base, GstEvent * event);
+ static gboolean sink_query (MpegTSBase * base, GstQuery * query);
static void gst_ts_demux_check_and_sync_streams (GstTSDemux * demux,
GstClockTime time);
GST_STREAM_FLAG_SPARSE);
}
stream->sparse = sparse;
- gst_pad_push_event (pad, event);
+#endif
gst_stream_set_caps (bstream->stream_object, caps);
if (!stream->taglist)
stream->taglist = gst_tag_list_new_empty ();
caps);
gst_stream_set_tags (bstream->stream_object, stream->taglist);
++#ifndef TIZEN_FEATURE_AVOID_PAD_SWITCHING
+ gst_pad_push_event (pad, event);
++#endif
gst_pad_set_caps (pad, caps);
gst_pad_set_query_function (pad, gst_ts_demux_srcpad_query);
gst_pad_set_event_function (pad, gst_ts_demux_srcpad_event);
gst_query_set_seeking (query, GST_FORMAT_TIME, TRUE, 0, -1);
else
gst_query_set_seeking (query, GST_FORMAT_TIME, FALSE, -1, -1);
- gst_query_unref(peerquery);
+
++ gst_query_unref (peerquery);
}
break;
--- /dev/null
- Version: 1.12.2
+%bcond_with wayland
+#%bcond_with x
+%define gst_branch 1.0
+
+Name: gst-plugins-bad
- %{_libdir}/libgstbadbase-%{gst_branch}.so.0*
- %{_libdir}/libgstbadvideo-%{gst_branch}.so.0*
++Version: 1.16.2
+Release: 0
+Summary: GStreamer Streaming-Media Framework Plug-Ins
+License: LGPL-2.0+
+Group: Multimedia/Framework
+Url: http://gstreamer.freedesktop.org/
+Source: http://gstreamer.freedesktop.org/src/gst-plugins-bad/%{name}-%{version}.tar.xz
+Source100: common.tar.gz
+BuildRequires: gettext-tools
+BuildRequires: autoconf
+BuildRequires: gcc-c++
+BuildRequires: pkgconfig(glib-2.0) >= 2.31.14
+BuildRequires: pkgconfig(gstreamer-1.0) >= 1.12.0
+BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) >= 1.12.0
+BuildRequires: pkgconfig(orc-0.4) >= 0.4.11
+BuildRequires: python
+BuildRequires: xsltproc
+BuildRequires: pkgconfig(libusb-1.0)
+BuildRequires: pkgconfig(gio-2.0) >= 2.25.0
+BuildRequires: pkgconfig(libcurl) >= 7.21.0
+BuildRequires: pkgconfig(libexif) >= 0.6.16
+BuildRequires: pkgconfig(openssl1.1)
+BuildRequires: pkgconfig(sndfile) >= 1.0.16
+BuildRequires: pkgconfig(openal)
+BuildRequires: pkgconfig(soundtouch) > 1.4
+%if %{with wayland}
+%if 0%{?enable_gl:1}
+BuildRequires: pkgconfig(gles20)
+BuildRequires: pkgconfig(wayland-egl) >= 9.0
+%endif
+BuildRequires: pkgconfig(wayland-client) >= 1.0.0
+BuildRequires: pkgconfig(wayland-cursor) >= 1.0.0
+BuildRequires: pkgconfig(libxml-2.0)
+%endif
+%if %{with x}
+BuildRequires: pkgconfig(x11)
+%endif
+Requires: gstreamer >= 1.12.0
+
+%description
+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 devel
+Summary: GStreamer Streaming-Media Framework Plug-Ins
+Requires: %{name} = %{version}-%{release}
+Requires: gst-plugins-base-devel
+
+%description 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.
+
+
+%prep
+%setup -q -n %{name}-%{version}
+%setup -q -T -D -a 100
+
+%build
+export V=1
+NOCONFIGURE=1 ./autogen.sh
+export CFLAGS+=" -Wall -g -fPIC\
+ -DTIZEN_FEATURE_AVOID_PAD_SWITCHING\
+ -DTIZEN_FEATURE_ADAPTIVE_MODIFICATION\
+ -DTIZEN_FEATURE_TSDEMUX_MODIFICATION\
+ -DTIZEN_FEATURE_OALSINK_MODIFICATION\
+ -DTIZEN_FEATURE_UPSTREAM\
+ -fstack-protector-strong\
+ -Wl,-z,relro\
+ -D_FORTIFY_SOURCE=2"
+
+%configure\
+ --disable-static\
+ --disable-examples\
+ --enable-experimental\
+%if "%{tizen_profile_name}" == "tv"
+ --enable-tv\
+ --disable-autoconvert\
+ --disable-camerabin2\
+ --disable-dash\
+ --disable-hls\
+ --disable-id3tag\
+ --disable-jpegformat\
+ --disable-mpegdemux\
+ --disable-smoothstreaming\
+ --disable-coloreffects\
+ --disable-rtp\
+ --disable-gl\
+%endif
+ --disable-accurip\
+ --disable-adpcmdec\
+ --disable-audiofxbad\
+ --disable-decklink\
+ --disable-dvb\
+ --disable-fieldanalysis\
+ --disable-gdp\
+ --disable-ivtc\
+ --disable-liveadder\
+ --disable-rawparse\
+ --disable-videofilters\
+ --disable-yadif\
+ --disable-curl\
+ --disable-dtls\
+ --disable-fbdev\
+ --disable-uvch264\
+ --disable-vcd\
+ --disable-y4m\
+ --disable-adpcmenc\
+ --disable-aiff\
+ --disable-asfmux\
+ --disable-audiomixer\
+ --disable-compositor\
+ --disable-audiovisualizers\
+ --disable-bayer\
+ --disable-cdxaparse\
+ --disable-dataurisrc\
+ --disable-dccp\
+ --disable-dvbsuboverlay\
+ --disable-dvdspu\
+ --disable-faceoverlay\
+ --disable-festival\
+ --disable-freeverb\
+ --disable-frei0r\
+ --disable-gaudieffects\
+ --disable-geometrictransform\
+ --disable-hdvparse\
+ --disable-inter\
+ --disable-interlace\
+ --disable-ivfparse\
+ --disable-jp2kdecimator\
+ --disable-librfb\
+ --disable-mve\
+ --disable-mxf\
+ --disable-nuvdemux\
+ --disable-onvif\
+ --disable-pcapparse\
+ --disable-pnm\
+ --disable-removesilence\
+ --disable-sdi\
+ --disable-segmentclip\
+ --disable-siren\
+ --disable-smooth\
+ --disable-speed\
+ --disable-subenc\
+ --disable-stereo\
+ --disable-tta\
+ --disable-videomeasure\
+ --disable-videosignal\
+ --disable-vmnc\
+ --disable-opengl\
+%if 0%{?enable_gl:1}
+ --enable-egl=yes\
+ --enable-gles2=yes\
+%endif
+ --enable-wayland=yes\
+ --disable-glx\
+ --enable-openal=yes\
+ --disable-sndfile\
+ --disable-gtk-doc\
+ --disable-warnings-as-errors\
+ --disable-mpegpsmux
+%__make %{?_smp_mflags} V=1
+
+%install
+%make_install
+%find_lang %{name}-%{gst_branch}
+mv %{name}-%{gst_branch}.lang %{name}.lang
+
+%lang_package
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+
+%postun -p /sbin/ldconfig
+
+
+%files
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%license COPYING.LIB
+%if "%{tizen_profile_name}" != "tv"
+%{_libdir}/gstreamer-%{gst_branch}/libgstautoconvert.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstcamerabin.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstcoloreffects.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstid3tag.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstjpegformat.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstmpegpsdemux.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstsmoothstreaming.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstdashdemux.so
+%if 0%{?enable_gl:1}
+%{_libdir}/gstreamer-%{gst_branch}/libgstopengl.so
+%endif
+%{_libdir}/gstreamer-%{gst_branch}/libgstsoundtouch.so
+%{_libdir}/libgstinsertbin-%{gst_branch}.so.0*
+%{_libdir}/libgstphotography-%{gst_branch}.so.0*
+%{_libdir}/libgstbasecamerabinsrc-%{gst_branch}.so.0*
- %{_libdir}/libgstbadallocators-%{gst_branch}.so.0*
+%{_libdir}/libgsturidownloader-%{gst_branch}.so.0*
+%{_libdir}/libgstadaptivedemux-%{gst_branch}.so.0*
+%if 0%{?enable_gl:1}
+%{_libdir}/libgstgl-%{gst_branch}.so.0*
+%endif
+%{_libdir}/libgstisoff-%{gst_branch}.so.0*
+%endif
+%{_libdir}/gstreamer-%{gst_branch}/libgstdebugutilsbad.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstmpegtsdemux.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstmpegtsmux.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstsdpelem.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstshm.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstvideoparsersbad.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstmidi.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstopenal.so
+%{_libdir}/gstreamer-%{gst_branch}/libgsthls.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstnetsim.so
+%{_libdir}/gstreamer-%{gst_branch}/libgsttimecode.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstvideoframe_audiolevel.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstaudiomixmatrix.so
+%{_libdir}/gstreamer-%{gst_branch}/libgstaudiobuffersplit.so
+
++%{_libdir}/gstreamer-%{gst_branch}/libgstaudiolatency.so
++%{_libdir}/gstreamer-%{gst_branch}/libgstipcpipeline.so
++%{_libdir}/gstreamer-%{gst_branch}/libgstproxy.so
++
++%{_libdir}/libgstsctp-%{gst_branch}.so.0*
++%{_libdir}/libgstwebrtc-%{gst_branch}.so.0*
+%{_libdir}/libgstcodecparsers-%{gst_branch}.so.0*
+%{_libdir}/libgstmpegts-%{gst_branch}.so.0*
- %{_libdir}/pkgconfig/gstreamer-bad-allocators-1.0.pc
+%{_libdir}/libgstbadaudio-%{gst_branch}.so.0*
+%{_libdir}/libgstplayer-%{gst_branch}.so.0*
+
+%files devel
+%manifest %{name}.manifest
+%defattr(-, root, root)
+%{_includedir}/gstreamer-%{gst_branch}
+%if "%{tizen_profile_name}" != "tv"
+%if 0%{?enable_gl:1}
+%{_libdir}/gstreamer-%{gst_branch}/include/gst/gl/gstglconfig.h
+%endif
+%endif
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/gstreamer-codecparsers-%{gst_branch}.pc
+%{_libdir}/pkgconfig/gstreamer-plugins-bad-%{gst_branch}.pc
+%{_libdir}/pkgconfig/gstreamer-insertbin-%{gst_branch}.pc
+%{_libdir}/pkgconfig/gstreamer-mpegts-%{gst_branch}.pc
+%if 0%{?enable_gl:1}
+%{_libdir}/pkgconfig/gstreamer-gl-1.0.pc
+%endif
- %{_libdir}/pkgconfig/gstreamer-bad-base-1.0.pc
- %{_libdir}/pkgconfig/gstreamer-bad-video-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-bad-audio-1.0.pc
+%{_libdir}/pkgconfig/gstreamer-player-1.0.pc
++%{_libdir}/pkgconfig/gstreamer-sctp-1.0.pc
++%{_libdir}/pkgconfig/gstreamer-webrtc-1.0.pc
/*
- * dvbbasebin.c -
+ * dvbbasebin.c -
* Copyright (C) 2007 Alessandro Decina
* Copyright (C) 2014 Samsung Electronics. All rights reserved.
- *
+ *
* Authors:
- * Alessandro Decina <alessandro@nnva.org>
+ * Alessandro Decina <alessandro.d@gmail.com>
* Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
*
* This library is free software; you can redistribute it and/or