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
Tim-Philipp Müller
0b8ffbbb5c
Fix rtsp client refcount management in TCP mode.
...
Don't unref a client ref we never had. Fixes an unref
of an already-free client object after a client
teardown request for me.
2009-04-01 01:23:32 +01:00
Tim-Philipp Müller
8f16b1504e
docs: fix typo in API docs
2009-04-01 00:45:17 +01:00
Wim Taymans
8f91451555
More seeking fixes.
...
Keep the udp sources in playing even if we go to paused. unlock the sources when
we shut down.
Add some more debug info.
Only seek when we need to.
Keep track of the position when we go to paused.
2009-03-13 15:57:42 +01:00
Wim Taymans
525d639cde
Add beginnings of seeking.
...
Parse the Range header and perform a seek on the pipeline for the requested
position. It's disabled currently until I figure out what's going wrong.
2009-03-12 20:32:14 +01:00
Wim Taymans
0ae095e825
allow pause requests for now.
...
--
2009-03-12 20:31:22 +01:00
Wim Taymans
d3c404f32f
Remove weak ref on the session in teardown
...
We need to remove our weakref from the session when we do a teardown because
else we close the TCP connection prematurely.
2009-03-11 20:03:06 +01:00
Wim Taymans
1be35624da
Do some more session cleanup
...
Make session timeout kill the TCP connection that currently watches the
session.
Remove the client timeout property.
2009-03-11 19:38:06 +01:00
Wim Taymans
ebc28a47da
Add TCP transports
...
Use appsrc and appsink to send and receive RTP/RTCP packets in the TCP
connection.
2009-03-11 16:45:12 +01:00
Wim Taymans
de1ebbc21b
Add support for live streams
...
Add support for live streams and ranges
Start on handling TCP data transfer.
2009-03-06 19:34:14 +01:00
Wim Taymans
cd3ed91553
Free the pipeline before other things
...
---
2009-03-04 16:33:59 +01:00
Wim Taymans
d85b34f1b1
Only free the pending tunnel if there is one
...
--
2009-03-04 16:33:21 +01:00
Wim Taymans
2f8025dbdd
rtsp-server: Add support for tunneling
...
Add support for tunneling over HTTP.
Use new connection methods to retrieve the url.
Dispatch messages based on the message type instead of blindly
assuming it's always a request.
Keep track of the watch id so that we can remove it later.
Set the media pipeline to NULL before unreffing the pipeline.
2009-03-04 12:53:07 +01:00
Wim Taymans
daf27d2704
Fix for channel -> watch rename in gstreamer
...
Rename the RTSPChannel to RTSPWatch and remove an unused variable.
2009-02-19 15:53:50 +01:00
Wim Taymans
39c2e31e65
Use ASYNC RTSP io
...
Use the async RTSP channels instead of spawning a new thread for each client.
If a sessionid is specified in a request, fail if we don't have the session.
2009-02-18 18:57:31 +01:00
Wim Taymans
b70a6c9d83
Add better debug info
...
Add some better debug info.
2009-02-18 17:49:03 +01:00
Wim Taymans
b86451dc76
Pass GTimeVal around for performance reasons
...
Get the current time only once and pass it around so that sessions don't have to
get the current time anymore.
Add experimental support for a GSource that dispatches when the session needs to
be cleaned up.
2009-02-13 19:58:17 +01:00
Wim Taymans
bc785b0a47
Add better support for session timeouts
...
Add a method to request the number of milliseconds when a session will timeout.
2009-02-13 19:56:01 +01:00
Wim Taymans
f0c047ef94
Add suport for RTP manager monitoring
...
Add the first stage in monitoring the rtp manager.
Make sure we don't update the state to something we don't want.
2009-02-13 19:54:18 +01:00
Wim Taymans
308ad6f6d0
Add support for session keepalive
...
Get and update the session timeout for all requests. get the session as early as
possible.
2009-02-13 19:52:05 +01:00
Wim Taymans
cd29e2a454
Handle media bus messages
...
Handle media bus messages in a custom mainloop and dispatch them to the
RTSPMedia objects. Let the default implementation handle some common messages.
2009-02-13 16:39:36 +01:00
Wim Taymans
e1154c92d6
Some more session timeout handling
...
Move the session header setting code to a central place so that we always add
the timeout parameter too.
Handle timeouts by running the session cleanup code.
Stop media before cleaning up.
2009-02-13 12:57:45 +01:00
Wim Taymans
34152ec840
Add timeout property
...
Add a timeout property ot the client and make the other properties into GObject
properties.
2009-02-10 16:24:13 +01:00
Wim Taymans
c5b06ab5f8
Use getters and setters in property code
...
Use the getters and setters for the timeout property instead of locking
ourselves.
2009-02-10 16:21:17 +01:00
Wim Taymans
734dedaeac
Merge branch 'master' of git+ssh://git.collabora.co.uk/git/gst-rtsp-server
2009-02-04 20:13:32 +01:00
Wim Taymans
ae9da4c5b0
Add more timeout stuff
...
Add method to check if a session is expired.
Add method to perform cleanup on a session pool.
2009-02-04 20:10:39 +01:00
Wim Taymans
aedd4652f3
Add beginnings of session timeouts and limits
...
Add the timeout value to the Session header for unusual timeout values.
Allow us to configure a limit to the amount of active sessions in a pool. Set a
limit on the amount of retry we do after a sessionid collision.
Add properties to the sessionid and the timeout of a session. Keep track of
creation time and last access time for sessions.
2009-02-04 19:52:50 +01:00
Wim Taymans
e789a8fdf3
Cleanup of sessions and more
...
Fix the refcounting of media and sessions in the client. Properly clean up the
session data when the client performs a teardown.
Add Server header to responses.
Allow for multiple uri setups in one session.
Add Range header to the PLAY response and add the range attribute to the SDP
message.
Fix the session pool remove method, it used the wrong key in the hashtable. Also
give the ownership of the sessionid to the session object.
2009-02-04 17:00:42 +01:00
Wim Taymans
077a31b8df
Rename a variable
...
Rename the 'server_port' variable to simply 'port'.
2009-02-04 09:57:55 +01:00
Wim Taymans
d5a00f1f23
Rework the way we handle transports for streams
...
Make the media accept an array of transports for the streams that we have
configured for the play/pause requests.
Implement server states for a client and its media.
Require 0.10.22.1 (git HEAD) of gstreamer.
2009-02-03 19:32:38 +01:00
Wim Taymans
f303eef9bb
Drop const from functions dealing with urls
...
Drop const from GstRTSPUrl stuff because the .h files in gst-plugins-base don't
have the right const in them.
2009-01-31 19:50:33 +01:00
Wim Taymans
ae2521096a
Fix various leaks
...
Fix some leaks.
2009-01-30 17:06:26 +01:00
Wim Taymans
27f069b43c
More cleanups
...
Don't keep a reference to the GstRTSPMedia in the stream.
Free more things when freeing the GstRTSPMedia.
2009-01-30 16:24:10 +01:00
Wim Taymans
1b9225078b
More docs and small cleanups
...
Add some more docs and update the README
Cleanup some method names.
Remove an unneeded idx field in the GstRTSPMediaStream
2009-01-30 14:53:28 +01:00
Wim Taymans
edd2175695
Fix some leaks and change default port
...
Fix some memory leaks by setting the udpsrc elements to the unlocked state after
we finished the initial preroll. If we keep them locked, setting the pipeline to
NULL will not stop and clean up the sources correctly.
Change the default RTSP port to 8554 aka the official alternative RTSP port.
2009-01-30 12:18:01 +01:00
Wim Taymans
704720f306
Cleanups to the session object
...
Remove some unneeded variables in the session state of a stream such as the
owner media and the server transport.
Get the configuration of a media stream in a session based on the media_stream
in the original object instead of our cached index.
Free more data in the finalize method.
2009-01-30 12:17:57 +01:00
Wim Taymans
b19b1fbe6b
Cleanups and reuse media from DESCRIBE
...
Handle thread create errors.
Rename some internal methods to better match what they actually do.
Handle misconfiguration of session_pool and media_mapping gracefully.
Cache the DESCRIBE media and uri in the client connection and reuse them when
we receive a SETUP request in the same connection for the same uri.
Cleanup the client connection object.
2009-01-30 12:17:51 +01:00
Wim Taymans
998cf7d5c7
Add shared properties to media and factory
...
Add the shared property to media.
Implement some simple caching in the factory depending on if the media is shared
or not.
2009-01-30 12:17:46 +01:00
Wim Taymans
082099005d
Add a little comment
...
Add some comment about the content-base header.
2009-01-30 12:17:38 +01:00
Wim Taymans
41dd6399a6
Reorganize things, prepare for media sharing
...
Added various other test server examples
Move the SDP message generation to a separate helper.
Refactor common code for finding the session.
Add content-base for realplayer compatibility
Clean up request uris before processing for better vlc compatibility.
Move prerolling and pipeline construction to the RTSPMedia object.
Use multiudpsink for future pipeline reuse.
2009-01-30 12:17:28 +01:00
Wim Taymans
b0fcbfd290
Cleanups and doc updates
...
Add some more documentation and do some minor cleanups here and there.
2009-01-22 18:35:17 +01:00
Wim Taymans
cf18709634
More improvements
...
Rename GstRTSPMediaBin to GstRTSPMedia
Parse the request url into a GstRTSPUri object and pass this object to the
various handlers and methods that require the uri.
2009-01-22 17:58:19 +01:00
Wim Taymans
6f9b659b1d
Handle state change failures better
...
Handle state change failures better when changing the state of the pipeline to
determine the SDP.
2009-01-22 16:53:16 +01:00
Wim Taymans
28b65778f6
Make element creation more extendible
...
Add get_element vmethod to the default MediaFactory so that subclasses can just
override that method and still use the default logic for making a MediaBin from
that.
2009-01-22 16:51:08 +01:00
Wim Taymans
4b1c190a5f
Make the server handle arbitrary pipelines
...
Make GstMediaFactory an object that can instantiate GstMediaBin objects.
The GstMediaBin object has a handle to a bin with elements and to a list of
GstMediaStream objects that this bin produces.
Add GstMediaMapper that can map url mountpoints to GstMediaFactory objects along
with methods to register and remove those mappings.
Add methods and a property to GstRTSPServer to manage the GstMediaMapper object
used by the server instance.
Modify the example application so that it shows how to create custom pipelines
attached to a specific mount point.
Various misc cleanps.
2009-01-22 15:33:29 +01:00
Wim Taymans
ddf17f338b
Allow setting a custom media factory for a server
2009-01-20 19:47:07 +01:00
Wim Taymans
94d60a8611
Allow setting a custom media factory for a client.
2009-01-20 19:46:21 +01:00
Wim Taymans
f38c390736
Add Makefile entry for the media factory
2009-01-20 19:45:28 +01:00
Wim Taymans
63ee9e050f
Add media factory to map urls to media pipeline objects.
2009-01-20 19:44:45 +01:00
Wim Taymans
852cc3973c
Add comments.
...
Remove unused field
2009-01-20 19:43:47 +01:00
Wim Taymans
a3522af4f8
Allow custom session pools to override the session id allocation algorithms
...
Add some comments.
2009-01-20 19:41:53 +01:00
Wim Taymans
f00188b50e
Add some comments.
2009-01-20 19:40:42 +01:00
Wim Taymans
b312f98627
Move the connection code in one place
...
Add some comments
2009-01-20 13:57:47 +01:00
Wim Taymans
74210e67be
Make vmethod to create and accept new clients.
...
Add some docs.
2009-01-20 13:19:36 +01:00
Wim Taymans
491b20bedd
Make more properties configurable in the server.
...
Expose the GIOChannel and GSource better to allow for more customisations.
2009-01-19 19:36:23 +01:00
Wim Taymans
8d2ace0026
Name the parameters more appropriately.
2009-01-19 19:34:29 +01:00
Wim Taymans
243b524f51
Do some more cleanup of the session pool.
2009-01-19 19:32:28 +01:00
Wim Taymans
a76656ad8d
Check if return value of gst_rtsp_session_get_media is not NULL
2009-01-08 16:28:24 +01:00
Wim Taymans
b6e7986f45
Install rtsp-session and rtsp-session-pool headers
2009-01-08 15:02:42 +01:00
Alessandro Decina
51775b87d1
Change an obviously wrong return FALSE to return NULL;
...
(cherry picked from commit 56d4fb48030db3ae45f3f0e60b29b36f3134322b)
2009-01-08 13:55:07 +01:00
Sebastian Pölsterl
a8400faeab
Put GStreamer version in library name
2009-01-08 13:52:10 +01:00
Wim Taymans
36fb0de01c
Fix some issues to pass distcheck
2009-01-08 13:51:26 +01:00
Wim Taymans
55bdc67e49
Added port property to GstRTSPServer class.
2009-01-08 13:41:33 +01:00
Wim Taymans
7889395787
Split in library and example program
2009-01-08 13:18:55 +01:00