Make a separate method to attach a client to a MainContext.
Let the server decide in what GMainContext the client will operate and give this
context to the client in attach. Then the server can later decide to use a
separate thread for each client or just use the mainthread.
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.
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.
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
Don't destroy the client watch while dispatching. The rtsp watch is
automatically destroyed after the rtsp watch function closed() has
been called.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685220
* 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
In client_unlink_session: now don't iterate in session->medias
list where items are removed by gst_rtsp_session_release_media.
Instead, repeatedly remove the first item.
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.