Commit graph

207 commits

Author SHA1 Message Date
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
6afa5be799 media: allow for ipv6 sockets 2010-03-10 11:45:06 +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
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
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
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
Sebastian Pölsterl
6d227be7a9 Use GStreamer's debugging subsystem 2009-11-21 19:20:23 +01: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
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
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
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
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
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
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
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
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
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
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
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
b70a6c9d83 Add better debug info
Add some better debug info.
2009-02-18 17:49:03 +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
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
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
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
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
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
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
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
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
852cc3973c Add comments.
Remove unused field
2009-01-20 19:43:47 +01:00
Wim Taymans
7889395787 Split in library and example program 2009-01-08 13:18:55 +01:00
Renamed from src/rtsp-media.c (Browse further)