Sebastian Dröge
b730e7a1b2
rtpvp8pay: Use GstBitReader instead of dboolhuff implementation from libvpx
...
All compressed frame header values that are read as part of the
payloader are encoded as bits with 50:50 probability, and as such are
just the plain bits as they are.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5810 >
2024-01-31 16:52:28 +00:00
Tim-Philipp Müller
d415816cb1
rtpvrawdepay: only announce supported formats in sink template
...
For most video formats we currently just assume that they
have a depth of 8 bits, whilst advertising that we can
handle 8/10/12/16 bit depth.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5866 >
2023-12-25 19:00:18 +01:00
Sebastian Dröge
c9c26eab26
rtpvp8pay: Also set partition IDs in the packets if meta exists but without temporal_scalability
...
Encoders will add the meta to every single buffer, but we only cannot set
partition IDs properly when the meta has temporal_scalability set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5814 >
2023-12-21 11:26:49 +00:00
Arun Raghavan
ee903a5afd
rtp: Fix incorrect RTP channel order lookup by name
...
The g_ascii_strcasecmp() logic is inverted, since it returns 0 on equality.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5815 >
2023-12-15 15:21:20 -05:00
Sebastian Dröge
14b94ea00b
rtpvp9pay: Don't include unused dboolhuff.h header
...
It's only used by the VP8 payloader.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5784 >
2023-12-09 11:17:15 +00:00
Robin Gustavsson
38a8411bdf
rtpklvdepay: Recover after invalid fragmented KLV unit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4816 >
2023-11-17 09:01:10 +00:00
Olivier Crête
c2a357c867
rtpopusdepay: set resync flag
...
- Set re-sync flag on output buffer when rtp had the marker flag set.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5529 >
2023-11-10 21:45:13 +00:00
Tim-Philipp Müller
bce1d121ba
rtpac3depay: should output audio/x-ac3 not audio/ac3
...
audio/x-ac3 is the canonical media format in GStreamer.
audio/ac3 is sometimes accepted as input (e.g. in rtpac3pay
or ac3parse), but shouldn't be output.
Fixes #3038 .
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5472 >
2023-10-19 13:27:58 +00:00
Xavier Claessens
0ab48250a9
GstCustomMeta: Use simplified API where possible
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5385 >
2023-09-27 18:46:34 +00:00
Jonas K Danielsson
749652e60c
rtp: Add rtppassthroughpay element
...
This elements pass RTP packets along unchanged and appear as a RTP
payloader element.
This is useful, for example when using the gstreamer-rtsp-server
library, in the case where you are receiving RTP packets from a
different source and want to serve them over RTSP. Since the
gst-rtsp-server library expect the element marked as payX to be a RTP
payloader element and assumes certain properties are available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5204 >
2023-08-22 14:01:09 +00:00
Sebastian Dröge
09045da073
rtpgstpay: Enable hdrext aggregation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979 >
2023-08-15 07:12:03 +02:00
Jochen Henneberg
a97d3acb90
rtp/vp8depay+vp9depay: Enable hdrext aggregation for VP8 and VP9
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979 >
2023-08-15 07:12:03 +02:00
Jochen Henneberg
2673a66e60
rtp/h264depay+h265depay: Enable hdrext aggregation for H264 and H265
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979 >
2023-08-15 07:12:03 +02:00
Peter Stensson
33fb3bfd60
rtpvp9pay: Only mark first outgoing packet as non delta-unit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937 >
2023-06-29 09:48:41 +00:00
Peter Stensson
af43648bdf
rtpvp8pay: Only mark first outgoing packet as non delta-unit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937 >
2023-06-29 09:48:41 +00:00
Peter Stensson
b40b4ffb81
rtph265pay: Only mark first NAL as non delta-unit
...
When the input buffer contained multiple NAL's the second one would keep
the non delta-unit flag for a key frame.
The delta-unit flag will now be set per NAL when preparing the buffer
list to payload.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937 >
2023-06-29 09:48:41 +00:00
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