}
/* add the range */
- str = gst_rtsp_range_to_string (&media->media->range);
+ str = gst_rtsp_media_get_range_string (media->media, TRUE);
gst_rtsp_message_take_header (&response, GST_RTSP_HDR_RANGE, str);
send_response (client, session, &response);
GST_INFO ("stats: position %" GST_TIME_FORMAT ", duration %"
GST_TIME_FORMAT, GST_TIME_ARGS (position), GST_TIME_ARGS (duration));
- if (position == -1 || media->active > 0) {
+ if (position == -1) {
media->range.min.type = GST_RTSP_TIME_NOW;
media->range.min.seconds = -1;
} else {
}
/**
+ * gst_rtsp_media_get_range_string:
+ * @media: a #GstRTSPMedia
+ * @play: for the PLAY request
+ *
+ * Get the current range as a string.
+ *
+ * Returns: The range as a string, g_free() after usage.
+ */
+gchar *
+gst_rtsp_media_get_range_string (GstRTSPMedia * media, gboolean play)
+{
+ gchar *result;
+ GstRTSPTimeRange range;
+
+ /* make copy */
+ range = media->range;
+
+ if (!play && media->active > 0) {
+ range.min.type = GST_RTSP_TIME_NOW;
+ range.min.seconds = -1;
+ }
+
+ result = gst_rtsp_range_to_string (&range);
+
+ return result;
+}
+
+/**
* gst_rtsp_media_seek:
* @media: a #GstRTSPMedia
* @range: a #GstRTSPTimeRange
GstRTSPMediaStream * gst_rtsp_media_get_stream (GstRTSPMedia *media, guint idx);
gboolean gst_rtsp_media_seek (GstRTSPMedia *media, GstRTSPTimeRange *range);
+gchar * gst_rtsp_media_get_range_string (GstRTSPMedia *media, gboolean play);
GstFlowReturn gst_rtsp_media_stream_rtp (GstRTSPMediaStream *stream, GstBuffer *buffer);
GstFlowReturn gst_rtsp_media_stream_rtcp (GstRTSPMediaStream *stream, GstBuffer *buffer);
n_streams = gst_rtsp_media_n_streams (media);
- rangestr = gst_rtsp_range_to_string (&media->range);
+ rangestr = gst_rtsp_media_get_range_string (media, FALSE);
gst_sdp_message_add_attribute (sdp, "range", rangestr);
g_free (rangestr);