Commit graph

2615 commits

Author SHA1 Message Date
Nirbheek Chauhan 48e097c315 gst-docs: Fix typo in hotdoc kwarg
The hotdoc module passes unknown keyword arguments as arguments to
hotdoc, and the fatal warnings argument is --fatal-warnings.

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2972#note_1586361

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3178>
2022-10-14 16:04:00 +00:00
Devin Anderson 31b244271e wavparse: Avoid occasional crash due to referencing freed buffer.
We've seen occasional crashes in the `wavparse` module associated with
referencing a buffer in `gst_wavparse_chain` that's already been freed.  The
reference is stolen when the buffer is transferred to the adapter with
`gst_adapter_push` and, IIUC, assuming the source doesn't hold a reference to
the buffer, the buffer could be freed during interaction with the adapter in
`gst_wavparse_stream_headers`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3179>
2022-10-14 07:54:03 +00:00
Edward Hervey ae8a5e110c rtsp-client: Remove duplicate documentation
Confuses the documentation builder, since it's documented twice it complains
about a missing "Since:" marker whereas it's present in the documentation
comment further down

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3180>
2022-10-14 08:54:17 +02:00
Julian Bouzas 9197235539 riff: Mark jpeg as parsed
This is needed so that autoplugging works with avidemux and JPEG decoders that
need parsed sink caps (eg rockchip 'mppjpegdec' decoder). It also works fine
with 'jpegdec' decoder regardless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3175>
2022-10-13 13:53:29 -04:00
Devin Anderson 4e03c5f885 wavparse: Fix crash that occurs in push mode when header chunks are corrupted
in certain ways.

In the case that a test is provided for, the size of the `fmt ` chunk is
changed from 16 bytes to 18 bytes (bytes 17 - 20 below):
```
$ hexdump -C corruptheadertestsrc.wav
00000000  52 49 46 46 e4 fd 00 00  57 41 56 45 66 6d 74 20  |RIFF....WAVEfmt |
00000010  12 00 00 00 01 00 01 00  80 3e 00 00 00 7d 00 00  |.........>...}..|
00000020  02 00 10 00 64 61 74 61                           |....data|
00000028
```

(Note that the original file is much larger.  This was the smallest sub-file
I could find that would generate the crash.)

Note that, while the same issue doesn't cause a crash in pull mode, there's a
different issue in that the file is processed successfully as if it was a .wav
file with zero samples.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3173>
2022-10-13 08:56:49 +00:00
He Junyan 11436be268 vp9parse: The show_existing_frame buffer should not be decode only.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3155>
2022-10-13 06:41:06 +00:00
He Junyan eac9c33cc1 vp9parse: Correct the pts for frames inside a super frame.
When the alignment is "FRAME" and the parse is likely connecting to
a decoder, the current PTS setting for VP9 frames inside a super
frame is not very correct.

For example, the super frame may begin with non-displayed frames and
end with a displayed frame. The current way will assign the PTS to
the first non-displayed frame, which is a decode-only frame and the
PTS will be discarded in the video decoder. While the last displayed
frame has invalid PTS, and so the video decoder needs to guess its
PTS based on the frame rate and previous frame's PTS. This is not a
decent and robust way. And more important, when the previous frames
provide DTS, the video decoder will also guess the PTS based on the
previous frames' DTS and trigger the warning like:

  gstvideodecoder.c:3147:gst_video_decoder_prepare_finish_frame: \
  <vavp9dec0> decreasing timestame

It sets the reordered_output and makes the decoder in free run mode.

We should correct the PTS for a super frame, let the non-displayed
frames have no PTS while set the correct PTS to the displayed one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3155>
2022-10-13 06:41:06 +00:00
Piotr Brzeziński 1e70525bc9 avfvideosrc: Allow specifying crop coordinates during screen capture
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3153>
2022-10-12 21:19:31 +00:00
Linus Svensson f5451f7ff2 rtsp-server: Free client if no connection could be created
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3164>
2022-10-12 11:09:41 +00:00
Edward Hervey 3215136d67 mxfdemux: Add support for Canon XF-HEVC
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1495

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3163>
2022-10-12 09:15:57 +00:00
Edward Hervey 9ca306d22c mxfdemux: Don't leak index table segments on failures
The segment was freed ... but not the contents :)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3163>
2022-10-12 09:15:57 +00:00
Peter Stensson 11982bcaba rtsp-server: Add since marker for adjust_error_code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3157>
2022-10-12 08:08:27 +00:00
Xavier Claessens 9ebc3f2316 meson: Update libsoup.wrap
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3162>
2022-10-11 14:53:40 -04:00
Thibault Saunier e99393520e videorate: Do not close segment when getting a same segment twice
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3059>
2022-10-11 11:48:09 -03:00
Thibault Saunier 11b83fb2fc videorate: Handle closing segment on EOS right after caps event
The scenario is what we try in the tests:
- we have a segment with .stop set
- some frame(s) flow
- we get a CAPS event
- we get an EOS (before getting buffers after the CAPS event)

in that case, without that patch, the segment is not properly closed
which is not correct. In this patch we keep track of previous caps until
a new buffer arrives, this way in that situation we set previous caps
again, and close the segment with the previous buffer.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1352
in this specific case

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3059>
2022-10-11 11:48:09 -03:00
Thibault Saunier 55dd7ff4b4 validate: Plug some leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3059>
2022-10-11 11:48:09 -03:00
Edward Hervey c37182b6b9 oss4: Fix debug category initialization
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1456

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3158>
2022-10-11 13:02:54 +00:00
Sebastian Dröge 430ec0d860 webrtc: Move GST_WEBRTC_ERROR_TYPE_ERROR at the end of the enum to keep ABI compatibility
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3154>
2022-10-11 11:24:19 +00:00
Sangchul Lee 0f4cf19fb9 tests/webrtc: Add test for 'add-turn-server' action signal
It just checks return value of the action signal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3131>
2022-10-11 10:23:00 +00:00
Johan Sternerup 44eea7bd8a sctpenc: Prohibit sending of interleaved message parts
Apparently we cannot start sending messages from another datachannel
before the previous message was completely sent. usrsctplib will
complain about being locked on another stream id and set
errno=EINVAL.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2454>
2022-10-11 09:36:13 +00:00
Nicolas Dufresne 82f63b0d64 opengl: Fix usage of eglCreate/DestroyImage
The implementation was inconsistent between create and destroy. EGLImage
creation and destruction is requires for EGL 1.5 and up, while
otherwise the KHR version is only available if EGL_KHR_image_base
feature is set. Not doing these check may lead to getting a function
pointer to a stub, which is notably the case when using apitrace.

Fixes #1389

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2925>
2022-10-11 08:23:45 +00:00
Peter Stensson ec605e7b52 rtsp-server: Add support for adjusting request response on pipeline errors
The idea is to give the application the possibility to adjust the error
code when responding to a request. For that purpose the pipeline's bus
messages are emitted to subscribers through a signal handle-message.
The subscribers can then check those messages for errors and adjust
the response error code by overriding the virtual method
adjust_error_code().

Fixes #1294

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2972>
2022-10-11 07:42:28 +02:00
Mathieu Duponchelle cddb0e951f splitmuxsrc: don't queue data on unlinked pads
Once a pad has returned NOT_LINKED, the part reader shouldn't let its
corresponding data queue run full and eventually (after 20 seconds)
stall playback.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3145>
2022-10-10 18:11:12 +00:00
Sebastian Dröge bd5a4d321b rtpsource: Don't do probation for RTX sources
Disable probation for RTX sources as packets will arrive very
irregularly and waiting for a second packet usually exceeds the deadline
of the retransmission.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3112>
2022-10-10 14:56:18 +00:00
Sebastian Dröge 5568cb33f7 rtp: examples: client-rtpaux: Provide correct caps by payload type and RTX pt map by session
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3112>
2022-10-10 14:56:18 +00:00
George Kiagiadakis 8dd512fd9f tests/check/rtpsession: extend test_internal_sources_timeout
to verify that rtx SSRCs do not BYE after timeout

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/360

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3112>
2022-10-10 14:56:18 +00:00
Sebastian Dröge 72b6dabd32 rtpsession: Remember the corresponding media SSRC for RTX sources
This allows timing out the RTX source and sending BYE for it when the
actual media source belonging to it is timed out.

This change only applies to sending sources from this session.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3112>
2022-10-10 14:56:17 +00:00
Sebastian Dröge d5c072fadd rtpsource: Rename rtp_source_update_caps to rtp_source_update_send_caps
To make it clear that this is only used for sending RTP sources.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3112>
2022-10-10 14:56:17 +00:00
Sebastian Dröge 97a47341a7 rtpsession: Rename gst_rtp_session_sink_setcaps to gst_rtp_session_setcaps_recv_rtp
to make it clearer that this is for setting receiver caps and to make it
more consistent with gst_rtp_session_setcaps_send_rtp.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3112>
2022-10-10 14:56:17 +00:00
Aleksandr Slobodeniuk 89fc20931b decodebin3: allow to call "dispose" multiple times
https://docs.gtk.org/gobject/concepts.html#reference-counts-and-cycles

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3135>
2022-10-10 10:24:52 +00:00
Wojciech Kapsa b618ff3369 decklink: reset calculation of gst_decklink_video_src_update_time_mapping on no_signal. When the HDMI cable was disconnected for a long time, the calculation took too much time. SDI cable works fine.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3132>
2022-10-10 08:13:30 +00:00
Guillaume Desmottes 2df2dfce55 aggregator: fix input buffering
We need to be able to buffer at least the aggregator latency +
upstream latency, which is the value used to compute the aggregator
deadline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3138>
2022-10-07 16:27:51 +02:00
Xavier Claessens 56eb44c502 Meson: Fix libxml2 fallback
The variable xml2lib_dep does not exist. The correct name is already in
the wrap file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3136>
2022-10-07 07:56:21 -04:00
Sebastian Dröge bacd92274d rtspsrc: Retry SETUP with non-compliant URL resolution on "Bad Request" and "Not found"
Various RTSP servers/cameras assume base and control URL to be simply
appended instead of being resolved according to the relative URL
resolution algorithm as mandated by the RTSP specification.

To work around this, try using such a non-compliant control URL if the
server didn't like the URL used in the first SETUP request.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3127>
2022-10-07 09:12:00 +00:00
Sangchul Lee 93b896eb4e webrtcbin: Fix pointer dereference before null check
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3129>
2022-10-06 16:46:33 +00:00
Wojciech Kapsa 505f48f237 decklink: Add new persistent-id property and sort devices by persistent ID
The order of the devices iterator from the SDK is undefined and can
randomly change.

Keep the device-number property for backwards compatibility and
simplicity but prefer the persistent-id property and also use it for the
device provider implementation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3078>
2022-10-06 15:50:11 +00:00
Aleksandr Slobodeniuk 67caa45a4c decodebin3: fix mutex leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3126>
2022-10-06 14:25:27 +00:00
Thibault Saunier bf964f896f transcodebin: Implement support for upstream stream selection
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3128>
2022-10-06 09:14:41 -03:00
Thibault Saunier 31acfcd875 decodebin3: Do not try to plug a decoder on raw formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3123>
2022-10-06 08:41:49 +00:00
Seungha Yang c9f12b5086 videosink: Don't return unknown end-time from get_times()
... in case of reverse playback. Otherwise basesink will not
wait for clock

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3121>
2022-10-06 06:36:42 +00:00
Mathieu Duponchelle 235be306fd avauddec: address regression with WMA files ..
By outputting lead-in samples that FFmpeg now would like us to ignore,
and discarding trailing samples that it would now like us to output.

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

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1348
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3117>
2022-10-06 01:03:10 +00:00
Thibault Saunier 9abceda343 validate:launcher: Cleanup test uuid when copying it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Thibault Saunier f3c162cc85 validate: launcher: Add a argument to avoid rereuning flaky tests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Thibault Saunier 1577911d75 validate: launcher: Keep variable framerate from input when possible
But disable it if forcing a framerate for some reason

Fixing our support for variable framerate in the encoding profile
serialization format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Thibault Saunier fbddaffc62 validate: launcher: Fix some pep8 issues
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Thibault Saunier f9e6044124 validate: Handle testfiles that need an HTTP server
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Thibault Saunier a642b17c97 validate:ssim: Show original/nok/diff images on error images
This way the user can easily see how off the image is very easily

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Thibault Saunier ab64771ba8 validate:scenario: Fix setting iterating variable from arrays
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3122>
2022-10-05 20:29:22 +00:00
Nirbheek Chauhan a5ef7cb041 d3d11: Fix debug build on UWP
GstDXGIGetDebugInterface() is unused when targeting UWP. We directly
call DXGIGetDebugInterface1() in that case.

Fixes build failure:

../gst-libs/gst/d3d11/gstd3d11device.cpp(271): error C2440: '=': cannot convert from 'HRESULT (__cdecl *)(UINT,const IID &,void **)' to 'DXGIGetDebugInterface_t'
../gst-libs/gst/d3d11/gstd3d11device.cpp(271): note: This conversion requires a reinterpret_cast, a C-style cast or function-style cast

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3118>
2022-10-05 18:29:01 +00:00
Sangchul Lee 94c2cd9ddd webrtc/nice: Make sure to return NULL when validating turn server fails
It affects 'add-turn-server' signal action and 'turn-server' property
of webrtcbin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3120>
2022-10-05 16:35:00 +00:00
Johan Sternerup 212c09a70e webrtc: return error when sending on non-open datachannel
According to W3C
specification (https://w3c.github.io/webrtc-pc/#datachannel-send) we
should return InvalidStateError exception when trying to send when the
channel is not open. In the world of C/glib/gstreamer we don't have
exceptions but have to rely on gboolean/GError instead. Introducing
these calls for a change in function signature of the action signals
used to send data on the datachannel. Changing the signature of the
existing "send-string" and "send-data" signals would mean an immediate
breaking change so instead we deprecate them. Furthermore, there is no
way to express GError** as an argument to an action signal in a way
that fits language bindings (pointer-to-pointer simply does not work)
and we have to use regular functions instead.

Therefore we introduce gst_webrtc_data_channel_send_data_full() and
gst_webrtc_data_channel_send_string_full() while deprecating the old
functions and corresponding signals.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1958>
2022-10-05 11:08:30 +00:00
Haihao Xiang 8f5399b156 eglimage: fix Y412_LE DMABuf import support
This fixed the error below:

GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp !
"video/x-raw(memory:DMABuf),format=Y412_LE" ! glimagesink

0:00:00.063737691 576978 0x557c11266920 ERROR             gleglimage
gsteglimage.c:577:_drm_rgba_fourcc_from_info: Unsupported format for
DMABuf.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389>
2022-10-05 04:21:03 +00:00
Haihao Xiang fbbf44c48c eglimage: add Y410 DMABuf import support
This fixed the error below:

GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp ! \
"video/x-raw(memory:DMABuf),format=Y410" ! glimagesink

0:00:00.040553883 576732 0x55be9b35f920 ERROR             gleglimage
gsteglimage.c:577:_drm_rgba_fourcc_from_info: Unsupported format for
DMABuf.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389>
2022-10-05 04:21:03 +00:00
Haihao Xiang 2d1496bc70 eglimage: add Y212_LE / Y212_BE DMABuf import support
This fixed the error below:

GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp \
! "video/x-raw(memory:DMABuf),format=Y212_LE" ! glimagesink

0:00:00.148086281 575148 0x562a6d36d920 ERROR             gleglimage
gsteglimage.c:555:_drm_rgba_fourcc_from_info: Unsupported format for
DMABuf.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389>
2022-10-05 04:21:03 +00:00
Haihao Xiang 18215dcd3b eglimage: add Y210 DMABuf import support
This fixed the error below:

GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! msdkvpp ! \
"video/x-raw(memory:DMABuf),format=Y210" ! glimagesink

0:00:00.039881627 571365 0x56245eba6920 ERROR             gleglimage
gsteglimage.c:549:_drm_rgba_fourcc_from_info: Unsupported format for
DMABuf

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1389>
2022-10-05 04:21:03 +00:00
Jan Schmidt 92efecd1fe gstbin: Use g_queue_clear_full()
Use g_queue_clear_full() to release the child list
instead of iterating over the list twice.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3101>
2022-10-04 11:19:14 +00:00
Jan Schmidt 8f91f1efe4 gstbin: Fix a potential leak in gst_bin_do_deep_add_remove()
If a child element of a bin is unparented while
gst_bin_do_deep_add_remove() is iterating the children,
don't leak a ref to it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3101>
2022-10-04 11:19:14 +00:00
Jan Schmidt b7b4d93452 gstiterator: Don't use gst_object_unref() for a GObject
The owner of a GstIterator is a plain GObject. Don't unref it
with gst_object_unref(), or it will be logged in tracer
info incorrectly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3101>
2022-10-04 11:19:14 +00:00
Stéphane Cerveau fb09c028e3 h265parse: fix typo in member of GstH265SPS
Rename sps_extnsion_params to sps_extension_params

Fix comment about vui_parameters_present_flag

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3072>
2022-10-04 10:01:12 +00:00
Tim-Philipp Müller 99bbb1ef35 Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3115>
2022-10-04 03:57:31 +01:00
Tim-Philipp Müller 9820e58be6 Release 1.21.1 2022-10-04 01:18:20 +01:00
Tim-Philipp Müller c376d80e9b Update ChangeLogs for 1.21.1 2022-10-04 01:13:59 +01:00
Jan Schmidt e36440e7bb playsink: Hold a reference to the soft volume element
Always hold a reference to the soft volume element
provided by the playsinkaudioconvert bin helper, the
same as when volume is provided by a sink element,
or the soft volume element gets unreffed too soon.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3108>
2022-10-03 18:56:41 +00:00
Jan Schmidt eef76a9491 xvimagesink: Don't leak XvShmImage
If allocating an XvShmImage generates an X error, but
still returns some allocated memory, make sure to free it
so it doesn't leak.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3100>
2022-10-03 17:30:51 +00:00
Jan Schmidt 6b7d4f74f2 xvimagesink: Zero initialize mask array
Clear the stack array before setting bits to pass to
XISelectEvents(). Fixes spurious crash from an X error:

X Error of failed request:  BadValue (integer parameter out of range for operation)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3100>
2022-10-03 17:30:51 +00:00
Jan Schmidt c8cf714d37 xvimagesink: Don't leak temporary
Use a stack variable instead of a temporarily
malloced variable that wasn't being freed
properly. Fixes a small leak of a GstXvTouchDevice

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3100>
2022-10-03 17:30:51 +00:00
Jan Schmidt aae7b5416c decodebin3: Make sure event is writable before modifying
Make sure we're operating on a private copy of an event when
modifying it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3107>
2022-10-03 16:40:49 +00:00
Jan Schmidt bf6d30ed79 urisourcebin: Make sure event is writable before modifying.
Make sure we're operating on a private copy of an event before
modifying it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3107>
2022-10-03 16:40:49 +00:00
Jan Schmidt e5828c8295 decodebin3: Don't lose a ref on EOS event
Make sure not to give away the ref on the final EOS
event for which the probe handler is returning GST_PAD_PROBE_REMOVE
when pushing the event manually.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3107>
2022-10-03 16:40:49 +00:00
Edward Hervey f08bdf1c4a queue2: Hold the lock when modifying sinkresult
As it's done elsewhere. Avoids a potential race of the field being modified in
the meantime.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3110>
2022-10-03 15:18:09 +00:00
Edward Hervey f2a1769236 qtdemux: Don't stop task when resetting
This is a regression that was introduced in
cca2f555d1 (yes, 9 years ago).

The only place where a demuxer streaming thread should be stopped is when the
sinkpad is deactivated from pull mode (i.e. PAUSED->READY).

Attempting to stop the task in this function would cause this to happen when a
FLUSH_STOP or STREAM_START event is received... which can cause deadlocks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3109>
2022-10-03 14:41:18 +02:00
Tim-Philipp Müller 237b063843 avauddec: fix unnecessary reconfiguration if the audio layout isn't specified
It would constantly want to renegotiate (and spam the debug log) even
though the channel layout hasn't actually changed. We use the same
fallback in gst_ffmpegauddec_negotiate() already.

This happens with WMA files for example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3103>
2022-10-01 09:28:40 +00:00
Mathieu Duponchelle f8d8d67b8b splitmuxsrc: don't consider unlinked pads when deactivating part
If splitmuxsrc exposes multiple pads, but only one is linked, part pads
will never see an EOS event. This shouldn't prevent the part from being
eventually deactivated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3099>
2022-10-01 02:33:08 +00:00
Tim-Philipp Müller 4c8a621809 pbutils: descriptions: add meta/x-klv
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3094>
2022-09-30 11:08:45 +03:00
Tim-Philipp Müller 2d53f9f97c pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags()
And add a little unit test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3094>
2022-09-30 11:08:45 +03:00
James Cowgill 4edfc86c2a xmptag: Call gst_tag_register_musicbrainz_tags during init
We need to call this to register the MusixBrainz tags before we use
them in an XMP schema.

Fixes this critical when attempting to run jpegparse on a JPEG
containing MusicBrainz XMP tags:

  GStreamer-CRITICAL **: 20:41:07.885: gst_tag_get_type: assertion 'info != NULL' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3092>
2022-09-29 23:29:20 +00:00
Sebastian Dröge d2c13f0c26 test-effect-switch: Fix some memory leaks and make effect element ownership clearer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3091>
2022-09-29 22:34:37 +00:00
Sebastian Dröge a2d121cf9a gaussblur: Fix memory leak when setting caps multiple times
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3091>
2022-09-29 22:34:37 +00:00
Christopher Obbard 0c83ddcdf7 v4l2codecs: Warn user when no media devices are found
Currently if the user is not able to access the devices under /dev/media*,
either due to no media devices present on the system or simply no permission
to access the device, v4l2codecs initialises with no features or debug messages.

Since calling `GST_DEBUG="v4l2*:7" gst-inspect-1.0 v4l2codecs` is a typical way
to diagnose why element(s) failed to enumerate, we should be more verbose here
when the user is not able to access any /dev/media* device. So print a simple
debug message in this case to aid debugging.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3088>
2022-09-29 19:12:14 +00:00
Philipp Zabel 3b900e1fa4 buffer: drop parent meta in deep copy/foreach_metadata
The purpose of a deep buffer copy is to be able to release the source
buffer and all its dependencies. Attaching the parent buffer meta to
the newly created deep copy needlessly keeps holding a reference to the
parent buffer.

The issue this solves is the fact you need to allocate more
buffers, as you have free buffers being held for no reason. In the good
cases it will use more memory, in the bad case it will stall your
pipeline (since codecs often need a minimum number of buffers to
actually work).

Fixes #283

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2928>
2022-09-28 12:34:44 -06:00
Mart Raudsepp 8a2edc6581 tsdemux: Don't trigger a program change when falling back to ignore-pcr behaviour
Since commit a79a756b79 we could change to ignore-pcr automatically at 500ms
into a live stream when no PCR is seen by then. However the stream counting in
program change detection was wrongly considering ignore-pcr programs to have a
separate PCR PID, even though we are actually ignoring the PCR PID completely,
resulting in an erroneous program switch getting triggered from the different
stream count. This in turn would send an EOS and switch out the pads for what
actually is still the same program, while we intended to simply apply a
workaround for broken encoders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3060>
2022-09-28 07:18:45 +00:00
Aleix Conchillo Flaqué 453b0cec82 gst-docs: update macOS new project instructions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3074>
2022-09-28 06:36:05 +00:00
Nirbheek Chauhan 6a3319c8f2 examples: Support multiple video streams in JS webrtc sendrecv
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3079>
2022-09-27 19:48:56 +00:00
Nirbheek Chauhan 0aa9d8ade6 rtspsrc: Fix usage of IPv6 connections in SETUP
If the SETUP request returns an IPv6 server address in the Transport
field, we would generate an incorrect URI, and multiudpsink would fail
to initialize:

```
     rtspsrc gstrtspsrc.c:9780:dump_key_value:<source>    key: 'Transport', value: 'RTP/AVP;unicast;source=fe80::dc27:25ff:fe5e:bd13:8080;client_port=62696-62697;server_port=4000-4001'
...
     rtspsrc gstrtspsrc.c:4595:gst_rtspsrc_stream_configure_udp_sinks:<source> configure RTP UDP sink for fe80::dc27:25ff:fe5e:bd13:8080:4000
...
multiudpsink gstmultiudpsink.c:1229:gst_multiudpsink_configure_client:<udpsink0> error: Invalid address family (got 23)
```

We can't look at stream->is_ipv6 because we can't rely on the server
returning the right value there. In the issue reported about this,
server reported itself as `KuP RTSP Server/0.1`, and the SDP was:

```
c=IN IP4
m=video 54608 RTP/AVP 96
a=rtpmap:96 H264/90000
```

So we need to parse the string value and figure out the family
ourselves.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1819>
2022-09-27 18:59:59 +00:00
Nirbheek Chauhan f8d56e5df6 meson: Remove builtin variable datadir from pkgconfig variables
Fixes warning with meson 0.62:

gst-plugins-bad| subprojects/gst-plugins-bad/meson.build:546: WARNING:
Project targets '>= 0.62' but uses feature deprecated since '0.62.0':
pkgconfig.generate variable for builtin directories. They will be
automatically included when referenced

and more.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3086>
2022-09-27 17:13:29 +00:00
Edward Hervey c22ddbc187 decodebin3: Fix memory issues with active selection list
This had a couple of issues:
* The backing strings (from GstStream) could disappear
* The actual list wasn't properly reset/freed when decodebin3 was re-used

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3083>
2022-09-27 16:21:25 +02:00
Tim-Philipp Müller 02a8f9973b qtdemux: guard against timestamp calculation overflow in gap event loop
Could possibly cause an endless loop.

Fixes #1400.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3084>
2022-09-27 13:07:15 +00:00
Jan Schmidt 3c2c4bbe2c dashdemux2: fix mpd unit test expectations
Update unit test for some mpd cases that were reporting
timestamps including the period start time, while
dashdemux2 expects that it needs to add the period
start time itself.

Fix the tests to not expect the period start time
to be included.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3025>
2022-09-27 00:00:49 +00:00
Junsoo Park 699f2ebb45 dashdemux2: Set timestamp relative to period start
These values will be referred to as timestamp relative to period start
so need to subtract period start time from the values.

Fixes a problem with determining the start position when playing Live content
with SegmentTimeline, presentationTimeOffset and a non-0 period start time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3025>
2022-09-27 00:00:49 +00:00
Sebastian Dröge 498ad133ba gsturi: When setting the same string again do nothing
Otherwise code like gst_uri_set_host(uri, gst_uri_get_host(uri)) would
first free the string, then create a copy of the freed string and then
assigned that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3076>
2022-09-26 14:17:18 +03:00
Xavier Claessens edef6b1149 Update all wraps from WrapDB
Update all wraps available in WrapDB. This is simply running the
command "meson wrap update --force" with that Meson PR:
https://github.com/mesonbuild/meson/pull/10357.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3042>
2022-09-23 11:08:06 -04:00
Jakub Adam cccc7a12e1 vp9: check if libvpx supports high bit depth
Detect at runtime if libvpx is compiled with --enable-vp9-highbitdepth
and enable 10bit video formats in element caps accordingly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3067>
2022-09-23 13:55:12 +02:00
Nirbheek Chauhan 6caa8524dd meson: Add a new option to control the source for orc
Previously we were unconditionally cloning the orc subproject because
we want the developer environment to use the latest orc. However, some
people want to use the system orc instead, or want to auto-detect
which to use, with the system orc getting preference. This requires
adding a new option to select that. See discussion at:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2556

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3062>
2022-09-22 22:31:21 +00:00
Edward Hervey b2701418d7 basetransform: Avoid useless codepath
If QoS is disabled, skip the whole computation (avoids calculating values which
won't be needed)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3034>
2022-09-22 13:45:50 +00:00
Nirbheek Chauhan 3890e49772 bad/soundtouch: Fix interactive test build on MSVC
Needed for https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/930

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3064>
2022-09-22 07:20:45 +00:00
Nirbheek Chauhan a0e6278dba meson: Use implicit builtin dirs in pkgconfig generation
Starting with Meson 0.62, meson automatically populates the variables
list in the pkgconfig file if you reference builtin directories in the
pkgconfig file (whether via a custom pkgconfig variable or elsewhere).
We need this, because ${prefix}/libexec is a hard-coded value which is
incorrect on, for example, Debian.

Bump requirement to 0.62, and remove version compares that retained
support for older Meson versions.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3061>
2022-09-21 21:08:11 +05:30
Seungha Yang a9144f5313 adaptivedemux2: Always wake up loop thread on unpause
Otherwise loop thread will sleep forever because
GstAdaptiveDemuxLoop.paused flag update is not signalled
when loop was marked as stopped already from other thread.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3057>
2022-09-21 09:26:22 +00:00
Jan Schmidt a03f3df626 adaptivedemux2: Rework input download wakeups
Change the way streams are woken up to download more data.

Instead of checking the level on tracks that are being
output as data is dequeued, calculate a 'wakeup time'
at which it should download more data, and wake up
the stream when the global output position crosses
that threshold.

For efficiency, compute the earliest wakeup time
for all streams and store it on the period, so the
output loop can quickly check only a single value
to decide if something needs waking up.

Does the same buffering as the previous method,
but ensures that as we approach the end of
one period, the next period continues incrementally
downloading data so that it is fully buffered when
the period starts.

Fixes issues with multi-period VOD content where
download of the second period resumes only after
the first period is completely drained.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3055>
2022-09-20 19:48:17 +00:00
Víctor Manuel Jáquez Leal f9371ccc38 vabaseenc: Move out encoder validation from assertion.
Assertion can be disabled at compilation time. Still it's important to
validate it the encoder object was opened by the subclass. This patch
removes the assertion and returns if the encoder is open.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3051>
2022-09-20 18:59:18 +00:00
Thibault Saunier 7c26630651 validate:scenario: Make appsrc-push push a sample
Allowing setting a segment to the sample

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3052>
2022-09-20 17:14:36 +00:00