Contributors to this release
- * David Svensson Fors
- * Sebastian Rasmussen
- * Tim-Philipp Müller
-
+ * Sebastian Dröge
-
++
+++ /dev/null
- Subproject commit 48a5d85ebf4a0bad1c997c83100f710fe2154fbf
-Subproject commit 66235917b47e6f933f8bd32376662a54f17eb609
GstRTSPContext * ctx);
static gchar *default_make_path_from_uri (GstRTSPClient * client,
const GstRTSPUrl * uri);
+ static gboolean default_handle_options_request (GstRTSPClient * client,
+ GstRTSPContext * ctx);
+ static gboolean default_handle_set_param_request (GstRTSPClient * client,
+ GstRTSPContext * ctx);
+ static gboolean default_handle_get_param_request (GstRTSPClient * client,
+ GstRTSPContext * ctx);
+ static gboolean default_handle_play_request (GstRTSPClient * client,
+ GstRTSPContext * ctx);
+
static void client_session_removed (GstRTSPSessionPool * pool,
GstRTSPSession * session, GstRTSPClient * client);
+static GstRTSPStatusCode default_pre_signal_handler (GstRTSPClient * client,
+ GstRTSPContext * ctx);
+static gboolean pre_signal_accumulator (GSignalInvocationHint * ihint,
+ GValue * return_accu, const GValue * handler_return, gpointer data);
G_DEFINE_TYPE (GstRTSPClient, gst_rtsp_client, G_TYPE_OBJECT);
klass->params_set = default_params_set;
klass->params_get = default_params_get;
klass->make_path_from_uri = default_make_path_from_uri;
+ klass->handle_options_request = default_handle_options_request;
+ klass->handle_set_param_request = default_handle_set_param_request;
+ klass->handle_get_param_request = default_handle_get_param_request;
+ klass->handle_play_request = default_handle_play_request;
+ klass->pre_options_request = default_pre_signal_handler;
+ klass->pre_describe_request = default_pre_signal_handler;
+ klass->pre_setup_request = default_pre_signal_handler;
+ klass->pre_play_request = default_pre_signal_handler;
+ klass->pre_pause_request = default_pre_signal_handler;
+ klass->pre_teardown_request = default_pre_signal_handler;
+ klass->pre_set_parameter_request = default_pre_signal_handler;
+ klass->pre_get_parameter_request = default_pre_signal_handler;
+ klass->pre_announce_request = default_pre_signal_handler;
+ klass->pre_record_request = default_pre_signal_handler;
+
g_object_class_install_property (gobject_class, PROP_SESSION_POOL,
g_param_spec_object ("session-pool", "Session Pool",
"The session pool to use for client session",
void (*record_request) (GstRTSPClient *client, GstRTSPContext *ctx);
gchar* (*check_requirements) (GstRTSPClient *client, GstRTSPContext *ctx, gchar ** arr);
+ GstRTSPStatusCode (*pre_options_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_describe_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_setup_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_play_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_pause_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_teardown_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_set_parameter_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_get_parameter_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_announce_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+ GstRTSPStatusCode (*pre_record_request) (GstRTSPClient *client, GstRTSPContext *ctx);
+
/*< private >*/
- gpointer _gst_reserved[GST_PADDING_LARGE-16];
- gpointer _gst_reserved[GST_PADDING_LARGE-10];
++ gpointer _gst_reserved[GST_PADDING_LARGE-20];
};
GType gst_rtsp_client_get_type (void);
guint i;
GList *walk;
+ g_rec_mutex_lock (&priv->state_lock);
+ if (priv->status != GST_RTSP_MEDIA_STATUS_PREPARING)
+ goto no_longer_preparing;
+
+ klass = GST_RTSP_MEDIA_GET_CLASS (media);
+
/* link streams we already have, other streams might appear when we have
* dynamic elements */
for (i = 0; i < priv->streams->len; i++) {
}
}
- if (!start_preroll (media))
- goto preroll_failed;
+ if (klass->start_preroll)
+ if (!klass->start_preroll (media))
+ goto preroll_failed;
+ g_rec_mutex_unlock (&priv->state_lock);
+
return FALSE;
+no_longer_preparing:
+ {
+ GST_INFO ("media is no longer preparing");
+ g_rec_mutex_unlock (&priv->state_lock);
+ return FALSE;
+ }
join_bin_failed:
{
GST_WARNING ("failed to join bin element");
default_unsuspend (GstRTSPMedia * media)
{
GstRTSPMediaPrivate *priv = media->priv;
+ gboolean preroll_ok;
+ GstRTSPMediaClass *klass;
+
+ klass = GST_RTSP_MEDIA_GET_CLASS (media);
switch (priv->suspend_mode) {
case GST_RTSP_SUSPEND_MODE_NONE:
case GST_RTSP_SUSPEND_MODE_RESET:
{
gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARING);
- if (!start_preroll (media))
- goto start_failed;
-
+ if (klass->start_preroll)
+ if (!klass->start_preroll (media))
+ goto start_failed;
g_rec_mutex_unlock (&priv->state_lock);
+ preroll_ok = wait_preroll (media);
+ g_rec_mutex_lock (&priv->state_lock);
- if (!wait_preroll (media))
+ if (!preroll_ok)
goto preroll_failed;
-
- g_rec_mutex_lock (&priv->state_lock);
}
default:
break;
GPtrArray *transports);
void gst_rtsp_media_set_pipeline_state (GstRTSPMedia * media,
GstState state);
+ GstStateChangeReturn gst_rtsp_media_set_target_state (GstRTSPMedia * media, GstState state, gboolean do_state);
+ void gst_rtsp_media_set_status (GstRTSPMedia * media, GstRTSPMediaStatus status);
+
+ GstElement * gst_rtsp_media_get_pipeline (GstRTSPMedia * media);
+ GstElement * gst_rtsp_media_get_rtpbin (GstRTSPMedia * media);
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstRTSPMedia, gst_object_unref)
+#endif
+
G_END_DECLS
#endif /* __GST_RTSP_MEDIA_H__ */
--- /dev/null
-Version: 1.6.1
-Release: 20
+ Name: gst-rtsp-server
+ Summary: Multimedia Framework Library
++Version: 1.12.2
++Release: 0
+ Url: http://gstreamer.freedesktop.org/
+ Group: System/Libraries
+ License: LGPL-2.0+
+ Source: http://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-%{version}.tar.xz
+ Source100: common.tar.bz2
+ Requires(post): /sbin/ldconfig
+ Requires(postun): /sbin/ldconfig
+ BuildRequires: pkgconfig(gstreamer-1.0)
+ BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
+
+ BuildRoot: %{_tmppath}/%{name}-%{version}-build
+
+ %description
+
+ %package devel
+ Summary: Multimedia Framework RTSP server library (DEV)
+ Group: Development/Libraries
+ Requires: %{name} = %{version}-%{release}
+
+ %description devel
+
+ %package factory
+ Summary: Multimedia Framework RTSP server Library (Factory)
+ Group: Development/Libraries
+ Requires: %{name} = %{version}-%{release}
+
+ %description factory
+
+ %prep
+ %setup -q -n gst-rtsp-server-%{version}
+ %setup -q -T -D -a 100
+
+ %build
+
+ NOCONFIGURE=1 ./autogen.sh
+
+ CFLAGS+=" -DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" "; export CFLAGS
+ LDFLAGS+="-Wl,--rpath=%{_prefix}/lib -Wl,--hash-style=both -Wl,--as-needed"; export LDFLAGS
+
+ # always enable sdk build. This option should go away
+ %configure --disable-static
+
+ # Call make instruction with smp support
+ make %{?jobs:-j%jobs}
+
+ %install
+ rm -rf %{buildroot}
+ %make_install
+
+ %clean
+ rm -rf %{buildroot}
+
+ %post
+ /sbin/ldconfig
+
+ %postun
+ /sbin/ldconfig
+
+ %files
+ %manifest gst-rtsp-server.manifest
+ %defattr(-,root,root,-)
+ %license COPYING
+ %{_libdir}/*.so.*
++%{_libdir}/gstreamer-1.0/libgstrtspclientsink.so
+
+ %files devel
+ %defattr(-,root,root,-)
+ %{_libdir}/*.so
+ %{_includedir}/gstreamer-1.0/gst/rtsp-server/rtsp-*.h
+ %{_includedir}/gstreamer-1.0/gst/rtsp-server/gstwfd*.h
+ %{_libdir}/pkgconfig/*