Wim Taymans
ad2e0edee5
server: set SO_REUSEADDR before bind
...
Set the SO_REUSEADDR _before_ bind() to make it actually work.
2010-12-18 11:24:48 +01:00
Wim Taymans
1ea450179e
media: emit prepared signal when prepared
...
Make a 'prepared' signal and emit it when we successfully prepared the element.
This signal can be used to configure the media object after it has been prepared
for streaming.
2010-12-17 18:45:10 +01:00
Wim Taymans
ca76a73ca0
media: update range when active clients changed
...
When we changed the number of active clients, update the current range
information because we want the second client connecting to a shared resource
continue from where the stream currently.
2010-12-12 15:48:47 +01:00
Wim Taymans
d99a448f79
factory-uri: add colorspace and fix pt
...
Rework the way we pass data to the autoplugger.
When we have raw caps, plug a converter element to make pluggin to raw
payloaders more successful.
Make sure all dynamically plugged payloaders have a unique payload types.
2010-12-12 04:06:41 +01:00
Wim Taymans
7ef0bf98da
factory-uri: add a factory to stream any URI
...
Make a factory that uses uridecodebin to decode any uri and autoplug a payloader
when we have one.
2010-12-11 18:04:34 +01:00
Wim Taymans
34f0973831
media: ignore spurious ASYNC_DONE messages
...
When we are dynamically adding pads, the addition of the udpsrc elements will
trigger an ASYNC_DONE. We have to ignore this because we only want to react to
the real ASYNC_DONE when everything is prerolled.
2010-12-11 18:04:34 +01:00
Wim Taymans
75a7cda97d
media-factory: make lock macro
2010-12-11 18:04:29 +01:00
Edward Hervey
a6556551e3
rtsp-server: Remove unused variable and dead assignment
2010-12-11 10:53:28 +01:00
Edward Hervey
eb83fc6318
rtsp-server: Run gst-indent
...
Since it wasn't using the upstream common previously, there was no
indentation check before commiting.
2010-12-11 10:48:42 +01:00
Edward Hervey
b95165fcff
rtsp-server: Some more doc fixups
2010-12-11 10:48:25 +01:00
Edward Hervey
bdd477f2bf
Makefile.am: Use standard GIR make behaviour
2010-12-07 18:14:39 +01:00
Sebastian Pölsterl
347e10e1f9
Added initial gobject-introspection support
2010-09-23 13:39:42 +02:00
Wim Taymans
c310f0032c
media-factory: don't use host for shared hash key
...
When we generate the key to share made between connections, don't include the
host used to connect so that we can share media even if between clients that
connected with localhost and ones with the ip address.
2010-09-23 11:35:40 +02:00
Wim Taymans
ed473f6f26
media: help the compiler a little
2010-09-22 16:15:56 +02:00
Wim Taymans
450b68252f
media: cleanup media transport before freeing
...
Cleanup the media transport data before freeing. In particular, remove the qdata
from the rtpsource object.
2010-08-24 16:47:30 +02:00
Wim Taymans
dc33070da3
media-factory: add eos-shutdown property
...
Add an eos-shutdown property that will send an EOS to the pipeline before
shutting it down. This allows for nice cleanup in case of a muxer.
Fixes #625597
2010-08-20 18:17:08 +02:00
Wim Taymans
a900866570
media: use multiudpsink send-duplicates when we can
...
If we have a new enough multiudpsink with the send-duplicates property, use this
instead of doing our own filtering. Our custom filtering code should eventually
be removed when we can depend on a released -good.
2010-08-20 15:58:39 +02:00
Wim Taymans
c89d17ca26
media: don't leak destinations
...
Refactor and cleanup the destinations array when the stream is destroyed.
2010-08-20 13:19:56 +02:00
Wim Taymans
7c0f8a77ec
media: don't add udp addresses multiple times
...
Keep track of the udp addresses we added to udpsink and never add the same udp
destination twice. This avoids duplicate packets when using multicast.
2010-08-20 13:09:12 +02:00
Wim Taymans
af732fa749
server: disable use of SO_LINGER
...
SO_LINGER cause the client to fail to receive a TEARDOWN message because the
server close()s the connection.
2010-08-20 10:18:34 +02:00
Wim Taymans
2607ff079d
server: use 5 second linger period in SO_LINGER
...
Wait 5 seconds before clearing the send buffers and reseting the connection with
the client when we do a close. This should be enough time to get the message to
the client.
See #622757
2010-08-19 18:52:47 +02:00
Robert Krakora
8f6fd32065
server: use SO_LINGER
...
SO_LINGER on the socket will make sure that any pending data on the socket is
flushed ASAP and that the socket connection is reset. This makes sure that the
socket can be reused immediately.
Fixes 622757
2010-08-16 12:45:24 +02:00
David Schleef
6a880e53df
Add stdlib.h for atoi()
2010-08-09 12:56:23 -07:00
Wim Taymans
336ffc0941
client: improve client cleanups
...
Make sure the session does not timeout when using TCP. We need to do this
because quicktime player does not send RTCP for some reason in tunneled
mode.
Refactor some cleanup code.
Fixes #612915
2010-04-06 17:08:40 +02:00
Wim Taymans
4fdd2bf4d1
session: add support for prevent session timeouts
...
Add an atomix counter to prevent session timeouts when we are, for example,
streaming over TCP.
2010-04-06 17:07:27 +02:00
Wim Taymans
48a54054e7
client: fix unlink on session timeouts
...
When our session times out, make sure we unlink all streams in this
session.
Remove the tunnelid when closing the connection.
2010-04-06 15:45:56 +02:00
Wim Taymans
558c7fddd2
session: small cleanups
2010-04-06 15:44:45 +02:00
Wim Taymans
30c31a65eb
client: handle lost_tunnel callbacks
...
Handle lost_tunnel callbacks and use it to store the tunnelid back into the
hashtable so that we can reuse it for when the client reopens the POST
socket.
Close the connection after a TEARDOWN.
Make sure or watchid is cleared when the watch is removed.
Fixes #612915
2010-04-06 11:13:51 +02:00
Wim Taymans
09b97dd4ac
rtsp-server: add more support for multicast
2010-03-19 18:03:40 +01:00
Wim Taymans
ac8343ea62
media: allow configuration of allowed lower transport
2010-03-19 15:15:29 +01:00
Wim Taymans
e866345f15
rtsp: keep track of server ip and ipv6
...
Keep track of how the client connected to the server and setup the udp ports
with the same protocol.
Copy the server ip address in the SDP so that clients can send RTCP back to
us.
2010-03-16 18:37:18 +01:00
Wim Taymans
4eccdd9dd7
session: indent
2010-03-16 18:34:43 +01:00
Wim Taymans
d749f1e7d5
client: use right size for malloc
2010-03-16 18:33:23 +01:00
Wim Taymans
0509aa1cbf
server: comment ipv6 server listening address
2010-03-10 11:45:30 +01:00
Wim Taymans
6afa5be799
media: allow for ipv6 sockets
2010-03-10 11:45:06 +01:00
Wim Taymans
17bb89f1fc
server: rework server part
...
Allow setting a bind address, make sure we can deal with ipv6.
Remove the port property and change with the service property.
2010-03-09 13:49:00 +01:00
Wim Taymans
1b0dc41534
media: update comments a little
2010-03-09 13:44:20 +01:00
Wim Taymans
b3814d4646
client: make content-base better
...
Use the URI formatting functions to make a content-base. Also make sure that
there is a trailing / at the end.
2010-03-09 13:43:29 +01:00
Wim Taymans
171e89c63a
client: guard against invalid paths
2010-03-09 13:42:50 +01:00
Alessandro Decina
5f535ecf87
rtspmedia: emit "unprepared" if _prepare fails.
...
Emit the unprepared signal if gst_rtsp_media_prepare fails so that the
media object is removed from its factory's cache.
2010-03-09 10:27:38 +01:00
Wim Taymans
2997806d43
media: collect media position when seek completes
2010-03-05 19:08:08 +01:00
Luca Ognibene
e19c382bbb
client: call unlink_streams in client finalize
...
Fixes #599027
2010-03-05 18:37:17 +01:00
Wim Taymans
83ed258684
media: limit the time to wait to something huge
...
Avoid waiting forever but limit the timeout to 20 seconds.
2010-03-05 18:23:18 +01:00
Wim Taymans
f90c422e62
sdp: reindent and check for prepared status
2010-03-05 17:57:08 +01:00
Wim Taymans
c7ca9b74eb
media: avoid doing _get_state() for state changes
...
When preparing, use the ASYNC_DONE and ERROR messages in the bus handler to wait
until the media is prerolled or in error. This avoids doing a blocking call of
gst_element_get_state() that can cause lockups when there is an error.
Fixes #611899
2010-03-05 17:54:09 +01:00
Wim Taymans
d45eae2edd
media: reindent
2010-03-05 16:20:08 +01:00
Wim Taymans
851e8aa744
media-factory: better error handling
...
Improve the error handling a bit.
2010-03-05 13:34:15 +01:00
Wim Taymans
73e8d6c69a
client: rework transport parsing
...
Rework the transport parsing code so that we can ignore transports we don't
support instead of just picking the first one we can parse.
Configure a (for now hardcoded) destination for multicast transports.
2010-03-05 13:31:37 +01:00
Wim Taymans
53f8350b36
media: set multicast sink parameters
...
Disable loop and automatic multicast join on the udpsink elements.
Add some more debug info.
Reset some state variables in the right place.
Use the right port numbers for multicast.
2010-03-05 13:28:58 +01:00
Wim Taymans
63addbc278
session: handle transport setup correctly
...
Handle UDP, MCAST and TCP transport negotiation more correctly.
Store the server session SSRC in the transport.
2010-03-05 13:27:18 +01:00
Wim Taymans
ce6724f788
rtsp-client: implement error_full
...
Implement error_full to avoid some segfaults when the rtspconnection calls it.
See #608245
2010-01-27 18:38:27 +01:00
Wim Taymans
996112db95
docs: update docs and comments
2009-12-25 18:24:10 +01:00
Nikolay Ivanov
92eb244215
sdp: make server work better when behind a proxy
2009-12-25 15:22:23 +01:00
Sebastian Pölsterl
3d7610b033
client: dump rtsp message only if debug threshold is higher than GST_LEVEL_LOG
2009-11-21 19:20:39 +01:00
Sebastian Pölsterl
6d227be7a9
Use GStreamer's debugging subsystem
2009-11-21 19:20:23 +01:00
Sebastian Pölsterl
87fbfa54a0
server: Set ghost pad active in gst_rtsp_media_factory_collect_streams
2009-11-21 19:20:23 +01:00
Luca Ognibene
745900dd48
client: call weak-unref on client->sessions from finalize
...
Fixes bug #596305
2009-10-13 10:57:35 +02:00
Sebastian Pölsterl
f8630c6c81
media: Fixed crasher where caps got unref'ed too often
2009-10-13 10:57:31 +02:00
Wim Taymans
297b6a755a
media: add some docs
2009-09-11 13:52:27 +02:00
Peter Kjellerstedt
309f53a12b
rtsp: Use gst_rtsp_watch_send_message().
...
Use gst_rtsp_watch_send_message() since the old API which used
gst_rtsp_watch_queue_message() has been deprecated.
2009-08-24 13:27:00 +02:00
Wim Taymans
7338ab81e1
rtsp: allocate channels in TCP mode
...
When the client does not provide us with channels in TCP mode, allocate channels
ourselves.
2009-07-27 19:42:44 +02:00
Wim Taymans
daccf6bc99
client: don't crash when tunnelid is missing
...
When a clients tries to open an HTTP tunnel but fails to provide a tunnelid,
don't crash but return an error response to the client.
Fixes #589489
2009-07-24 12:49:41 +02:00
Wim Taymans
a4c90c28c7
sessionpool: add function to filter sessions
...
Add generic function to retrieve/remove sessions.
2009-06-30 21:27:53 +02:00
Wim Taymans
5d4c0e20c0
media: fix indentation
2009-06-18 16:05:18 +02:00
Sebastian Pölsterl
f384231ca3
Unref pipeline and set it to NULL. Set stream's caps to NULL, otherwise we unref it too often.
2009-06-18 15:54:15 +02:00
Sebastian Pölsterl
036550bf60
set state and remove elements of media in for loop
2009-06-18 15:54:11 +02:00
Sebastian
3bd2d36b1b
Added gst_rtsp_media_remove_elements function
2009-06-18 15:54:04 +02:00
Sebastian
1a3e5b369c
Don't use name for gstrtpbin so we can add multiple instances to the pipeline
2009-06-18 15:54:01 +02:00
Sebastian Pölsterl
749765b921
Added vmethod unprepare to GstRTSPMedia
...
The default implementation sets the state of the pipeline to GST_STATE_NULL
2009-06-18 15:53:49 +02:00
Sebastian Pölsterl
045875ecbe
Made collect_streams function public
2009-06-18 15:53:42 +02:00
Sebastian Pölsterl
e417d83dce
Added vmethod create_pipeline to GstRTSPMediaFactory
...
The pipeline is created in this method and the GstRTSPMedia's element is added to it
2009-06-18 15:53:34 +02:00
Wim Taymans
a697d16c75
client: use g_source_destroy()
...
We need to use g_source_destroy() because we might have added the source to a
different main context than the default one.
2009-06-11 11:27:47 +02:00
Wim Taymans
5e4757eff6
rtsp: prepare for handling GET/SET_PARAMETER
...
Add helper functions to handle GET/SET_PARAMETER. Reply with an error when there
is a body now.
Fix return codes of handlers.
2009-06-10 00:01:07 +02:00
Wim Taymans
94b6da045a
media: don't leak session pads
2009-06-04 19:20:26 +02:00
Wim Taymans
9a38f95417
media: clean up the messages a bit
2009-06-04 18:32:15 +02:00
Wim Taymans
e1765dec13
sdp: warn and skip streams without media
2009-06-03 12:13:21 +02:00
Wim Taymans
03ae66062b
media: fix message
...
Fix a debug message
Make dumping RTCP stats configurable
2009-05-27 11:15:22 +02:00
Wim Taymans
3fc1439965
media: be less verbose and leak less
2009-05-26 19:20:07 +02:00
Wim Taymans
1340e21239
media: don't leak the destination address
2009-05-26 19:07:33 +02:00
Wim Taymans
9bed89c3b7
rtsp: use RTCP to keep the session alive
...
Use the RTCP rtcp-from stats field to find the associated session and use this
to keep the session alive.
2009-05-26 19:01:10 +02:00
Wim Taymans
7bbdf7bf97
session: add 5sec to the real session timeout
...
Allow the session to live 5sec longer before really timing out. This should give
clients some extra time to keep the session active.
2009-05-26 17:27:07 +02:00
Wim Taymans
461169537b
client: replay OK to GET/SET_PARAMETER
...
Some clients (vlc) use GET/SET_PARAMETER to keep the TCP session open. Make it
so that we return OK for those requests.
2009-05-26 17:25:59 +02:00
Wim Taymans
5955fc7d12
media: keep track of active transports
...
Keep track of which transport is active to avoid closing the connection too
soon.
Remove the destination transport also when going to NULL.
Print some stats about the SDES and other RTCP messages we receive from the
clients.
2009-05-26 11:42:41 +02:00
Wim Taymans
7a8b931a83
media: also count active TCP connections
2009-05-24 19:56:45 +02:00
Wim Taymans
fab65082da
rtsp: add support for dynamic elements
...
Add support for dynamic elements.
Don't set live pipelines back to paused.
2009-05-24 19:34:52 +02:00
Wim Taymans
415e5e674b
sdp: don't add encoding name when absent in caps
2009-05-24 19:33:22 +02:00
Wim Taymans
740d71bd50
client: warn when we can't do RTP-Info
2009-05-23 16:30:55 +02:00
Wim Taymans
e5dc7c3719
factory: factor out the stream construction
2009-05-23 16:18:04 +02:00
Wim Taymans
8fcbe501dc
client: only add RTP-Info when we have the info
...
Only add RTP-Info for a stream when we can get the seqnum and timestamp from the
depayloader.
2009-05-23 16:17:02 +02:00
Wim Taymans
b83f54f159
media: link the RTP udpsrc to the session manager
...
Link the RTP udpsrc and the appsrc to the session manager so that they don't
shut down when the client sends a packet to open firewalls.
2009-05-15 17:58:44 +02:00
Wim Taymans
5f19d4b09e
media: seek to key frames
2009-04-29 17:25:04 +02:00
Wim Taymans
6ffd7432a5
media: emit the unprepared signal by id
...
Emit the unprepared signal by id instead of name and set the media as
reused.
2009-04-21 22:44:05 +02:00
Sebastian Pölsterl
708c8daaec
Set pipeline's state to NULL no matter if the media is reusable and emit unprepared signal in gst_rtsp_media_unprepare
2009-04-21 22:40:01 +02:00
Sebastian Pölsterl
9b7cb2a4ef
Added finalize function to GstRTPSPServer to unref session pool and media mapping
2009-04-21 00:14:41 +02:00
Wim Taymans
3f1f38f479
server: use appsink and appsrc with the API
...
Use the appsink/appsrc API instead of the signals for higher
performance.
2009-04-14 23:38:58 +02:00
Wim Taymans
35a5a709d3
factory: connect to the unprepare signal
...
Connect to the unprepare signal for non-reusable media so that we can remove
them from the cache.
2009-04-03 22:46:22 +02:00
Wim Taymans
0c1df5e023
media: add signal to notify of unprepare
2009-04-03 22:45:57 +02:00
Wim Taymans
5dab222089
media: more work on making the media shared
...
Add a reusable flag to medias, indicating that they can be reused after a state
change to NULL.
Small cleanups.
2009-04-03 22:22:30 +02:00
Wim Taymans
c6e1aef881
client: support shared media
...
Always perform the state actions even if the target state of the pipeline is
already correct, we still want to add/remove the transports when we are dealing
with shared media.
Keep a counter of the number of active transports for a media so that we can use
this to perform a state change when needed.
Perform a state change of the pipeline only when the first transport was added
or when there are no active transports.
2009-04-03 19:44:37 +02:00
Wim Taymans
47c822bdf3
client: fix refcounting crasher
...
Don't need to remove the weak refs in the finalize methods, they are already
removed in the dispose.
Don't register the callback with a DestroyNofity.
2009-04-03 19:43:33 +02:00