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.
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.
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.
Use the async RTSP channels instead of spawning a new thread for each client.
If a sessionid is specified in a request, fail if we don't have the session.
Get the current time only once and pass it around so that sessions don't have to
get the current time anymore.
Add experimental support for a GSource that dispatches when the session needs to
be cleaned up.
Move the session header setting code to a central place so that we always add
the timeout parameter too.
Handle timeouts by running the session cleanup code.
Stop media before cleaning up.
Add the timeout value to the Session header for unusual timeout values.
Allow us to configure a limit to the amount of active sessions in a pool. Set a
limit on the amount of retry we do after a sessionid collision.
Add properties to the sessionid and the timeout of a session. Keep track of
creation time and last access time for sessions.
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.
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.
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.
Remove some unneeded variables in the session state of a stream such as the
owner media and the server transport.
Get the configuration of a media stream in a session based on the media_stream
in the original object instead of our cached index.
Free more data in the finalize method.
Handle thread create errors.
Rename some internal methods to better match what they actually do.
Handle misconfiguration of session_pool and media_mapping gracefully.
Cache the DESCRIBE media and uri in the client connection and reuse them when
we receive a SETUP request in the same connection for the same uri.
Cleanup the client connection object.