Commit graph

78 commits

Author SHA1 Message Date
Wim Taymans
2f17369e9d media: add suspend modes
Add support for different suspend modes. The stream is suspended right after
producing the SDP and after PAUSE. Different suspend modes are available that
affect the state of the pipeline. NONE leaves the pipeline state unchanged and
is the current and old behaviour, PAUSE will set the pipeline to the PAUSED
state and RESET will bring the pipeline to the NULL state.
A stream is also unsuspended when it goes back to PLAYING, for RESET streams,
this means that the pipeline needs to be prerolled again.

Base on patches by Ognyan Tonchev <ognyan@axis.com>

See https://bugzilla.gnome.org/show_bug.cgi?id=711257
2013-11-28 16:18:39 +01:00
Youness Alaoui
a95ab4b29e Add vmethod for rtsp-media subclass to access rtpbin 2013-08-02 16:59:04 +02:00
Youness Alaoui
050b16ad84 Add API to rtsp-media set the pipeline's state 2013-08-02 16:53:07 +02:00
Wim Taymans
d357fc55af docs: more updates 2013-07-11 12:24:33 +02:00
Wim Taymans
ccceb1de11 docs: update docs 2013-07-11 12:18:26 +02:00
Wim Taymans
d1e4baab6c media: Accept a thread in _prepare
Remove out own threadpool handling and use the provided thread and
maincontext for the bus messages and the state changes.
2013-07-10 17:08:14 +02:00
Wim Taymans
0499a1ec7d media: make it possible to set permissions
Make it possible to set permissions on media and media factory objects
2013-07-09 14:33:43 +02:00
Wim Taymans
12583e819c media: add optional context for bus messages
Add an optional mainloop to _prepare that will handle the bus messages instead
of always using the shared mainloop.
2013-07-08 11:10:20 +02:00
Wim Taymans
19cffc7999 auth: remove auth from media and factory
Remove the auth object from media and factory. We want to have the RTSPClient
authenticate and authorize resources, there is no need to place another auth
manager on the media/factory.
2013-07-05 20:53:19 +02:00
Wim Taymans
3999bd4e4e media: add method to find a stream by control url 2013-07-03 15:14:39 +02:00
Youness Alaoui
0b94f50eab Add query_position and query_stop vmethods to rtsp-media 2013-06-25 15:23:36 +02:00
Wim Taymans
aab1198516 media: add _get_element() method
Add method to get the element used when creating the media.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703008
2013-06-24 23:56:57 +02:00
David Svensson Fors
6151072a2e media: convert_range replaces get_range_times
get_range_times worked for handling UTC ranges for seeks, but we also
need to convert back from NPT to the requested unit in
get_range_string. convert_range is now used for both.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702084
2013-06-14 16:11:34 +02:00
David Svensson Fors
7efa871c1f media: possibility to override range time conversion
Make it possible to override the conversion from GstRTSPTimeRange to
GstClockTimes, that is done before seeking on the media
pipeline. Overriding can be useful for UTC ranges, where the default
conversion gives nanoseconds since 1900.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701191
2013-06-03 14:29:05 +02:00
Wim Taymans
b80b8824be media: listen to pad-removed signals
Listen to the pad-removed signal and remove the stream associated with the
removed pad.
Add signal to be notified of the removed pad.
Remove the fakesink in unprepare()
Fix signatures of the signal methods
2013-04-22 17:34:37 +02:00
Wim Taymans
a64cb68164 media: add method to get the base_time of the pipeline
Together with a shared clock, this base-time could eventually be sent to
the client so that it can reconstruct the exact running-time of the clock
on the server.
2013-04-12 11:34:38 +01:00
Wim Taymans
36ff679558 media: add GstNetTimeProvider support
Add a property to let the media provide a GstNetTimeProvider for its clock.
Make methods to get the clock and nettimeprovider
Add a x-gst-clock property to the SDP with the IP and port number of the nettime
provider and also the current time of the clock. This should make it possible
for (GStreamer) clients to slave their clock to the server clock.
2013-04-09 22:38:44 +02:00
Olivier Crête
c18eafbb24 rtsp-media/client: Reply to PLAY request with same type of Range
Remember the type of Range from the PLAY request and use the same type for
the reply.
2013-03-22 15:53:06 +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
fe71114a7d media: unref pipeline in finalize to avoid leaking it 2012-11-28 12:39:37 +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
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
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
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
Wim Taymans
348b7f9c21 docs: update docs 2012-10-26 12:35:20 +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
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
Wim Taymans
6cc2fb9bfc rtsp-server: port to new thread API 2012-05-11 09:42:47 +02: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
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
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
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
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
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
Sreerenj Balachandran
28597c913d rtsp-media.h: Minor corrections in comments.
Fixes #638944
2011-01-11 21:32:45 +01:00
Wim Taymans
160fc25867 docs: improve docs 2010-12-30 12:41:31 +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
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
b95165fcff rtsp-server: Some more doc fixups 2010-12-11 10:48:25 +01: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
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
ac8343ea62 media: allow configuration of allowed lower transport 2010-03-19 15:15:29 +01:00