Commit graph

331 commits

Author SHA1 Message Date
Wim Taymans
c27c10f8f4 rtspsrc: small cleanups
Make sure we cancel the previous task when queuing a new one.
Move the messages to a central place so we can more easily post them.
2011-05-17 11:55:27 +02:00
Wim Taymans
852c6e11cd rtspsrc: don't post errors when interrupting 2011-05-17 11:55:24 +02:00
Wim Taymans
220e47adcf rtspsrc: implement more async handling
Remove some old locks.
Make sure we never go into the loop function when flushing.
2011-05-17 11:55:20 +02:00
Wim Taymans
2873585238 rtspsrc: first attempt at async implementation 2011-05-17 11:55:18 +02:00
Wim Taymans
77acc618e1 use G_DEFINE_TYPE some more 2011-04-19 17:35:47 +02:00
Wim Taymans
c124ba1489 Merge branch 'master' into 0.11
Conflicts:
	gst/rtsp/gstrtspsrc.c
2011-04-05 17:20:08 +02:00
Wim Taymans
547c97f590 rtspsrc: handle * control correctly
Parse session control attributes when no media control attribute is
present. Threat * control attributes as an empty string, just like the
spec says.

Fixes #646800
2011-04-05 17:12:28 +02:00
Wim Taymans
f67c95d826 rtsp/udp: port to 0.11 2011-04-05 17:06:41 +02:00
Mark Nauwelaerts
234609844e rtspsrc: perform post-flush state tricks downstream to upstream
... so downstream is set when upstream resumes data flow.
2011-04-04 11:49:00 +02:00
Mark Nauwelaerts
226a7cb32e rtspsrc: distribute new base_time to manager children following flush seek
... by forcing a state changed to PLAYING, which should otherwise be a
no-op as elements should already be in that state.

In particular, jitterbuffer needs new base_time as soon as possible to perform
proper timing (e.g. eos timeout handling) and can't wait for the new base_time
that will be distributed when the whole pipeline returns to PLAYING.

See bug #646397.
2011-04-04 11:49:00 +02:00
Wim Taymans
8f22a09dc4 Merge branch 'master' into 0.11-fdo 2011-03-28 20:50:59 +02:00
Mark Nauwelaerts
2738917852 rtspsrc: improve recovery from failed seek
In case server-side fails to perform seek, i.e. PLAY at non-zero requested
position, recovery so far would arrange for streaming to continue, albeit
having lost position tracking in the process.  So, query position prior
to seek and use upon failed seek.
2011-03-09 17:18:09 +01:00
Wim Taymans
759a3507d7 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
2011-02-28 11:58:05 +01:00
Miguel Angel Cabrera Moya
3cca27ced1 rtspsrc: fix minor leaks when handling server requests.
https://bugzilla.gnome.org/show_bug.cgi?id=640163
2011-02-14 11:33:18 +01:00
Stefan Kost
6f6b2a7efc rtspsrc: strip trailing spaces 2011-02-07 17:08:47 +02:00
Stefan Kost
5e071d51f2 rtpsrc: set multiple properties in one go
There is no need for separate g_object_set() calls here.
2011-02-07 17:07:42 +02:00
Tim-Philipp Müller
08855b45b6 rtspsrc: don't leak url string
https://bugzilla.gnome.org/show_bug.cgi?id=640064
2011-01-20 13:46:44 +00:00
Wim Taymans
bc0824181b rtspsrc: don't confuse return values
Return a return value of the right type.
2011-01-05 18:33:41 +01:00
Stefan Kost
c9e0db6469 rtspsrc: remove unused variables when debug-logging disabled 2011-01-03 20:17:47 +02:00
Wim Taymans
dc221c0219 rtspsrc: increase udp buffer size
Set a bigger UDP buffer size by default to reduce packet loss with
high bitrate streams.
2011-01-03 15:40:11 +01:00
Tim-Philipp Müller
96830324a5 rtspsrc: serialise/deserialise floats without changing locale
Use g_ascii_dtostr() and g_ascii_strtod() to serialise/deserialise
floating point numbers, instead of ugly hacks that switch locale
before and after calling libc functions (which is not a good idea
in a multi-threaded application).
2010-12-29 15:54:46 +00:00
Wim Taymans
2a49d34c3e rtspsrc: on-npt-stop is a manager signal 2010-12-23 16:25:15 +01:00
Wim Taymans
12bc7258b9 rtspsrc: improve RTP session handling
Store the RTP session in the stream so that we can more efficiently
perform actions on the stream based on RTP signals.
2010-12-23 15:24:29 +01:00
Tim-Philipp Müller
7759ad0db2 docs: update rtspsrc docs, rtpbin is not in -bad any more 2010-12-22 13:04:42 +00:00
Mark Nauwelaerts
287894a89a rtspsrc: mark DISCONT when resuming PLAY
In particular, when streaming interleaved, this arranges for setting a new
timestamp on outgoing buffer so downstream can appropriate reset
to a change in (rtp)time.
2010-12-10 12:11:15 +01:00
Mark Nauwelaerts
c25625c31c rtspsrc: degrade gracefully upon failing seek and tweak QUERY_SEEKING response 2010-12-10 12:09:49 +01:00
Mark Nauwelaerts
52b5929a2b rtspsrc: add and use auto buffering mode
... which selects BUFFER for a non-live stream, and otherwise SLAVE.

Fixes #633088.
2010-12-10 12:09:32 +01:00
Wim Taymans
1d57ec6a6e rtspsrc: use _object_ref_sink() when we can 2010-12-07 11:42:15 +01:00
Mark Nauwelaerts
0f2373cbd1 rtspsrc: reset session manager base time when flushing
... as rtpbin uses running time to handle rtpjitterbuffer's buffer mode pauses.
2010-12-03 15:50:17 +01:00
Mark Nauwelaerts
148af2235e rtspsrc: include range request for all streams with non-aggregate control 2010-12-03 15:50:17 +01:00
Mark Nauwelaerts
dedf145316 rtspsrc: fix debug statement 2010-12-03 15:50:17 +01:00
Wim Taymans
7ed250c793 rtspsrc: select multicast transports in a smarter way
When we see a multicast address in the SDP connection, only try to negotiate a
multicast transport with the server.

Fixes #634093
2010-12-02 19:16:47 +01:00
Mark Nauwelaerts
b6b0de0c49 rtspsrc: handle stale digest authentication session data
In particular, handle Unauthorized server response when trying to convey
keep-alive.

Fixes #635532.
2010-11-29 17:34:28 +00:00
Mark Nauwelaerts
ca7870de49 rtspsrc: fix duration reporting
Init segment prior to storing duration info in it.

Fixes #632548.
2010-10-19 16:47:20 +02:00
Wim Taymans
ee7207aa3e rtspsrc: mark as a source
Mark the rtspsrc element as a source.
Requires 0.10.31.1 now
2010-10-11 15:12:51 +02:00
René Stadler
0cfe24d132 rtspsrc: fix missing null-terminator in protocols array
Fixes random crash regression from commit ae84ae.
2010-09-28 16:21:48 +03:00
Wim Taymans
ef29a59903 rtspsrc: don't add /UDP in the transport, it's the default
don't add the default UDP lower-transport, some servers don't seem to like it.

Fixes #630500
2010-09-24 16:26:20 +02:00
Wim Taymans
8f2d254e24 rtspsrc: don't clear sdp when set as uri
when we set the SDP with an uri, don't clear it when we go to READY.
2010-09-10 18:06:48 +02:00
Wim Taymans
7698d8bc4a rtspsrc: use sdp uri parse method
Use the sdp parse method that does proper uri escaping.
2010-09-10 18:02:04 +02:00
Wim Taymans
ae84ae1b36 rtspsrc: add rtsp-sdp protocol support
Allow setting an SDP with the rtsp-sdp:// url.

Based on patch from Marco Ballesio.

See #628214
2010-09-10 12:14:21 +02:00
American Dynamics
5999e8e716 rtspsrc: Add property to configure udpsrc buffer size
Add a new udp-buffer-size property to configure the buffer-size on the udpsrc
elements.

Fixes #628058
2010-09-06 12:22:11 +02:00
Wim Taymans
e4f8144bbf rtspsrc: implement custom event handler
Extend the _push_event() function so that it can also send events to the udp
sources when asked.
Implement a custum send_event function that correctly dispatches the downstream
events in TCP mode. This fixes sending EOS to rtspsrc and have it push the EOS
downstream.
2010-09-06 10:45:23 +02:00
Sebastian Dröge
d224251df4 rtspsrc: Don't use GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS() 2010-09-04 14:52:10 +02:00
Wim Taymans
9dcfed0a5b rtspsrc: don't reuse udp sockets
Don't reuse sockets but make the udpsrc element fail the state change when the
socket is already in use. If we don't prevent reuse, we might end up using the same
port for different streams in some cases.

Fixes #622017
2010-08-04 10:40:23 +02:00
Wim Taymans
e39d7f7359 rtspsrc: improve error and warning message
Improve error and warning message.

Fixes #622577
2010-08-04 10:39:44 +02:00
Arnaud Vrac
c6f47c34fb rtspsrc: add port-range property to rtspsrc
To support setups with firewall/ipsec, it is useful for an rtsp client to be
able to set the range of ports that can be used for rtp/rtcp reception.
Allows this by adding a "port-range" property to the rtspsrc element.

Fixes #625153
2010-07-26 17:47:35 +02:00
Wim Taymans
8696d10a5b rtspsrc: fix memory leak in server request reply
The RTSP server rtspsrc is communicating with, sends a GET_PARAMETER request
periodically as a ping.  The code in gst_rtspsrc_handle_request forms an OK
response and sends, but doesn't call gst_rtsp_message_unset to free the memory
after sending the response.  This results in a constant slow memory leak.

Fixes #624770
2010-07-26 15:33:44 +02:00
Wim Taymans
5534c7d91d rtspsrc: fix locking after moving things around 2010-06-18 20:04:08 +02:00
Wim Taymans
651c82a01f rtspsrc: make some errors as warnings
Avoid spamming the testsuite with these error debug lines.
2010-06-18 16:56:19 +02:00
Wim Taymans
966ced2208 rtspsrc: factor out the connections
Keep a global connection for aggregate control but also keep stream connections
for non-aggregate control.
Add some helper methods to connect/close/flush the connections.
2010-06-18 15:13:06 +02:00
Wim Taymans
ddc214d322 rtspsrc: add non-aggregate control
Add non-aggregate control.
Separate retrieving thr SDP from parsing and setting up the streaming from the
SDP.
2010-06-18 15:13:06 +02:00
Wim Taymans
e6ec5cce2e rtspsrc: respect aggregate control attributes
when the SDP specifies an aggregate control url, use that for playback
control.

Fixes #619531
2010-06-14 19:24:14 +02:00
Wim Taymans
cb8252275d rtsp: try all ranges from the sdp
Try all ranges in the SDP before giving up.
2010-06-04 13:58:38 +02:00
Wim Taymans
6fbca707bb rtspsrc: make parse_range return result
Make the parse_range function return if the parsing succeeded or failed.
2010-06-04 13:58:38 +02:00
Wim Taymans
a50cd7c27d rtspsrc: don't leak the session 2010-05-07 19:02:21 +02:00
Wim Taymans
bc72d8250c rtsp: configure bandwidth properties in the session 2010-05-07 18:59:42 +02:00
Wim Taymans
db3c4e7f46 rtspsrc: fall back to SDP ports instead of server_port
In multicast, fall back to the ports in the SDP instead of the server_port
attribute as this is more in line with the RFC.
2010-05-07 12:51:05 +02:00
Wim Taymans
4e1ced0a77 rtspsrc: refactor collecting the transport info
Make a method to collect the ports and destination address.
2010-05-07 12:24:51 +02:00
Wim Taymans
05352d7ea8 rtspsrc: handle servers that send broken Transports
Handle servers that send their port pairs with the wrong name.

Fixes #617537
2010-05-07 11:28:36 +02:00
Wim Taymans
ef4d2901aa rtspsrc: use the SDP connection info in multicast
Parse the connection info from the SDP.
When we need to configure the multicast destination, fall back to the SDP
connection info when the transport did not specify a destination and ttl.

Fixes #617537
2010-05-06 16:52:26 +02:00
Wim Taymans
d6579912cb rtspsrc: make setup url in a smarter way
Make sure we always separate the base and control url parts with a / when
creating the setup url.
2010-05-04 16:36:15 +02:00
Alessandro Decina
c8a02a91a6 rtspsrc: handle SEEKING queries. 2010-05-04 16:05:13 +02:00
Wim Taymans
b84bf10455 rtspsrc: add property to control the buffering method
Add a property to control how the jitterbuffer performs timestamping and
buffering.
2010-04-05 15:26:03 +02:00
Benjamin Otte
3f511ec361 Add -Wwrite-strings to the configure flags
... and fix all warnings
2010-03-21 14:17:47 +01:00
Wim Taymans
ef804589ca rtsp: use GType from -base and bump required version
Use the transport flags GType from -base and bump the required version of -base
because of this.
2010-03-19 15:03:43 +01:00
Benjamin Otte
cccfeaa59c gst_element_class_set_details => gst_element_class_set_details_simple 2010-03-18 14:32:00 +01:00
Benjamin Otte
1055aaa9cb Add -Wredundant-decls warning flag
Also fix compile issues
2010-03-17 19:35:10 +01:00
Benjamin Otte
3342b1679e Add -Wmissing-declarations -Wmissing-prototypes warning flags
And fix all the warnings.
2010-03-17 18:23:28 +01:00
Wim Taymans
ba6dbaecfc rtspsrc: don't forget to send keepalive messages
When we operate in TCP mode, still send keepalive messages when we
need to.

Fixes #612696
2010-03-15 11:38:23 +01:00
Wim Taymans
d29fa60f97 rtspsrc: check for NULL before doing strcmp
Check the connection and address type for NULL before doing strcmp and
crashing.

Fixes #612553
2010-03-11 12:56:11 +01:00
Wim Taymans
821096c4f1 rtspsrc: parse connection information
Parse the connection information from the SDP and use it to figure out if we are
dealing with ipv4 or ipv6 connections.
2010-03-10 11:28:22 +01:00
Wim Taymans
8eb5c2c794 rtspsrc: require a destination for multicast
When setting up the multicast sockets, we need a destination address to listen
on or else we error.
2010-03-10 11:21:20 +01:00
Wim Taymans
574447b092 rtspsrc: handle ipv6 listening ports when needed
Add some code to make udpsrc listen on an ipv6 address when needed. The
detection of IPV6 is not yet implemented.
2010-03-10 11:21:20 +01:00
Wim Taymans
38f2b4735d rtspsrc: send keep alive when paused
When we are paused, send keep alive messages to the server so that our session
doesn't time out when we go back to playing later.
2010-03-10 11:21:18 +01:00
Wim Taymans
66709a7a68 rtspsrc: configure multicast correctly
Take the transport destination for multicast.
Disable loop and autojoin for multicast on the udpsinks.
2010-03-08 17:48:46 +01:00
Wim Taymans
a0b651bf5b rtspsrc: avoid stopping NULL tasks
Check the task for NULL, it could be paused and set to NULL before.
2010-02-16 19:54:32 +01:00
Mark Nauwelaerts
87e80aab57 rtspsrc: fix typo in debug message 2010-02-16 16:07:21 +01:00
Wim Taymans
8d814f3782 rtpbin: pass running_time to jitterbuffer pause
Pass the current running time to the jitterbuffer when pausing or resuming so
that it calculate the right offsets.
Small cleanups and comments.
Set the default rtspsrc latency to 2 seconds.
2010-02-12 17:22:54 +01:00
Wim Taymans
c2dfc94b1d rtspsrc: cleanup properties
Use more default constants.
Use static strings param flag.
Init properties explicitly instead of letting gobject do this.
2010-02-12 15:20:07 +01:00
Wim Taymans
c35a984801 rtspsrc: free transports on errors
See #608564
2010-02-01 19:32:11 +01:00
Wim Taymans
8c5a822250 rtspsrc: fix on-npt-stop signal warnings for RDT
The RDT manager does not implement this signal so we need to check for it before
trying to connect to it.
2010-01-05 12:23:16 +01:00
Wim Taymans
a65240d1c1 rtspsrc: fix some comments, remove property check
Fix some comments, clarify some FIXMEs
Remove the on-ntp-stop signal check now that the jitterbuffer is in
-good and we know that it supports this signal.
2009-12-24 22:23:01 +01:00
Thiago Santos
ac03ad782a rtspsrc: Parse all rtpinfo entries
Do not forget to parse all rtp-info entries, instead of
parsing the first one only.

Fixes #605222
2009-12-24 17:08:22 -03:00
Wim Taymans
b8c2ccce4e rtspsrc: handle NULL and empty transport strings
When an RTSP extension returns NULL or an empty transport string, just ignore it
and try to get the next possible transport. Fixes playback of RealMedia streams.
2009-12-10 18:45:55 +01:00
Wim Taymans
6a44d8e198 rtspsrc: install event function on internal RTCP pad
Install a custom event function on the internal RTCP pad so that we can reply
TRUE to a latency event.
2009-12-10 18:45:55 +01:00
Tim-Philipp Müller
24b93d82ec rtspsrc: fix major memory leak when playing back rtsp video streams
Don't forget to unref QoS, navigation and latency events when
dropping them.
2009-12-04 11:14:03 +00:00
Bastien Nocera
efc611e420 Add user-id and user-pw properties
So that one doesn't need to modify the URL to have access
to authenticated RTSP streams.

fixes #601728
2009-11-18 17:27:19 +01:00
Wim Taymans
6725c91387 rtsp: handle events in TCP mode
We need to handle events in TCP mode so that we can reply to the LATENCY event
with TRUE.
2009-10-15 13:20:26 +02:00
Wim Taymans
88884cfddb rtspsrc: forward events into the rtpbin
Only catch the SEEK event on the srcpad and let other events enter the rtpbin.
2009-10-14 17:01:51 +02:00
Mark Nauwelaerts
50d5c8dce5 rtspsrc: if transport protocol unsupported, try another one
Also change error message to more accurately reflect cases in which
it can occur.
2009-09-25 16:47:39 +02:00
Arnout Vandecappelle
19455200b1 rtspsrc: fix memory leak
In gst_rtspsrc_parse_digest_challenge(), rtspsrc does a g_strndup of the auth
header items and then passes them to gst_rtsp_connection_set_auth_param()
without freeing.

Fixes #594133
2009-09-08 13:30:29 +02:00
Wim Taymans
784b95ddbf rtspsrc: don't add non-utf8 chars to structures 2009-08-03 18:13:46 +02:00
Luc Deschenaux
f96e900a64 rtspsrc: put all SDP attributes on caps
Put the SDP attributes on the caps too so that they can be used by
depayloaders.

See #564437
2009-08-03 17:21:44 +02:00
Mark Nauwelaerts
a905ef233e rtspsrc: do not leak timeout message 2009-07-09 11:34:40 +02:00
Wim Taymans
81d7a297f7 rtspsrc: use same protocols after redirect
After a redirect we want to use the same protocols that we were using for the
current url.
2009-06-23 16:39:36 +02:00
Patrick Radizi
a95c049f76 rtspsrc: Add RTP blocksize functionality
Add property to make the client suggest a blocksize to the server.
Fixes #585549
2009-06-12 16:06:28 +02:00
Wim Taymans
b9ddf22340 rtspsrc: set the right state on rtpbin
We need to set the state of gstrtpbin to the same state as our source elements.
This fixes fallback to TCP again.
2009-06-04 15:19:05 +02:00
Patrick Radizi
301fc8a712 rtspsrc: fix memory leak of messages
Free messages correctly.
Fixes #577318
2009-05-25 10:57:59 +02:00
Wim Taymans
047618849a rtspsrc: make fakesrc silent
Make the fakesrc that is responsible for sending dummy packets silent.
2009-05-24 19:32:17 +02:00
Wim Taymans
5d3168e558 rtspsrc: don't send teardown before setup
Don't send a TEARDOWN request when we did not manage to successfully setup a
stream.
2009-05-24 16:33:42 +02:00