Commit graph

183 commits

Author SHA1 Message Date
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
e11287eb7c media: check if prepared for some methods
Check that the media object is prepared before doing seek and getting the
current position etc.
Add some g_return checks.
2012-11-28 14:45:30 +01:00
Wim Taymans
fe71114a7d media: unref pipeline in finalize to avoid leaking it 2012-11-28 12:39:37 +01:00
Wim Taymans
d43a31055e rtsp: use gst_object_unref on GstObjects 2012-11-28 12:10:47 +01:00
Wim Taymans
0f93879b2c media: fix seeking 2012-11-21 17:21:28 +01:00
Wim Taymans
5eb5fd45f3 media: support more Range formats
Use the new -base methods to convert the Range string into a seek start and stop
value.
2012-11-21 16:41:56 +01:00
Wim Taymans
989f004e24 media: unref source in finish_unprepare
The source is created in prepare, unref it in finish_unprepare.

See https://bugzilla.gnome.org/show_bug.cgi?id=688707
2012-11-20 09:46:40 +01:00
David Svensson Fors
01973c924d rtsp-media: remove bus watch before finalizing
* A GDestroyNotify function is set for the bus watch in gst_rtsp_media_prepare.
* An extra media ref is added for the bus watch. This extra ref is unreffed by
the GDestroyNotify function.
* gst_rtsp_media_unprepare destroys the source so the bus watch is removed.
* GstRTSPClient, which calls gst_rtsp_media_prepare, also calls
gst_rtsp_media_unprepare before unreffing the media.

This way, the bus watch will be removed before the media is finalized.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688707
2012-11-20 09:46:00 +01:00
Wim Taymans
e4ea72ccdf stream: use the address managed by the stream
Use the address managed by the stream for multicast. This allows us to have 1
multicast address for each stream.
Because the address is now managed by the stream we don't have to pass it around
anymore.
Set the address pool on the streams.
2012-11-15 16:18:29 +01:00
Wim Taymans
ba21661ce4 rtsp: improve debug 2012-11-15 16:15:20 +01:00
Wim Taymans
c34f5d1c1a media: add signal for new streams
This allows applications to listen for new streams and configure properties on
them, like the address pool.
2012-11-15 15:41:42 +01:00
Wim Taymans
4168a67992 media: configure address pool in new streams 2012-11-15 15:41:19 +01:00
Wim Taymans
1b4ac6e5b0 media: remove MTU property
It is a stream property
2012-11-15 15:32:43 +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
dfe3efef74 media: wait for concurrent _prepare
If a prepare is busy, wait for the result.
2012-11-13 11:54:17 +01:00
Wim Taymans
47127bd270 media: add lock around message handler
We don't want to dispatch messages while we are still processing the result of
the state change.
2012-11-13 11:49:08 +01:00
Wim Taymans
9a97de88ea media: add lock to protect state changes 2012-11-13 11:15:35 +01:00
Tim-Philipp Müller
4dba434f16 Fix FSF address 2012-11-04 00:14:25 +00:00
Sebastian Pölsterl
75598337a9 rtsp-server: added annotations to indicate type of ownership transfer of return values
https://bugzilla.gnome.org/show_bug.cgi?id=680777
2012-10-28 15:39:04 +00:00
Wim Taymans
0bb0e3733c small fixes to docs and debug 2012-10-27 11:53:51 +02:00
Wim Taymans
6f7d755894 stream: improve join and leave of the pipeline
simplify code
Do the cleanup properly
Add some docs
2012-10-26 17:28:10 +02:00
Wim Taymans
693dd3cfc4 media: move unprepare below default implementation
Makes it easier to find the default implementation
2012-10-26 15:23:16 +02:00
Wim Taymans
0d55e1f50c media: signal unprepared when we actually finish 2012-10-26 15:21:50 +02:00
Wim Taymans
84b7cf1590 media: no need to unlock, unprepare does that when needed 2012-10-26 15:19:23 +02:00
Wim Taymans
6b7ff45ca6 rtsp: fix MTU setting
Fix setting of the MTU. There is no need for a vmethod.
2012-10-26 12:35:20 +02: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
Ognyan Tonchev
d581b7bd4e client: Use client transport settings for multicast if allowed.
This patch makes it possible for the client to send transport settings for
multicast (destination && ttl). Client settings must be explicitly allowed or
the server will use its own settings.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685561
2012-10-10 11:07:59 +02:00
Ognyan Tonchev
f4a0a371b7 media: fix check for seekability 2012-09-10 16:29:35 +02:00
Aleix Conchillo Flaque
c6cce4a6b9 rtsp-media: also initialize transports in on_ssrc_active (bug #683304)
* gst/rtsp-server/rtsp-media.c: GstRTSPMediaStream transports might not
  be available in "on_new_ssrc". The transports are added in
  gst_rtsp_media_set_state when going to PLAYING state. However,
  "on_new_ssrc" might be called before this happens.

  https://bugzilla.gnome.org/show_bug.cgi?id=683304
2012-09-07 16:45:17 +02:00
Ognyan Tonchev
86e53af34a rtsp: Handle the blocksize parameter
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=679325
2012-07-10 11:26:01 +02:00
Tim-Philipp Müller
217a46e4c1 rtsp-media: update for gst_element_make_from_uri() changes 2012-06-23 15:06:11 +01:00
David Svensson Fors
36df0dd8be rtsp-media: don't collect media stats when going to NULL
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=678015
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
e0be150e91 media: fix state of the appqueue 2012-03-13 18:10:53 +01:00
Wim Taymans
4c59e211e2 rtsp-server: port to GIO
Port to GIO
2012-03-07 15:04:29 +01:00
Wim Taymans
fde25cd9c3 rtsp-server: port some more to 0.11
Fix caps.
Remove bufferlist stuff
Update for new API.
Add queue before appsink now that preroll-queue-len is gone.
Update for request pad changes.
2011-12-09 10:53:30 +01:00
Wim Taymans
bace3995d5 Merge branch 'master' into 0.11 2011-11-03 12:58:42 +01:00
Wim Taymans
a701e8595e media: add a seekable boolean
Maintain the seekable state with a new variable instead of reusing the
is_live variable.
2011-11-03 12:55:24 +01:00
Victor Gottardi
526bbb5a8f Disallow seek in live media 2011-11-03 12:45:18 +01:00
Wim Taymans
c079325169 media: add property for multicast group
Add a property to configure the multicast group in the media.

Based on patches from Marc Leeman and Robert Krakora.
2011-08-16 14:50:05 +02:00
Wim Taymans
5b53335873 media: add property for multicast group
Add a property to configure the multicast group in the media.

Based on patches from Marc Leeman and Robert Krakora.
2011-08-16 13:25:16 +02:00
Wim Taymans
b5aa7628bf Merge branch 'master' into 0.11 2011-08-16 11:12:33 +02:00
Wim Taymans
bbab01747d media: use new api 2011-08-04 08:59:17 +02:00
Thijs Vermeir
93fb73b46f fix compiler warnings about unused variables 2011-07-20 17:16:42 +02:00
Wim Taymans
80e0b0b19a media: port to new caps API 2011-05-17 09:48:13 +02:00
Wim Taymans
914b481e42 rtsp-server: port to 0.11 2011-04-26 19:22:50 +02:00
Wim Taymans
6959ebd8e8 Merge branch 'master' into 0.11
Conflicts:
	common
	configure.ac
2011-04-26 19:07:13 +02:00
Wim Taymans
a924e90c79 media: remove more unused code 2011-02-02 15:37:03 +01:00
Wim Taymans
ec2201a3a8 media: remove duplicate filtering
Remove the duplicate filtering code now that we have a released -good version.
Give a warning instead.
2011-02-02 15:30:45 +01:00
Wim Taymans
8477fdbf43 media: fix default buffer size 2011-01-31 17:38:47 +01:00
Wim Taymans
88b4c02dff media: add property to configure kernel buffer sizes
Add a property to configure the kernel UDP buffer size.
2011-01-31 17:37:41 +01:00
Wim Taymans
44b418b346 media: init debug category before starting thread 2011-01-13 18:57:15 +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
e1787e0776 funnel: rename fsfunnel to rtspfunnel
Rename the funnel to avoid conflicts with the farsight one.
2011-01-10 15:10:53 +01:00
Wim Taymans
7b3cbfde1b rtsp-media: add and use fsfunnel
Add a copy of fsfunnel to the build because input-selector removed the (broken)
select-all property that we need.
2011-01-10 13:43:10 +01:00
Wim Taymans
790c067919 media: attempt to configure bigger UDP buffers
Attempt to configure bigger udp kernel send buffers to avoid overflowing the
send buffers with high bitrate streams.
2011-01-05 12:06:23 +01:00
Wim Taymans
50b4c8de98 rtsp-server: add support for buffer lists
Add support for sending bufferlists received from appsink.

Fixes #635832
2010-12-29 16:26:41 +01:00
Wim Taymans
4234d96314 media: make method to retrieve the play range
Make a method to retrieve the playback range so that we can conditionally create
a different range for the SDP and the PLAY requests.
2010-12-28 18:35:01 +01:00
Wim Taymans
915cd708ea media: add signal to notify of state changes 2010-12-28 18:34:10 +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
fc12ade012 Merge branch 'master' into 0.11
Conflicts:
	common
	configure.ac
2010-12-13 11:43:13 +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
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
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
Wim Taymans
422fea478c media: warn and fail when gstrtpbin is not found 2010-12-06 19:29:53 +01: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
David Schleef
6a880e53df Add stdlib.h for atoi() 2010-08-09 12:56:23 -07: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
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