Commit graph

673 commits

Author SHA1 Message Date
Wim Taymans
50ca10e751 stream: release lock while pushing out packets
Keep a cache of the transports and use this to iterate the transport
while pushing packets. This allows us to release the lock early.

See https://bugzilla.gnome.org/show_bug.cgi?id=725898
2014-03-13 14:20:17 +01:00
David Svensson Fors
faf0b31cbb rtsp-client: vmethod for modifying tunnel GET response
Add a vmethod tunnel_http_response where the response to the HTTP GET
for tunneled connections can be modified.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725879
2014-03-11 11:17:04 +01:00
Wim Taymans
dffdbbf090 sdp: make 1 media line per profile
If we have multiple profiles (AVP or AVPF) for a stream, make one m=
line in the SDP for each profile. The client is then supposed to pick
one of the profiles in the SETUP request. Because the m= lines have the
same pt, the client also knows that only 1 option is possible.
2014-03-03 16:59:09 +01:00
Wim Taymans
4b74afcc78 factory: add profile property and pass to media and streams 2014-03-03 16:55:48 +01:00
Wim Taymans
2bd90b539c sdp: pass multicast connection for multicast-only stream
Pass the multicast address of the stream in the connection info in the
SDP so that clients try a multicast connection first.
Only allow multicast connections in the test-multicast example. Also
increase the TTL a little.
2014-03-03 15:12:55 +01:00
Wim Taymans
48b6b8e3e6 stream: release some locks in error cases 2014-03-03 12:17:48 +01:00
Sebastian Rasmussen
81a2928c89 docs: Enable and fix gtk-doc warnings
* Makefile: Enable gtk-doc warnings, like the rest of GStreamer
 * addresspool/mediafactory: Add missing annotation colon
 * stream: Annotate return value

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725528
2014-03-03 09:43:05 +01:00
Branko Subasic
7ed2a6ef98 rtsp-media: don't loose frames handling new PLAY request
If client supplied a range check if the range specifies the start point.
If not, then do an accurate seek to the current position. If a start
point was specified do do a key unit seek to make sure the streaming
starts with decodeable frames.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724611
2014-02-18 16:59:41 +01:00
Wim Taymans
73551543b8 Revert "media: only flush when setting a new start position"
This reverts commit f67fc23aab.

We need to do the flush in all cases, demuxer block currently for
non-flushing seeks.
2014-02-18 16:58:45 +01:00
Wim Taymans
f67fc23aab media: only flush when setting a new start position
Only flush the pipeline when we change the start position with
a seek.

See https://bugzilla.gnome.org/show_bug.cgi?id=724611
2014-02-18 16:38:39 +01:00
Göran Jönsson
a7f0feff23 stream: set ttl-mc before adding the socket
Set ttl-mc before adding the socket. Otherwise the value ttl-mc will
never be set on socket.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724531
2014-02-18 11:10:51 +01:00
Aleix Conchillo Flaqué
0bd687f210 media: stop thread if media is already prepared
in gst_rtsp_media_prepare() the thread is not used if media is already
prepared (e.g. media shared) so we want to stop the thread. otherwise, a
leak occurs.

https://bugzilla.gnome.org/show_bug.cgi?id=724182
2014-02-18 11:02:24 +01:00
Sebastian Dröge
957a4a65c6 rtsp-server: Fix lots of compiler warnings with clang 2014-02-09 10:45:28 +01:00
Sebastian Dröge
902b59f823 Revert "rtsp-server: support build against last stable release"
This reverts commit 099a10f61f.

Let us require 1.2.3 now, which is going to be released in a few
minutes.
2014-02-09 10:19:50 +01:00
Wim Taymans
8bd53dcf9c session: improve RTP-Info
Ignore streams that can't generate RTP-Info instead of failing.
Don't return the empty string when all streams are unconfigured but
return NULL so that we don't generate and empty RTP-Info header.
Improve docs a little.
2014-02-07 16:39:49 +01:00
Andrey Utkin
271f533098 Don't free rtpinfo GString when it is NULL
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723554
2014-02-07 16:24:08 +01:00
Wim Taymans
450b9d0a14 media: only set keyframe flag when modifying start
Only set the keyframe flag when we modify the start position. The
keyframe flag should probably be ignored when no change is requested but
until we can claim this is all documented properly and all demuxer
implement this, avoid setting the flag.

See also https://bugzilla.gnome.org/show_bug.cgi?id=723075
2014-02-06 09:48:05 +01:00
Ognyan Tonchev
b1845b0864 thread-pool: Unref source after mainloop has quit to avoid races in GLib
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723741
2014-02-06 09:26:39 +01:00
Wim Taymans
9048d87ff4 stream: handle NULL seqnum and rtptime arguments 2014-02-04 16:28:00 +01:00
Ognyan Tonchev
274d4b017f thread-pool: Unref reused threads in gst_rtsp_thread_stop()
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723519
2014-02-04 14:47:49 +01:00
Wim Taymans
71c45fce5a stream: add fallback for missing stats property
Use a fallback when the payloader does not have a stats property

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723554
2014-02-04 10:14:45 +01:00
Wim Taymans
036f2760bf stream: don't leak stats structure
Don't leak the stats structure and deal with NULL stats.
2014-01-28 14:51:26 +01:00
Sebastian Rasmussen
7edaa6ca20 stream: Get rtpinfo properties atomically from payloader
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722844
2014-01-27 15:19:30 +01:00
Wim Taymans
e04d9ac34d media: refactor state change functions and signals
Make functions to set the target state and the pipeline state and emit
the signals from those functions.
2014-01-21 14:46:47 +01:00
Ognyan Tonchev
5eca958d5e media: add signal to notify of pending state changes 2014-01-21 14:25:42 +01:00
Tim-Philipp Müller
099a10f61f rtsp-server: support build against last stable release
Until 1.2.3 is out with the new get_type function and we
can require that.
2014-01-12 16:55:21 +00:00
Wim Taymans
d90ce618e4 stream: fix compilation 2014-01-07 15:28:05 +01:00
Wim Taymans
ae1fe21436 stream: add property to configure profiles 2014-01-07 12:39:58 +01:00
Wim Taymans
78c6648c96 client: let stream check supported transport
Delegate the check if a transport is allowed to the stream.

See https://bugzilla.gnome.org/show_bug.cgi?id=720696
2014-01-07 12:39:57 +01:00
Wim Taymans
a1202effda stream: add method to check supported transport
Add a method to check if a transport is supported
2014-01-07 12:39:57 +01:00
Wim Taymans
8aaa432d58 stream: return clock-rate from get_rtpinfo
And use it to correct the rtptime to the requested start-time.

See https://bugzilla.gnome.org/show_bug.cgi?id=712198
2013-12-26 17:14:06 +01:00
Wim Taymans
037e21b578 session-media: calculate start-time 2013-12-26 16:29:39 +01:00
Wim Taymans
cfdc7408b5 stream: also return the running-time
Return the running-time in the rtpinfo as well.
2013-12-26 16:29:39 +01:00
Wim Taymans
4ca0b23a3f session-media: let the session-media make the RTPInfo
Add method to create the RTPInfo for a stream-transport.
Add method to create the RTPInfo for all stream-transports in a
session-media.
Use the session-media RTPInfo code in client. This allows us to refactor
another method to link the TCP callbacks.
2013-12-26 16:29:38 +01:00
Aleix Conchillo Flaqué
dd4c04f1b8 mount-points: sort sequence before g_sequence_lookup
* gst/rtsp-server/rtsp-mount-points.c (gst_rtsp_mount_points_remove_factory):
  sort sequence if dirty, otherwise lookup will fail.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720855
2013-12-26 10:36:48 +01:00
Aleix Conchillo Flaqué
3fdae13fb7 media: add setup_sdp vmethod
gst/rtsp-server/rtsp-media.[ch]: added setup_sdp vmethod and public
gst_rtsp_media_setup_sdp.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720155
2013-12-19 15:10:30 +01:00
Edward Hervey
cdd72905af rtsp-stream: Check return value of sscanf
streamid is only valid if sscanf matched something.
2013-12-19 14:26:34 +01:00
Edward Hervey
d3237dc9dc rtsp-client: Fix iteration
Wouldn't even enter the code block otherwise (i++ was used as the check
and not the postfix).
2013-12-19 14:24:54 +01:00
Wim Taymans
7a947e8dfe client: add vmethod to configure media and streams
Implement a vmethod that can be used to configure the media and the
streams based on the current context. Handle the blocksize handling in
the default handler.

See https://bugzilla.gnome.org/show_bug.cgi?id=720667
2013-12-18 15:57:03 +01:00
Tim-Philipp Müller
91fac8eb29 rtsp-server: add padding to many public structures
Not mini objects though, since they are not subclassable
anyway, nor kept on the stack or inlined in a structure.
2013-12-12 00:36:07 +00:00
Aleix Conchillo Flaqué
ab3651d339 media: add new create_rtpbin vmethod
* gst/rtsp-server/rtsp-media.[ch]: add new create_rtpbin vmethod.

  https://bugzilla.gnome.org/show_bug.cgi?id=719734
2013-12-09 17:14:26 +01:00
Wim Taymans
9473fa0d2c stream-transport: free url in finalize 2013-11-29 15:50:52 +01:00
Ognyan Tonchev
3b4894c4f1 media: also do state change in suspended state 2013-11-29 15:50:23 +01:00
Wim Taymans
53859ac34b media: also handle prepare and range in suspended state
When we are suspended, we are already prepared.
We can get the range in the suspended state.
2013-11-29 10:53:08 +01:00
Wim Taymans
421499c102 client: store setup uri and use in PLAY response
Store the uri used when doing the setup and use that in the PLAY
response.

fixes https://bugzilla.gnome.org/show_bug.cgi?id=715168
2013-11-28 17:47:18 +01:00
Wim Taymans
568477d9b5 stream-transport: add method to get/set url 2013-11-28 17:35:45 +01:00
Wim Taymans
b1e8172ef3 client: suspend after SDP and unsuspend before PLAYING
Based on patches by Ognyan Tonchev <ognyan@axis.com>

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=711257
2013-11-28 16:18:40 +01:00
Wim Taymans
2f17369e9d media: add suspend modes
Add support for different suspend modes. The stream is suspended right after
producing the SDP and after PAUSE. Different suspend modes are available that
affect the state of the pipeline. NONE leaves the pipeline state unchanged and
is the current and old behaviour, PAUSE will set the pipeline to the PAUSED
state and RESET will bring the pipeline to the NULL state.
A stream is also unsuspended when it goes back to PLAYING, for RESET streams,
this means that the pipeline needs to be prerolled again.

Base on patches by Ognyan Tonchev <ognyan@axis.com>

See https://bugzilla.gnome.org/show_bug.cgi?id=711257
2013-11-28 16:18:39 +01:00
Wim Taymans
db771c5167 media: start live streams in blocked state
Start live streams in the blocked state and make them preroll using the
messages. This ensure that no data is played by the sink until we explicitly
unblock the stream right before going to PLAYING.

See https://bugzilla.gnome.org/show_bug.cgi?id=711257
2013-11-28 16:18:39 +01:00
Wim Taymans
6ce48c51a2 media: refactor starting and waiting for preroll
Based on patches from Ognyan Tonchev <ognyan@axis.com>

See https://bugzilla.gnome.org/show_bug.cgi?id=711257
2013-11-28 16:18:39 +01:00