Wim Taymans [Wed, 10 Jul 2013 14:49:55 +0000 (16:49 +0200)]
server: use thread pool
Use the thread pool instead of doing our own thing.
Wim Taymans [Wed, 10 Jul 2013 14:47:43 +0000 (16:47 +0200)]
thread-pool: add object to manage threads
Add an object to manage the client and media threads.
Wim Taymans [Wed, 10 Jul 2013 13:28:35 +0000 (15:28 +0200)]
auth: debug authorization check
Wim Taymans [Tue, 9 Jul 2013 18:44:51 +0000 (20:44 +0200)]
media: start media pipeline in context
Start the media pipeline in the provided context (or our default one
when NULL). This makes sure that we run the bus thread in this context and that
all media threads are children of this context.
Wim Taymans [Tue, 9 Jul 2013 14:38:39 +0000 (16:38 +0200)]
factory: pass permissions to media by default
Wim Taymans [Tue, 9 Jul 2013 14:09:07 +0000 (16:09 +0200)]
test: add permissions to auth test
Ass some permissions to the media factory in the test.
Wim Taymans [Tue, 9 Jul 2013 14:04:35 +0000 (16:04 +0200)]
auth: simplify auth checks
Remove client from methods, it's now in the state
Perform the check specified by the string, use the information from the
thread local context.
Wim Taymans [Tue, 9 Jul 2013 14:01:29 +0000 (16:01 +0200)]
client: add state to current thread
Add the client to the ClientState object.
Place the ClientState on the current thread.
Wim Taymans [Tue, 9 Jul 2013 12:33:43 +0000 (14:33 +0200)]
media: make it possible to set permissions
Make it possible to set permissions on media and media factory objects
Wim Taymans [Tue, 9 Jul 2013 12:31:15 +0000 (14:31 +0200)]
permissions: add permissions object
Add a mini object to store permissions based on a role.
Wim Taymans [Mon, 8 Jul 2013 14:29:01 +0000 (16:29 +0200)]
auth: add auth checks
Add an enum with auth checks and implement the checks in the auth object.
Perform the checks from the client.
Wim Taymans [Fri, 5 Jul 2013 18:48:18 +0000 (20:48 +0200)]
auth: use the token after authentication
After we authenticated a user, keep the Token around in the state.
Wim Taymans [Fri, 5 Jul 2013 18:43:39 +0000 (20:43 +0200)]
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.
Wim Taymans [Fri, 5 Jul 2013 18:34:40 +0000 (20:34 +0200)]
token: add authorization token
Add a simply miniobject that contains the authorizations. The object contains a
GstStructure that hold all authorization fields. When a user is authenticated,
the auth module will create a Token for the user. The token is then used to
check what operations the user is allowed to do and various other configuration
values.
Wim Taymans [Fri, 5 Jul 2013 10:08:36 +0000 (12:08 +0200)]
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.
Wim Taymans [Thu, 4 Jul 2013 12:33:59 +0000 (14:33 +0200)]
auth: add support for multiple basic auth tokens
Make it possible to add multiple basic authorisation tokens to one authorization
object. Associate with each token an authorization group that will define what
capabilities are allowed.
Wim Taymans [Wed, 3 Jul 2013 14:15:04 +0000 (16:15 +0200)]
client: error out on non-aggregate control
We require aggregate control (for now) for PLAY, PAUSE and TEARDOWN.
Wim Taymans [Wed, 3 Jul 2013 13:55:38 +0000 (15:55 +0200)]
client: rework setup request a little
Cache the media in DESCRIBE based on the longest matching path with the uri
that we can find in the mount points.
Rework the setup request a little to get the media from the session or from
the longest matching path, this way we can derive the control string as
everything after the path instead of hardcoding it.
Find the stream based on the control string and only open a session when all
this can be done.
Wim Taymans [Wed, 3 Jul 2013 13:14:39 +0000 (15:14 +0200)]
media: add method to find a stream by control url
Wim Taymans [Wed, 3 Jul 2013 13:13:45 +0000 (15:13 +0200)]
stream: add method to check control url of stream
Wim Taymans [Wed, 3 Jul 2013 10:37:48 +0000 (12:37 +0200)]
session: use path matching for session media
Use a path string instead of a uri to lookup session media in the sessions. Also
use path matching to find the largest possible path that matches.
Wim Taymans [Wed, 3 Jul 2013 09:04:53 +0000 (11:04 +0200)]
mount-points: remove useless vmethod
Making lookups in the mount points should not be done with a URL, if there is a
mapping to be done from URL to mount points, we'll need to do it somewhere
else.
Wim Taymans [Wed, 3 Jul 2013 08:25:46 +0000 (10:25 +0200)]
mount-points: improve mount point searching
Use a GSequence to keep track of the mount points.
Match a URL to the longest matching registered mount point. This should be the
URL to perform aggreagate control and the remainder is the stream specific
control part.
Add some unit tests for this.
Sebastian Dröge [Wed, 3 Jul 2013 08:40:33 +0000 (10:40 +0200)]
rtsp-server: Allow building of static library
Wim Taymans [Tue, 2 Jul 2013 13:59:16 +0000 (15:59 +0200)]
tests: fix compilation
Wim Taymans [Tue, 2 Jul 2013 13:54:43 +0000 (15:54 +0200)]
sdp: get control string from stream
Use the control string as configured in the stream.
Wim Taymans [Tue, 2 Jul 2013 12:44:35 +0000 (14:44 +0200)]
stream: add methods and property to set control string
Wim Taymans [Tue, 2 Jul 2013 09:58:02 +0000 (11:58 +0200)]
client: cleanups
Rename variables for clarity
Keep media in state when we can
Wim Taymans [Mon, 1 Jul 2013 14:46:07 +0000 (16:46 +0200)]
stream: add more support for IPv6
Rename _get_address to _get_multicast_address in GstRTSPStream to
make it clear that this function only deals with multicast.
Make it possible to have both an IPv4 and IPv6 multicast address on
a stream. Give the client an IPv4 or IPv6 address depending on the
address it used to connect to the server.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702002
Wim Taymans [Mon, 1 Jul 2013 13:18:43 +0000 (15:18 +0200)]
client: fix comment
Wim Taymans [Mon, 1 Jul 2013 12:45:49 +0000 (14:45 +0200)]
stream: handle failed port allocation
Allow for ipv4 or ipv6 socket allocations to fail. Only report failure if we
can't allocate any family at all. Also keep track of what port families we
allocated.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703175
Wim Taymans [Mon, 1 Jul 2013 10:20:50 +0000 (12:20 +0200)]
stream: improve docs
Wim Taymans [Mon, 1 Jul 2013 10:04:45 +0000 (12:04 +0200)]
stream-transport: remove old if 0 block
Patricia Muscalu [Thu, 27 Jun 2013 09:21:42 +0000 (11:21 +0200)]
tests: fix tests
gst_rtsp_client_get_uri() has been removed
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703173
Wim Taymans [Wed, 26 Jun 2013 15:18:33 +0000 (17:18 +0200)]
client: add method to filter managed sessions
Add a method to filter the sessions managed by this client connection.
See https://bugzilla.gnome.org/show_bug.cgi?id=703016
Wim Taymans [Wed, 26 Jun 2013 14:32:06 +0000 (16:32 +0200)]
client: remove _get_uri() method
Remove the get_uri() method on the client. A client has no uri, the uri
property is an internal property to manage the last cached media for
the client.
Wim Taymans [Wed, 26 Jun 2013 14:31:39 +0000 (16:31 +0200)]
media-factory: fix typo
Ognyan Tonchev [Wed, 26 Jun 2013 12:42:15 +0000 (14:42 +0200)]
rtsp-media: Do not leak the query in default_query_stop
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703120
Wim Taymans [Tue, 25 Jun 2013 13:46:41 +0000 (15:46 +0200)]
media: don't unlock when conversion fails
Don't unlock the state lock when conversion fails because it was not locked.
Youness Alaoui [Mon, 10 Jun 2013 21:32:40 +0000 (17:32 -0400)]
Add query_position and query_stop vmethods to rtsp-media
Youness Alaoui [Mon, 10 Jun 2013 21:33:01 +0000 (17:33 -0400)]
Fix typo in property install for rtsp-media's time-provider
Wim Taymans [Tue, 25 Jun 2013 13:09:13 +0000 (15:09 +0200)]
client: clean some variables
Clean some variables and add some guards to _send_request()
Youness Alaoui [Mon, 10 Jun 2013 21:32:12 +0000 (17:32 -0400)]
Add gst_rtsp_client_send_request API
This makes it possible to send arbitrary messages to a client, such as
SET_PARAMETER or GET_PARAMETER
Wim Taymans [Mon, 24 Jun 2013 21:56:57 +0000 (23:56 +0200)]
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
Wim Taymans [Mon, 24 Jun 2013 21:51:38 +0000 (23:51 +0200)]
media: fix docs
Aleix Conchillo Flaque [Mon, 24 Jun 2013 18:41:27 +0000 (11:41 -0700)]
stream: allow access to the rtp session
https://bugzilla.gnome.org/show_bug.cgi?id=703004
Alexander Schrab [Mon, 24 Jun 2013 08:43:59 +0000 (10:43 +0200)]
dscp qos support in gst-rtsp-stream
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702645
Wim Taymans [Thu, 20 Jun 2013 15:30:49 +0000 (17:30 +0200)]
tests: fix test
Actually do what the comment says. Also keep the old code around, not sure what
should happen when you get a 454 from a TEARDOWN, does it close the connection?
it currently doesn't.
Wim Taymans [Thu, 20 Jun 2013 10:20:21 +0000 (12:20 +0200)]
client: also watch newly created session
When we newly created a session, start watching it immediately instead of
on the next request.
Patricia Muscalu [Thu, 20 Jun 2013 10:18:23 +0000 (12:18 +0200)]
tests: add unit test for new-session
See https://bugzilla.gnome.org/show_bug.cgi?id=701587
Wim Taymans [Thu, 20 Jun 2013 10:16:07 +0000 (12:16 +0200)]
client: emit new-session when new session is created
Only emit new-session when we created a new session for a client, not when a
client picked up a previous session.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701587
Alexander Schrab [Thu, 20 Jun 2013 09:17:29 +0000 (11:17 +0200)]
client: handle asterisk as path in requests
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701266
Wim Taymans [Thu, 20 Jun 2013 09:14:31 +0000 (11:14 +0200)]
media: handle segment query format mismatch
It's possible that the segment query returns with a different format than what
we asked for, handle this case also.
David Svensson Fors [Tue, 11 Jun 2013 13:28:32 +0000 (15:28 +0200)]
media: use segment stop in collect_media_stats
Use segment stop instead of duration as range end point.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701185
Ognyan Tonchev [Mon, 17 Jun 2013 14:47:56 +0000 (16:47 +0200)]
rtsp-media: Do not leak the element in take_pipeline
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702470
Ognyan Tonchev [Mon, 17 Jun 2013 14:18:37 +0000 (16:18 +0200)]
rtsp-client: Make configure_client_transport virtual
This patch makes configure_client_transport virtual. The functionality is
needed to handle some weird clients sending multicast transport settings as url
options.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702173
Ognyan Tonchev [Wed, 12 Jun 2013 10:23:56 +0000 (12:23 +0200)]
rtsp-client: Make param_set and param_get virtual
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702072
David Svensson Fors [Wed, 5 Jun 2013 13:49:45 +0000 (15:49 +0200)]
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
Wim Taymans [Fri, 14 Jun 2013 14:05:59 +0000 (16:05 +0200)]
sdp: cleanup sdp info
We don't need to pass the proto, we can more easily check a boolean.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702063
Alexander Schrab [Wed, 12 Jun 2013 13:22:57 +0000 (15:22 +0200)]
use 0.0.0.0 or :: for c= line instead of server address
Alexander Schrab [Wed, 12 Jun 2013 08:56:16 +0000 (10:56 +0200)]
use local address, not remote, in SDP
See https://bugzilla.gnome.org/show_bug.cgi?id=702063
Sebastian Dröge [Wed, 5 Jun 2013 13:18:26 +0000 (15:18 +0200)]
Automatic update of common submodule
From 098c0d7 to 01a7a46
David Svensson Fors [Wed, 29 May 2013 11:45:00 +0000 (13:45 +0200)]
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
Ognyan Tonchev [Mon, 3 Jun 2013 10:04:44 +0000 (12:04 +0200)]
rtsp-server: Expose the use_client_settings API
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=699935
Alexander Schrab [Thu, 30 May 2013 06:07:48 +0000 (08:07 +0200)]
rtspstream: handle both ipv4 and ipv6 clients
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701129
Wim Taymans [Fri, 31 May 2013 13:28:58 +0000 (15:28 +0200)]
Revert "rtsp-sdp: Parse width/height from caps and set SDP attribute"
This reverts commit
5fd034ff1a517db7f629ffcc3ed16839c61f5c97.
We already have a way to place extra attributes in the SDP by using a string
property with prefix x- or a- in the caps.
Wim Taymans [Fri, 31 May 2013 13:27:48 +0000 (15:27 +0200)]
Revert "rtsp-sdp: Parse framerate caps field and set SDP attribute"
This reverts commit
d6a4dee03642a2d2c05fec4752dc3ccb60b19494.
We already have a way to place extra attributes in the SDP, just make a string
property in the payloader with a- or x- prefix.
Wim Taymans [Fri, 31 May 2013 13:41:55 +0000 (15:41 +0200)]
rtsp: place a- and x- properties as attributes
application/x-rtp has properties with a- and x- prefixes that should be
placed as attributes in the SDP for the media instead of being added to the
fmtp.
Wim Taymans [Fri, 31 May 2013 10:10:28 +0000 (12:10 +0200)]
example: add TLS example
Wim Taymans [Fri, 31 May 2013 09:42:36 +0000 (11:42 +0200)]
server: add support for TLS
Add methods to set and get a TLS certificate.
Add vmethod to configure a new connection. By default, configure the TLS
certificate in a new connection if needed.
Wim Taymans [Fri, 31 May 2013 09:14:17 +0000 (11:14 +0200)]
server: remove accept_client vmethod
This vmethod is not very useful so remove it.
Wim Taymans [Thu, 30 May 2013 15:23:51 +0000 (17:23 +0200)]
server: don't crash on NULL GError
Patricia Muscalu [Thu, 30 May 2013 08:46:33 +0000 (10:46 +0200)]
rtsp-session-pool: corrected session timeout detection
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701253
Wim Taymans [Thu, 30 May 2013 08:52:46 +0000 (10:52 +0200)]
client: improve debug
Wim Taymans [Thu, 30 May 2013 05:18:22 +0000 (07:18 +0200)]
server: refactor connection setup
Let the server accept the socket connection and construct a GstRTSPConnection
from it. Remove the code from the client and let the client only deal with
a fully configure GstRTSPConnection object.
We will need this later when the server will configure the connection for
TLS.
Wim Taymans [Thu, 30 May 2013 04:49:20 +0000 (06:49 +0200)]
stream: keep the transport object alive
Keep the transport object alive while we have it as qdata on the
source.
Alexander Schrab [Mon, 27 May 2013 10:58:07 +0000 (12:58 +0200)]
rtsp-server: Do not crash on nmapping of server
* generate error when gst_rtsp_connection_accept fails
* do not stop accepting incoming connections because
accepting a client fails
https://bugzilla.gnome.org/show_bug.cgi?id=701072
Alexander Schrab [Fri, 24 May 2013 11:39:50 +0000 (13:39 +0200)]
rtsp-client: ipv4 adress should not be marked ipv6 even if socket is ipv6
https://bugzilla.gnome.org/show_bug.cgi?id=700953
Sebastian Rasmussen [Wed, 22 May 2013 01:29:38 +0000 (03:29 +0200)]
rtsp-sdp: Parse framerate caps field and set SDP attribute
The SDP attribute and its format is described in RFC4566.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700747
Sebastian Rasmussen [Wed, 22 May 2013 01:29:30 +0000 (03:29 +0200)]
rtsp-sdp: Parse width/height from caps and set SDP attribute
The SDP attribute and its format is described in RFC6064.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700747
Patricia Muscalu [Mon, 29 Apr 2013 12:46:30 +0000 (14:46 +0200)]
rtsp-sdp: add bandwidth line
https://bugzilla.gnome.org/show_bug.cgi?id=699220
Sebastian Dröge [Wed, 15 May 2013 08:55:09 +0000 (10:55 +0200)]
Automatic update of common submodule
From 5edcd85 to 098c0d7
Ognyan Tonchev [Tue, 23 Apr 2013 09:28:39 +0000 (11:28 +0200)]
tests: add dynamic payloader prepare/unprepare check
Wim Taymans [Tue, 23 Apr 2013 08:27:35 +0000 (10:27 +0200)]
media: release lock when removing fakesink
Wim Taymans [Tue, 23 Apr 2013 08:16:17 +0000 (10:16 +0200)]
stream: set elements to NULL before removing
When removing a stream, set the elements to NULL first. This avoids
element-is-not-in-NULL-state errors when we dispose the elements.
Tim-Philipp Müller [Mon, 22 Apr 2013 22:55:48 +0000 (23:55 +0100)]
Automatic update of common submodule
From 3cb3d3c to 5edcd85
Wim Taymans [Mon, 22 Apr 2013 15:34:37 +0000 (17:34 +0200)]
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
Wim Taymans [Mon, 22 Apr 2013 15:33:30 +0000 (17:33 +0200)]
tests: add example of reusable pipelines
Ognyan Tonchev [Mon, 22 Apr 2013 15:32:31 +0000 (17:32 +0200)]
stream: add method to get the srcpad
Ognyan Tonchev [Mon, 22 Apr 2013 14:49:39 +0000 (16:49 +0200)]
check: add media prepare/unprepare test
See https://bugzilla.gnome.org/show_bug.cgi?id=698376
Ognyan Tonchev [Mon, 22 Apr 2013 14:40:48 +0000 (16:40 +0200)]
media: disconnect from signal handlers in unprepare()
We connected to the pad-added and no-more-pads signals in prepare() so
we need to disconnect from them in unprepare().
See https://bugzilla.gnome.org/show_bug.cgi?id=698376
Ognyan Tonchev [Mon, 22 Apr 2013 14:25:17 +0000 (16:25 +0200)]
media: don't free streams array
Don't free the streams array in the unprepare() method, they were not
added in prepare().
See https://bugzilla.gnome.org/show_bug.cgi?id=698376
Ognyan Tonchev [Mon, 22 Apr 2013 14:19:35 +0000 (16:19 +0200)]
media: don't unref the pipeline in unprepare
Unprepare() should undo what prepare() does. Because the pipeline is
not created in prepare(), we should not unref it in unprepare()
Ognyan Tonchev [Mon, 22 Apr 2013 14:09:22 +0000 (16:09 +0200)]
stream: clear session and caps for reuse
Set the session and caps to NULL after unref otherwise we might unref
them again later.
See https://bugzilla.gnome.org/show_bug.cgi?id=698376
David Svensson Fors [Mon, 15 Apr 2013 10:21:54 +0000 (12:21 +0200)]
client: send out teardown signal before tearing down
The advantage is that in the signal handler you get direct access to
information about what streams are about to get torn down (in the
GstRTSPClientState).
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=697686
David Svensson Fors [Mon, 15 Apr 2013 10:17:34 +0000 (12:17 +0200)]
client: expose connection
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=697546
Tim-Philipp Müller [Sun, 14 Apr 2013 16:58:22 +0000 (17:58 +0100)]
Automatic update of common submodule
From aed87ae to 3cb3d3c
Wim Taymans [Fri, 12 Apr 2013 10:34:38 +0000 (11:34 +0100)]
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.
Wim Taymans [Tue, 9 Apr 2013 20:35:28 +0000 (22:35 +0200)]
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.
Stefan Sauer [Tue, 9 Apr 2013 19:02:47 +0000 (21:02 +0200)]
Automatic update of common submodule
From 04c7a1e to aed87ae