Commit graph

316 commits

Author SHA1 Message Date
Nirbheek Chauhan
3b857965e8 jack: Add support for detecting libjack on Windows
No source code changes were necessary to get the plugin working on
Windows with MSVC.

Run QJackCtl and audiotestsrc ! jackaudiosink just works.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2515>
2022-05-28 16:34:02 +01:00
Hou Qi
b364b3cdc9 v4l2: Reset transfer in gst_v4l2_object_acquire_format()
get_colorspace() checks input caps transfer when mapping V4L2_XFER_FUNC_709
back to V4L2_COLORSPACE_BT2020 and GST_VIDEO_TRANSFER_BT2020_12. After
receiving source change event, decoder will G_FMT and S_FMT again. So need
to reset transfer when acquiring format to avoid using the old transfer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2505>
2022-05-27 00:00:39 +01:00
Stéphane Cerveau
26c7290e17 soup: Fix plugin/element init
In case of per features registration such as the
customizable gstreamer-full library, each
element should check that the soup library can be loaded to
facilitate the element registration.

Initialize the debug category properly

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2491>
2022-05-25 12:20:07 +01:00
Eli Schwartz
7b3bccdd75 meson: use better zlib dependency fallback
zlib is required, and if it isn't found it is checked several ways and
then forced via subproject(). This code was added in commit
b93e37592a, to account for systems where
zlib doesn't have pkg-config files installed.

But Meson already does dependency fallback, and also, since 0.54.0, does
the in-between checks for find_library('z') and has_header('zlib.h') via
the "system" type dependency. Simplify dependency lookup by marking it
as required, which also makes sure that the console log doesn't
confusingly list "not found".

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2486>
2022-05-24 23:21:31 +01:00
Jan Alexander Steffens (heftig)
668b0cf939 deinterlace: Clean up error handling in chain and _push_history
- Consistently unref the chained buffer at the end of the chain
  function, if we're not handing it off to `gst_pad_push`. This avoids a
  few buffer leaks in the error paths in `_chain` and `_push_history`.
- When mapping the video frame fails, return a flow error instead of
  crashing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2444>
2022-05-18 09:27:46 +01:00
Guillaume Desmottes
3927e77f4e vpxenc: fix crash if encoder produces unmatching ts
If for some reason the encoder produces frames with a pts higher than
the input one, we were dropping all the video encoder frames and ended
up crashing when trying to access the pts of a NULL pointer returned by
gst_video_encoder_get_oldest_frame().

I hit this scenario by feeding a decreasing timestamp to vp8enc which
seem to confuse the encoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2436>
2022-05-17 11:12:43 +02:00
Thibault Saunier
08d3edb990 rtpbin: Avoid holding lock GST_RTP_BIN_LOCK when emitting pad-added
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2415>
2022-05-13 19:59:24 +01:00
Sebastian Dröge
a3c5fcb9f0 qtdemux: Don't use tfdt for parsing subsequent trun boxes
The timestamp in the tfdt refers to the first trun box and if there are
multiple trun boxes then the distance between the first timestamps will
grow.

At some point this distance reaches a threshold and triggers the
resetting of the first sample's timestamp of this trun box to be reset
to the tfdt.

This threshold is implemented for files where there is a jump in the
timeline between fragments and where this can be detected via a jump
between the end timestamp of the previous fragment and the tfdt of the
next. This behaviour is preserved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2414>
2022-05-13 19:27:57 +01:00
Nicolas Dufresne
aba9d1de49 v4l2videoenc: Setup crop rectangle if needed
Hantro H1 and Rockchip VEPU2 drivers will pad the width/height to a
multiple of 16. In order to obtain the right JPEG size, the image needs
to be cropped using the S_SELECTION API. This support is added as best
effort since older drivers may emulate this by looking at the capture
queue width/height.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2392>
2022-05-09 13:50:44 -04:00
Damian Hobson-Garcia
21882223fb v4l2object: rename crop function to reflect its usage
The gst_v4l2_object_set_crop() is used for removing buffer
alignment padding. Give it a name that better reflects
that usage.  This helps to distinguish from cropping of the
input image (e.g. cropping at the image sensor on a captre
device), which can be  unrelated to the memory buffer padding,
especially if scaling is involved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2392>
2022-05-09 13:50:19 -04:00
Sebastian Dröge
61330b65b4 mp4mux: Disable aggregator's default negotiation
mp4mux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
2022-05-06 01:19:40 +01:00
Sebastian Dröge
8f7a2f1311 flvmux: Disable aggregator's default negotiation
flvmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
2022-05-06 01:19:40 +01:00
Matthew Waters
ea5983c82b wavparse: ensure that any pending segment is sent before an EOS event is sent
Specifically fixes seqnum handling when an aggregator-based element
(audiomixer et al) is downstream and a seek is performed that
immediately causes an EOS from wavparse.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2369>
2022-05-05 01:29:07 +01:00
Ruben Gonzalez
6464039946 gst_plugin_load_file: force plugin reload if diff filename
If a file includes a new version of a plugin that exits in the
registry, the output of gst-inspect is incorrect. The output has the
correct version but incorrect filename, and element description.

This seems to have also fixed some documentation issues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2357>
2022-05-04 11:05:11 +01:00
Tim-Philipp Müller
8769bec70c Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2347>
2022-05-03 00:55:58 +01:00
Tim-Philipp Müller
8dbfc89a85 Release 1.20.2 2022-05-02 23:29:29 +01:00
Tim-Philipp Müller
0e1c37fb8f Update ChangeLogs for 1.20.2 2022-05-02 23:29:19 +01:00
dongil.park
087ebb9f4d wavparse: Unset DISCONT buffer flag for divided into multiple buffers in push mode
In push mode (streaming), if the received chunk buffer size from _chain is bigger
than output buffer size, the flags of the divided-buffers are propagated to the
DISCONT flag from first received chunk buffer. This unexpected buffers contained DISCONT
flags are abnormally transformed when changing the sampling rate by audioresample element.
So unset unnecessary DISCONT flag before pad_push().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2322>
2022-04-28 11:45:10 +00:00
Mathieu Duponchelle
bf620723c1 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/2281>
2022-04-23 13:27:55 +01:00
Hou Qi
0ea41bac13 v4l2videodec: copy colorimetry values to output_state caps
This is to avoid transcoding negotiation fail between v4l2h265dec
and v4l2h264enc caused by colorimetry mismatch.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2220>
2022-04-21 11:09:26 +00:00
Havard Graff
9a4804fd3f qtdemux: fix leak of channel_mapping
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2184>
2022-04-14 12:58:11 +01:00
Tristan Matthews
e9e4ac0ba9 rtpopusdepay: assume 2 channels if sprop-stereo is missing
Fixes #1064

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2139>
2022-04-08 14:57:07 +01:00
Nirbheek Chauhan
69936ad852 meson: Add some messages when selecting libsoup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2082>
2022-03-31 15:32:17 +01:00
Nirbheek Chauhan
45ce19dd2d soup: Fix usage of symbols / defines that are gone in libsoup3
I am not sure about the SOUP_MESSAGE_OVERWRITE_CHUNKS change, but it
was definitely already broken when using libsoup-3.0 in a shared
build. souphttpsrc probably needs to be ported from SoupMessage to
SoupServerMessage when using libsoup-3.0.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1111

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2082>
2022-03-31 15:32:17 +01:00
Nirbheek Chauhan
2813e30392 soup: Fix pre-processor macros in souploader for libsoup-3.0
Some of the preprocessor conditionals in the loader were very broken
with libsoup-3.0 + --default-library=static

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1111

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2082>
2022-03-31 15:32:17 +01:00
Matthew Waters
1b1158feb2 osxcoreaudio: fix unused-but-set warning
../sys/osxaudio/gstosxcoreaudio.c:480:18: error: variable 'interleaved' set but not used [-Werror,-Wunused-but-set-variable]
  gboolean sign, interleaved;
                 ^

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2068>
2022-03-30 00:52:53 +01:00
Matthew Waters
b0628713de deinterlace: silence unused-but-set werror from imported code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2062>
2022-03-29 18:31:57 +01:00
Matthew Waters
a9284b4351 osxvideosink: fix unused-but-set-variable warning
../sys/osxvideo/osxvideosink.m:859:11: error: variable 'data' set but not used [-Werror,-Wunused-but-set-variable]
  guint8 *data, *readp, *writep;
          ^

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2055>
2022-03-29 13:27:51 +01:00
Matthew Waters
c41d29c902 rtpptdemux: fix leak of caps when ignoring a pt
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2033>
2022-03-26 01:18:03 +00:00
Stéphane Cerveau
5e89be5c84 wavparse: handle query in any parse state
In order to create the stream_id, we need to
pass the query to the default query handler.

If the parse state is different from GST_WAVPARSE_DATA
the query should be passed to the default query
handler.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2011>
2022-03-23 15:00:13 +01:00
Sangchul Lee
1cdba2837e rtpjitterbuffer: Fix invalid memory access in rtp_jitter_buffer_pop()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1994>
2022-03-19 11:24:15 +01:00
Nicolas Dufresne
fc8e3814ab v4l2transform: Handle caps changes
As this element is single threaded, we only need to stop the objects to
allow changing the format again. Fixes assertion notably on shutdown and
on some other situation where the format may be set twice without
actually activating the element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1991>
2022-03-18 20:55:29 +00:00
Nicolas Dufresne
45b949fb24 v4l2object: Avoid crash on early failure
This happens while an external error lead to an early shutdown.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1991>
2022-03-18 20:55:29 +00:00
Hou Qi
c1e639bf08 v4l2videodec: set frame duration according to framerate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1989>
2022-03-18 20:13:56 +01:00
Nirbheek Chauhan
96e9e74c88 twcc: Add some logging to debug TWCC feedback
This should allow people to debug when TWCC feedback is not enabled
because they haven't set the extmap in the caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1979>
2022-03-18 10:38:31 +01:00
Nirbheek Chauhan
308af145ed twcc: Note that packet-loss-pct can count reordering as loss
This is difficult to encounter in ordinary networks, but is
encountered when using tc-netem to add random delays to packets, and
also when your UDP stream is bonded over multiple links with varying
characteristics.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1979>
2022-03-18 10:38:31 +01:00
Tim-Philipp Müller
8f2ed1bca4 Back to development 2022-03-14 16:07:23 +00:00
Tim-Philipp Müller
4bbb293eac Release 1.20.1 2022-03-14 11:33:40 +00:00
Tim-Philipp Müller
b888003273 Update ChangeLogs for 1.20.1 2022-03-14 11:33:25 +00:00
Guillaume Desmottes
fde6521664 rtpsource: fix rtp_source_get_nack_deadlines doc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1950>
2022-03-14 03:48:13 +00:00
Tim Mooney
fcfade3259 v4l2: include <sys/ioccom.h> on Illumos
Needed for _IOR/_IORW

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1947>
2022-03-14 02:19:37 +00:00
Hou Qi
61820ed0dc v4l2bufferpool: Fix race condition between qbuf and pool streamoff
There is a chance that pool->buffers[index] sets BUFFER_STATE_QUEUED, but
it has not been queued yet which makes pool->buffers[index] still NULL.
At this time, if pool_streamff release all buffers with BUFFER_STATE_QUEUED
state regardless of whether the buffer is NULL or not, it will cause segfault.

To fix this, also check buffer when streamoff release buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1948>
2022-03-14 00:57:24 +00:00
Jan Alexander Steffens (heftig)
832367c58e 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/1944>
2022-03-13 00:13:35 +00:00
Vivia Nikolaidou
7fac3c2c29 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/1943>
2022-03-12 19:56:44 +00:00
Sangchul Lee
3890ef40d8 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/1920>
2022-03-10 11:16:18 +00:00
Nirbheek Chauhan
b9574c5e6a soup: Load the runtime library, not the development library
libsoup-2.4.so / libsoup-3.0.so are symlinks installed by development
packages, they are not available at runtime.

Also eliminate G_MODULE_SUFFIX since it's not useful for us, and is
actually incorrect on macOS anyway.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1071

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1907>
2022-03-09 16:36:04 +00:00
Havard Graff
9b75fc0788 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/1890>
2022-03-08 14:27:30 +00:00
Havard Graff
c25808c3c8 rtprtx: signed/unsigned and style fixes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1888>
2022-03-08 12:39:56 +00:00
Jan Alexander Steffens (heftig)
4b41af5d65 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/1859>
2022-03-04 17:17:19 +00:00
Nirbheek Chauhan
061d3d8cf8 soup: Fix static build with MSVC
../ext/soup/gstsouploader.c(818): error C4098: '_soup_session_send_async': 'void' function returning a value

It's technically a false warning, but that's how MSVC works, so fix
it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1846>
2022-03-03 18:46:31 +00:00
Nirbheek Chauhan
a0ad4b15dd soup: Fix pkgconfig generation and documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1846>
2022-03-03 18:46:31 +00:00
Nirbheek Chauhan
299703f297 soup: Fix static build when default_library=both
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1007

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1846>
2022-03-03 18:46:31 +00:00
Nirbheek Chauhan
06e79311c5 soup: Don't error out in static build unless option is enabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1846>
2022-03-03 18:46:31 +00:00
Philippe Normand
496aa91a5e soup: Lookup libsoup dylib files on Apple platforms
Fixes #1007

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1846>
2022-03-03 18:46:31 +00:00
Sebastian Dröge
6c14e7f518 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/1833>
2022-03-02 15:44:04 +00:00
Sebastian Dröge
bae270dd26 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/1833>
2022-03-02 15:44:04 +00:00
Sebastian Fricke
35b247fbc8 Maintain build instructions at a single location
Do not maintain similar build instructions within each gst-plugins-*
subproject and the subproject/gstreamer subproject. Use the build
instructions from the mono-repository and link to them via hyperlink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1829>
2022-03-01 23:47:34 +00:00
Vivia Nikolaidou
8f31e0c42a 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/1823>
2022-03-01 15:13:15 +00:00
Vivia Nikolaidou
60160a21c6 yadif.asm: Typo fixes in comments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1823>
2022-03-01 15:13:15 +00:00
Vivia Nikolaidou
b8cbcf44d7 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/1823>
2022-03-01 15:13:15 +00:00
Joseph Donofry
d1bb24a472 osxaudiosrc: Support a device as both input and output
osxaudiodeviceprovider now probes devices more than once to determine
if the device can function as both an input AND and output device.

Previously, if the device provider detected that a device had any output
capabilities, it was treated solely as an Audio/Sink.  This causes issues
that have both input and output capabilities (for example, USB interfaces
for professional audio have both input and output channels).  Such devices
are now listed as both an Audio/Sink as well as an Audio/Source.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1809>
2022-02-28 10:45:03 +00:00
Sanchayan Maity
b3b59e3a30 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/1804>
2022-02-27 11:30:45 +00:00
Jan Alexander Steffens (heftig)
f843d3bee3 deinterlace: greedyh: Stop adding 2 to cur_field_idx
Just a simplification.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1799>
2022-02-26 18:05:53 +00:00
Jan Alexander Steffens (heftig)
53def214fa 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/1799>
2022-02-26 18:05:53 +00:00
Jan Alexander Steffens (heftig)
69a86f7121 deinterlace: greedyh: Rename _planar_plane to _plane
As well as `i` to `plane`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1799>
2022-02-26 18:05:53 +00:00
Jan Alexander Steffens (heftig)
6093ed1663 deinterlace: greedyh: Move code from _planar into _planar_plane
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1799>
2022-02-26 18:05:53 +00:00
Jan Alexander Steffens (heftig)
9f7614ebfa deinterlace: greedyh: Move _planar_plane upwards
In preparation of refactoring. No functional change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1799>
2022-02-26 18:05:53 +00:00
Nirbheek Chauhan
3a2035deb2 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/1766>
2022-02-26 17:04:13 +00:00
Matthew Waters
57b5a23600 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/1767>
2022-02-26 15:49:58 +00:00
Matthew Waters
196652970c 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/1767>
2022-02-26 15:49:58 +00:00
Matthew Waters
a90587d7d1 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/1767>
2022-02-26 15:49:58 +00:00
Rouven Czerwinski
5911ee26a5 gstv4l2tuner: return NULL if no norm set
If the video4linux device supports norms but has no norm set, norm is
returned as an uninitialized variable after the ioctl call, leading to
gst_v4l2_tuner_get_norm_by_std_id() returning a random norm from the
supported norms. Catch this case and instead return NULL to indicate
that no norm is setup.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1758>
2022-02-26 14:11:29 +00:00
Sebastian Wick
2a705f27a1 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/1753>
2022-02-20 13:43:14 +00:00
Sebastian Dröge
efd19d7d2a qtmux: Don't post an error message if pushing a sample failed with FLUSHING
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1732>
2022-02-17 10:33:36 +00:00
Marek Vasut
29d32a8f00 jpegdec: Pull row_stride from GST_VIDEO_FRAME_PLANE_STRIDE()
The libjpeg-turbo internal state might not be correctly initialized for
the first frame in a stream, pull the frame stride from gstreamer frame
metadata instead, which is correct even for the first frame, and which
makes this code consistent with the surrounding lines.

Fixes: e6d83d8f96 ("jpegdec: Support libjpeg-turbo colorspace conversion")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1716>
2022-02-16 11:09:00 +00:00
Marek Vasut
7a93616ed6 jpegdec: Call gst_jpeg_turbo_parse_ext_fmt_convert() before jpeg_start_decompress()
It is imperative that the libjpeg-turbo state is properly initialized
before jpeg_start_decompress() is called. Make sure cinfo.out_color_space
and cinfo.raw_data_out are set to their final values matching their peer
caps before calling jpeg_start_decompress().

Fixes: e6d83d8f96 ("jpegdec: Support libjpeg-turbo colorspace conversion")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1716>
2022-02-16 11:09:00 +00:00
Marek Vasut
3cc743cfc8 jpegdec: Factor out gst_jpeg_turbo_parse_ext_fmt_convert()
Pull out peer caps checking code into gst_jpeg_turbo_parse_ext_fmt_convert().
This code is used by libjpeg-turbo extras to determine whether peer is capable
of handling buffers into which libjpeg-turbo can directly decode data. This
kind of check must be performed before jpeg_start_decompress() is called in
gst_jpeg_dec_prepare_decode() as well as in gst_jpeg_dec_negotiate(), hence
the common code.

This commit does modify the code a little to make it easier to call from both
call sites without much duplication, hence the extra `if (*clrspc)` test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1716>
2022-02-16 11:09:00 +00:00
Marek Vasut
b0ad4d3aee Revert "jpegdec: only allow conversions from RGB"
This reverts commit 2aa2477208.
The commit is completely wrong, libjpeg-turbo is perfectly capable
of decoding I420 (YUV) to RGB. The test case provided alongside the
aforementioned commit passes without this revert because it decodes
image of JCS_YCrCb color space, so the new `if (clrspc == JCS_RGB)`
condition is false on that image, and the libjpeg-turbo decoding
does not get used. The real bug is hidden by that commit.

The real problem is in the call order of gst_jpeg_dec_prepare_decode()
and gst_jpeg_dec_negotiate(). The gst_jpeg_dec_prepare_decode() calls
jpeg_start_decompress() which sets up internal state of the libjpeg,
however, neither cinfo.out_color_space nor cinfo.raw_data_out are
set correctly yet. Those two are set up in gst_jpeg_dec_negotiate()
which is called a bit later. Therefore, the real fix is the set up
cinfo.out_color_space and cinfo.raw_data_out before calling
jpeg_start_decompress(). This is however a separate patch.

Fixes: 2aa2477208 ("jpegdec: only allow conversions from RGB")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1716>
2022-02-16 11:09:00 +00:00
Heiko Becker
a6d9ce54ba meson: Don't build lame plugin with -Dlame=disabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1720>
2022-02-16 03:58:02 +00:00
Bastien Nocera
bdee775ebd gtk: Fix rotation not being applied when paused
The video wouldn't be redrawn immediately when a rotation was applied
but the pipeline was paused, as no new buffers were scheduled to be
displayed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1710>
2022-02-15 12:28:28 +00:00
Bastien Nocera
30f85ca806 gtk: Add a way to queue redrawing the base GTK widget
This will be used to request a redraw of the GTK widget should the
display be changed using properties not directly handled by the base GTK
widget, but by one of its descendants.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1710>
2022-02-15 12:28:28 +00:00
Tim-Philipp Müller
eaf7e78f01 Back to development 2022-02-07 16:22:25 +00:00
Tim-Philipp Müller
f0b045a69b Release 1.20.0 2022-02-03 20:03:15 +00:00
Tim-Philipp Müller
463bafdd23 Update ChangeLogs for 1.20.0 2022-02-03 19:53:18 +00:00
Nirbheek Chauhan
67656c5eeb docs: Add objc and objcpp files to hotdoc gst_c_sources
Hotdoc should be able to extract and parse comments out of these. Just
need to be careful to only add the glob in directories that actually
contain *.m (objc) and *.mm (objcpp) files.

Also fix some doc comments and remove redundant ones.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1614>
2022-02-01 05:25:42 +05:30
Nirbheek Chauhan
f1449ac116 docs: Rename "OS X" to "macOS" in some documentation
No one uses the term "Mac OS X" anymore, it's "macOS". "OS X" is even
worse, because people will usually start the search with "mac".

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1607>
2022-01-30 19:17:18 +05:30
Nirbheek Chauhan
bc5cbc86d8 osxaudio: Document GstOsxAudioElement interface
This is listed as a public interface implemented by osxaudio, so we
need to mark it as a plugin API so that it's listed in the
documentation correctly.

This is an ancient symbol, so add it to the symbol index too.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1601>
2022-01-30 03:58:42 +05:30
Nirbheek Chauhan
d05fcadf4e applemedia: Document vtenc / vtdec elements
Also preserve-alpha property should only be exposed on the
vtenc_prores element since h264 does not support transparency.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/94

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1601>
2022-01-30 02:17:24 +05:30
Sebastian Dröge
4ae3685ac4 soup: Don't store a strong reference to the logging object
Otherwise this causes a reference cycle between the session, the logger
and the logging object (i.e. the sink element or session wrapper).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1603>
2022-01-29 16:22:48 +00:00
Sebastian Dröge
bd6e1a9f70 souphttpsrc: Always abort the session once its last user is gone
And wait until there are no pending GSources on the main context anymore
afterwards.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1603>
2022-01-29 16:22:48 +00:00
Sebastian Dröge
1db95a61c0 souphttpsrc: Post context message after setting up the context from the source's thread
This simplifies the code and especially the locking a bit, and makes
sure we only export the session after it is fully set up.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1603>
2022-01-29 16:22:48 +00:00
Tim-Philipp Müller
31b5243e1d Release 1.19.90 2022-01-28 14:28:42 +00:00
Tim-Philipp Müller
12fe353a31 Update ChangeLogs for 1.19.90 2022-01-28 14:28:28 +00:00
Sebastian Dröge
0b068c9015 souphttpsink: Protect against spurious wakeups during startup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
2022-01-28 15:47:44 +02:00
Sebastian Dröge
42f5873eeb souphttpsrc: Don't use the source element after setup from the session thread
The source element might be gone already if the session is shared with
other source elements.

As a consequence, do all logging via the session object instead of using
the source element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
2022-01-28 15:41:54 +02:00
Sebastian Dröge
080d85b19a souphttpsrc: Don't abort all pending operations on the session if shutting down a source with a shared session
Only do it for a non-shared session. Other sources would otherwise get
their requests cancelled unexpectedly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
2022-01-28 15:31:55 +02:00
Sebastian Dröge
499e0acd43 souphttpsrc: Don't set boolean to FALSE right after checking that it is FALSE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
2022-01-28 15:31:25 +02:00
Sebastian Dröge
165be69017 souphttpsrc: soup_session_new_with_options() can't fail with NULL
So don't check for it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594>
2022-01-28 15:30:56 +02: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
Daniel Kolesa
0bcefa7350 soup: move libsoup session into its own thread
Starting with libsoup3, there is no attempt to handle thread safety
inside the library, and it was never considered fully safe before
either. Therefore, move all session handling into its own thread.

The libsoup thread has its own context and main loop. When some
request is made or a response needs to be read, an idle source
is created to issue that; the gstreamer thread issuing that waits
for that to be complete. There is a per-src condition variable to
deal with that.

Since the thread/loop needs to be longer-lived than the soup
session itself, a wrapper object is provided to contain them. The
soup session only has a single reference, owned by the wrapper
object.

It is no longer possible to force an external session, since this
does not seem to be used anywhere within gstreamer and would be
tricky to implement; this is because one would not have to provide
just a session, but also the complete thread arrangement made in
the same way as the system currently does internally, in order to
be safe.

Messages are still built gstreamer-side. It is safe to do so until
the message is sent on the session. Headers are also processed on
the gstreamer side, which should likewise be safe.

All requests as well as reads on the libsoup thread are issued
asynchronously. That allows libsoup to schedule things with as
little blocking as possible, and means that concurrent access
to the session is possible, when sharing the session.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/947

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1555>
2022-01-28 08:49:09 +00:00
Tim-Philipp Müller
b8f3b44b60 gst-plugins-good: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1579>
2022-01-27 01:38:39 +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
Nirbheek Chauhan
4f7e881fcc qt: Retain compatibility with Qt 5.9
QSharedPointer.get() was added in Qt 5.11, and it does the same thing
as .data()

https://doc.qt.io/qt-5/qsharedpointer.html#get

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/867

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1565>
2022-01-25 09:51:16 +00:00
Nicolas Dufresne
ecfbd33dbe video4linux2: Sync kernel headers against 5.16.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/965>
2022-01-21 19:32:30 +00:00
Nicolas Dufresne
01857d7941 v4l2videdec: Fix race condition between drain and state changes
This is due to an unsafe usage of the pad task. We didn't ensure proper
ownership of the task. That race involved the task being released too early,
and was detected, luckily, by the glib mutex implementationt that
reported the mutex being disposed while being locked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1478>
2022-01-21 16:36:50 +00:00
Philippe Normand
0b6df00606 soup: Reintroduce compile-time libsoup dependency for static builds
On Android (especially) and for static builds in general it is safer to link
against libsoup and have the dynamic custom loading disabled. For those cases we
can safely assume the application will use either libsoup2 or libsoup3 and not
both.

Fixes #939

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536>
2022-01-21 07:23:33 +00:00
Philippe Normand
a44a1bf193 soup: Initialize debug category before use
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536>
2022-01-21 07:23:33 +00:00
Philippe Normand
d764b6c4f2 soup: Fix return types for a couple VTable functions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536>
2022-01-21 07:23:33 +00:00
Nirbheek Chauhan
23cc02d7c3 meson: Build cairo subproject when unavailable on the system
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/952

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1523>
2022-01-21 06:34:33 +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
Bastien Nocera
c63365c80f gtk: Add "video-aspect-ratio-override" property
Allow front-ends to override the pixel aspect ratio found inside the
video file itself, or most likely, missing from the video file.

This is a long-standing feature of totem.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
2022-01-12 13:27:31 +00:00
Bastien Nocera
522be6cf7c gtk: Remove _update_par() forward declaration
No functional changes.

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137/diffs#note_1102782

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
2022-01-12 13:27:31 +00:00
Bastien Nocera
6f677a8993 gtk: Mark properties as changeable in the PLAYING state
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137#note_1102789

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
2022-01-12 13:27:31 +00:00
Bastien Nocera
5dfe92a579 gtk: Fix "pixel-aspect-ratio" property range
Fix the arguments passed to gst_param_spec_fraction in the incorrect
order.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
2022-01-12 13:27:31 +00:00
Bastien Nocera
488d29eb41 gtk: Rename display pixel aspect ratio related constants
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
2022-01-12 13:27:31 +00:00
Bastien Nocera
17130de754 gtk: Make "pixel-aspect-ratio" changes immediate
Schedule a resize when the display's pixel aspect ratio has changed, if
one isn't already scheduled.

Closes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/883
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137>
2022-01-12 13:27:31 +00:00
Nirbheek Chauhan
1be6d6ccf5 meson: Add explicit check: kwarg to all run_command() calls
This is required since Meson 0.61.0, and causes a warning to be
emitted otherwise:

2c079d855e
https://github.com/mesonbuild/meson/issues/9300

This exposed a bunch of places where we had broken run_command()
calls, unnecessary run_command() calls, and places where check: true
should be used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1507>
2022-01-09 18:12:47 +05:30
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
Corentin Damman
31f4444724 rtpjitterbuffer: fix typo in tests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1466>
2021-12-23 14:31:27 +00:00
Florian Zwoch
3e680d8d5d aatv: Fixes for rain-mode
Some rain-mode properties tried to read float from int value.
Initialize rain after setting rain-mode. Rain was non-functional if
width/height were left at default values.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1459>
2021-12-20 09:28:50 +00: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
a09b8ded30 rtpbin: add new request-fec-decoder-full signal for BUNDLE
When multiple streams are bundled together, the application needs
to know about the payload type in order to instantiate the appropriate
FEC decoder.

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
Jakub Adam
6d67b43352 ximagesrc: avoid blocking wait for X events
XNextEvent() blocks indefinitely in absence of X11 events, which can
prevent the pipeline from stopping.

This can cause problems when ximagesrc is used in "remote desktop"
scenarios and the GStreamer application itself, through which the user
is viewing and controlling the machine, is the only source of input
events.

Replace the call with non-blocking XCheckTypedEvent().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1438>
2021-12-10 20:43:09 +00:00
Célestin Marot
f509578de5 multifilesrc: fix caps leak
since `gst_caps_replace()` and `gst_pad_set_caps()` both ref the caps and neither of them takes the ownership of the caps -> it must be unreffed in `gst_multi_file_src_set_property()`

to test the leak (on Unix): `echo coucou > /tmp/file.txt && GST_TRACERS=leaks GST_DEBUG="GST_TRACER:7" gst-launch-1.0 multifilesrc location=/tmp/file.txt caps='txt' ! fakesink`

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1436>
2021-12-10 18:34:57 +01:00
Guillaume Desmottes
2aa2477208 jpegdec: only allow conversions from RGB
libjpeg-turbo only supports converting from RGB to other RGB formats.
Fix runtime error when trying to convert from a YUV format for example.

Fix #916

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1421>
2021-12-06 16:52:38 +00:00
Wim Taymans
9aaef931bf v4l2: handle 0x0 sizes gracefully
Also ignore 0x0 sizes in the fallback case and assume the size can be
anything between 1x1 and MAXxMAX.

This fixes the case where a width=0, height=0 caps are created. Whith
this patch the caps will contain width=[1,MAX], height=[1,MAX].

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1396>
2021-11-29 15:35:36 +01:00
Mathieu Duponchelle
4412198c05 rtpfunnel: fix extmap handling on accept-caps
Follow-up on 97d83056b3, only check
for intersection with the current srccaps when checking if a sinkpad
can accept caps.

I must have been lucky in my firefox testing then, and always entered
the code path with audio getting negotiated first, thus not failing
the is_subset check when srccaps had been negotiated as
application/x-rtp, and an accept-caps query was made for the video
caps with a defined extmap.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1384>
2021-11-23 20:26:30 +00:00
Jean Felder
f8bc5e89fd id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASETRACKID
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1342>
2021-11-22 09:57:16 +00:00
Jean Felder
941e1b8343 id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASEGROUPID
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1342>
2021-11-22 09:57:16 +00:00
Tobias Reineke
9e2f679ae1 shout2: Add compatibility for libshout >= 2.4.2
In libshout >=2.4.2 shout_open() can return SHOUTERR_RETRY in addition
to SHOUTERR_BUSY.

The nonblocking example in libshout fixes the problem in a similar
way, as mentioned by the author in this issue:
https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2316

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/848

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1363>
2021-11-19 04:23:35 +05:30
Matthew Waters
55e04d129f qmlglsink: fix another resize case
If qt asks us to redraw before we have both set a buffer and caps we
would attempt to use the new caps with the old buffer which could result
in bad things happening.

Only update caps from new_caps once the buffer has actually been set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1346>
2021-11-17 03:08:14 +00:00
Trung Do
a87be69ce5 v4l2: Update fmt if padded height is greater than fmt height
If padded height is greater, buffer bytesused could be larger than plane length,
and cause VIDIOC_QBUF failure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1355>
2021-11-16 10:46:29 -05:00
Mathieu Duponchelle
97d83056b3 rtpfunnel: don't enforce twcc during upstream negotiation
A previous patch has caused rtpfunnel to output twcc-related
information downstream, however this leaked into upstream
negotiation (through funnel->srccaps), causing payloader to
negotiate twcc caps even when not prompted to do so by the user.

Fix this by only enforcing that upstream sends us application/x-rtp
caps as was the case originally.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1278>
2021-11-12 18:40:32 +00:00
Mathieu Duponchelle
72118b9db4 rtptwcc: complete bufferlist fix
When dealing with bufferlists, we need to store one "SentPacket"
structure per buffer, not one per buffer list!

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1278>
2021-11-12 18:40:32 +00:00
Sebastian Dröge
efb2b6d478 qtdemux: Log cslg_shift that was determined
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:04 +00:00
Sebastian Dröge
12e918428a qtdemux: Use a composition time offset of 0 for "no decode samples" for the time being
This needs codec-specific handling, but using 0 instead of G_MININT32 at
least gives somewhat reasonable behaviour.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/883

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
ad412d257b qtdemux: Always check ctts for unreasonably large offsets
If this happens then ignore the whole ctts. Previously we only did this
if the PTS/DTS shift was determined from the ctts instead of the cslg.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
93a10a4ba1 qtdemux: Dump composition time offsets in trun as signed integers
Just like we do for ctts without regard of the version of the box.
Huge offsets are interpreted as negative offsets by qtdemux so this
works.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
a6f3391c81 qtdemux: Add a comment why only positive cslg shifts are considered
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
a33e30cfc4 qtdemux: Only adjust segment.stop by cslg_shift if stop is not -1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
bb5a5ae8a8 qtdemux: Handle negative composition offsets in the trun box the same way as for non-fragmented streams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
767e8bf668 qtdemux: Parse ctts version
Negative composition time offsets are only allowed with version 1 of the
box, however we parse it as a signed value also for version 0 boxes as
unfortunately there are such files out there and it's unlikely to have
(valid) huge composition offsets.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
284dd5443f qtdemux: Add support for version 1 cslg boxes
They use 64 bit fields instead of 32 bit.

Also parse offset as a signed integer (in both versions) and clamp it to
a positive value as negative values don't really interest us here.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Sebastian Dröge
7f105a919a qtdemux: Don't free cslg data that we don't own on corrupt files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1294>
2021-11-12 17:51:03 +00:00
Rafał Dzięgiel
41385ab6f7 matroska: Ref index table when updating track info
Track index table array was being lost during track info update.
Ref it over to updated info, so it can be used for finding
nearest seek points.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1203>
2021-11-12 12:28:40 +00:00
Rafał Dzięgiel
478f94edc7 matroska: Use g_array_unref everywhere
Instead of using g_array_free which is not thread safe use g_array_unref instead

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1203>
2021-11-12 12:28:40 +00:00