Commit graph

704 commits

Author SHA1 Message Date
Sebastian Dröge
058ab0df1d rtspsrc: Move to new helper function to parse authentication responses
https://bugzilla.gnome.org/show_bug.cgi?id=774416
2016-11-21 09:40:08 +02:00
Matt Staples
cd71e3a8e8 rtspsrc: Also handle redirect on PLAY
https://bugzilla.gnome.org/show_bug.cgi?id=772610
2016-11-01 20:14:35 +02:00
Petr Kulhavy
5cdf66d5d2 rtspsrc: allow missing control attribute in case of a single stream
Improve RFC2326 - chapter C.3 compatibility:
In case just a single stream is specified in SDP and the control attribute
is missing do not drop the stream but rather assume "a=control:*"

https://bugzilla.gnome.org/show_bug.cgi?id=770568
2016-11-01 20:13:49 +02:00
Mark Nauwelaerts
735924236e rtspsrc: reset connection info to non-flushing when closing
This solves a hanging mainloop in following scenario:
* connect to source
* network/server drops
* pipeline set to NULL (and connection to flushing as part)
* pipeline set to PAUSED/PLAYING (connection to non-flushing, but not recorded)
* [connecting still not possible]
* pipeline set to NULL => mainloop hangs (since no actual flushing is done)
2016-10-26 12:30:39 +02:00
Sebastian Dröge
eaae016884 rtspsrc: Use new bin suppressed flags API for managing the element flags 2016-09-15 18:20:30 +02:00
Thibault Saunier
150edef830 Use the new API to post flow ERROR messages on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-26 19:23:26 -03:00
Nirbheek Chauhan
b09f478e80 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:21:12 +01:00
Sebastian Dröge
0b0a042781 rtspsrc: Allow mimetypes with properties as long as they're application/sdp
Some servers add properties like charset, e.g.
  application/sdp; charset=utf8

Ideally we should also parse the charset and do conversion of all messages,
but that's for a later time.
2016-08-17 09:49:04 +03:00
Steven Hoving
ec59291b2e rtspsrc: Fix error messages to first convert to doubles before division 2016-07-06 11:22:53 +03:00
Sebastian Dröge
b9532527ec rtspsrc: Set to PLAYING after a seek again after setting up the segment and everything else
There's a small window for a race condition otherwise.
2016-07-05 21:11:35 +03:00
Brad Lackey
6d3071f200 rtspsrc: Don't disable UDP protocols on redirecting
https://bugzilla.gnome.org/show_bug.cgi?id=768232
2016-07-01 12:21:43 +02:00
Sebastian Dröge
c18b609c06 rtspsrc: When seeking, consider the current element state or pending state instead of the RTSP state
If we consider the RTSP state, what can happen is that it is PLAYING but the
element already asynchronously tried to PAUSE and it just did not happen yet.

We would then override this setting to PAUSED (while the element actually is
in PAUSED) and set the RTSP state to PLAYING again. This would then cause us
to produce packets while the sinks are all PAUSED, piling up thousands of
packets in the rtpjitterbuffer and other elements and finally failing.
2016-06-28 11:01:24 +03:00
Aleix Conchillo Flaqué
12eb5d6912 rtspsrc: make all srtp encoder properties explicit
The Session Data Protocol doesn't allow specifying a cipher for the
SRTCP, so it will use the SRTP one. In the "srtpenc" element the cipher
"aes-128-icm" is the default for SRTP and SRTCP, but if we want to have
an SRTCP with the "aes-256-icm" cipher then we also need to set the SRTP
cipher to "aes-256-icm", otherwise "aes-128-icm" will be used instead.

https://bugzilla.gnome.org/show_bug.cgi?id=767799
2016-06-20 09:53:24 +02:00
Guillaume Desmottes
a6c4763b42 rtpdec: fix clock leak
gst_system_clock_obtain() returns a new ref.

https://bugzilla.gnome.org/show_bug.cgi?id=766521
2016-05-17 09:59:08 +03:00
Sebastian Dröge
7c728db1f3 rtspsrc: Update caps for TCP whenever they change
We only changed them for UDP so far, which caused the wrong seqnum-base and
other information to be passed to rtpjitterbuffer/etc when seeking. This
usually wasn't that much of a problem as the code there is robust enough, but
every now and then it causes us to drop up to 32756 packets before we
continue doing anything meaningful.

https://bugzilla.gnome.org/show_bug.cgi?id=765689
2016-04-27 20:52:32 +03:00
Sebastian Dröge
d24e68719b rtspsrc: Don't propagate spurious state change returns from internal elements further
We handle them inside rtspsrc and override them in all other cases anyway, so
do the same for "internal" state changes like PAUSED->PAUSED and
PLAYING->PLAYING.

This keeps unexpected NO_PREROLL to confuse state changes in GstBin.

See also https://bugzilla.gnome.org/show_bug.cgi?id=760532

https://bugzilla.gnome.org/show_bug.cgi?id=765689
2016-04-27 20:52:15 +03:00
Aleix Conchillo Flaqué
c36930535d rtspsrc: add srtp rollover counters from mikey crypto sessions
The server can send multiple crypto sessions, one for each SSRC with its
own rollover counter. We parse this information and pass it to the SRTP
decoder via the "request-key" signal.

https://bugzilla.gnome.org/show_bug.cgi?id=730540
2016-04-15 18:12:06 +02:00
Sebastian Dröge
df247f091c rtpjitterbuffer: Add RFC7273 media clock handling
https://bugzilla.gnome.org/show_bug.cgi?id=762259
2016-04-03 11:24:34 +03:00
Vineeth TM
1071309870 good: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
Jihae Yi
da5c8a954c rtspsrc: avoid potentially overflowing expression
https://bugzilla.gnome.org/show_bug.cgi?id=757569
2016-03-24 14:28:50 +02:00
Sebastian Dröge
bf5a72a6dd rtspsrc: Properly error out if binding the UDP sockets fails
udpsrc is not returning us a socket in that case.
2016-02-28 13:01:34 +02:00
Aleix Conchillo Flaqué
665d14a2a0 rtspsrc: handle rtcp/srtcp caps properly when using interleaved data
We check the stream profile and use the proper RTCP caps:
application/x-srtcp if we are using a secure profile and
application/x-rtcp otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=760556
2016-01-18 11:29:25 +02:00
Hyunjun Ko
3300039513 rtspsrc: replace duplicated codes to call new base sdp apis
https://bugzilla.gnome.org/show_bug.cgi?id=745880
2015-12-31 17:12:09 +02:00
Evan Callaway
4718870959 rtspsrc: Retry connection if tunneling needs authentication
Leverage response from gst_rtsp_connection_connect_with_response to
determine if the connection should be retried using authentication.  If
so, add the appropriate authentication headers based upon the response
and retry the connection.

https://bugzilla.gnome.org/show_bug.cgi?id=749596
2015-12-14 16:42:27 +01:00
Luis de Bethencourt
4735d2a9a5 rtspsrc: check port-range format
The string could exist but with a wrong format, in that case we still want
to reset the values of client_port_range.min and max like we do if there is
no string.

CID 1139593
2015-12-14 14:53:57 +00:00
Reynaldo H. Verdejo Pinochet
a4c8ec8bd7 rtspsrc: remove unnecessary NULL checks before g_free() 2015-11-15 01:43:08 -08:00
Sebastian Dröge
01c0f8723f rtpbin/rtpjitterbuffer/rtspsrc: Add property to set maximum ms between RTCP SR RTP time and last observed RTP time
https://bugzilla.gnome.org/show_bug.cgi?id=755125
2015-09-25 23:55:05 +02:00
Martin Kelly
00a938f134 rtsp: fix small README typo
https://bugzilla.gnome.org/show_bug.cgi?id=754807
2015-09-10 08:43:20 +01:00
Jan Schmidt
b38e24995b rtspsrc: Don't parse key data more than needed.
When an auxilliary streams are present in the SDP media,
there's no need to re-parse the SDP attributes multiple
times.
2015-09-05 23:44:51 +10:00
Jan Schmidt
fe4ed1d1df rtspsrc: Fix SRTP + RTX, auth access, a leak, and an invalid memory access.
In parse_keymgmt(), don't mutate the input string that's been passed
as const, especially since we might need the original value again if
the same key info applies to multiple streams (RTX, for example).

When a resource is 404, and we have auth info - retry with the auth
info the same as if we had receive unauthorised, in case the resource
isn't even visible until credentials are supplied.

Fix a memory leak handling Mikey data.

When generating a random keystring, don't overrun the 30 byte
buffer by generating 32 bytes into it.
2015-09-05 23:44:51 +10:00
Vineeth TM
ba8cda54f4 rtspsrc: Trivial fix to check correct condition
When checking for describe method, because of missing parentheses, wrong
condition is being checked, which will result in wrong behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=753912
2015-08-21 11:06:57 +03:00
George Kiagiadakis
e2f2f087ec rtspsrc: send the User-Agent header
Sometimes it is useful to know this information on the
server side. Other popular implementations (vlc, ffmpeg, ...)
also send this header on every message.

This includes a new "user-agent" property that the user
can set to use a custom User-Agent string. The default
is "GStreamer/<version>"

https://bugzilla.gnome.org/show_bug.cgi?id=750101
2015-08-14 15:59:06 +02:00
George Kiagiadakis
af03341e26 rtspsrc: wrap gst_rtsp_message_init_request in a local function
This will allow adding common request initialization, like the
user agent string, in just one place.
2015-08-14 15:59:06 +02:00
Vineeth TM
cf19525d5c rtspsrc: assertion error due to wrong condition check
In media to caps function, reserved_keys array is being used for variable i,
leading to GLib-CRITICAL **: g_ascii_strcasecmp: assertion 's1 != NULL' failed
changed it to variable j

https://bugzilla.gnome.org/show_bug.cgi?id=753009
2015-07-30 15:51:25 +03:00
Sebastian Dröge
39a90710b7 rtspsrc: Strip keys from the fmtp that we use internally in our caps
Skip keys from the fmtp, which we already use ourselves for the
caps. Some software is adding random things like clock-rate into
the fmtp, and we would otherwise here set a string-typed clock-rate
in the caps... and thus fail to create valid RTP caps

https://bugzilla.gnome.org/show_bug.cgi?id=753009
2015-07-29 14:31:49 +01:00
Hyunjun Ko
f560a3d223 rtspsrc: Add new ntp-time-source property and deprecate use-pipeline-clock property
Enable to use new ntp-time-source property of rtpbin

https://bugzilla.gnome.org/show_bug.cgi?id=751496
2015-06-25 17:16:49 +02:00
Xavier Claessens
b0b3e8e2cc rtspsrc: Add a GTlsInteraction property
It can be used for TLS client authentication.

https://bugzilla.gnome.org/show_bug.cgi?id=750471
2015-06-09 20:03:18 -04:00
Sebastian Dröge
0a7823b30f rtspsrc: Set RTP profile on the rtpsession objects
https://bugzilla.gnome.org/show_bug.cgi?id=746543
2015-06-02 11:38:15 +02:00
Sebastian Dröge
9b14170355 rtspsrc: Use single-include header for the RTSP library 2015-05-20 16:37:55 +03:00
Sebastian Dröge
9865730cfa rtspsrc: Fix up last commit 2015-05-04 16:50:38 +02:00
Sebastian Dröge
d08f488598 rtspsrc: Only do RTX when using a feedback profile 2015-05-04 16:47:30 +02:00
Sebastian Dröge
33693525b9 rtspsrc: Only enable retransmissions if there is retransmission info in the SDP
Otherwise we're going to send early RTCP and NACKs in non-feedback sessions
too, which will confuse servers.

https://bugzilla.gnome.org/show_bug.cgi?id=748627
2015-04-29 15:53:09 +02:00
Tim-Philipp Müller
d753a3eeb1 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 17:55:07 +01:00
Luis de Bethencourt
671b4d25cd remove unused enum items PROP_LAST
This were probably added to the enums due to cargo cult programming and are
unused. Removing them.
2015-04-24 17:01:12 +01:00
Jesper Larsen
3528046773 rtspsrc: Fix RTCP caps leak
https://bugzilla.gnome.org//show_bug.cgi?id=748353
2015-04-23 14:56:27 +01:00
Nicolas Dufresne
84725d62b5 rtspsrc: Fix segment in TCP mode
It is expected that buffers are time-stamped with running time. Set
a segment accordingly. In this case we pick 0,-1 as this is what udpsrc
would do. Depayloaders will update the segment to reflect the playback
position.

https://bugzilla.gnome.org/show_bug.cgi?id=635701
2015-03-26 17:54:08 -04:00
Nicolas Dufresne
32aed67144 rtspsrc: Remove useless function
This function didn't do anything special, let's not use a function for
that.
2015-03-25 15:28:24 -04:00
Nicolas Dufresne
8afc8c8f3b rtspsrc: Fix seeking query
The segment start/stop in the query is meant to represent the seekable
portion of the stream. It does not match the segment start/stop. Instead
export 0 to duration.
2015-03-24 16:51:12 -04:00
Nicolas Dufresne
1c27002ebd rtspsrc: Improve trace readability
Change the command number into strings.
2015-03-18 17:32:36 -04:00
Ramiro Polla
90be7b4e1e rtspsrc: properly escape percent sign in documentation 2015-03-14 14:22:39 +00:00
Linus Svensson
398296d978 rtspsrc: Don't include payload type in the caps for framesize
When the sdp media attribute framesize are converted to caps
the <payload> should not be included.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725335
2015-03-09 10:18:35 +01:00
Sebastian Dröge
c34a7cb90d rtspsrc: Fix handling of interleaved (TCP) streams
We need to set up the transport in any case, not just if we have a container
stream or a non-interleaved stream. Only if we have an interleaved stream and
are retrying, we should not set up the stream again.

https://bugzilla.gnome.org/show_bug.cgi?id=745599
2015-03-05 12:15:04 +01:00
Sebastian Dröge
b4aaa11f97 rtspsrc: Don't unref caps we don't own 2015-03-05 09:56:37 +01:00
Sebastian Dröge
297d808acc rtspsrc: Push RTCP caps on the RTCP pads
Otherwise we will get not-negotiated later from rtpbin, and will never be able
to send RTCP packets back to the server. Note that error flow returns from the
RTCP pads are ignored, that's why it didn't fail more visible before.
2015-03-05 09:47:29 +01:00
Sebastian Dröge
788074733c rtspsrc: Make sure to send SEGMENT events on all pads 2015-03-05 09:47:29 +01:00
Krzysztof Kotlenga
e3ca4d1c86 rtspsrc: improve error message when unauthorized
Make use of NOT_AUTHORIZED error code instead of falling back to generic
READ error.

https://bugzilla.gnome.org/show_bug.cgi?id=601733
2015-02-24 11:08:27 +02:00
Sebastian Dröge
f4b5107796 Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 13:53:02 +01:00
Tim-Philipp Müller
603c1d71a1 rtspsrc: fix awkward if clause 2015-02-08 12:03:10 +00:00
Wim Taymans
852c040c89 rtspsrc: fix container handling
We detect a container correctly now so we need to revert the weird
check there was before.
Use gst_rtspsrc_stream_push_event() to push the caps event on the
right pad.

See https://bugzilla.gnome.org/show_bug.cgi?id=739391
2015-02-03 17:39:10 +01:00
Sebastian Dröge
d5aab81a77 Constify some static arrays everywhere 2015-01-21 09:55:53 +01:00
Aleix Conchillo Flaqué
07c5d1820a rtspsrc: set PLAYING state after configuring caps
We set to PLAYING after we have configured the caps, otherwise we
might end up calling request_key (with SRTP) while caps are still
being configured, ending in a crash.

https://bugzilla.gnome.org/show_bug.cgi?id=740505
2014-12-31 12:49:11 +00:00
Sebastian Dröge
d18b893d28 rtspsrc: Don't dereference NULL if a suitable stream for the AUX element can't be found
CID 1258717
2014-12-18 11:51:12 +01:00
Sebastian Dröge
6b2fc2de8d rtspsrc: Add something to the debug logs if an RTX AUX element can't be added
... because the application already has a signal handler set up here.
2014-12-16 16:40:08 +01:00
Matthew Waters
bf0a19bf02 rtspsrc: add retransmission support according to RFC4588
Based on the client-rtpaux example
2014-12-16 16:40:08 +01:00
Aleix Conchillo Flaqué
00ca83629b rtspsrc: fix leak for mikey base64 decoded key-mgmt
https://bugzilla.gnome.org/show_bug.cgi?id=740392
2014-11-20 09:15:56 +01:00
Josep Torra
038cc7b004 rtsp: fix build in gst-uninstalled setup 2014-11-06 21:38:43 +01:00
Aleix Conchillo Flaqué
d15ebcbf62 rtspsrc: mikey related memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=739430
2014-10-31 10:03:47 +00:00
Aleix Conchillo Flaqué
bd392d72ee rtspsrc: set full stream caps on internal src TCP pads
Set the complete stream caps on the TCP internal src pads. Otherwise,
ptdemux will not properly detect the caps change.

https://bugzilla.gnome.org/show_bug.cgi?id=737868
2014-10-21 11:33:01 +02:00
Sebastian Dröge
d1c7f2e4d1 rtspsrc: Fix compiler warnings
gstrtspsrc.c:7939:11: error: implicit conversion from enumeration type 'GstSDPResult' to different enumeration type
      'GstRTSPResult' [-Werror,-Wenum-conversion]
    res = gst_sdp_message_new (&sdp);
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
gstrtspsrc.c:7944:11: error: implicit conversion from enumeration type 'GstSDPResult' to different enumeration type
      'GstRTSPResult' [-Werror,-Wenum-conversion]
    res = gst_sdp_message_parse_uri (uri, sdp);
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2014-09-26 13:46:16 +03:00
Sanjay NM
f62076e49c rtsp: clarify expression so operator precedence is clear
https://bugzilla.gnome.org/show_bug.cgi?id=736903
2014-09-24 00:48:09 +01:00
Sebastian Dröge
add40de469 rtspsrc: Push the correct segment in TCP mode when seeking 2014-08-05 16:28:04 +02:00
Tim-Philipp Müller
c2614e5253 rtspsrc: fix query leak
https://bugzilla.gnome.org/show_bug.cgi?id=733003
2014-07-10 17:19:42 +01:00
Wim Taymans
db1d9444d6 rtspsrc: fix for mikey api change 2014-07-02 16:01:47 +02:00
Wim Taymans
98a4ee0f92 rtspsrc: pass the stream id when asking for crypto params
This way the app can choose different parameters for each stream.
2014-06-19 16:17:23 +02:00
Aleix Conchillo Flaqué
7ce0ea3946 rtspsrc: add support for key length parameters
This patch adds supports for the incoming key management parameters for
encryption and authentication key lengths.

It also adds a new signal request-rtcp-key that allows the user to
provide the crypto parameters and key for the RTCP stream.

https://bugzilla.gnome.org/show_bug.cgi?id=730473
2014-06-19 16:11:19 +02:00
Aleix Conchillo Flaqué
782d65cab1 rtspsrc: always use a random ssrc for the internal session
Use a random SSRC different than 0 for the internal session SSRC.

https://bugzilla.gnome.org/show_bug.cgi?id=730212
2014-05-16 16:58:44 +02:00
Vincent Penquerc'h
a846e84349 rtspsrc: remove duplicate test
item was dereference previously.

While there, reorder some test for faster early out.

Coverity 1139844
2014-05-02 14:06:25 +01:00
Tim-Philipp Müller
c9597298f9 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 23:35:17 +01:00
Wim Taymans
5b9945e0a6 rtspsrc: update for new MIKEY API 2014-04-04 17:38:14 +02:00
Wim Taymans
6210cbe1e2 rtspsrc: send sender SSRC in the MIKEY message
Allocate a new SSRC for our RTCP messages back to the server and set
this in the MIKEY message.
2014-04-03 17:40:01 +02:00
Wim Taymans
4f641ef18b rtspsrc: make random number for the CSB
As recommended in the RFC
2014-04-03 17:39:30 +02:00
Wim Taymans
f932da3be6 rtspsrc: don't put spaces in keymgmt header 2014-04-03 12:21:27 +02:00
Wim Taymans
2edd450369 rtspsrc: create and send the RTCP encryption key
Create and make a key for encrypting the RTCP packets back to the server
and wrap this in a MIKEY message that we send as a header in the SETUP
request.
2014-04-03 12:21:27 +02:00
Wim Taymans
a52b7eadfd rtspsrc: free the srtpdec element 2014-04-03 12:18:39 +02:00
Wim Taymans
f0f9451523 rtspsrc: cleanup stream_free function
There is no reason to NULL all fields, we will free the stream anyway.
2014-04-03 12:16:25 +02:00
Wim Taymans
e7c8fa1127 rtspsrc: only expose streams on dataflow
Only probe on buffers, we don't want to expose the streams on events.
2014-03-25 11:44:27 +01:00
Wim Taymans
3b497bf7d5 rtspsrc: copy sticky events to ghostpad
When we expose internal pads as ghostpads, first copy the sticky events
so that we have the caps and segment etc.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=724712
2014-03-25 11:36:40 +01:00
Wim Taymans
67f3113759 rtspsrc: srtp handling 2014-03-25 10:23:24 +01:00
Wim Taymans
4846be1491 rtspsrc: set SSRC on caps if known 2014-03-25 10:23:00 +01:00
Wim Taymans
5ec8c96966 rtspsrc: put caps on udpsrc instead of using the signals
Try to avoid using the request-pt-map to get caps but set them directly
on the udpsrc element. That way, the caps get nicely transformed as they
pass through the different elements in the rtpbin, including the AUX and
decoder/encoder elements.
2014-03-24 17:07:06 +01:00
Wim Taymans
2b59828e0b rtspsrc: use profile to set rtcp caps
Use the negotiated profile to set x-rtcp or x-srtcp caps
2014-03-24 15:35:09 +01:00
Wim Taymans
a7b55d7687 rtspsrc: set udpsrc to READY
READY is enough to allocate ports now
2014-03-24 15:34:26 +01:00
Wim Taymans
a4f6f963ec rtspsrc: free caps in ptmap array
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726696
2014-03-24 14:35:01 +01:00
Wim Taymans
d6c5fbc87c rtspsrc: handle NULL rtpmap and parse error better 2014-03-20 11:12:51 +01:00
Wim Taymans
224239096d rtspsrc: skip streams with same control url
Keep track of what streams we did the SETUP for. We only need to
configure caps, wait for pads and push events on setup streams. We can
remove the disabled state of the stream and simplify some checks.
After we setup a stream, skip the other streams that have the same
control url. Use a skipped flag to mark streams that should be skipped.
2014-03-06 12:30:54 +01:00
Wim Taymans
3b27fc2f0f rtspsrc: remove obsolete code 2014-03-06 12:30:54 +01:00
Wim Taymans
27d883fe64 rtspsrc: just use the SDP index as the stream id
Use the index of the media stream in the SDP as the stream id instead of
keeping a separate counter.
2014-03-06 12:30:54 +01:00
Wim Taymans
99a9d2873c rtspsrc: handle NULL control urls better 2014-03-05 15:44:25 +01:00
Alessandro Decina
c4bf6e8b7e rtspsrc: fix seeking
Call gst_rtspsrc_connection_flush (src, FALSE) to reset connections as
non-flushing before sending PAUSE and PLAY with the new npt range. Without this
patch, those commands would fail with EINTR as the connections were still
flushing.
2014-03-05 11:39:09 +01:00
Wim Taymans
70de0e4e99 rtspsrc: Add support for multiple payload types
A media stream can have multiple payload types. Parse all the payload
types and collect the caps information. We then have to store the
pt<->caps mapping instead of 1 pt and 1 caps.
Parse the profile from the SDP and use that to negotiate the transport
instead of always using AVP.
Rework how we do some tweaks for ASF and Realmedia.
2014-03-04 16:40:34 +01:00
Wim Taymans
dbe92c9147 rtspsrc: refactor payload handling 2014-03-04 11:34:39 +01:00
Santiago Carot-Nemesio
b9a953161f rtspsrc: Fix deadlock when task creation is no successful
https://bugzilla.gnome.org/show_bug.cgi?id=725124
2014-02-25 10:10:31 +01:00
Aleix Conchillo Flaqué
62f5a27416 rtspsrc: add tls-database property
Add support for a new property: tls-database. If the property is set,
the certificate database will be given to the rtsp connection if TLS
protocol is being used. If the server certificate can't be verified with
the default database, this additional database will be used.

https://bugzilla.gnome.org/show_bug.cgi?id=724396
2014-02-20 20:03:40 +01:00
Sebastian Dröge
8054cd5df3 Revert "rtspsrc: Proxy rtpjitterbuffer do-retransmission property"
This reverts commit 9f7b1128b1.

This should be handled automatically be rtspsrc if the AVPF profile
is used, and manual enabling of it can be done with the new-manager
signal.
2014-01-24 12:37:39 +01:00
Wim Taymans
43feb82feb rtspsrc: add signal to notify of new manager
So that you can configure and connect to signals on the rtpbin.

See https://bugzilla.gnome.org/show_bug.cgi?id=722866
2014-01-24 10:22:59 +01:00
Aleix Conchillo Flaqué
9f7b1128b1 rtspsrc: Proxy rtpjitterbuffer do-retransmission property
https://bugzilla.gnome.org/show_bug.cgi?id=722866
2014-01-24 09:14:59 +01:00
Wim Taymans
2e9e80badf rtspsrc: use new method to get media-type
Use the new method to get the media type of a transport.
2014-01-07 15:04:02 +01:00
Wim Taymans
bf878d75d1 rtspsrc: use aggregate control for PLAY/PAUSE/TEARDOWN
Use the aggregate control instead of the original request url to perform
PAUSE/PLAY and TEARDOWN.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=721003
2013-12-26 11:27:30 +01:00
Tim-Philipp Müller
28f524a551 rtspsrc: fix 'make check'
Fix generic/states check. Also, g_return_if_fail() is
not for internal state checking.
2013-11-18 17:13:49 +00:00
Tim-Philipp Müller
d506409af5 docs: get rid of 'Since: 0.10.x' markers
And some gtk-doc markup fixes.
2013-11-18 14:47:35 +00:00
Sebastian Dröge
9ae6981578 rtspsrc: Use the synced buffer mode in auto mode if a clock provider is in the SDP 2013-11-13 10:54:19 +01:00
Rico Tzschichholz
b137f79581 rtsp: Add missing gio-2.0 deps and includes 2013-11-02 23:12:13 +01:00
Aleix Conchillo Flaque
82b8374af8 rtspsrc: allow setting tls certificate validation flags
Added a new property "tls-validation-flags". If the url transport is
TLS, the validation flags will be set to the rtsp connection.

https://bugzilla.gnome.org/show_bug.cgi?id=711230
2013-11-01 16:47:36 +01:00
Wim Taymans
e96f8f519c rtspsrc: proxy new buffer mode 2013-10-31 10:38:35 +01:00
Wim Taymans
8c5ce0dbdc rtspsrc: also go into the loop function after connect
When we have opened the stream, go into the loop function so that we can
receive messages from the server.
2013-09-27 15:08:31 +02:00
Wim Taymans
6095e2e859 rtspsrc: disable checks when linking pads
We know the pad links will work (and we don't check the return value
anyway).
2013-09-25 17:42:02 +02:00
Wim Taymans
9f9bcbc405 rtspsrc: only wait if we flushed
Only wait for the STREAM_LOCK when we flushed something when sending
a command for PAUSED or PLAYING.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707611
2013-09-09 15:13:46 +02:00
Wim Taymans
7b2e002879 rtspsrc: return when a flush was issued
Make gst_rtspsrc_loop_send_cmd() return TRUE when the current
action has been flushed
2013-09-09 15:13:46 +02:00
Tim-Philipp Müller
1dfc1f2686 Don't use setlocale in plugins()
Only apps should call setlocale(), not libraries.
2013-09-01 21:18:38 +01:00
Youness Alaoui
e22f7e91c4 rtspsrc: Fix response argument in handle-request signal 2013-08-21 09:06:02 +02:00
Youness Alaoui
6636efd31a rtspsrc: Add sdes property and proxy it to rtpbin 2013-08-21 09:06:02 +02:00
Sebastian Dröge
282afae244 rtspsrc: Only free GCheckSum after its last usage
https://bugzilla.gnome.org/show_bug.cgi?id=705760
2013-08-13 12:44:11 +02:00
Tim-Philipp Müller
7272dec5fe rtpdec: use generic marshaller 2013-08-04 11:20:41 +01:00
Sebastian Dröge
169b490664 rtspsrc: Add support for group-id in the stream-start event 2013-07-22 15:30:13 +02:00
Wim Taymans
ab24598443 rtspsrc: avoid some strdup 2013-07-02 11:13:25 +02:00
Wim Taymans
7c950ef3f2 rtspsrc: add select-stream signal
Add a signal to let the app select what streams will be selected.

See https://bugzilla.gnome.org/show_bug.cgi?id=634419
2013-07-02 10:40:35 +02:00
Wim Taymans
2d276e1bcb rtspsrc: avoid strdup 2013-07-02 10:40:35 +02:00
Wim Taymans
1db7e62060 rtspsrc: add signal to notify of the SDP
This way, the app can look and modify the SDP.
2013-07-01 17:31:30 +02:00
Wim Taymans
3289a2963b rtspsrc: reset-sync before play
Call reset-sync on the rtpbin before we go to playing. This makes us require SR
packets for all streams again before we attempt to sync them. If we don't reset,
it might be that we combine SR packets from before and after the PAUSE/PLAYING
state change and end up with huge bogus offsets.
2013-06-27 17:02:14 +02:00
Wim Taymans
bb9d42b976 rtspsrc: avoid some flushes 2013-06-26 14:58:53 +02:00
Wim Taymans
f39ef2ab68 rtspsrc: handle data message when waiting for reply
When we are waiting for a server reply, handle data messages instead of
ignoring them.
2013-06-26 14:41:36 +02:00
Wim Taymans
61219dc6ed rtspsrc: handle data messages in separate method
Refactor and make a method to handle a data message.
2013-06-26 14:41:36 +02:00
Wim Taymans
a4be0c6de3 rtspsrc: add some more docs to handle-request signal
See https://bugzilla.gnome.org/show_bug.cgi?id=702705
2013-06-25 20:36:18 +02:00
Youness Alaoui
52e440c91b Send a clock_provide message on the bus when we get a netclock 2013-06-25 14:50:47 +02:00
Youness Alaoui
547df8e14f rtspsrc: Expose use-pipeline-clock property 2013-06-25 14:50:33 +02:00
Youness Alaoui
95906b8f1c rtsp: go back into the loop after doing pause
After we do a pause request, go back to loop mode so that we can listen
for server messages again.

See https://bugzilla.gnome.org/show_bug.cgi?id=702705
2013-06-21 10:42:20 +02:00
Wim Taymans
b96d931bf4 rtspsrc: fix race in state change to paused
When we go to paused, we first flush the connection and then send the pause
command. As a result of the flushing, the scheduled paused command can get
lost. Wait until the connection is completely flushed and the rtsp task is
waiting before issuing the paused or playing request.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702705
2013-06-20 14:43:47 +02:00
Wim Taymans
d9bc48edc9 rtspsrc: manage element state ourselves
Lock the state of the all our elements and manage their states
outselves. Because we are working async, we can't rely on the state
change function to set the state at the right time or to return the
right return value from the state change function.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702046
2013-06-16 05:40:13 +02:00
Wim Taymans
25082a50b9 rtspsrc: add extra TLS url protocols
We also support TLS protocols now.
2013-05-31 12:34:22 +02:00
Wim Taymans
80850df711 rtspsrc: create and push stream-start in TCP mode 2013-05-28 15:45:49 +02:00
Wim Taymans
4fc1f3088b rtspsrc: remove some obsolete code
It is not needed to do a state change from the _play() function on
ourselves. The state change function already did that and we don't want to
interfere with that (or use hacks to avoid interference).
2013-05-28 15:10:07 +02:00
Wim Taymans
e6f850996b rtspsrc: set RTCP caps on the RTCP pads 2013-05-28 12:26:25 +02:00
Wim Taymans
779bcc093c rtspsrc: add signal to handle server requests
Add a signal to be notified of a server request. The signal handler can then
construct the response message for the server.

See https://bugzilla.gnome.org/show_bug.cgi?id=632207
2013-05-28 12:26:24 +02:00
Tim-Philipp Müller
643450c9b8 Revert "gstrtspsrc: set buffer-size for multicast buffers"
This reverts commit 2481e95d03.

This is already done five lines above, it was added a year
ago in commit 561b131e.
2013-05-09 09:09:59 +01:00
Aha Unsworth
2481e95d03 gstrtspsrc: set buffer-size for multicast buffers
For receiving video data via RTSP when the video is sent via
multicast there is no way to specify the udpsrc buffer-size.

On windows the native network buffer is not large and with video
i-frames being huge the buffer is to small and you get i-frame corruption,
it looks terrible, and there is no (easy) way to set the udpsrc buffer-size.

https://bugs.freedesktop.org/show_bug.cgi?id=52264
2013-05-08 16:57:53 -03:00
Sebastian Dröge
b0b0557c48 gst: Add better support for static plugins 2013-04-15 15:54:11 +02:00
Sebastian Dröge
b17750ed9e rtspsrc: Proxy the ntp-sync property of rtpbin 2013-04-12 12:58:50 +02:00
Sebastian Dröge
53dae1585e rtspsrc: Give the manager always the name "manager"
This allows to use the GstChildProxy interface to adjust
properties on it.
2013-04-12 12:51:05 +02:00
Wim Taymans
f8013487c9 rtspsrc: add support for NetClientClock
When the server suggests a GstNetTimeProvider in the SDP, set up a
GstNetClientClock that slaves to the remote clock and suggest this clock in
provide_clock.
2013-04-11 15:00:05 +01:00
Sebastian Dröge
d80ff8e7f3 rtspsrc: Proxy the multicast-iface property of udpsrc 2013-04-03 17:53:13 +02:00