Carlos Rafael Giani
0431a0845c
mpegaudioparse: Support gapless playback
...
Gapless playback is handled by adjusting buffer timestamps & durations
and by adding GstAudioClippingMeta.
Support for "Frankenstein" streams (= poorly stitched together streams)
is also added, so that gapless playback support doesn't prevent those
from being properly played.
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1028 >
2022-03-14 10:32:15 +02:00
Jan Alexander Steffens (heftig)
2db283499e
deinterlace: scalerbob: Reduce latency to 0
...
We only need the current field, just like `linear`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1926 >
2022-03-12 22:48:39 +00:00
Vivia Nikolaidou
8c648384f2
yadif: Fix CHECK macro for YUY2 format
...
Used to make comb artifacts for videotestsrc pattern=ball for YUY2
format only (not AYUV).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1938 >
2022-03-12 17:18:47 +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
Tomasz Andrzejak
e74435008f
rtpbin: allow FEC elements with Always pads
...
This patch enable picking up FEC decoder or enocder that have
static repair packets pad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1860 >
2022-03-10 08:33:27 +00:00
Edward Hervey
568b918971
qtdemux: Propagate stick events downstream when creating pads
...
If upstream provided a stream collection event before any pads were created,
make sure it's propagated downstream when pads are created.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1891 >
2022-03-09 16:09:31 +00:00
Havard Graff
a2c25ccd09
rtprtxsend: if no rtx is present, don't expose a rtx-ssrc in caps
...
The point here is that rtpsession will create a new rtpsource when
the field "rtx-ssrc" is present, and when not doing rtx, that means
a random ssrc will create a new rtpsource that will be included in RTCP
messages for the current session.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1882 >
2022-03-09 15:30:37 +00:00
Havard Graff
2a8fa45ba8
rtprtxsend: don't process or warn if no map is set
...
This makes it more gentle when doing "pass-through"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1879 >
2022-03-09 12:01:22 +05:30
Mikhail Fludkov
815d279f2e
rtprtxreceive: fix crash when RTX payload has zero length
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1875 >
2022-03-08 09:07:41 +00:00
Havard Graff
86c7231dae
rtprtxreceive: allow passthrough and non-rtp buffers
...
To avoid mapping rtp buffers when RTX is not in use, and to not
do a full error on receiving a non-rtp buffer, since you have no control
of what a rouge sender might send you.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1874 >
2022-03-07 23:43:49 +00:00
Havard Graff
a475c93346
rtprtx: don't access type-system per buffer
...
When doing only a single stream of audio/video this hardly matters,
but when doing many at the same time, the fact that you have to get
a hold of the glib global type-system lock every time you process a buffer,
means that there is a limit to how many streams you can process in
parallel.
Luckily the fix is very simple, by doing a cast rather than a full
type-check.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1873 >
2022-03-07 22:01:03 +00:00
Hou Qi
b11084f729
flvmux: Add protection when unref GstFlvMuxPad
...
This is to avoid gst_object_unref: assertion 'object != NULL' failed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1843 >
2022-03-07 13:03:16 +00:00
Nicolas Dufresne
0f15580853
matroska: Fix AV1 alignment to TU
...
Matroska stores AV1 in temporal unit, so that all OBU sharing the same
timestamp are put together. This was previously just assumed, which isn't
safe now that we have more alignments.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1837 >
2022-03-04 21:58:15 +00:00
Nicolas Dufresne
f6c070fbff
isomp4: Fix AV1 default alignment
...
ISOMP4 store TU (temporal units) worth of AV1. Expose this in the
caps to reduce overhead in the parser, and in the muxer to avoid
storing frames split in the wrong way.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1837 >
2022-03-04 21:58:15 +00:00
Tristan Matthews
9d0d001d19
matroskamux: allow width+height caps changes for VP8/9
...
For VP8 and VP9, width+height changes are signalled inband.
Refs https://github.com/Kurento/bugtracker/issues/535 and
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1657 >
2022-03-04 14:17:20 -05:00
Tristan Matthews
c6ba57eb8e
matroskamux: allow width + height changes for avc3|hev1
...
For avc3 and hev1, the intent was to allow more flexibility for caps changes
(see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit_id=9bd8d608d5bae27ec5ff09e733f76ca32b17420c )
however width and resolution were previously omitted.
avc3 and hev1 specifically support changing stream-parameters on the fly, whereas avc1/hvc1 disallow in-band SPS.
This commit allows for changes to width and height for these which is in line with matroskamux's behaviour prior to 1.14.0.
Practically speaking, one use case where this is commonly seen is when capturing a WebRTC stream, as the browser will adapt the resolution live.
Suggested-by: Mathieu Duponchelle "<mathieu@centricular.com>"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1657 >
2022-03-04 14:17:20 -05:00
Jan Alexander Steffens (heftig)
ce503d0645
deinterlace: Prevent race between _set_method and latency query
...
It's possible that the method is being manipulated while downstream
queries our latency, leading to crashes.
Prevent that from happening.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1854 >
2022-03-04 16:14:46 +00:00
Sebastian Dröge
9f798776e5
matroska-mux: Handle pixel-aspect-ratio caps field correctly when checking caps equality
...
Not having this field is equivalent with it being 1/1 so consider
it like that. The generic caps functions are not aware of these
semantics and would consider the caps different, causing a negotiation
failure when caps are changing from caps with to caps without or the
other way around.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1826 >
2022-03-02 10:27:47 +00:00
Sebastian Dröge
1b851ae23f
matroska-mux: Handle multiview-mode/flags caps fields correctly when checking caps equality
...
Not having these fields is equivalent with them being mono/0 so consider
them like that. The generic caps functions are not aware of these
semantics and would consider the caps different, causing a negotiation
failure when caps are changing from caps with to caps without or the
other way around.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1826 >
2022-03-02 10:27:47 +00:00
Jan Schmidt
cebf769725
matroska-mux: If a stream has a TITLE tag, use it for the name.
...
If a title tag is pushed to a pad, store it as the Track name.
This means that players will use it as the human readable
description of the track, instead of something generic like 'Video'
or 'Subtitle'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1798 >
2022-03-01 13:17:40 +00:00
Jan Schmidt
7efdc9c7f5
matroskademux: Don't parse Tracks element twice
...
If the tracks element was parsed from the SeekEntry, don't
parse it a second time and recreate tracks, as this
loses any tags that were read using the seek table.
If a genuinely new Tracks element is found, do read that
as it is needed for MSE support.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1798 >
2022-03-01 13:17:40 +00:00
Vivia Nikolaidou
b699feefee
yadif.asm: Fix improper usage of LOAD macro
...
LOAD macro relies in m7 being zero for interleaving purposes. Using LOAD
on the m7 register makes it interleave with its new content instead of
with 0.
The effect of this bug was bobbing on some static lines that appeared
over fast-moving content.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1816 >
2022-03-01 07:22:10 +00:00
Vivia Nikolaidou
d499342f0d
yadif.asm: Typo fixes in comments
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1816 >
2022-03-01 07:22:10 +00:00
Vivia Nikolaidou
087ca88213
yadif: Fix bug in C implementation of CHECK
...
It was different compared to the corresponding part in both ffmpeg and
the asm implementation. Fixing this makes videotestsrc pattern=spokes
not jump at all when not using the asm optimisations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1816 >
2022-03-01 07:22:10 +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
Xavier Claessens
3d8372cc50
devenv: Add some missing GStreamer specific env variables
...
This should make "meson devenv" closer to what "gst-env.py" sets.
- GST_VALIDATE_SCENARIOS_PATH
- GST_VALIDATE_APPS_DIR
- GST_OMX_CONFIG_DIR
- GST_ENCODING_TARGET_PATH
- GST_PRESET_PATH
- GST_PLUGIN_SCANNER
- GST_PTP_HELPER
- _GI_OVERRIDES_PATH
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1768 >
2022-02-25 20:35:26 +00:00
Jan Alexander Steffens (heftig)
d6ec88c775
deinterlace: greedyh: Stop adding 2 to cur_field_idx
...
Just a simplification.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1790 >
2022-02-25 12:06:56 +00:00
Jan Alexander Steffens (heftig)
dc1ae0aaa0
deinterlace: greedyh: Use _plane in _packed, fix planar formats
...
This greatly reduces code duplication. It also exposed the cause for
planar formats not being properly deinterlaced:
The planar path was missing the initial offset adjustment that the
packed path did to `L2` and `L2P` in the case of an even field, which
caused it to select the wrong weave lines every other field.
Add those offsets in `_plane`.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1047
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1790 >
2022-02-25 12:06:55 +00:00
Jan Alexander Steffens (heftig)
625cbcf70a
deinterlace: greedyh: Rename _planar_plane to _plane
...
As well as `i` to `plane`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1790 >
2022-02-25 12:06:55 +00:00
Jan Alexander Steffens (heftig)
7e16955e4d
deinterlace: greedyh: Move code from _planar into _planar_plane
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1790 >
2022-02-25 12:06:55 +00:00
Jan Alexander Steffens (heftig)
19ca706fe8
deinterlace: greedyh: Move _planar_plane upwards
...
In preparation of refactoring. No functional change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1790 >
2022-02-25 12:06:55 +00:00
Guillaume Desmottes
8bbdd9addb
rtpsource: fix rtp_source_get_nack_deadlines doc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1775 >
2022-02-22 09:40:35 +00:00
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
Nirbheek Chauhan
4e22ef5bd2
matroska-demux: Emit a warning when no codec data found
...
It is bad if an mkv file does not have codec data for the ProRes
variant, so we should emit a warning. ffmpeg does the same thing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1739 >
2022-02-21 08:49:28 +00:00
Sebastian Wick
e61e069189
matroska: default prores fourcc apcn
...
If there is no codec private data for prores it should default to Apple
ProRes 422 Standard Definition (apcn). Can be tested with
strobe_scientist.mkv from
https://developers.google.com/media/vp9/hdr-encoding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1734 >
2022-02-18 08:38:31 +00:00
Seungha Yang
53ed876002
qtdemux: Do not send unnecessary GAP events
...
Each stream may have its own segment timeline
(i.g., different segment.start or segment.base)
depending on edit-list and composition-to-decode atom.
Make sure whether time position of a stream has been actually
far behind than that of current target stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1352 >
2022-02-17 19:39:53 +00:00
Sebastian Dröge
8bda2ef474
qtmux: Don't post an error message if pushing a sample failed with FLUSHING
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1711 >
2022-02-15 13:43:41 +02:00
Robert Rosengren
265878c4ba
rtpbin: Safer ts-offset-smoothing-factor calculation
...
Protect the ts-offset-smoothing-factor calculation from overflow. Output
warning and fallback to ts-offset if it is detected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1409 >
2022-02-08 11:11:35 +00:00
Robert Rosengren
31dd9226ce
rtpbin: add ts-offset-smoothing-factor property
...
Add property to set the TS offset smoothing factor and set default value
to not use it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1409 >
2022-02-08 11:11:35 +00:00
Danny Smith
bc964141c8
rtpbin: applied smoothing to jittery sender time-stamps
...
Applying a moving average filter to the timestamp offsets
for smoothing jittery and preventing aggressive skew handling.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1409 >
2022-02-08 11:11:34 +00:00
Danny Smith
d5e257afd1
rtpbin: added option for setting min_ts_offset in ntp-sync mode
...
Constantly updating the ts_offset results in audiable glitches
when streaming audio using ntp-sync=true. By requiring a minimum
offset before updating ts_offset this can be mitigated. Added a
parameter which can be used to set min_ts_offset in ntp-sync mode.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1409 >
2022-02-08 11:11:34 +00:00
Stéphane Cerveau
d191180061
autodetect: fix debug init category
...
Since the split of elements, the debug category
was default for autodetect.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1590 >
2022-01-28 10:35:35 +00:00
Nirbheek Chauhan
980925a6a3
rtspsrc: Fix critical while serializing timeout element message
...
The "cause" field wasn't registered as a GEnumValue, so do that.
Fixes this critical in gst_structure_to_string():
`gst_value_serialize: assertion 'G_IS_VALUE (value)' failed`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1573 >
2022-01-26 11:07:07 +00:00
Sebastian Dröge
241a26631d
splitmuxsink: Warn when calculating the next fragment time in timecode mode fails
...
But only if timecode mode is enabled as it will fail all the time
otherwise.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1557 >
2022-01-25 12:08:20 +00:00
Aleksandar Topic
002c5ae7ef
imagefreeze: Fix example launch line format issue
...
The currently shown example launch line will not run, because it
cannot handle png images.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1547 >
2022-01-20 18:12:39 +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