Commit 4234d963 authored by Wim Taymans's avatar Wim Taymans

media: make method to retrieve the play range

Make a method to retrieve the playback range so that we can conditionally create
a different range for the SDP and the PLAY requests.
parent 915cd708
......@@ -708,7 +708,7 @@ handle_play_request (GstRTSPClient * client, GstRTSPUrl * uri,
}
/* 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);
......
......@@ -353,7 +353,7 @@ collect_media_stats (GstRTSPMedia * media)
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 {
......@@ -560,6 +560,34 @@ gst_rtsp_media_get_stream (GstRTSPMedia * media, guint idx)
return res;
}
/**
* 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
......
......@@ -283,6 +283,7 @@ guint gst_rtsp_media_n_streams (GstRTSPMedia *media);
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);
......
......@@ -43,7 +43,7 @@ gst_rtsp_sdp_from_media (GstSDPMessage * sdp, GstSDPInfo * info,
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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment