Commit graph

94 commits

Author SHA1 Message Date
Olivier Crête
91210f40f2 rtsp-media-factory: g_signal_connect_object is not thread safe, can't use it here
Instead use a GWeakRef which is safe to use

This is a known GLib bug, see:
https://bugzilla.gnome.org/show_bug.cgi?id=667145
2013-03-22 18:59:50 -04:00
Olivier Crête
b9d111372e Document locking and its order 2013-03-11 11:07:19 +01:00
Wim Taymans
ad00c5e792 rtsp: make object details private
Make all object details private
Add methods to access private bits
2012-11-29 11:11:05 +01:00
Wim Taymans
6b36241816 media-factory: require an url 2012-11-28 12:10:14 +01:00
Wim Taymans
37a7ec8033 factory: keep ref to factory while media active
While the media from a factory is alive, keep a ref to the factory.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=663555
2012-11-20 12:29:55 +01:00
Wim Taymans
f15ffb521c rtsp: use AddressPool
Remove the multicast_group property.
Use the configured addresspool to allocate multicast addresses.
2012-11-14 17:23:59 +01:00
Wim Taymans
b8cba7719c media-factory: add locking 2012-11-12 16:14:19 +01:00
Tim-Philipp Müller
4dba434f16 Fix FSF address 2012-11-04 00:14:25 +00:00
Wim Taymans
de7c72dec2 rtsp: massive refactoring
Make GObjects from the remaining simple structures.
Remove GstRTSPSessionStream, it's not needed.
Rename GstRTSPMediaStream -> GstRTSPStream: It is shorter
Rename GstRTSPMediaTrans -> GstRTSPStreamTransport: It describes how
  a GstRTSPStream should be transported to a client.
Rename GstRTSPMediaFactory::get_element -> create_element because that
  more accurately describes what it does.
Make nice methods instead of poking in the structures.
Move some methods inside the relevant object source code.
Use GPtrArray to store objects instead of plain arrays, it is more
  natural and allows us to more easily clean up.
Move the allocation of udp ports to the Stream object. The Stream object
  contains the elements needed to stream the media to a client.
Improve the prepare and unprepare methods. Unprepare should now undo
  everything prepare did. Improve also async unprepare when doing EOS on
  shutdown. Make sure we always unprepare correctly.
2012-10-25 21:29:58 +02:00
Sebastian Pölsterl
e11e855ac8 rtsp-server: fixed comments and GIR annotations
https://bugzilla.gnome.org/show_bug.cgi?id=680777
2012-10-18 19:17:01 +01:00
Alessandro Decina
8f507e4512 rtsp-media-factory: make ::get_element overridable by GI bindings
The way to annotate vfuncs with GI seems to be to create an invoker (GI term)
for them and to annotate the invoker. Add gst_rtsp_media_factory_get_element()
as the invoker for ::get_element(), making it overridable by GI generated
bindings.
2012-10-15 10:50:26 +02:00
David Svensson Fors
aa158fa738 factory: plug pad leak in collect_streams
In gst_rtsp_media_factory_collect_streams: unref the srcpad that
was retrieved using gst_element_get_static_pad. gst_ghost_pad_new
will take one reference, and the other reference will otherwise
give a memory leak.
2012-06-14 10:14:06 +02:00
Wim Taymans
6cc2fb9bfc rtsp-server: port to new thread API 2012-05-11 09:42:47 +02:00
Wim Taymans
0e9ce1caf3 media-factory: add protocols property
Add a property to configure the allowed protocols in the media created from the
factory.
2011-08-16 15:15:19 +02:00
Wim Taymans
8684fc5c69 media-factory: add media-configure signal
Add signal to allow the application to configure the media after it was created
from the factory.
2011-08-16 15:03:06 +02:00
Wim Taymans
ccfb99f852 media-factory: configure multicast in media 2011-08-16 13:27:39 +02:00
Wim Taymans
1f8b97d940 media-factory: add property for multicast group
Add a property to configure the multicast group in the media factory.

Based on patches from Marc Leeman and Robert Krakora.
2011-08-16 13:13:36 +02:00
Emmanuel Pacaud
5dc9e76125 media-factory: add a "media-constructed" signal to GstRTSPMediaFactory
For example, it can be used to retrieve source elements like appsrc, in a more
convenient way than subclassing get_element.
2011-08-16 11:22:55 +02:00
Wim Taymans
8477fdbf43 media: fix default buffer size 2011-01-31 17:38:47 +01:00
Wim Taymans
e86b7c4b15 media-factory: add property to configure the buffer-size
Add a property to configure the kernel UDP buffer size.
2011-01-31 17:37:45 +01:00
Wim Taymans
9e97faf2db server: improve debugging in various objects 2011-01-12 18:14:48 +01:00
Wim Taymans
7797023fda media: enable per factory authorisations
Allow for adding a GstRTSPAuth on the factory and media level and check
permissions when accessing the factory.
Add hints to the auth methods for future more fine grained authorisation.
Add example application for per factory authentication.
2011-01-12 13:57:09 +01:00
Wim Taymans
9ea0346d97 media-factory: add methods to configure authorisation 2011-01-12 12:07:40 +01:00
Wim Taymans
75a7cda97d media-factory: make lock macro 2010-12-11 18:04:29 +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
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
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
851e8aa744 media-factory: better error handling
Improve the error handling a bit.
2010-03-05 13:34:15 +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
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
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
e5dc7c3719 factory: factor out the stream construction 2009-05-23 16:18:04 +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
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
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
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
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
63ee9e050f Add media factory to map urls to media pipeline objects. 2009-01-20 19:44:45 +01:00