Camilo Celis Guzman
0cee3cd833
rtpvp8pay: rtpvp9pay: access picture_id property atomically
...
Atomically set and get the picture_id. This changeset only atomically gets
the picture-id when such property is queried on the element, on every other
place where it is accessed internally it is accessed directly.
This is because there is no MT scenario where we would be modifying this value
and reading it internally in parallel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Camilo Celis Guzman
e4d8cda9a1
rtpvp8pay, rtpvp9pay: increment PictureID on FLUSH_START
...
In recent versions of Chrome (M106) a change on their jitter buffer means that
they are very susceptible to PictureID discontinuities.
Then avoid at all cost resetting the PictureID. Moreover, according to
the RFCs for VP8 and VP9 payloads; the PictureID can start off at any
random value. So there is no logical problem of incrementing it here
rather than resetting it, as long as it is a different PictureID.
WebRTC's recent corruption issue:
https://bugs.chromium.org/p/webrtc/issues/detail?id=15101
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Camilo Celis Guzman
f159fd8568
rtpvp8pay, rtpvp9pay: expose picture-id as a property
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Camilo Celis Guzman
11187a81c3
rtpvp9pay: add picture-id-offset property
...
Bring the VP9 payloader in sync in this regard to the VP8 payloader
Allowing setting the picture id to a known value is useful when testing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Camilo Celis Guzman
7cffb40c2e
rtpvp9pay: minor refactor of PictureID logic
...
This brings the logic inline with the vp8pay
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Camilo Celis Guzman
a79616ea7a
rtpvp8pay: avoid reseting PictureID if NO_PICTURE_ID mode is set
...
There is no logical change here, as `& (1 << nbits) - 1` would produce also 0
when NO_PICTURE_ID mode is choosen. However, this avoid computing a random
integer that is actually unused.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Camilo Celis Guzman
7dd6375c5e
rtpvp8pay, rtpvp9pay: use GType like name for PictureIDMode
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530 >
2023-05-05 07:45:19 +00:00
Tim-Philipp Müller
ba417b0e07
rtpjpegdepay: fix logic error when checking if an EOI is present
...
We wouldn't add the missing EOI marker if the frame ended with
either 0xFF NN or 0xNN D9.
Fixes #2407
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4256 >
2023-03-24 19:39:33 +00:00
Edward Hervey
ee759fb4bf
plugins: Fix wrong enum usage
...
gcc 13 now detects conflicting enum usages. Fix the various cases where it was wrong
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4225 >
2023-03-20 11:40:30 +00:00
Tim-Philipp Müller
0fc568c6b1
gst-plugins-good: re-indent with GNU indent 2.2.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182 >
2023-03-17 03:18:54 +00:00
Arun Raghavan
0ed51294e0
rtpopusdepay: Assume 48 kHz if sprop-maxcapturerate is missing
...
This matches 7587, section 6.1:
> sprop-maxcapturerate: a hint about the maximum input sampling rate
> [...]
> bandwidths (Table 1). By default, the sender is assumed to have
> no limitations, i.e., 48000.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4151 >
2023-03-14 11:09:08 -04:00
Patricia Muscalu
c3e52d5c4f
rtph264pay: Don't insert SPS/PPS before the second image slice
...
Only the first slice, for which fist_mb_in_slice is set to 0,
should trigger insertion of SPS and PPS buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3402 >
2023-02-08 12:10:11 +00:00
Mathieu Duponchelle
2048a0a4d9
redenc: fix setting of extension ID for twcc
...
1 was previously hardcoded in, and the bug went under the radar because
webrtcsink hardcodes the number too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3785 >
2023-01-24 22:52:48 +00:00
Tim-Philipp Müller
e66f8cff26
rtp: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Olivier Crête
c593930055
rtopuspay: Use GstStaticCaps to cache parsed caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674 >
2023-01-12 18:48:35 -05:00
Olivier Crête
46a6f72f03
rtopuspay: Ignore the stereo parameter in multiopus caps
...
Also add unit tests for the various variants
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674 >
2023-01-12 18:48:35 -05:00
Olivier Crête
f1cf457811
rtpopuspay: Leave original caps as-is
...
This should make it work if someone specifies stereo with MULTIOPUS
somehow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674 >
2023-01-12 18:48:35 -05:00
Olivier Crête
c52c66b575
rtpopuspay: Return upstream channel filter based on OPUS vs MULTICAPS
...
Only allow 1 or 2 channels if the caps are OPUS, or 3+ if they are
MULTIOPUS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674 >
2023-01-12 18:48:35 -05:00
Olivier Crête
c51ae6112d
rtpopus: Put MULTIOPUS in all caps
...
The RTP payload encoding-name are always in caps in GStreamer.
In SDP, they are not case-sensitive, but since caps are, we need to pick
a caps, and we picked upper-case along time ago.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674 >
2023-01-12 18:48:35 -05:00
Mathieu Duponchelle
fa71217502
rtpvp9depay: expose keyframe-related properties
...
This simply brings in the wait-for-keyframe and request-keyframe
properties from rtpvp8depay.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/909 >
2022-12-10 13:28:07 +00:00
Matthew Waters
093e9c8c9d
rtpulpfecdec: add property for passthrough
...
Support for enabling and disabling decoding of FEC data decoding on
packet loss events and unconditional seqnum rewriting of packets.
See
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/581
for background.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3212 >
2022-10-23 23:44:07 +00:00
Patricia Muscalu
3c9e4f4886
rtph265: keep delta unit flag
...
Without this patch all buffers that pass the payloader
are marked as non-delta-unit buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2969 >
2022-09-02 08:56:13 +00:00
Thibault Saunier
6a4425e46a
meson: Call pkgconfig.generate in the loop where we declare plugins dependencies
...
Removing some copy pasted code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970 >
2022-09-01 21:17:35 +00:00
Sebastian Dröge
cbc6761199
rtpvp8depay: If configured to wait for keyframes after packet loss, also do that if incomplete frames are detected
...
This can happen if the data inside the packets is incomplete without the
seqnums being discontinuous because of ULPFEC being used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2947 >
2022-08-31 08:58:03 +00:00
Sebastian Dröge
ed425e2785
rtpgstpay: Don't push packets before the first input buffer is received
...
It's not possible to create a valid RTP timestamp for them, which would
cause a potentially very big RTP timestamp discontinuity between those
first packets (created from initial events) and the packet based on the
first input buffer.
As a side-effect, also simplify the packet aggregation code a bit and
work with only a single level of buffer lists.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1157
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2250 >
2022-04-27 11:55:17 +00:00
Mathieu Duponchelle
3391a7d499
rtpredenc: quieten warning about ignoring header extensions
...
Turn it into a FIXME, and only log once
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2279 >
2022-04-23 01:04:54 +00:00
Tristan Matthews
86f0f8b67f
rtpopusdepay: assume 2 channels if sprop-stereo is missing
...
Fixes #1064
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2125 >
2022-04-08 13:11:25 +00:00
Sangchul Lee
67df5815a9
rtpvp8depay: Fix crash when making 'GstRTPPacketLost' custom event
...
This patch fixes a seg.fault in gst_structure_new() with warnings as below.
GLib-GObject-WARNING **:
../gobject/gtype.c:4330: type id '0' is invalid
GLib-GObject-WARNING **:
can't peek value table for type '<invalid>' which is not currently referenced
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1918 >
2022-03-10 19:37:49 +00:00
Sebastian Dröge
b0afaffc5d
rtp: In payloaders map the RTP marker flag to the corresponding buffer flag
...
This allows downstream of a payloader to know the RTP header's marker
flag without first having to map the buffer and parse the RTP header.
Especially inside RTP header extension implementations this can be
useful to decide which packet corresponds to e.g. the last packet of a
video frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1776 >
2022-02-28 10:13:11 +00:00
Sanchayan Maity
cc3419daf6
rtp: ldac: Set frame count information in payload
...
The RTP payload seems to be required as it carries the frame count
information. Also, gst_rtp_base_payload_allocate_output_buffer had
the second argument incorrect.
Strangely some devices like Shanling MP4 and Sony XM3 would still
work without this while some like the Sony XM4 do not.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1797 >
2022-02-26 21:09:57 +05:30
Matthew Waters
b0f72ed788
ulpfecenc: slightly safer dispose impl
...
Technically dispose can be called more than once (even if gstelement is
not actually set up to do that) so need to protect against that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1761 >
2022-02-21 09:43:33 +00:00
Matthew Waters
629b427a13
ulpfecenc: fix unmatched free() call
...
One must always match a g_slice_new with a g_slice_free and a g_new with
a g_free. This was not the case for the internal ctx struct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1761 >
2022-02-21 09:43:33 +00:00
Matthew Waters
acc9024039
rtpulpfecenc: add some debug logging
...
Like, what configuration we are using or whether a fec packet is
generated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1761 >
2022-02-21 09:43:33 +00:00
Heinrich Kruger
6dd15acf2d
rtp-hdrext-colorspace: Fix color range encoding
...
The color space RTP header extension encodes color range as specified in
https://www.webmproject.org/docs/container/#Range . In other words:
0: Unspecified,
1: Broadcast Range,
2: Full range,
3: Defined by matrix coefficients and transfer characteristic.
This does not match the values of GstVideoColorRange, so it is not
correct to just write the colorimetry.range value to the header
extension.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1482 >
2021-12-30 16:31:33 +00:00
Jeongki Kim
04f6fbc237
rtpg726depay: fix endian conversion
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1469 >
2021-12-24 14:52:38 +09:00
Mathieu Duponchelle
d12d45db77
reddec: implement support for the BUNDLE case
...
When multiple streams are bundled together, there may be more
than one red payload type to handle.
In addition, as the red decoder works by filling in gaps in
the seqnums, there needs to be one rtp_history queue per sequence
domain.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1429 >
2021-12-14 17:34:53 +00:00
Mathieu Duponchelle
5dc280de9f
rtp/redenc|ulpfecenc: add support for TWCC
...
In redenc, when input buffers have a header for the TWCC extension,
we now add one to our wrapper buffers.
In ulpfecenc we add one in that case to our protection buffers.
This makes TWCC functional when UlpRed is used in webrtcbin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1414 >
2021-12-14 03:26:56 +00:00
Thibault Saunier
49055f1cd5
rtph264pay: Handle 'profile' field
...
In order to allow "level-asymmetry-allowed" we now handle a new
"profile" field, which as the same semantics as the "profile" field in
H.264 stream so that we can force payloaded stream to have the right
format when using the `gst_sdp_media_get_caps_from_media` to set caps
filter after the payloader. This allows a simple negotiation in standard
RTP negotiation based on SDPs (like webrtc) for that particular case,
closely respecting the specs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1410 >
2021-12-12 10:59:00 -03:00
Olivier Crête
c272d0bfcd
rtopuspay: Set marker bit inside RTP packet too
...
At the end of a talk spurt, not only set the marker flag on the
GstBuffer, but also set the bit inside the RTP header as recommended
by the RFC.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1124 >
2021-10-12 17:18:19 -04:00
Olivier Crête
ba328fb98d
rtphdrext: Set caps without attributes as the default
...
Most subclasses just use the simple function, so just let the base class
do it. It makes less code in subclasses.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/906 >
2021-09-28 20:04:55 +00:00
Olivier Crête
498740fe57
rtphdrext: Put simple caps generation as the base class default
...
Instead of having a helper function that gets called by almost every
subclass, just let the base class set the caps fields automatically.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/906 >
2021-09-28 20:04:55 +00:00
Thibault Saunier
5ff769d731
Move files from gst-plugins-good into the "subprojects/gst-plugins-good/" subdir
2021-09-24 16:13:50 -03:00