Commit graph

511 commits

Author SHA1 Message Date
Tim-Philipp Müller
33ae84fd1c rtp: mark symbols explicitly for export with GST_EXPORT 2017-05-16 15:22:42 +01:00
Tim-Philipp Müller
f4494dab87 rtpbasedepayload: fix class description in docs 2017-05-15 16:20:01 +01:00
Tim-Philipp Müller
60e9629860 g-i: no need to load registry in g-i scanner 2017-05-04 23:55:20 +01:00
Sebastian Dröge
a3656ba29b libs: Check if meta transform_func is NULL before using it
https://bugzilla.gnome.org/show_bug.cgi?id=782050
2017-05-02 14:31:14 +03:00
Rico Tzschichholz
07a427b403 meson: Pass --c-include accordingly to GIR builds 2017-04-13 12:23:32 +01:00
Thibault Saunier
099ac9faf2 docs: Convert gtkdoc comments to markdown
Modernizing the documentation, making it simpler to read an
modify and allowing us to possibly switch to hotdoc in the
future.
2017-03-10 18:19:17 -03:00
Miguel Paris
036bdf5d2d rtpbuffer: Fix ensure_buffers() if whole packet is in one GstMemory
When gst_rtp_buffer_add_extension_onebyte_header() is used over a
GstRtpBuffer that only contains a memory for the whole packet,
ensure_buffers function crashes at the next point:

mem = gst_memory_copy (rtp->map[i].memory, offset, rtp->size[i]);

when i==2 because the payload is not mapped.

In addition the offset is calculated subtracting in the wrong direction.

https://bugzilla.gnome.org/show_bug.cgi?id=774959
2016-11-25 13:15:24 +02:00
Sebastian Dröge
b9f59fd999 rtpbasepayload: Ensure to set the RECONFIGURE flag again if reconfiguration failed
https://bugzilla.gnome.org/show_bug.cgi?id=774623
2016-11-18 12:04:27 +02:00
Thibault Saunier
6917cb629e meson: Generate girs
https://bugzilla.gnome.org/show_bug.cgi?id=773944
2016-11-09 18:06:19 -03:00
Sebastian Dröge
d84879db28 rtpbasedepayload: Reject non-TIME segments
https://bugzilla.gnome.org/show_bug.cgi?id=765796
2016-11-01 21:09:13 +02:00
Sebastian Dröge
568ec0fc7b Revert "basertpdepayload: create valid segment when given non-time segment"
This reverts commit 0f609bc6c6.
2016-11-01 21:09:04 +02:00
Havard Graff
c726e0ab6d rtpbuffer: Add buffer flag RETRANSMISSION
Useful for elements to know if a buffer is a retransmitted RTP packet.

https://bugzilla.gnome.org/show_bug.cgi?id=769771
2016-09-01 13:05:47 +03:00
Nirbheek Chauhan
5c4f4ac1bd 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:09:51 +01:00
Sebastian Dröge
69f90adbaf rtpbuffer: Add some const qualifiers
gst_rtp_buffer_add_extension_onebyte_header() and
gst_rtp_buffer_add_extension_twobytes_header() can have a const argument for
the actual extension data.
2016-07-26 17:46:38 +03:00
Tim-Philipp Müller
a80c546628 rtp: rtpbasedepayload: simplify code
Remove unnecessary helper struct for callbacks. The bclass
member of the helper struct was not used, so we can just
remove it and the GET_CLASS() call and simplify the whole
affair by passing the depayloader directly to the callback.
2016-07-15 19:51:20 +01:00
Zaheer Abbas Merali
0f609bc6c6 basertpdepayload: create valid segment when given non-time segment
This will become an error in 1.10.

https://bugzilla.gnome.org/show_bug.cgi?id=765796
2016-07-01 14:16:46 +02:00
Tim-Philipp Müller
d52a74f32e g-i: pass compiler env to g-ir-scanner
It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous.
2016-05-24 00:44:21 +01:00
Vivia Nikolaidou
a0cf3b4262 fdmemory, rtpbasedepayload: Ran gst-indent
https://bugzilla.gnome.org/show_bug.cgi?id=764948
2016-04-12 17:34:18 +03:00
Mikhail Fludkov
7a206336dd rtpbasedepayload: look at ssrc before sequence numbers
Doing so prevents us dropping buffers in the rare, but possible, situations,
when the stream changes SSRC and new sequence numbers does not differ
much from the last sequence number from previous SSRC. For example:
ssrc - 0xaaaa 101,102,103,104 ssrc - 0xbbbb 102, 103, 104, 105...
In the scenario above we don't want to drop the first 3 packets of
0xbbbb stream.

https://bugzilla.gnome.org/show_bug.cgi?id=764459
2016-04-03 11:49:16 +03:00
Tim-Philipp Müller
3ab183c758 rtp: rtcpbuffer: fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=761944
2016-03-30 22:41:54 +01:00
Tim-Philipp Müller
5377088f1e rtp: rtpcbuffer: fix Since markers
https://bugzilla.gnome.org/show_bug.cgi?id=761944
2016-03-30 22:41:54 +01:00
Stian Selnes
93196092d1 rtcpbuffer: Add API for APP packets
https://bugzilla.gnome.org/show_bug.cgi?id=761944
2016-03-24 14:24:11 +02:00
Haakon Sporsheim
d8e9a711a0 rtcpbuffer: Add profile-specific extension API.
https://bugzilla.gnome.org/show_bug.cgi?id=761950
2016-03-24 14:22:54 +02:00
Sebastian Dröge
2c29f09da8 rtpbasepayload: Handle gst_pad_get_current_caps() returning NULL gracefully 2016-02-23 18:23:45 +02:00
Xavier Claessens
429860e51f base: Add g_autoptr() support to all types
https://bugzilla.gnome.org/show_bug.cgi?id=754464
2015-12-14 13:39:43 -05:00
Sebastian Dröge
d6be67265f rtpbasedepayload: Check if the packet loss event actually has timestamp and duration fields
CID 1139615
2015-12-14 13:11:21 +01:00
Tim-Philipp Müller
f0db396e63 rtpbasedepay: when setting discont flag make sure rtpbuffer is current
Depayloaders will look at rtpbuffer->buffer for the discont flag.
When we set the discont flag on a buffer in the rtp base depayloader
and we have to make the buffer writable, make sure the rtpbuffer
actually contains the newly-flagged buffer, not the original input
buffer. This was introduced with the addition of the process_rtp_packet
vfunc, but would only trigger if the input buffer wasn't flagged
already and was not writable already.
2015-12-11 11:06:35 +00:00
Tim-Philipp Müller
86350ff8b7 rtpbasedepay: fix possible refcounting issue when detecting a discont
When we detect a discont and the input buffer isn't already flagged
as discont, handle_buffer() does a gst_buffer_make_writable() on the
input buffer in order to set the flag. This assumed it had ownership
of the input buffer though, which it didn't. This would still work
fine in most scenarios, but could lead to crashes or mini object
unref criticals in some cases when a discont is detected, e.g. when
using pcapparse in front of a depayloader. This problem was
introduced in bc14cdf529.
2015-12-11 10:38:14 +00:00
Reynaldo H. Verdejo Pinochet
4ed7b0a0e6 Drop usage of deprecated g-ir-scanner --strip-prefix flag 2015-12-02 20:19:43 -08:00
Sebastian Dröge
5bdeed32bc rtp: GST_RTP_BUFFER_MAP_FLAG_SKIP_PADDING is Since 1.6.1 2015-10-20 12:10:52 +03:00
Stian Selnes
0a668c1866 rtpbuffer: Add map flag to skip padding
Encrypted RTP buffers may contain encrypted padding, hence it's
necessary to have an option to relax the validation in order to
successfully map the buffer.

When the flag GST_RTP_BUFFER_MAP_FLAG_SKIP_PADDING is set
gst_rtp_buffer_map() will map the buffer like if padding is not
present.

https://bugzilla.gnome.org/show_bug.cgi?id=752705
2015-10-15 22:42:37 +03:00
Sebastian Dröge
79d4765525 Revert "rtpbuffer: increase logging level when map fails"
This reverts commit e3c8a82017.

It causes too much noise in the logs.
2015-10-15 22:40:50 +03:00
Miguel París Díaz
e3c8a82017 rtpbuffer: increase logging level when map fails
https://bugzilla.gnome.org/show_bug.cgi?id=756641
2015-10-15 16:48:08 +03:00
Sebastian Rasmussen
042e71a117 rtpbasepayload: Implement video SDP attributes
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726472
2015-10-02 17:44:14 +03:00
Jan Schmidt
95eb641821 rtpbasedepayload: Make stats creation threadsafe, fix a CRITICAL
Use the object lock to protect the internal segment when updating
against access from getting the stats property.

Fix a critical in gst-inspect or when retrieving the stats
before any segment has arrived by checking whether the
segment has been initted..
2015-08-15 23:37:26 +10:00
Sebastian Dröge
a0f1b964f1 rtpbaseaudiopayload: Copy metadata in the (de)payloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the audio tag.

https://bugzilla.gnome.org/show_bug.cgi?id=751774
2015-08-11 12:46:36 +02:00
Nicolas Dufresne
6ddab6918d basedepayloader: Don't re-timestamp with running-time
There was a confusion, six depayloaders where passing through the
timestamp while the base class was re-timestamping to running
time. This inconstancy has been unnoticed has in most use cases
the incoming segment is [0, inifnity] in which case timestamps are
the same as running time. With DTS/PTS shifting added (to avoid
negative values) and pcapparse sending a different segment this
started being an issue.

https://bugzilla.gnome.org/show_bug.cgi?id=753037
2015-08-10 13:26:20 -04:00
Brian Peters
1273848bf5 rtpbuffer: avoid accessing NULL buffer even more
Previous commit was incompletely applied.

https://bugzilla.gnome.org/show_bug.cgi?id=753001
2015-07-30 15:16:57 +01:00
Brian Peters
04c69952c0 rtp: buffer: don't access NULL buffer pointer
unmap will set rtpbuffer->buffer to NULL, so we need to
save the pointer to access it while the RTP buffer is
unmapped.

https://bugzilla.gnome.org/show_bug.cgi?id=753001
2015-07-30 14:30:44 +01:00
Tim-Philipp Müller
232bdf1711 rtpbasedepayload: fix leaks in error code paths
This was introduced when reshuffling the buffer unmaps
in commit bc14cdf529
rtp: rtpbasedepayload: add process_rtp_packet() vfunc

Fixes make check-valgrind.

https://bugzilla.gnome.org/show_bug.cgi?id=750235
2015-07-30 12:50:56 +01:00
Nicolas Dufresne
7c638e06ff depayloader: Use input segment start
When there is no clock_base provided, the start position is
set to 0 instead of the original segment start value. This
would break synchronization if start was not 0.

https://bugzilla.gnome.org/show_bug.cgi?id=752228
2015-07-18 15:40:26 -04:00
Tim-Philipp Müller
bc14cdf529 rtp: rtpbasedepayload: add process_rtp_packet() vfunc
Add process_rtp_packet() vfunc that works just like the
existing process() vfunc only that it takes the GstRTPBuffer
that the base class has already mapped (with MAP_READ),
which means that the subclass doesn't have to map it again,
which allows more performant processing of input buffers
for most RTP depayloaders.

https://bugzilla.gnome.org/show_bug.cgi?id=750235
2015-07-12 14:29:29 +01:00
Tim-Philipp Müller
3d7a92b452 rtpbasedepayload: fix typo in comment 2015-07-07 19:56:52 +01:00
Tim-Philipp Müller
fbf2773b2e rtpbasepayload: fix possible segment event leak
Need to clear it when shutting down, not when starting up.
Fixes leak in rtp-payloading unit test.
2015-07-07 15:05:59 +01:00
Stian Selnes
1586981b1b rtcpbuffer: Fix validation of packets with padding
The padding (if any) is included in the length of the last packet, see
RFC 3550.

Section 6.4.1:
   padding (P): 1 bit
      If the padding bit is set, this individual RTCP packet contains
      some additional padding octets at the end which are not part of
      the control information but are included in the length field. The
      last octet of the padding is a count of how many padding octets
      should be ignored, including itself (it will be a multiple of
      four).

Section A.2:
   *  The padding bit (P) should be zero for the first packet of a
      compound RTCP packet because padding should only be applied, if it
      is needed, to the last packet.

   *  The length fields of the individual RTCP packets must add up to
      the overall length of the compound RTCP packet as received.

https://bugzilla.gnome.org/show_bug.cgi?id=751883
2015-07-06 12:06:47 +03:00
Sebastian Dröge
353fb82ea1 rtpbaseaudiopayload: Don't copy memory if not needed, just append payload to the RTP buffer 2015-06-30 10:39:01 +02:00
Nicolas Dufresne
757cd8ffce doc: Fix gsttrtphdrext section name 2015-06-18 21:03:15 -04:00
Nicolas Dufresne
c101452a4a gi: Use INTROSPECTION_INIT for --add-init-section
This new define was added to common. The new init section fixed
compilation warning found in the init line that was spread across
all files.
2015-06-16 18:04:57 -04:00
Sebastian Dröge
abcaa71485 rtpbaseaudiopayload: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP() 2015-06-10 14:33:01 +02:00
Sebastian Dröge
3113e341ea rtpbasepayload: Always prefer downstream's ssrc suggestion if any
Otherwise ssrc changes via rtpsession's (deprecated!) internal-ssrc property
are not possible anymore. rtpsession was now patched to only suggest an ssrc
if it makes sense to do so.

In 2.0 we should get rid of all the properties that are also negotiated via
caps, the code and behaviour is too confusing otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=749581
2015-06-05 16:44:08 +02:00
Sebastian Dröge
bf5d3bf868 rtcpbuffer: Improve documentation of new functions a bit
Also actually add them to the documentation.
2015-06-05 10:18:21 +02:00
Jose Antonio Santos Cadenas
9931bef8ca rtcpbuffer: Update package validation to support reduced size rtcp packets
According to this section of the rfc.
https://tools.ietf.org/html/rfc5506#section-3.4.2
The validation should be updated to accept more types of RTCP
packages, with this mask change feedback packages will be also
accepted.

Change-Id: If5ead59e03c7c60bbe45a9b09f3ff680e7fa4868
2015-06-05 10:18:21 +02:00
Tim-Philipp Müller
6410aba1aa rtpbuffer: optimise payload mapping for buffers with one memory
Micro-optimisation: if the buffer consist of just one memory, we
know we have already mapped that memory to read the headers, so
no need to map it another time to get to the payload data, we
can just set up the payload data details right there and then
and avoid another map call in gst_rtp_buffer_get_payload().
Adds up when receiving RTP-payloaded raw video which can easily
be thousands of packets per frame.
2015-06-01 19:01:23 +01:00
Tim-Philipp Müller
bc309a100f rtpbasedepayload: provide chain_list function on sink pad
Implement a chain_list function, which avoids lots of locking
compared to the default fallback implementation in GstPad.
We may also want to do some more sophisticated timestamp
tracking here at some point, but for now leave it up to the
jitterbuffer and/or subclasses (in case buffers in the
buffer list have no timestamp set on them, there may only
be a timestamp for the whole list on the first buffer).
This provides the exact same behaviour as the default
fallback implementation.
2015-06-01 19:00:55 +01:00
Sebastian Dröge
4a993cb316 rtp: Clean G-I files on make clean too 2015-05-21 13:07:50 +03:00
Sebastian Dröge
6dd14bb6d6 rtp: Add builddir to the include path for gobject-introspection
And also add missing headers/sources

https://bugzilla.gnome.org/show_bug.cgi?id=749632
2015-05-20 16:24:07 +03:00
Sebastian Dröge
bfc13c8e51 rtp: Add GstRTPProfile enum 2015-05-20 15:41:06 +03:00
Sebastian Dröge
faafaaec56 rtpbasepayload: Try harder to reuse previously configured caps values and give more preference to anything set as properties
This affects the pt, ssrc, seqnum-offset and timestamp-offset properties. If
they were set from a property, or we configured caps before, we try to use
that value for them. Even if the first structure of the downstream caps
specifies a different value, we check if the value is supported by other
structures.
Only if all this fails, we use the values given by downstream in the first
structure, i.e. if no properties were set and these are the first caps we
negotiate or downstream does not support our values.

By doing this we ensure that we don't spuriously change ssrcs or other fields
in the middle of the stream (and also consider property values more). Ssrc
changes would currently happen after sending an RTX packet (thus creating a
new internal source inside the rtpsession), and then renegotiating the
payloader (which then gets the RTX ssrc from rtpsession).

https://bugzilla.gnome.org/show_bug.cgi?id=749581
2015-05-19 16:59:45 +03:00
Sebastian Dröge
1a2c590cd2 rtpbasedepayload: Add some debug output 2015-05-05 13:16:05 +02:00
Tim-Philipp Müller
c680e324bc Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 18:42:34 +01:00
Tim-Philipp Müller
dfc34c5841 rtp: rtcpbuffer: fix typo in enum
and in docs. Spotted by Rob Swain.
2015-04-07 16:44:20 +01:00
Edward Hervey
3eb35c77cc introspection: Don't use g-ir-scanner cache at compile time
It pollutes user directories and we don't need to cache it

https://bugzilla.gnome.org/show_bug.cgi?id=747095
2015-03-31 11:21:43 +02:00
Nicolas Dufresne
b7facbaf22 basedepay: Handle initial gaps and no clock-base
When generating segment, we can't assume the first buffer is actually
the first expected one. If it's not, we need to adjust the segment to
start a bit before.

Additionally, we if don't know when the stream is suppose to have
started (no clock-base in caps), it means we need to keep everything in
running time and only rely on jitterbuffer to synchronize.

https://bugzilla.gnome.org/show_bug.cgi?id=635701
2015-03-27 19:03:41 -04:00
Nicolas Dufresne
802ad73103 basedepayload: Fix generated segment
This fixes playback position in RTSP.

https://bugzilla.gnome.org/show_bug.cgi?id=635701
2015-03-26 17:43:47 -04:00
Sebastian Dröge
8f13a31bae rtpbuffer: Link to an explanation why the seqnum comparison function does the right thing even for wraparounds 2015-03-09 11:12:46 +01:00
Zaheer Abbas Merali
3ef295d9d6 rtcpbuffer: fix spelling of word in comment 2014-12-12 08:32:15 -08:00
Luis de Bethencourt
7ca8e6e71d rtp: Do not use deprecated gtk-doc 'Rename to' tag
GObject introspection GTK-Doc tag "Rename to" has been deprecated, changing to
rename-to annotation.

https://bugzilla.gnome.org/show_bug.cgi?id=739514
2014-11-02 15:14:13 +00:00
Vincent Penquerc'h
20344f6dc9 rtpbuffer: add a const where appropriate 2014-10-30 11:42:02 +00:00
Olivier Crête
bdf8ce286d rtpbasepayload: Implement reconfigure event & renegotiation without subclass
Implement the reconfigure event, also do correct downstream caps negotiation
if the subclass doesn't implementy set_caps.

https://bugzilla.gnome.org/show_bug.cgi?id=725361
2014-05-03 10:21:04 +02:00
Olivier Crête
deb27bddf6 rtpbasepayload: Save the PT after fixating 2014-05-02 18:30:23 -04:00
Vincent Penquerc'h
db8460cbd8 rtpbuffer: avoid underflow in size calculation 2014-05-02 15:10:07 +01:00
John Bassett
0fd60ac858 rtpbasepayload: restrict initial random sequence number to be <= 32767
In order to prevent SRTP roll over counter issues the initial sequence
number is restricted to <= 32767. This is recommended by RFC 4568 section 6.4.
2014-05-01 17:00:47 -04:00
Vincent Penquerc'h
ffdf87b121 rtcpbuffer: check claimed data size against available size
Coverity 1208773
2014-04-30 18:13:15 +01:00
Stian Selnes
0011d8cbb5 rtpbuffer: fix memory leak when gst_rtp_buffer_map fails
Make sure rtp->data[3] is set before jumping to error path.

https://bugzilla.gnome.org/show_bug.cgi?id=729117
2014-04-29 08:46:29 +02:00
Tim-Philipp Müller
bcb8068e27 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:28:57 +01:00
Wim Taymans
f2ee068729 rtpbasedepay: add stats property
Add a stats property that holds a structure with all the current
values of the depayloader.

See https://bugzilla.gnome.org/show_bug.cgi?id=646577
2014-04-12 07:10:36 +02:00
Wim Taymans
314eee6dd1 rtpbasepayload: update docs 2014-04-12 06:43:24 +02:00
Wim Taymans
f0348d7005 rtpbasepayload: add current timestamp and seqnum offset to stats
Expose the current timestamp and seqnum offset in the stats

See https://bugzilla.gnome.org/show_bug.cgi?id=646577
2014-04-12 06:27:36 +02:00
Wim Taymans
bf4079277d rtpbasepayload: add pt and ssrc to stats 2014-03-20 09:19:46 +01:00
Sebastian Rasmussen
d6dc1b6c46 rtpbasepayload: Let caps event also configure seqnum-offset
Previously the sequence number kept track of by GstRTPBasePayload would
only be set when going from READY to PAUSED state. This meant that a
downstream element that attempted to configure a basepayloader by
setting seqnum-offset e.g. in its sinkpad's caps template would have
trouble configuring the basepayloader. The reason was that the caps
event which arrives with the desired value for seqnum-offset did not
arrive at the basepayloader until caps negotiation took place,
significantly later than the transition from READY to PAUSED.

The result after this patch is that the default value for the
seqnum-offset property, or later set values for this property, will take
effect when going from READY to PAUSED like before. In addition the an
arriving caps event will also affect the basepayloaders configured
sequence number as the event arrives.
2014-02-24 12:10:26 +01:00
Sebastian Rasmussen
638d069c91 rtpbasepayload: Fix payload type property boundary value
The payload type field in an RTP packet header is 7 bits wide, hence the
boundary values ought to be 0x00 and 0x7f, not the previously stated
values 0x00 and 0x80.
2014-02-24 12:10:26 +01:00
Sebastian Rasmussen
3cc67ff494 rtpbasedepayload: Fix typos in comments 2014-02-24 12:10:26 +01:00
Sebastian Rasmussen
125b9c19c0 rtpbasepayload: Do cosmetic changes to rtptime calculations
* Change running time type to guint64
 * Use GST_CLOCK_TIME_NONE() to check for invalid timestamps
 * Name variables so ns-based and hz-based timestamps are evident

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719383
2014-01-28 14:41:41 +01:00
Sebastian Rasmussen
0142cd5e35 rtpbasepayload: Expose running-time of payloaded stream
https://bugzilla.gnome.org/show_bug.cgi?id=719415
2014-01-28 14:41:41 +01:00
Sebastian Rasmussen
865a5d1c8f rtpbasepayload: Improve documentation for perfect-rtptime
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719383
2014-01-28 14:41:41 +01:00
Sebastian Rasmussen
713dfe0d70 rtpbasepayload: Fix typos in documentation for properties
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719383
2014-01-28 14:41:41 +01:00
Sebastian Rasmussen
fa393e5d60 rtpbasepayload: Add statistics property
This property allows for an atomically retrieved set of properties that
can e.g. be used to generate RTP-Info headers.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=719415
2014-01-27 15:11:09 +01:00
George Kiagiadakis
6108407db1 gstrtpbasepayload: use the session's suggested ssrc after a collision, if the session provides one
Conflicts:
	gst-libs/gst/rtp/gstrtpbasepayload.c
2013-12-30 13:13:35 +01:00
Julien Isorce
71788c1432 rtpbasepayload: change SSRC on GstRTPCollision event
Change our SSRC and update the caps when we receive a GstRTPCollision
event from downstream.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=711560
2013-12-12 13:44:15 +01:00
Julien Isorce
6f614e1225 rtpbasepayload: implement src_event function
Add a srcpad event handler and call the src_event vmethod.
2013-12-12 13:16:01 +01:00
Sebastian Rasmussen
c734f9fba8 rtpbuffer: Allow subbuffering of empty buffers
See https://bugzilla.gnome.org/show_bug.cgi?id=720162
2013-12-10 12:38:56 +01:00
Sebastian Dröge
76985c5e81 rtpbuffer: Fix gst_rtp_buffer_ext_timestamp() with clang 5 on iOS/ARM
The bitwise NOT operator is not defined on signed integers.
Thanks to Wim Taymans for finding the cause.

https://bugzilla.gnome.org/show_bug.cgi?id=711819
2013-11-13 20:15:02 +01:00
Wim Taymans
240c7234f6 rtpbuffer: check for valid payload type
The payload type can't be between 72 and 76 because with the marker bit set,
this could be mistaken for an RTCP packet then. We do a relaxed check and
only refuse 72-76 when the marker bit is set. The effect is that when
we try to map an RTCP packet as an RTP packet, we will certainly fail.
2013-09-13 16:05:58 +02:00
Wim Taymans
ca1dac6982 rtcpbuffer: do additional packet checks
Check the packet size and avoid crashing on malformed packets.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=655727
2013-08-26 11:47:40 +02:00
Wim Taymans
b848f38215 rtcpbuffer: improve bye parsing
It is an error to ask for a non-existing BYE SSRC, the caller should
check the SSRC count first.
2013-08-26 11:46:11 +02:00
Wim Taymans
121235511a rtpbasedepayload: mark DISCONT on buffer in all cases
Always mark discont on the input buffer when we detect a seqnum
discont and not only when we previously marked ourselves DISCONT.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=706422
2013-08-21 12:38:10 +02:00
Olivier Crête
c6fd304eb6 rtpbaseaudiopayload: Avoid copying the data 2013-08-18 22:24:08 -04:00
Wim Taymans
c1da65da5e rtcpbuffer: calculate FB packet length correctly 2013-08-06 15:44:03 +02:00
Ognyan Tonchev
25fdde908a rtpbasepayload: Do not leak the event when segment is delayed
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=703119
2013-06-26 15:45:30 +02:00
Branko Subasic
4dd5c5b808 rtpbuffer: add gst_rtp_buffer_get_payload_bytes
The function gst_rtp_buffer_get_payload can not be used in Python
because it lacks necessary length parameter. This patch adds a new
function, gst_rtp_buffer_get_payload_bytes, to use from Python
bindings. The new function has the advisory "Rename to:" annotation
so it can replace the gst_rtp_buffer_get_payload whan creating
bindings.

The function gst_rtp_buffer_get_extension_bytes is also added. It wraps
gst_rtp_buffer_get_extension_data which doesn't work in Python due to
incomplete annotation and because it returns the length as number of
32-bit words.

https://bugzilla.gnome.org/show_bug.cgi?id=698562
2013-06-18 11:23:40 +02:00