=== release 1.22.0 === 2023-01-23 19:29:34 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.22.0 2023-01-23 16:27:56 +0000 Tim-Philipp Müller <tim@centricular.com> * po/hr.po: * po/ro.po: * po/zh_CN.po: gst-plugins-good: update translations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773> 2023-01-17 17:51:16 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: * gst/matroska/matroska-demux.c: * gst/matroska/matroska-mux.c: * gst/matroska/webm-mux.c: matroska: Add `stream-format = (string) obu-stream` to AV1 caps Anything else is not allowed in Matroska/WebM. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3740> 2023-01-17 17:50:27 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: * gst/isomp4/gstqtmuxmap.c: * gst/isomp4/qtdemux.c: isomp4: Add `stream-format = (string) obu-stream` to AV1 caps Anything else is not allowed in MP4. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3740> 2023-01-17 15:04:10 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/isomp4/fourcc.h: * gst/isomp4/qtdemux.c: * gst/isomp4/qtdemux_types.c: qtdemux: Add basic support for AVC-Intra video AVC-Intra is a range of H.264-compliant intra-only codecs from Panasonic. The codes and descriptions have been taken from VLC. The (encumbered) sample I have here produces byte-stream H.264, including SPS and PPS and no `avcC` box. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3739> === release 1.21.90 === 2023-01-13 19:08:48 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.21.90 2023-01-12 14:32:30 -0500 Olivier Crête <olivier.crete@ocrete.ca> * gst/rtp/gstrtpopuspay.c: rtopuspay: Use GstStaticCaps to cache parsed caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674> 2023-01-12 14:25:52 -0500 Olivier Crête <olivier.crete@ocrete.ca> * gst/rtp/gstrtpopuspay.c: * tests/check/elements/rtpopus.c: rtopuspay: Ignore the stereo parameter in multiopus caps Also add unit tests for the various variants Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674> 2023-01-03 18:55:24 -0500 Olivier Crête <olivier.crete@collabora.com> * gst/rtp/gstrtpopuspay.c: rtpopuspay: Leave original caps as-is This should make it work if someone specifies stereo with MULTIOPUS somehow. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674> 2023-01-03 18:06:56 -0500 Olivier Crête <olivier.crete@collabora.com> * gst/rtp/gstrtpopuspay.c: rtpopuspay: Return upstream channel filter based on OPUS vs MULTICAPS Only allow 1 or 2 channels if the caps are OPUS, or 3+ if they are MULTIOPUS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674> 2023-01-03 17:44:37 -0500 Olivier Crête <olivier.crete@collabora.com> * docs/gst_plugins_cache.json: * gst/rtp/gstrtpopusdepay.c: * gst/rtp/gstrtpopuspay.c: rtpopus: Put MULTIOPUS in all caps The RTP payload encoding-name are always in caps in GStreamer. In SDP, they are not case-sensitive, but since caps are, we need to pick a caps, and we picked upper-case along time ago. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674> 2023-01-11 15:41:09 +0000 Tim-Philipp Müller <tim@centricular.com> * po/LINGUAS: * po/af.po: * po/az.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/ka.po: * po/ky.po: * po/lt.po: * po/lv.po: * po/mt.po: * po/nb.po: * po/nl.po: * po/or.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_HK.po: * po/zh_TW.po: gst-plugins-good: update translations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711> 2023-01-11 14:53:39 +0000 Tim-Philipp Müller <tim@centricular.com> * scripts/dist-translations.py: * scripts/meson.build: Fix translation pot files when creating dist tarballs Add version as per Translation Project requirements and also add a .pot file without the ABI suffix. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711> 2023-01-07 20:03:31 +0100 Marek Vasut <marex@denx.de> * ext/jpeg/gstjpegdec.c: jpegdec: Disable libjpeg-turbo SIMD acceleration support for now The libjpeg-turbo SIMD acceleration support suffers from multiple unresolved cornercases. Disable the libjpeg-turbo for now until those cornercases are resolved. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3694> 2022-08-07 14:23:04 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux: Consider starting stream time in presentation offset When calculating the presentation offset for CMAF input in live playback, subtract the stream_time of the fragment from the calculated presentation offset, so that the first fragment is played at running time zero. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3680> 2022-12-22 21:23:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/qt/meson.build: * ext/qt6/meson.build: * meson_options.txt: meson: Add an option to select the method for finding Qt This is needed by Cerbero, since we want to force the use of qmake to find Qt on non-Linux platforms. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3628> 2022-12-26 23:00:18 +0900 Seungha Yang <seungha@centricular.com> * ext/gtk/gstgtkbasesink.c: gtkbasesink: Fix widget leak gst_gtk_base_sink_get_widget() will increase refcount and it should be released after use Fixing regression introduced by the commit 941c0e81ddf5c0ad6a9fac59b1d6bf7723025434 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3644> 2022-12-27 23:33:31 +0900 Seungha Yang <seungha@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Fix string leak Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3645> 2022-12-27 23:26:48 +0900 Seungha Yang <seungha@centricular.com> * gst/rtpmanager/rtptimerqueue.c: rtptimerqueue: Fix memory leak Should chain up to parent's finalize Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3645> 2022-12-22 11:16:26 +0100 Patricia Muscalu <patricia@axis.com> * gst/isomp4/gstqtmux.c: qtmux: Fix buffer leak in fragment_buffers When pushing buffers from one of the sink pads fail, make sure that all buffers added to fragment_buffers on other pads are freed as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3624> 2022-09-19 21:11:39 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/isomp4/atoms.c: qtmux: For video with N/1001 framerates use N as timescale instead of centiframes This is recommended by various specifications for such framerates, while for integer framerates we continue using centiframes to allow for some more accuracy. Using N means that no rounding error accumulates, eventually leading to outputting a packet with a different duration. Some tools such as MediaInfo determine that a stream is variable framerate if any packet has a different duration than the others, and there is no reason I can see for not using the full 4 bytes of resolution that the mp4 timescale offers. Example problematic pipeline: ``` videotestsrc num-buffers=5001 ! video/x-raw,framerate=60000/1001,width=320,height=240 ! \ videoconvert ! x264enc bitrate=80000 speed-preset=1 tune=zerolatency ! h264parse ! \ video/x-h264,profile=high-10 ! mp4mux ! filesink location="result2.mp4" ``` This results in a media file that MediaInfo detects as variable framerate because the 5000th packet has duration 99 instead of 100. With this patch, the timescale is 60000 and all packets have duration 1001. Related issue for context: https://bugzilla.gnome.org/show_bug.cgi?id=769041 Co-authored-by: Sebastian Dröge <sebastian@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3049> 2022-12-21 02:37:58 +1100 Jan Schmidt <jan@centricular.com> * ext/qt/qtwindow.cc: qmlglsrc: Handle HiDPI scaling When calculating the capture framebuffer size, include any device scaling applied to the rendered framebuffer Fixes only capturing part of the window when there is a global scale factor. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3612> 2022-12-21 02:32:41 +1100 Jan Schmidt <jan@centricular.com> * ext/qt/qtwindow.cc: qmlglsrc: Unmap buffer before adding sync meta Adding a sync meta to a GstBuffer requires that it be writable. Mapping the buffer with the video frame API holds an extra ref on the buffer, so unmap before trying to modify it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3612> 2022-12-21 02:31:05 +1100 Jan Schmidt <jan@centricular.com> * ext/qt/gstqtsrc.cc: qmlglsrc: Stop when basesrc calls unlock() Instead of stopping capture when the state changes, handle other cases of basesrc stopping capture by - such as handling an EOS event - by implementing an unlock() method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3612> 2022-12-16 17:27:33 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Always use `tfdt` if available in BYTE segments This reverts the decision from https://bugzilla.gnome.org/show_bug.cgi?id=754230 where it was decided that we rather play safe and only use the `tfdt` if it is "significantly different" to the sum of sample durations. As the specification says If the time expressed in the track fragment decode time (‘tfdt’) box exceeds the sum of the durations of the samples in the preceding movie and movie fragments, then the duration of the last sample preceding this track fragment is extended such that the sum now equals the time given in this box. we have to use the `tfdt` in general to allow for it to signal gaps in the stream. A muxer producing fragments might not yet know the full duration of the last sample of a previous fragment if the next fragment starts with a gap, and knowing the actual start of the next fragment would potentially require to violate latency requirements. Additionally, the existence of `tfdt` allows to avoid accumulating rounding errors from summing up the durations. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3586> 2022-12-16 01:00:46 -0600 A. Wilcox <AWilcox@Wilcox-Tech.com> * tests/check/elements/rtpjitterbuffer.c: tests: Cast drop-messages-interval type properly The rtpjitterbuffer test drop_messages_interval uses a GstClockTime for the message drop interval. This property is defined as a guint. On systems with 64-bit time_t but 32-bit uint, this can cause the g_object_set function to fail to read the arguments properly. Fixes: #1656 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3580> 2022-12-13 12:23:56 +0100 Thibault Saunier <tsaunier@igalia.com> * ext/qt/qtitem.cc: * ext/qt6/qt6glitem.cc: base:navigation: Cleanup navigation key modifiers enum We were exposing the 'ALT' modifier as if we were guaranteeing its accuracy but truth is we were only exposing configuration dependent values. Make the API simpler for now, the same way as Gtk3 was exposing it, and when we have time to guarantee more values by making them take backends configuration into account, we will expose those values in a accurate way. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1402 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3565> 2022-12-09 11:35:25 +0100 Xabier Rodriguez Calvar <calvaris@igalia.com> * gst/isomp4/qtdemux.c: qtdemux: Clear protection events when we get new ones If we keep the old events they can be end up being passed to the app, that could discard the protection information because it has been seen before. Drive by improvement: use g_queue_clear_full instead of foreach+clear for protection events. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3547> 2022-05-22 10:46:12 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/jpeg/gstjpegdec.c: jpegdec: Enable packetized if sink caps contains parsed as true. jpegdec is capable to parse input frames, but if jpegparse is before, there's no need to reparse frames. This patch configure jpegdec as packetized, skipping parsing, if negotiated sink caps has the boolean field 'parsed' as true. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2464> 2022-09-27 09:44:51 +0000 Henry Hoegelow <henry@hoegelow.com> * ext/pulse/pulsesink.c: pulsesink: Fix occasional period of silence on resume According to comment in gst_pulsering_stream_latency_cb, latency updates happen every 100 ms. The code in gst_pulsering_stream_latency_cb does not care about the actual state of the ringbuffer, pbuf->acquired or not. Thus, every 100 ms the ringbuf->segdone may be set, even though the object itself might be in 'destroyed' state. On next gst_pulseringbuffer_acquire the segdone is not touched, so playback may resume with invalid/wrong segdone value. This finally leads to a period of silence playing after resuming the pipeline. The problem was found on 'not-yet-released'-hardware and so far was not reproducible on desktop computer. Removing the callback as long as the ringbuffer is not in 'acquired' state solves the problem reliably on the hardware device that the issue was detected on. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3082> 2021-05-14 23:06:43 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst_plugins_cache.json: * gst/rtp/gstrtpvp9depay.c: * gst/rtp/gstrtpvp9depay.h: rtpvp9depay: expose keyframe-related properties This simply brings in the wait-for-keyframe and request-keyframe properties from rtpvp8depay. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/909> 2022-12-07 09:47:49 +0100 Jacek Skiba <jacek.skiba@consult.red> * gst/isomp4/qtdemux.c: qtdemux: exit when protection caps are not defined during PIFF parsing Reproduction testcase (uses PlayReady): https://developers.canal-plus.com/rx-player/upc/?appTileLocation=[object%20Object] In test streams we are using PIFF box, but caps did not had present GST_PROTECTION_SYSTEM_ID_CAPS_FIELD. In consequence, invalid system_id was returned which caused SIGSEGV crash. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3535> 2022-12-05 10:55:57 +0100 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Don't allow stream selection while switching periods The stream selection is done on the currently outputting tracks, but in order to (de)activate the backing streams we can only do it if the input and output period are identical. Fixes crash when doing stream selection during period migration Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3525> 2022-12-05 02:29:08 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * meson.build: Back to development === release 1.21.3 === 2022-12-05 01:28:21 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.21.3 2022-12-04 12:25:41 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: Remove ChangeLog files from git repository This information is tracked fully in the git repository, so no point having the ChangeLog duplicate it, and it interferes with grepping the repository. We are going to create the ChangeLogs on the fly when generating tarballs going forward (with a limited history), since it's still valuable for tarball consumers to be able to easily see a list of recent changes. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/73 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521> 2022-11-07 00:10:39 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: * scripts/gen-changelog.py: meson: Generate ChangeLog files for release tarballs on dist Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521> 2022-12-04 11:44:17 +0000 Philippe Normand <philn@igalia.com> * gst/audioparsers/gstflacparse.c: flacparse: Fix handling of headers advertising 32bps According to the flac bitstream format specification, the sample size in bits corresponding to `111` is 32 bits per sample. https://xiph.org/flac/format.html#frame_header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3517> 2022-12-02 12:15:34 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2src.c: v4l2src: Fix crash in renegotiation This regression was introduce by fix for making buffer pool thread safe. When we renegotiate, the pool will be setup after we set the format. But the code has been simplified to only get the pool once before, which caused a null pointer deref. Fixes 94ba019 ("v4l2: Fix SIGSEGV on 'change state' during 'format change'") Related to !3481 Fixes #1626 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3513> 2022-12-01 10:34:10 +0100 Aleksandr Slobodeniuk <aslobodeniuk@fluendo.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: fix seek event leaks Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3500> 2022-11-30 14:32:52 +0100 Bo Elmgreen <bo.elmgreen@gmail.com> * ext/qt/gstqtglutility.cc: * ext/qt6/gstqt6glutility.cc: qt: deactivate context if fill_info fails Now the OpenGL context is deactivated if call to gst_gl_context_fill_info() fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left activated, which could lead to invalid memory reads. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492> 2022-11-28 22:26:50 +0000 Pawel Stawicki <stawel+gstreamer@gmail.com> * sys/v4l2/gstv4l2bufferpool.c: * sys/v4l2/gstv4l2bufferpool.h: * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2object.h: * sys/v4l2/gstv4l2sink.c: * sys/v4l2/gstv4l2src.c: * sys/v4l2/gstv4l2transform.c: * sys/v4l2/gstv4l2videodec.c: * sys/v4l2/gstv4l2videoenc.c: v4l2: Fix SIGSEGV on 'change state' during 'format change' Ensure all access to v4l2object->pool imply taking a lock and a hard ref on the pool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3481> 2022-11-22 11:32:57 -0500 Matt Crane <matt@standard.ai> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpbin.h: * gst/rtpmanager/gstrtpsession.c: * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsession.h: rtpsession: Support disabling late adjustment of ntp-64 header ext Currently in rtp_session_send_rtp(), the existing ntp-64 RTP header extension timestamp is updated with the actual NTP time before sending the packet. However, there are some circumstances where we would like to preserve the original timestamp obtained from reference timestamp buffer metadata. This commit provides the ability to configure whether or not to update the ntp-64 header extension timestamp with the actual NTP time via the update-ntp64-header-ext boolean property. The property is also exposed via rtpbin. Default property value of TRUE will preserve existing behavior (update ntp-64 header ext with actual NTP time). Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1580 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3451> 2022-10-06 17:08:54 +1100 Matthew Waters <matthew@centricular.com> * ext/meson.build: * ext/qt6/gstplugin.cc: * ext/qt6/gstqml6glsink.cc: * ext/qt6/gstqml6glsink.h: * ext/qt6/gstqsg6glnode.cc: * ext/qt6/gstqsg6glnode.h: * ext/qt6/gstqt6element.cc: * ext/qt6/gstqt6elements.h: * ext/qt6/gstqt6gl.h: * ext/qt6/gstqt6glutility.cc: * ext/qt6/gstqt6glutility.h: * ext/qt6/meson.build: * ext/qt6/qt6glitem.cc: * ext/qt6/qt6glitem.h: * meson_options.txt: * tests/examples/meson.build: * tests/examples/qt6/meson.build: * tests/examples/qt6/qmlsink/main.cpp: * tests/examples/qt6/qmlsink/main.qml: * tests/examples/qt6/qmlsink/meson.build: * tests/examples/qt6/qmlsink/play.pro: * tests/examples/qt6/qmlsink/qmlsink.qrc: add new plugin for Qt 6 rendering inside a QML scene - Based heavily on the existing Qt5 integration however: - The sharing of OpenGL resources is slightly different - The integration with the scengraph is a bit different - Wayland, XCB and KMS have been smoke tested. Android, MacOS/iOS, Windows may or may not work. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3281> 2022-11-21 15:35:58 +0800 Elliot Chen <elliot.chen@nxp.com> * sys/v4l2/gstv4l2object.c: v4l2: bypass check some transfer types in colorimetry v4l2 will report fail for some streams whose colorimetry value such as 2:4:8:3. Can bypass check these transfer types in colorimetry to avoid error. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3440> 2022-10-27 17:30:28 +0200 Johan Sternerup <johast@axis.com> * gst/rtpmanager/rtpsession.c: * tests/check/elements/rtpsession.c: Use the correct SSRC(s) when routing a RTCB FB FIR Previously we tried to route an incoming RTCP FB FIR to the correct ssrc using the "media source" component of the RTCP FB message. However, according to RFC5104 (section 4.3.1.2) the "media source" SHALL be set to 0. Instead the ssrc(s) in use are propagated via the FCI data. Now a specific GstForceKeyUnit event is sent for every ssrc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3292> 2022-11-23 16:37:40 +1100 Jan Schmidt <jan@centricular.com> * gst/rtpmanager/rtpsource.c: rtpsource: Track the seqnum for senders RTP source statistics are tracked for local senders by treating them as a receiver of their own outbound packets. Accordingly, track the highest packet seqnum so that the packets-lost calculation generates a sensible number instead of always reporting -$number_of_packets_sent Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3454> 2022-11-22 21:57:16 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/meson.build: adaptivedemux2: Add GStreamer to the deps list Explicitly dep on GStreamer so as not to accidentally link to the system version in a git build Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3453> 2022-11-15 11:56:35 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Don't replace 404 errors with "no auth protocol found" When getting a "404 Not Found" response from the DESCRIBE request, the source produced a "No supported authentication protocol was found" error instead of passing on the 404, which was confusing. Only produce this error message when we're handling a response of "401 Unauthorized" without a compatible WWW-Authenticate header. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3414> 2022-11-21 17:24:38 +0100 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: adaptivedemux2: Don't leak caps in debug statements Instead just directly use the stream object (which will report the caps) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443> 2022-11-21 17:23:44 +0100 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: adaptivedemux2: Don't leak tags If we got them from GstStream, we should unref them when done Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443> 2022-11-21 17:23:10 +0100 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux: Use gst_clear_tag_list_where applicable Clearer and ensures fields are reset Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443> 2022-11-21 15:11:21 +0100 Edward Hervey <edward@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Don't leak sticky events We have incremented the reference 2 lines above, and gst_pad_store_sticky_event() does not take a reference, therefore release it Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443> 2022-11-15 21:42:34 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemuxutils.c: adaptivedemux2: Fix sticky event storage. Use the new gst_event_type_to_sticky_ordering() method to retrieve the order that sticky events should be sent / stored in, instead of assuming it's the event type value. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387> 2022-11-15 13:50:13 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2bufferpool.c: * sys/v4l2/gstv4l2object.c: video: Add arbitrary tile dimensions support In current tile representation, only tiles with power of two width and height in bytes are supported. This limitation prevents adding more complex tiles formats. In this patch, we deprecate tile_ws and tile_hs from GstVideoFormatInfo and replace if with an array of GstVideoTileInfo. Each plane tiles are then described with their pixels width/height, line stride and total size. The helper gst_video_format_info_get_tile_sizes() that depends on the deprecated API is also being removed. This can simply be removed as it wasn't in any stable release yet. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3424> 2022-09-09 13:13:32 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * gst/multifile/gstsplitmuxsink.c: splitmuxsink: Avoid assertion when WAITING_GOP_COLLECT on reference context I have seen a backtrace out in the wild where this happened. Maybe after receiving EOS and stream-start on the reference context. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3005> 2022-11-14 13:53:02 +0100 Edward Hervey <edward@centricular.com> * gst/multifile/gstimagesequencesrc.c: imagesequencesrc: Don't leak caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3428> 2022-05-03 18:36:54 +0200 Enrique Ocaña González <eocanha@igalia.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/gsthlsdemux.h: hlsdemux2: Expose EXT-X-PROGRAM-DATE-TIME as tags. This allows an application to use timestamps associated with fragments. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1417> 2022-11-17 20:59:35 +1100 Matthew Waters <matthew@centricular.com> * gst/isomp4/atoms.c: qtmux: use trun with multiple entries in more cases The only case where we definitely need to write a new trun is when the data_offset value does not match the end of the list of entries. Needing multiple trun atoms is required when interleaving multiple streams together. All other cases can be covered by adding more entries to the existing trun atom. Fixes playback of fragemented mp4 in ffplay and chrome. Using e.g. mp4mux fragment-duration=1000 fragment-mode=dash-or-mss and mp4mux fragment-duration=1000 fragment-mode=first-moov-then-finalise Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3426> 2022-10-26 07:04:32 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Notify that we are streams-aware Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784> 2022-11-16 13:33:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Fix regression when using hostname in the location property When the address can't be parsed as an IP address, it should just be treated as a hostname and used as-is. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1576 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3420> 2022-11-13 19:19:41 -0500 F. Duncanh <fduncanh@gmail.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: Fixes three H.264/HEVC ITU conformance tests Postpone the cleanup of any consecutive sequence of lost frames which starts at frame 0, until frame 100 is dequeued from driver. This allows fluster tests JVT/CVWP2_TOSHIBA_E, JVC/CVWP3_TOSHIBA_E and HEVC/POC_A_Bossen_3 that sends out-of-order frames to successfully complete (e.g., test of Amphion vpu driver). Fixes #1569 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3398> 2022-11-15 17:26:18 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Add test for rescheduling timers to negative times This tests the changes introduced by 4d3b8d1129d8b863e4156cd0334e93257b9d0cc4 for issue #571. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3416> 2022-09-07 11:07:40 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Reschedule timers when updating their offset As EXPECTED timers are skipped the order of the timers relative to each other can change if there are EXPECTED timers and rescheduling needs to happen. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1422 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3416> 2022-11-15 21:22:17 +0530 Sanchayan Maity <sanchayan@asymptotic.io> * gst/wavparse/gstwavparse.c: wavparse: Do not run all typefinders for all output In order to figure out if the "raw" audio contained within the wav container is actually DTS, wavparse calls the typefinder helper except that means it runs all typefinders. Since it only cares about checking for DTS, we should only run the audio/x-dts typefinder (if present). Commit 858e516 did not really fix things. Use the new type helper with the caps to fix this. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3417> 2022-11-14 21:19:12 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Consistently set seqnums on events Set udpsrc seqnums on all events sent to the udpsrc's, and before forwarding events out of rtspsrc set the latest seek seqnum on them if any. Also produce a consistent seqnum in rtspsrc from the very beginning. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3409> 2022-11-14 19:14:27 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Make segment event writable before overriding the seqnum and use the proper API to do so Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3409> 2022-11-14 19:10:05 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Intercept and handle events when using no manager too Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3409> 2022-11-14 19:08:54 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Don't blindly copy over sticky events from manager pad to external source pad This would get around the code that modifies some events when they go through the ghost pad's proxypad. Instead go via the event function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3409> 2022-11-14 19:03:21 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Don't make udpsrc segment events writable just to retrieve their seqnum Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3409> 2022-11-14 18:40:56 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Reset EOS flag also on FLUSH_STOP and not only on ssrc-active Also don't bother not sending EOS if EOS was sent already: gst_pad_push_event() takes care of that for us already. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3409> 2022-11-15 13:38:18 +0000 Tim-Philipp Müller <tim@centricular.com> * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: gdkpixbufoverlay: fix docs - changing images at runtime is supported Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3415> 2022-11-13 08:38:25 +0100 Edward Hervey <edward@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Unlock timer waits on flushing If there is a pending EOS wait for example, we would never unblock on flushing Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3401> 2021-10-14 11:56:58 +0200 Rafał Dzięgiel <rafostar.github@gmail.com> * tests/check/elements/dash_mpd.c: tests: Add DASH MPD baseURL with query test Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1147> 2021-10-14 10:12:51 +0200 Rafał Dzięgiel <rafostar.github@gmail.com> * ext/adaptivedemux2/dash/gstmpdparser.c: mpdparser: Fix missing baseURL query When no initializationURL or mediaURL, return baseURL that also contains original URI query if available. This fixes a problem where URI query was being omitted in the HTTP requests. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1147> 2021-10-14 10:09:31 +0200 Rafał Dzięgiel <rafostar.github@gmail.com> * ext/adaptivedemux2/dash/gstmpdclient.c: * ext/adaptivedemux2/dash/gstmpdparser.c: * ext/adaptivedemux2/dash/gstmpdparser.h: mpdparser: Be consistent about returning duplicated URL Instead of returning a "const gchar" or a "gchar" that should not be freed, always return a duplicated string as those functions were used together with g_strdup anyway. This is needed to prepare support for returning modified strings in next commit. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1147> 2021-10-14 10:18:40 +0200 Rafał Dzięgiel <rafostar.github@gmail.com> * ext/adaptivedemux2/dash/gstmpdparser.c: mpdparser: Return correct mediaURL value This fixes a problem where get_mediaURL was returning NULL when segmentURL was unavailable instead of baseURL as a fallback. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1147> 2022-11-14 12:51:19 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/matroska/matroska-demux.c: matroskademux: Handle element's duration query. This is small regression from commit f7abd81a. When calling `gst_element_query()` no pad is associated with that query, but the current code always forwards the query to the associated pad, which is NULL in previous case. This patch checks for the pad before forwarding the query. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3404> 2022-11-13 12:18:54 +0100 Rafał Dzięgiel <rafostar.github@gmail.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Fix parent object leak gst_object_get_parent() method is transfer-full, thus unref is needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3396> 2022-10-10 19:58:12 +0100 Colin Kinloch <colin.kinloch@collabora.com> * gst/videobox/gstvideobox.c: * gst/videocrop/gstvideocrop.c: videocrop, videobox: Simplify navigation event handling and support touch events Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3053> 2022-09-19 18:06:44 +0100 Colin Kinloch <colin.kinloch@collabora.com> * gst/videofilter/gstvideoflip.c: videoflip: Use gst_video_orientation_from_tag to parse orientation Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3053> 2022-11-09 12:04:08 +0000 Christian Wick <c.wick@mail.de> * docs/gst_plugins_cache.json: * gst/rtsp/gstrtspsrc.c: * gst/rtsp/gstrtspsrc.h: * tests/examples/rtsp/test-onvif.c: rtspsrc: Introduce new action signal `push-backchannel-sample` with correct ownership semantics Signals are not supposed to take ownership of their arguments but only borrow them for the scope of the signal emission. The old action signal `push-backchannel-buffer` is now marked deprecated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3363> 2022-11-08 02:08:08 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3358> === release 1.21.2 === 2022-11-07 23:53:59 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.21.2 2022-11-07 23:53:57 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: Update ChangeLogs for 1.21.2 2020-09-02 10:49:40 +0100 Justin Chadwell <me@jedevc.com> * gst/isomp4/qtdemux.c: qtdemux: use unsigned int types to store result of QT_UINT32 In a few cases throughout qtdemux, the results of QT_UINT32 were being stored in a signed integer, which could cause subtle bugs in the case of an integer overflow, even allowing the the result to equal a negative number! This patch prevents this by simply storing the results of this function call properly in an unsigned integer type. Additionally, we fix up the length checking with stsd parsing to prevent cases of child atoms exceeding their parent atom sizes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3344> 2022-11-04 17:48:01 +0000 Tim-Philipp Müller <tim@centricular.com> * ext/qt/gstqtglutility.cc: qt: initialize GError properly in gst_qt_get_gl_wrapcontext() Spotted by Claus Stovgaard. Fixes #1545 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3327> 2022-11-04 11:10:52 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/gstqtmux.c: qtmux: Add durations to raw audio buffers from the raw audio adapter in prefill mode This ensures that a duration can also be calculated and stored for the last buffer at EOS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3321> 2022-11-04 10:49:31 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/gstqtmux.c: qtmux: Release object lock before posting an error message GST_ELEMENT_ERROR() also takes the object lock and this would then deadlock. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3321> 2022-11-03 14:08:57 +0100 Edward Hervey <edward@centricular.com> * gst/multifile/gstimagesequencesrc.c: imagesequencesrc; Fix leaks * The path was leaked * The custom buffer was never freed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319> 2022-11-03 14:08:02 +0100 Edward Hervey <edward@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Fix cenc-related leaks Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319> 2022-11-03 14:06:58 +0100 Edward Hervey <edward@centricular.com> * gst/deinterlace/gstdeinterlace.c: deinterlace: Don't leak metas There is no correlation between the frame being NULL and the metas not being present. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319> 2022-10-31 16:08:23 +0100 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-period.c: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Fix collection leaks * The collection on the period was never unreffed * The collection in the message handler was never unreffed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319> 2022-11-05 03:23:43 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/mss/gstmssdemux.c: mssdemux2: Update for adaptivedemux2 refactoring Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-11-03 01:48:08 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/dash/gstdashdemux.c: * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux-stream.h: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: * ext/adaptivedemux2/hls/gsthlsdemux.c: adaptivedemux2: Move stream_seek() to the Stream class Move the last stream specific vfunc from the demux class to the stream class. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-08-21 04:31:53 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/dash/gstdashdemux.c: * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux-stream.h: * ext/adaptivedemux2/gstadaptivedemux-types.h: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: * ext/adaptivedemux2/hls/gsthlsdemux.c: adaptivedemux2: Refactor stream methods into the stream Unlike the legacy elements, GstAdaptiveDemuxStream is a GObject now, so a bunch of things that were actually stream methods on the parent demux object can directly become stream methods now. Move the stream class out to a header of its own. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-06-07 14:36:24 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/hls/m3u8.h: hlsdemux2/m3u8: Implement EXT-X-GAP parsing Read the EXT-X-GAP tag and set is_gap on the segment. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-06-07 14:13:39 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2/m3u8: Refactor parsing for readability Small readability improvements in the parsing code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-14 06:21:41 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/downloadrequest.c: * ext/adaptivedemux2/downloadrequest.h: adaptivedemux2/downloadhelper: Remove return val for download_request_add_buffer() The function can't actually fail, and the only caller was ignoring the result anyway, so remove the return value. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-14 06:20:06 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/downloadhelper.c: adaptivedemux2/downloadhelper: Add debug output of response headers Dump the HTTP response headers at TRACE level Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-14 06:19:11 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/downloadhelper.c: adaptivedemux2/downloadhelper: Don't mark transfer as complete/error if cancelled. If the state of the download request was reset to UNSENT, it was cancelled. Don't update the state to COMPLETE or ERRORED in on_read_ready(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-14 06:17:00 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/downloadhelper.c: adaptivedemux2/downloadhelper: Ignore spurious read failure Sometimes g_input_stream_read_all_finish() can return 0 bytes, but still succeed (return TRUE) and have more data available later. Only finish the transfer if it returns 0 bytes *and* FALSE with no error. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-14 06:15:45 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/downloadhelper.c: * ext/adaptivedemux2/downloadrequest.c: * ext/adaptivedemux2/downloadrequest.h: adaptivedemux2/downloadhelper: Fix function name Fix a typo in the name of function download_request_despatch_progress() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-12 02:14:32 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Remove scheduler_lock mutex Remove the old unused scheduler_lock Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-11 03:20:11 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Hold tracks lock accessing input_period The input_period is protected by the TRACKS_LOCK, so make sure to hold that when accessing it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-08-16 23:01:46 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.h: adaptivedemux2: Add state checks and clean up obsolete variables The cancelled flag was only set in the stream finalize() method, after all activity on the stream has stopped anyway. Replace uses of cancelled with checks on the stream state. Remove the replaced flag, which was checked but never set to TRUE anywhere any more. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3314> 2022-10-30 20:28:25 +0900 Seungha Yang <seungha@centricular.com> * docs/gst_plugins_cache.json: * ext/vpx/gstvp9dec.c: * ext/vpx/gstvp9enc.c: * ext/vpx/gstvpxenc.c: vpx: Complete high bitdepth vp9 en/decoding support Adding 12bits variant formats to en/decoder, and high bitdepth 4:4:4 (except for GBR) encoding support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3298> 2022-10-30 20:03:10 +0900 Seungha Yang <seungha@centricular.com> * ext/vpx/gstvp9dec.c: * ext/vpx/gstvp9enc.c: * ext/vpx/gstvpxcompat.h: * ext/vpx/gstvpxdec.h: * ext/vpx/gstvpxenc.h: vpx: Define formats for compatibility ifdef for enum values never work. Instead, define new enum type and use it Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3298> 2022-10-27 23:57:58 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: m3u8: Use PDT to offset stream time when aligning playlist When matching segments across playlists with Program-Date-Times, use the difference in segment PDTs to adjust the stream time that's being transferred. This can fix cases where the segment boundaries don't align across different streams and the first download gets thrown away once the PTS is seen and found not to match. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3309> 2022-11-01 02:17:46 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/gsthlsdemux.h: hlsdemux2: Download new header when it changes Check whether the init file / MAP data for a segment is different to the current data and trigger an update if so. Previously, the header would only be checked in HLS after switching bitrate or after a seek / first download. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3307> 2022-11-01 01:41:35 +1100 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/hls/m3u8.h: m3u8: Expose GstM3U8InitFile methods Exposure ref/unref methods for the GstM3U8InitFile type, and add a gst_m3u8_init_file_equal() comparison method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3307> 2022-10-21 17:24:41 +0200 Edward Hervey <edward@centricular.com> * docs/gst_plugins_cache.json: * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/hls/m3u8.h: adaptivedemux2: Improve minimum buffering threshold Previously the minimum buffering threshold was hardcoded to a specific value (10s). This is suboptimal this an actual value will depend on the actual stream being played. This commit sets the low watermark threshold in time to 0, which is an automatic mode. Subclasses can provide a stream `recommended_buffering_threshold` when update_stream_info() is called. Currently implemented for HLS, where we recommended 1.5 average segment duration. This will result in buffering being at 100% when the 2nd segment has been downloaded (minus a bit already being consumed downstream) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3240> 2022-10-28 18:57:44 +0530 Sanchayan Maity <sanchayan@asymptotic.io> * gst/wavparse/gstwavparse.c: wavparse: Speed up type finding for DTS In order to figure out if the "raw" audio contained within the wav container is actually DTS, right now we call the typefinder helper which runs all typefinders. Speed up this type finding process by specifying the extension. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3294> 2022-10-25 13:30:15 +1100 Matthew Waters <matthew@centricular.com> * docs/gst_plugins_cache.json: * gst/isomp4/gstqtmuxmap.c: mp4mux: enable muxing VP9 streams As specified in https://www.webmproject.org/vp9/mp4/ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3260> 2022-10-25 13:28:26 +1100 Matthew Waters <matthew@centricular.com> * docs/gst_plugins_cache.json: * gst/isomp4/atoms.c: * gst/isomp4/atoms.h: * gst/isomp4/gstqtmux.c: * gst/isomp4/gstqtmuxmap.c: qtmux: add support for writing vpcC box for VP9 Increases compatibility for VP9 in .mov in at least VLC. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3260> 2022-10-04 18:21:15 -0300 Thibault Saunier <tsaunier@igalia.com> * ext/adaptivedemux2/dash/gstdashdemux.c: * ext/adaptivedemux2/gstadaptivedemux.c: dashdemux2: Fix the way we determine current_position after seeks Without that the current_position was off after seeks, potentially leading to not properly push a last fragment when a `.stop` time was set. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159> 2022-09-20 15:32:52 -0300 Thibault Saunier <tsaunier@igalia.com> * ext/adaptivedemux2/dash/gstmpdclient.c: dash: Fix computing `repeat_index` when seeking in stream with a start !=0 on the first fragment Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159> 2022-09-22 11:20:55 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/matroska/matroska-demux.c: matroskademux: Let upstream handle seeking/duration query in time if possible So proper response are given for dash streams Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159> 2022-09-21 15:01:39 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/matroska/matroska-demux.c: * gst/matroska/matroska-demux.h: matroskademux: Start support for upstream segments in TIME format So we can use matroskademux for dash webm dash streams. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3159> 2022-01-24 16:49:52 +0100 Jakub Adam <jakub.adam@collabora.com> * sys/ximage/gstximagesrc.c: ximagesrc: grab the server while capturing screen image Makes sure screen resolution doesn't change in the middle of the process. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1562> 2021-12-17 14:57:57 +0100 Jakub Adam <jakub.adam@collabora.com> * sys/ximage/gstximagesrc.c: * sys/ximage/gstximagesrc.h: ximagesrc: change video resolution when X11 screen gets resized Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1562> 2022-10-23 20:32:35 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * gst/meson.build: * gst/xingmux/gstxingmux.c: * gst/xingmux/gstxingmux.h: * gst/xingmux/meson.build: * gst/xingmux/plugin.c: * meson_options.txt: * tests/check/elements/xingmux.c: * tests/check/elements/xingmux_testdata.h: * tests/check/meson.build: xingmux: move from gst-plugins-ugly to gst-plugins-good Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/415 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3251> 2022-10-21 16:23:08 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Only EOS on timeout if all streams are timed out/EOS Otherwise a stream that is just temporarily inactive might time out and then can never become active again because the EOS event was sent already. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3238> 2022-10-18 16:51:39 +1100 Matthew Waters <matthew@centricular.com> * docs/gst_plugins_cache.json: * gst/rtp/gstrtpulpfecdec.c: * gst/rtp/gstrtpulpfecdec.h: rtpulpfecdec: add property for passthrough Support for enabling and disabling decoding of FEC data decoding on packet loss events and unconditional seqnum rewriting of packets. See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/581 for background. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3212> 2022-10-14 01:23:04 +0000 Devin Anderson <danderson@microsoft.com> * gst/wavparse/gstwavparse.c: 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-13 11:21:42 -0400 Julian Bouzas <julian.bouzas@collabora.com> * docs/gst_plugins_cache.json: 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 00:20:45 +0000 Devin Anderson <danderson@microsoft.com> * gst/wavparse/gstwavparse.c: * tests/check/elements/wavparse.c: * tests/files/corruptheadertestsrc.wav: 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-11 15:00:37 +0200 Edward Hervey <edward@centricular.com> * sys/oss4/oss4-sink.c: * sys/oss4/oss4-source.c: 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-08 01:03:13 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/multifile/gstsplitmuxpartreader.c: 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-03 20:28:47 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpsession.c: * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsession.h: * gst/rtpmanager/rtpsource.c: * gst/rtpmanager/rtpsource.h: 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-03 19:58:38 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/examples/rtp/client-rtpaux.c: 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> 2019-01-25 17:04:50 -0500 George Kiagiadakis <george.kiagiadakis@collabora.com> * tests/check/elements/rtpsession.c: 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-03 19:12:55 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsource.c: * gst/rtpmanager/rtpsource.h: 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-03 19:20:14 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsource.c: * gst/rtpmanager/rtpsource.h: 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-03 13:48:36 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpsession.c: 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-06 15:02:22 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: 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-04 03:57:31 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3115> === release 1.21.1 === 2022-10-04 01:14:01 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.21.1 2022-10-04 01:13:59 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: Update ChangeLogs for 1.21.1 2022-07-27 11:19:50 +0200 Edward Hervey <edward@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Don't stop task when resetting This is a regression that was introduced in cca2f555d14b5751f7f9d466b66127544dad5138 (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-09-30 18:57:01 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/multifile/gstsplitmuxpartreader.c: 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-03-01 16:30:10 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/rtsp/gstrtspsrc.c: 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 13:56:54 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/isomp4/qtdemux.c: 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 00:08:41 +1000 Jan Schmidt <jan@centricular.com> * tests/check/elements/dash_mpd.c: 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-08-23 23:12:44 +0900 Junsoo Park <junsoo81.park@lge.com> * ext/adaptivedemux2/dash/gstmpdclient.c: 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-22 19:02:10 +0200 Jakub Adam <jakub.adam@collabora.com> * ext/vpx/gstvp9dec.c: * ext/vpx/gstvp9enc.c: 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-21 19:19:45 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: 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 00:26:38 +0900 Seungha Yang <seungha@centricular.com> * ext/adaptivedemux2/gstadaptivedemuxutils.c: 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-16 02:01:58 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-period.c: * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux-track.c: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: 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-15 09:04:10 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Handle negative time mappings Some servers can return playlists with "old" media playlists and different Discont Sequence. In those cases, the segment stream times would be negative when creating a new time mapping. In order to properly handle such scenarios, shift the values to stored accordingly to end up with non-negative reference stream time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3054> 2022-09-19 20:48:01 +0300 Mart Raudsepp <mart@leio.tech> * ext/shout2/meson.build: shout: fix minimum requirement to libshout >= 2.4.3 commit e64c6f0b93ced added usage of the SHOUT_USAGE_UNKNOWN symbol, but this became available in the Icecast-libshout 2.4.3 release, not 2.4.2 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3048> 2022-08-31 11:13:06 +0800 Elliot Chen <elliot.chen@nxp.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: add cap negotiation fail check in the capture configuration change The capture configuration change may cause negotiation fail. Need to check it to avoid enter the endless loop. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2960> 2022-08-29 10:17:45 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: doc: Do not build plugins to build the doc It is not actually necessary Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2954> 2022-09-15 12:14:56 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/meson.build: tests: add a few more orc tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3029> 2022-09-14 10:15:41 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: Fix crash on live playlist with single entry If there is a single entry, we would end up computing a minimum distance of 0, and would therefore read entries from after the segment array Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3024> 2021-03-24 14:20:18 -0500 Zebediah Figura <z.figura12@gmail.com> * meson.build: meson: Build with -Wl,-z,nodelete to prevent unloading of dynamic libraries and plugins GLib made the unfortunate decision to prevent libgobject from ever being unloaded, which means that now any library which registers a static type can't ever be unloaded either (and any library that depends on those, ad nauseam). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/778> 2022-09-13 00:56:53 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Always check bitrate in live When advancing fragment in live, it's normal to return GST_FLOW_EOS when playing at the live edge of the available fragments. In that case, we still want to adjust bitrate dynamically. Fixes issue with dashdemux2 where the current bitrate of each adaptation set is changed to the lowest one when updating the mpd for a live stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3020> 2022-09-12 14:18:47 -0400 Matt Crane <matt@standard.ai> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Fix calculation of reference timestamp metadata Add support for RTCP SRs that contain RTP timestamps later than the current timestamps in the RTP stream packet buffers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3019> 2022-09-08 17:06:26 +0000 Filip Hanes <filip@hanes.tech> * docs/gst_plugins_cache.json: * ext/libpng/gstpngenc.c: pngenc: lower minimum width and height to 1x1 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3003> 2022-08-30 11:45:05 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/dash/gstxmlhelper.c: * tests/check/elements/dash_mpd.c: dashdemux2: Remove bogus limitation checks for duration fields Just like for the seconds field, there are no limitations on the hours and minutes fields. The specification for xml schema duration fields doesn't forbid specifying durations with only (huge) minutes or hours values. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2951> 2022-08-21 03:37:40 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/dash/gstdashdemux.c: * ext/adaptivedemux2/dash/gstdashdemux.h: * ext/adaptivedemux2/dash/gstmpdclient.c: * ext/adaptivedemux2/dash/gstmpdclient.h: dashdemux2: Preserve current representation on live manifest updates When updating a manifest during live playback, preserve the current representation for each stream. During update_fragment_info, if the current representation changed because it couldn't be matched, trigger a caps change and new header download. This reverts commit e0e1db212fd0df2239583b9099fc4361adeded05 and reapplies "dashdemux: Fix issue when manifest update sets slow start without passing necessary header & caps changes downstream" with changes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2920> 2022-09-02 17:21:43 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: Add test for crash caused by removing timers twice Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973> 2022-09-02 12:20:58 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Make it more explicit that update_rtx_timers() takes ownership of the passed in timer It is not valid anymore afterwards and must not be used, otherwise an already freed pointer might be used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973> 2022-09-02 12:20:30 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Don't shadow variable While this didn't cause any problems in this context it is simply confusing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973> 2022-09-02 12:19:26 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Change RTX timer availability checks to assertions It's impossible to end up in the corresponding code without a timer for RTX packets because otherwise it would be an unsolicited RTX packet and we would've already returned early. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973> 2022-09-02 12:17:39 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Only unschedule timers for late packets if they're not RTX packets and only once Timers for RTX packets are dealt with later in update_rtx_timers(), and timers for non-RTX packets would potentially also be unscheduled a second time from there so avoid that. Also don't shadow the timer variable from the outer scope but instead make use of it directly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2973> 2022-07-05 16:15:19 +0200 Patricia Muscalu <patricia@axis.com> * gst/rtp/gstrtph265pay.c: * gst/rtp/gstrtph265pay.h: * tests/check/elements/rtph265.c: rtph265: keep delta unit flag Without this patch all buffers that pass the payloader are marked as non-delta-unit buffers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2969> 2022-09-01 15:11:31 -0400 Thibault Saunier <tsaunier@igalia.com> * ext/aalib/meson.build: * ext/cairo/meson.build: * ext/dv/meson.build: * ext/flac/meson.build: * ext/gdk_pixbuf/meson.build: * ext/gtk/meson.build: * ext/jack/meson.build: * ext/jpeg/meson.build: * ext/lame/meson.build: * ext/libpng/meson.build: * ext/mpg123/meson.build: * ext/pulse/meson.build: * ext/qt/meson.build: * ext/shout2/meson.build: * ext/speex/meson.build: * ext/taglib/meson.build: * ext/twolame/meson.build: * ext/vpx/meson.build: * ext/wavpack/meson.build: * gst/alpha/meson.build: * gst/apetag/meson.build: * gst/audiofx/meson.build: * gst/audioparsers/meson.build: * gst/auparse/meson.build: * gst/autodetect/meson.build: * gst/avi/meson.build: * gst/cutter/meson.build: * gst/debugutils/meson.build: * gst/deinterlace/meson.build: * gst/dtmf/meson.build: * gst/effectv/meson.build: * gst/equalizer/meson.build: * gst/flv/meson.build: * gst/flx/meson.build: * gst/goom/meson.build: * gst/goom2k1/meson.build: * gst/icydemux/meson.build: * gst/id3demux/meson.build: * gst/imagefreeze/meson.build: * gst/interleave/meson.build: * gst/isomp4/meson.build: * gst/law/meson.build: * gst/level/meson.build: * gst/matroska/meson.build: * gst/monoscope/meson.build: * gst/multifile/meson.build: * gst/multipart/meson.build: * gst/replaygain/meson.build: * gst/rtp/meson.build: * gst/rtpmanager/meson.build: * gst/rtsp/meson.build: * gst/shapewipe/meson.build: * gst/smpte/meson.build: * gst/spectrum/meson.build: * gst/udp/meson.build: * gst/videobox/meson.build: * gst/videocrop/meson.build: * gst/videofilter/meson.build: * gst/videomixer/meson.build: * gst/wavenc/meson.build: * gst/wavparse/meson.build: * gst/y4m/meson.build: * meson.build: * sys/directsound/meson.build: * sys/osxaudio/meson.build: * sys/osxvideo/meson.build: * sys/rpicamsrc/meson.build: * sys/v4l2/meson.build: * sys/waveform/meson.build: * sys/ximage/meson.build: meson: Call pkgconfig.generate in the loop where we declare plugins dependencies Removing some copy pasted code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970> 2022-09-01 11:51:48 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: meson: Namespace the plugins_doc_dep/libraries variables Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970> 2022-08-31 18:44:14 -0400 Thibault Saunier <tsaunier@igalia.com> * meson.build: meson: Rename plugins list and make them "dependency" objects Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970> 2022-08-18 17:08:51 +0300 Raul Tambre <raul@tambre.ee> * gst/rtpmanager/gstrtpjitterbuffer.c: * tests/check/elements/rtpjitterbuffer.c: rtpjitterbuffer: remove lost timer for out of order packets When receiving old packets remove the running lost timer if present. This fixes incorrect reporting of a lost packet even if it arrived in time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2922> 2022-08-26 18:42:44 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtp/gstrtpvp8depay.c: rtpvp8depay: If configured to wait for keyframes after packet loss, also do that if incomplete frames are detected This can happen if the data inside the packets is incomplete without the seqnums being discontinuous because of ULPFEC being used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2947> 2022-05-31 15:18:03 +0200 Stéphane Cerveau <scerveau@collabora.com> * docs/meson.build: * meson.build: docs: disable in static build Following gst-plugins-base, disable docs if static_build in: - gstreamer - gst-plugins-good - gst-plugins-ugly - gst-libav - gstreamer-vaapi Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2529> 2022-08-24 17:30:34 +0800 Jianhui Dai <jianhui.j.dai@intel.com> * sys/v4l2/gstv4l2allocator.c: v4l2allocator: Fix invalid imported dmabuf fd Fix a typo that set userptr to dmabuf fd. It leads to failure of dmabuf-import io-mode. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2935> 2022-07-22 13:41:17 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/isomp4/qtdemux.c: playback: add onvif metadata caps to raw caps + remove encoding from x-onvif-metadata caps output by qtdemux Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2889> 2022-08-23 10:28:30 +0000 zhiyuan.liu <zhiyuan.liu@seraphic-corp.com> * gst/isomp4/gstisoff.c: isoff: Fix earliest pts field parse issue earliest pts will be covered by first_offset field on version 0 case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2927> 2022-08-18 16:36:45 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/adaptivedemux2/downloadhelper.c: adaptivedemux2: Fix download helper with libsoup 3.0.x libsoup 3.0.x dispatches using a single source attached when the session is created, so we need to create the session with the same context that our download thread is later using. 2.74 or 3.1 will dispatch a response using the context which sent the request. However, for any context other than the one that created the session, this will also create and destroy sources, so there's still some slight performance benefit. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1384 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2913> 2022-08-18 09:48:15 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Implement send_event() vfunc Handle select-streams and seek events in an element level send_event() vfunc, so they can be received before any source pads are created. This allows preferred streams to be selected before segment downloading starts. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2912> 2022-08-17 09:11:52 +1000 Jan Schmidt <jan@centricular.com> * gst/multifile/gstsplitmuxsrc.c: splitmuxsrc: Stop pad task before cleanup When stopping the element, make sure the pad task is stopped before destroying the part readers. Closes a race where the pad task might access a freed pointer. Also add a guard against this sort of thing by holding a ref to the reader in the pad loop. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2901> 2022-08-12 20:20:43 +1000 Jan Schmidt <jan@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Avoid crash on reconfiguring. When reconfiguring a stream that never created an output pad, don't access a NULL GstPad pointer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2869> 2022-08-16 19:01:19 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Set parsed=true on ONVIF Timed Metadata caps Inside MP4 the metadata must be properly parsed into frames and in order. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2897> 2022-08-15 14:30:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2bufferpool.c: v4l2bufferpool: Fix debug trace The tracing of the buffer pointer was done on the secondary pointer, which does not match with other traces of the same buffer. This made the trace confusing and less useful. Fixes #1379 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2893> 2022-08-12 21:57:25 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Fix for period switching in live streams When playing live, it's possible that one stream reaches the end of the available playback window and goes to sleep waiting for a manifest update, and the manifest update introduces a new period. In that case, the sleeping stream needs to wake up and go 'properly' EOS before we can advance the input to the new period. Accordingly, make sure that a stream's last_ret value is not marked as EOS if it's just sleeping waiting for a live manifest update. Also fix the output loop to go back and re-check if it's time to switch to the next period after dequeuing and discarding an EOS event. https://livesim.dashif.org/livesim/periods_20/testpic_2s/Manifest.mpd Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2895> 2022-08-11 09:34:58 +0900 Hosang Lee <hosang10.lee@lge.com> * ext/adaptivedemux2/mss/gstmssdemux.c: mssdemux2: Use gsturi structure to form fragment urls Utilize gsturi to form fragment url paths. A token query may contain the string "manifest" and this would lead to improper url creations. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2859> 2022-08-12 13:20:01 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtsp/gstrtspsrc.c: rtspsrc: Consider the actual control base URI also in case the connection URI contains a query string That is, get rid of unnecessary and wrong special-casing. This could always use gst_rtsp_url_get_request_uri_with_control() but as we only have the control base URI as string it is easier to just call gst_uri_join_strings(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2868> 2022-08-11 18:37:18 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/fourcc.h: * gst/isomp4/qtdemux.c: * gst/isomp4/qtdemux.h: * gst/isomp4/qtdemux_types.c: qtdemux: Add reference timestamp meta with UTC times based on the ONVIF Export File Format CorrectStartTime box to outgoing buffers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2525> 2022-08-11 05:17:05 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Fix reference leak of variant stream When switching back to the previous variant stream in gst_hls_demux_change_playlist(), fix a couple of paths that would leak a reference to the previous variant. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2873> 2022-08-11 05:07:10 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Don't leak the datetime in time map structs Add a function to clean up GstHLSTimeMap structs and free the ref on the optional associated GDateTime Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2873> 2022-08-11 05:03:10 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Fix typefind leak and invalid memory access When typefinding aggregates incoming data to a pending typefind buffer and then succeeds in typefinding, it leaks the aggregated buffer, and leaves the caller accessing an unreffed buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2873> 2022-08-11 05:36:15 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: m3u8: Fix memory leaks on parsing Fix memory leaks when parsing of an m3u8 file is incomplete, with EXTINF or EXT-X-PROGRAM-DATE-TIME directives, but no segment url. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2873> 2022-08-11 00:59:50 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: m3u8: Fix memory leak Clear the GValue holding intermediate GstStructure field data. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2873> 2022-08-11 01:01:07 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemuxutils.c: adaptivedemux2: Fix uninitialised memory usage in debug Fix printing uninitialised memory by clearing the GstAdaptiveDemuxClock structure when allocating. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2873> 2022-08-12 02:20:40 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/rtpmanager/gstrtpst2022-1-fecenc.c: rtpst2022-1-fecenc: Drain column packets on EOS Otherwise we won't send the protection packets for the last few packets when a stream ends. Also send EOS on the FEC src row pad immediately, and on the FEC src column pad after draining is complete. This makes it so that the FEC src pads on rtpbin behave the same way as the RTCP src pads on rtpbin when EOS is received on the send_rtp_sink pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2863> 2022-08-11 08:48:08 +0200 Edward Hervey <edward@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Don't use invalid values from failed trex parsing If parsing the fragment default values (`trex` atom) failed, don't try to compute a bogus sample_description_id value. Fixes #1369 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2860> 2022-08-09 09:42:23 +0200 Piotr Brzeziński <piotr@centricular.com> * docs/gst_plugins_cache.json: * gst/videofilter/gstvideoflip.c: videoflip: Add support for 10/12bit planar formats Implements support for I420, I422 and Y444 in 10/12 bit LE/BE variants. I422 is handled separately from the rest, as it needs to consider the endianness of the current format during most transforms. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2788> 2022-08-04 18:09:52 +0800 Haihua Hu <jared.hu@nxp.com> * gst/alpha/gstalpha.c: alpha: fix stride issue when out buffer has padding on right if outbuf has padding on right, need jump to next line use stride, otherwise downstream element will show a wrong picture when use the same stride Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2842> 2022-08-09 00:12:58 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Requeue header buffer when restarting fragment When returning GST_ADAPTIVE_DEMUX_FLOW_RESTART_FRAGMENT for the first segment data, we might need to requeue the header. This was leading to occasional prerolling stalls on HLS live streams with renditions. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2849> 2022-08-07 20:56:49 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Fix buffer leak when resynching Unref the buffer in gst_hls_demux_handle_buffer() when returning GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2849> 2022-08-04 23:54:27 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemuxutils.c: adaptivedemux2: Fix a small race on shutdown Make sure gst_adaptive_demux_loop_cancel_call() never tries to operate on an invalidated main context. Make sure to clear the main context pointer while holding the lock, and to check it in gst_adaptive_demux_loop_cancel_call() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2847> 2022-07-22 03:32:39 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: adaptivedemux2-stream: Silence a compiler warning Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-28 04:17:26 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-private.h: adaptivedemux2: Move internal FLOW_SWITCH return value. Move the internal-only FLOW_SWITCH custom return value to GST_FLOW_CUSTOM_SUCCESS+2 to avoid collision with GST_ADAPTIVE_DEMUX_FLOW_LOST_SYNC Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-20 10:57:41 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.h: adaptivedemux2: Modify custom sync loss flow return Make it a custom sucess and not an error Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-12 10:44:51 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: Always check DSN if required We don't want to consider the candidate as being before the playlist if the DSN don't match Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-11 10:31:42 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/hls/gsthlsdemux.c: adaptivedemux2/hlsdemux2: Handle loss of sync when dowloading. Media playlist updates and fragment downloads happen in an interleaved fashion. When a media playlist update fails *while* a segment is being downloaded, this means we lost synchronization. Properly propagate and handle this Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-08 10:48:05 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Fix initial playlist setup. There is now only a single case where we setup the initial playlist to 0, which is for the very first variant stream. Rendition streams will have the initial playlist "synchronized" against the variant stream media playlist. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-08 10:44:51 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Handle loss of synchronization in live Loss of synchronization happens when the updated media playlist has no relationship to the previous ones. This could happen because of network issues, server issues, etc... When this happens, we take no chance and "reset" ourselves so that we can "seek back to live" against the new updated playlists. Since this happens at the "media playlist update" level, make sure the custom flow return is propagated up. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-08 10:40:33 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Handle synchronously to lost sync We are already in the main scheduler thread, therefore we can do the "seek back to live" directly. This also avoids other pending actions to take place. Also handle the loss of sync when doing manifest updates. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-06 11:44:57 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Prune time maps when possible Add a new method to prune unused time mappings (i.e. which aren't used by any current media playlist). Do that when doing flushing seeks. Could be used in other places later too. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-06-13 15:26:22 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: Allow DSN mismatches when re-syncing playlists Some providers provide completely incompatible DSN across bitrates/renditions, but do keep MSN consistent. If we fail to synchronize playlist with DSN, retry without the DSN taken into account. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2839> 2022-07-12 01:58:30 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Fixes for period switching in the output loop Close some race conditions in switching to the next period, by ensuring the tracks are completely drained first and by not outputting EOS events to the output source pad if there is another period pending. Fixes Manifest_MultiPeriod_1080p.mpd some more. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2838> 2022-07-12 01:55:54 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: adaptivedemux2: stream: Set period has_next_period flag before EOS Before sending EOS, update the period's has_next_period flag and/or create the next period. This closes a race where the output loop might receive the EOS event and either push it downstream (causing premature EOS), or receive it and try and switch to the next period before that period is completely set up. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2838> 2022-07-12 01:24:31 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: adaptivedemux2: period: Rename 'closed' flag to 'has_next_period' The flag is used to tell the output loop that a next period is present, since the output loop can't call the gst_adaptive_demux_has_next_period() method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2838> 2022-07-01 02:07:05 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Recheck for a pending track on drain When a track is completely drained and EOS, but there's a pending track on the slot loop again to switch to that track. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2838> 2022-07-01 02:05:36 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-period.c: adaptivedemux2: Check stream selected instead of state When combining stream flows, ignore streams that are not selected, instead of checking whether the stream state has changed yet. Fixes another issue with dashdemux2 where it fails to change to the next period when playing content with several video, audio and text streams, as with Manifest_MultiPeriod_1080p.mpd when seeking to 730 just before the end of the first period. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2838> 2022-05-25 18:40:30 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/rtsp/gstrtspsrc.c: rtsp+rtmp: Forward warning added to tls-validation-flags to our users With the 2.72 release, glib-networking developers have decided that TLS certificate validation cannot be implemented correctly by them, so they've deprecated it. In a nutshell: a cert can have several validation errors, but there are no guarantees that the TLS backend will return all those errors, and things are made even more complicated by the fact that the list of errors might refer to certs that are added for backwards-compat and won't actually be used by the TLS library. Our best option is to ignore the deprecation and pass the warning onto users so they can make an appropriate security decision regarding this. We can't deprecate the tls-validation-flags property because it is very useful when connecting to RTSP cameras that will never get updates to fix certificate errors. Relevant upstream merge requests / issues: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2214 https://gitlab.gnome.org/GNOME/glib-networking/-/issues/179 https://gitlab.gnome.org/GNOME/glib-networking/-/merge_requests/193 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2494> 2022-07-22 14:51:11 +0200 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/videobox/gstvideobox.c: videobox: avoid dropping caps fields for passthrough caps transform Fixes potential negotiation failure in case downstream element is a bit picky regarding the fields in question. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2786> 2022-07-27 15:44:09 +0200 Adrian Fiergolski <adrian.fiergolski@fastree3d.com> * gst/videofilter/gstvideoflip.c: videoflip: Fix caps negotiation when method is selected The caps negotiation should respect the selected method to the test pipeline below works properly. gst-launch-1.0 videotestsrc ! video/x-raw,width=320,height=600 ! videoflip method=clockwise ! video/x-raw,width=600,height=320 ! fakesink Signed-off-by: Adrian Fiergolski <adrian.fiergolski@fastree3d.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2803> 2022-07-24 23:44:10 -0400 fduncanh <fduncanh@gmail.com> * sys/v4l2/gstv4l2object.c: v4l2object.c: add support for Apple's full-range bt709 colorspace variant Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2793> 2022-07-08 18:22:58 +0800 Elliot Chen <elliot.chen@nxp.com> * sys/v4l2/gstv4l2bufferpool.c: v4l2: fix the critical log when unreference the buffer with no data In the trick mode, driver may queue a valid buffer follow by an empty buffer which has no valid data to indicate EOS.For the empty buffer whose memory is multi-plane, need to resize it before unreference it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2731> 2022-07-15 13:22:14 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/qt/qtglrenderer.cc: qt: Fix another instance of Qt/GStreamer both defining `GLsync` differently In file included from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:87, from ../gst-plugins-good-1.20.3/ext/qt/qtglrenderer.cc:14: ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: error: conflicting declaration 'typedef void* GLsync' 40 | typedef gpointer GLsync; | ^~~~~~ In file included from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtGui/qopengl.h:127, from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsggeometry.h:44, from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsgnode.h:43, from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qsgrendererinterface.h:43, from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/qquickwindow.h:44, from ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtQuick/QQuickWindow:1, from ../gst-plugins-good-1.20.3/ext/qt/qtglrenderer.cc:6: ../gstreamer1.0-plugins-good/1.20.3-r0/recipe-sysroot/usr/include/QtGui/qopengles2ext.h:24:26: note: previous declaration as 'typedef struct __GLsync* GLsync' 24 | typedef struct __GLsync *GLsync; | ^~~~~~ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2763> 2022-07-15 06:40:05 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/osxaudio/gstosxaudiodeviceprovider.c: * sys/osxaudio/gstosxcoreaudiohal.c: osxaudio: Fix deprecation in macOS 12.0 kAudioObjectPropertyElementMaster has been renamed to kAudioObjectPropertyElementMain Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2761> 2022-07-12 21:19:35 +1000 Jan Schmidt <jan@centricular.com> * gst/multifile/gstsplitmuxsink.c: splitmuxsink: Fix memory leak Fix a leak of the buffer info struct when reaching EOS without data on the reference input. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2751> 2022-06-24 13:32:34 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpjitterbuffer.c: rtpjitterbuffer: Fix calculation of RFC7273 RTP time period start This has to be based directly on the current estimated clock time and has to allow for negative period starts. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2655> 2022-04-14 01:19:51 +0900 Seungha Yang <seungha@centricular.com> * gst/multifile/gstsplitmuxsink.c: * tests/check/elements/splitmuxsink.c: splitmuxsink: Don't crash on EOS without buffer Fix a case where upstream pushed EOS without buffers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2174> 2022-06-30 15:15:22 +0000 Thibault Saunier <tsaunier@igalia.com> * gst/rtpmanager/gstrtprtxreceive.c: * gst/rtpmanager/gstrtprtxsend.c: * tests/check/elements/rtprtx.c: rtprtx: Fix copying extension headers There was a typo leading to reading memory from the buffer we were writing to. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2696> 2022-05-28 15:04:10 -0400 fduncanh <fduncanh@gmail.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: replace multiple decoder bug warnings with single one Achieve this by dropping frames after a drain if the driver failed to so. This works around RaspberryPi driver issue [1]. [1] https://github.com/raspberrypi/linux/issues/5059#issuecomment- Fixes #1103 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2518> 2022-06-25 19:23:11 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/udpsink.c: tests: udpsink: make test work in environments without IPv6 Part-fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/939 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2659> 2022-05-28 16:47:42 -0400 fduncanh <fduncanh@gmail.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: replace multiple decoder bug warnings by a single warning (warning due to incorrectly dropped frames at initial caps adjustment) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2517> 2022-06-29 00:51:28 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-period.c: adaptivedemux2: Ignore stopped stream flow state When calculating the combined stream flow state for a period, don't consider stopped streams. Fixes switching to the next period in DASH streams with multiple video/audio/subtitle streams. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2684> 2022-06-29 01:25:41 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: adaptivedemux2: Clean up stream parsebins on finalize Remove the parsebin for a stream from the overall bin when cleaning up the stream, to avoid keeping around old ones when moving between periods Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2676> 2022-06-24 02:54:22 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemuxutils.c: adaptivedemux2: Fix memory leaks and use-after-free Fix various small memory leaks, and an invalid access to GstEvent after giving away the ref via gst_pad_push_event() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2676> 2022-06-24 02:57:54 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux-util.c: hlsdemux2: Fix potential segfault Fix a potential segfault if we receive a ISO-FF stream with moof before moov. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2676> 2022-06-24 02:57:03 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: Fix memory leaks Clean up various memory leaks Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2676> 2022-06-23 19:24:03 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Free current_segment on finalize Avoid a memory leak by making sure to release the current segment on exit if non-NULL Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2676> 2022-06-29 10:55:13 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: coding style: allow declarations after statement See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1243/ and https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/78 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2683> 2022-06-22 03:35:03 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-track.c: adaptivedemux2: track: Fix buffering time calc before output Use the lowest track input time as the output time when calculating track buffering levels before anything has been dequeued. Fixes multi-period DASH not advancing to the next period in some cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2650> 2022-06-22 03:34:19 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-period.c: * ext/adaptivedemux2/gstadaptivedemux-track.c: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: adaptivedemux2: track: Add period number to most debug statements Store the period number the track belongs to, and add it in various debug statements Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2650> 2022-06-22 03:30:16 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: adaptivedemux2: stream: Don't take TRACKS_LOCK when sending EOS event The stream tracks list can't change while we're iterating it from the scheduling thread, and the event handler immediately takes the tracks lock, causing a deadlock. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2650> 2022-06-08 11:17:09 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Improve media playlist updates * When dealing with rendition streams, we attempt to synchronize the media playlist against the variant stream. This helps with speeding up the correct initial fragment search and avoids issues when streams at activated at a much later time. * Also add checks for variant stream existence before attempting to use them Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-06-08 11:16:15 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Only seek on selected streams When handling seeks, there is no need to seek on unselected streams. If they later get activated they will be properly seek onto Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-06-08 09:33:22 +0200 Edward Hervey <edward@centricular.com> * tests/check/elements/hlsdemux_m3u8.c: tests: check: Update hlsdemux2 tests for playlist changes We no longer do auto-magic fallbacks when synchronizing a disconnected playlist. It is handled at a higher level. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-06-03 10:25:34 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: Fix debug return statement Due to latest commits res could have been NULL. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-06-02 09:46:22 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: No longer re-add segments from before the playlist When updating playlists, there is a possibility that the playlists don't perfectly align, but the last entry of the previous playlist is *just* before the first entry of the new playlist. In those cases, we still can transfer the timing information from one playlist to another, but we do not want to return that segment as being the matching one. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-06-01 15:45:23 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: Use variant stream as support for synchronizing playlists When matching playlists, there is a possibility that rendition streams will not have been updated in time (for example because that stream started later, or playback was paused). This would cause several playback failures and seeking failures. In order to still fall back on our feet, attempt to synchronize that rendition playlist against the current variant playlist. This will attempt to match the stream time using SN/DNS/PDT/... Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-23 15:51:23 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/hls/m3u8.h: hlsdemux2: Detect synchronization loss If we have been updating too slowly and have gone out of the current live window, inform the baseclass accordingly. This is different from the case where we have been updating quicker than what the server provides. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-23 15:48:16 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: hlsdemux2: More improvement/fixes to position tracking Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-23 15:43:04 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: adaptivedemux2: Handle loss of synchronization Add a new custom GstFlowReturn so that subclasses can notify that they have lost live synchronization. When that happens, do a flushing seek back to the live position Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-23 09:11:24 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Fix SNAP seek handling * Since only flushing seeks are allowed, the "current" position is always the global output position (and not "some" stream current position). * In terms of figuring out to which stream to "snap" to, we can send it to any selected stream. Removes the requirement of this function to a specific output pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-17 07:16:48 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/gsthlsdemux.h: hlsdemux2: Fix position tracking Remove the "pending advance" hack and instead rely on the base stream current position to track our position (instead of a potentially NULL "current segment"). Also ensure the media playlists are always refreshed with valid stream time, even if there is no current segment. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-17 07:11:17 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/hls/m3u8.h: hlsdemux2: Add a new method to synchronize two media playlist This allows transfering the stream time of the playlist to an updated variant/rendition. This allows updating that information without having a "current segment" Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-17 07:07:23 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: Initialize and use stream start/current position The stream start and current position would be properly set when seeking or activating a stream after playback started. But it would never be properly initialized. Set it to NONE initially to indicate to subclasses that no position has been tracked yet. This will allow them to detect initial stream usage. Futhermore, once the initial streams setup is done, make sure that it is set to a valid initial value: * The minimum stream time in live * Or else the period start Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2679> 2022-05-19 15:51:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: Fix activation of internal pool If the driver does not support VIDIOC_CREATE_BUFS ioctl, the pool configuration may get changed, which requires a validation. This would fail to activate a pool in a case it shouldn't normally fail unless we are out of memory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2456> 2022-06-28 01:29:06 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/dv/meson.build: dv, opusparse: fix duplicate symbols in static build Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1262 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2670> 2022-06-25 19:50:10 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/meson.build: tests: skip unit tests for dependency-less elements that have been disabled Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1136 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2660> 2022-06-24 12:10:02 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/examples/jack/meson.build: examples: don't try and build jack examples if jack was disabled Fixes meson build ERROR: Unknown variable "libjack_dep". Fixes #1301 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2656> 2022-06-17 14:02:54 +0200 Marc Leeman <m.leeman@televic.com> * gst/rtpmanager/rtpsession.c: rtpsession: properly initialise favor-new property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2625> 2022-05-27 11:20:06 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux-util.c: hlsdemux2: Look for mpegts synchronization point further Some mpeg-ts streams have extra data at the beginning. While it's not ideal, we should be able to cope with it. Therefore increase the initial search window for at least 4 consecutive synchronization points to 1kB. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2626> 2022-05-18 10:23:15 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/matroska/matroska-demux.c: matroskademux: Avoid integer-overflow resulting in heap corruption in WavPack header handling code blocksize + WAVPACK4_HEADER_SIZE might overflow gsize, which then results in allocating a very small buffer. Into that buffer blocksize data is memcpy'd later which then causes out of bound writes and can potentially lead to anything from crashes to remote code execution. Thanks to Adam Doupe for analyzing and reporting the issue. CVE: CVE-2022-1920 https://gstreamer.freedesktop.org/security/sa-2022-0004.html Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1226 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2612> 2022-05-30 10:15:37 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/qtdemux.c: qtdemux: Fix integer overflows in zlib decompression code Various variables were of smaller types than needed and there were no checks for any overflows when doing additions on the sizes. This is all checked now. In addition the size of the decompressed data is limited to 200MB now as any larger sizes are likely pathological and we can avoid out of memory situations in many cases like this. Also fix a bug where the available output size on the next iteration in the zlib decompression code was provided too large and could potentially lead to out of bound writes. Thanks to Adam Doupe for analyzing and reporting the issue. CVE: tbd https://gstreamer.freedesktop.org/security/sa-2022-0003.html Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2610> 2022-05-18 11:24:37 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/matroska/matroska-read-common.c: matroskademux: Fix integer overflows in zlib/bz2/etc decompression code Various variables were of smaller types than needed and there were no checks for any overflows when doing additions on the sizes. This is all checked now. In addition the size of the decompressed data is limited to 120MB now as any larger sizes are likely pathological and we can avoid out of memory situations in many cases like this. Also fix a bug where the available output size on the next iteration in the zlib/bz2 decompression code was provided too large and could potentially lead to out of bound writes. Thanks to Adam Doupe for analyzing and reporting the issue. CVE: CVE-2022-1922, CVE-2022-1923, CVE-2022-1924, CVE-2022-1925 https://gstreamer.freedesktop.org/security/sa-2022-0002.html Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2610> 2022-05-18 12:00:48 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/avi/gstavidemux.c: avidemux: Fix integer overflow resulting in heap corruption in DIB buffer inversion code Check that width*bpp/8 doesn't overflow a guint and also that height*stride fits into the provided buffer without overflowing. Thanks to Adam Doupe for analyzing and reporting the issue. CVE: CVE-2022-1921 See https://gstreamer.freedesktop.org/security/sa-2022-0001.html Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1224 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2608> 2022-05-19 04:16:25 +0000 Adam Doupe <adamdoupe@gmail.com> * gst/smpte/gstmask.c: smpte: Fix integer overflow with possible heap corruption in GstMask creation. Check that width*height*sizeof(guint32) doesn't overflow when allocated user_data for mask, potential for heap overwrite when inverting. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1231 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2603> 2022-06-14 23:03:26 +0200 Piotr Brzeziński <piotr@centricular.com> * ext/adaptivedemux2/dash/gstmpd-prelude.h: * ext/adaptivedemux2/dash/gstmpdhelper.h: * ext/adaptivedemux2/dash/gstmpdnode.h: * ext/adaptivedemux2/dash/gstmpdparser.h: * ext/adaptivedemux2/dash/gstxmlhelper.h: * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/gsthlselement.c: * ext/adaptivedemux2/hls/gsthlselements.h: * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/mss/gstmss-prelude.h: * ext/adaptivedemux2/mss/gstmssdemux.c: * ext/adaptivedemux2/mss/gstmssdemux.h: * ext/adaptivedemux2/mss/gstmssfragmentparser.h: * ext/adaptivedemux2/mss/gstmssmanifest.h: * ext/soup/gstsouploader.c: * ext/soup/gstsouploader.h: * tests/check/elements/hlsdemux_m3u8.c: adaptivedemux2: Prevent duplicate symbols on static builds Uses prelude header files with #defines to rename DASH and MSS symbols duplicated in their old standalone versions. Also redefines soup-related functions when building it for adaptivedemux2 to prevent symbol conflicts there. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2534> 2022-05-12 02:51:00 +1000 Jan Schmidt <jan@centricular.com> * ext/adaptivedemux2/gstadaptivedemux-track.c: * ext/adaptivedemux2/gstadaptivedemux.h: adaptivedemux2: Improve reverse playback buffering. In reverse playback, store the lowest running time in each GOP as the input_time for buffering purposes. That means we end up storing at least a complete GOP before declaring buffering 100% Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2510> 2022-04-08 23:06:09 +1000 Jan Schmidt <jan@centricular.com> * docs/gst_plugins_cache.json: * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux-track.c: * ext/adaptivedemux2/gstadaptivedemux.c: adaptivedemux2: reverse playback running times Account for running time moving non-monotonically in reverse playback by tracking the highest running time seen at each point. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2510> 2022-04-06 12:56:30 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/adaptivedemux2/hls/m3u8.h: * gst/rtpmanager/gstrtpjitterbuffer.c: * gst/rtpmanager/gstrtpst2022-1-fecenc.c: * gst/udp/gstudpelement.c: * meson.build: Bump GLib requirement to >= 2.62 Can't require 2.64 yet because of https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2568> 2022-06-08 14:11:57 +0200 Marc Leeman <m.leeman@televic.com> * docs/gst_plugins_cache.json: * gst/udp/gstmultiudpsink.c: fix trivial distination -> destination Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2573> 2022-04-21 12:47:31 +0200 Ignacio Casal Quinteiro <qignacio@amazon.com> * sys/osxaudio/gstosxcoreaudiohal.c: osxaudio: remove usage of goto It is easier to follow the code without the goto now Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251> 2022-03-30 12:59:46 +0200 Ignacio Casal Quinteiro <qignacio@amazon.com> * sys/osxaudio/gstosxcoreaudiohal.c: osxaudio: support hidden devices macOS features hidden devices. These are devices that will not be shown in the macOS UIs and that cannot be retrieved without having the specific UID of the hidden device. There are cases when you might want to have a hidden device, for example when having a virtual speaker that forwards the data to a virtual hidden input device from which you can then grab the audio. The blackhole project supports these hidden devices and this patch provides a way that if the device id is a hidden device it will use it instead of check the hardware list of devices to understand if the device is valid. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251> 2022-04-20 18:12:02 +0200 Ignacio Casal Quinteiro <qignacio@amazon.com> * sys/osxaudio/gstosxcoreaudiohal.c: osx: fix indent Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251> 2022-03-30 12:48:02 +0200 Ignacio Casal Quinteiro <qignacio@amazon.com> * sys/osxaudio/gstosxcoreaudiohal.c: osxaudio: iterate device only if needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251> 2022-03-30 09:59:59 +0200 Ignacio Casal Quinteiro <qignacio@amazon.com> * sys/osxaudio/gstosxcoreaudiohal.c: osxaudio: reduce scope of default device id variable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251> 2022-06-07 17:31:43 +0200 Bastien Nocera <hadess@hadess.net> * ext/gtk/gtkgstglwidget.c: gtk: Fix double-free when OpenGL can't be initialised gtk_gl_area_get_error() doesn't return a copy of the error, but just the error. If initialising OpenGL fails, then GtkGstGLWidget will consume the error, and cause GTK to try and display freed memory. ==50914== Invalid read of size 8 ==50914== at 0x4C4CB8A: gtk_gl_area_draw_error_screen (gtkglarea.c:663) ==50914== by 0x4C4CB8A: gtk_gl_area_draw (gtkglarea.c:687) ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) ==50914== by 0x4D4B6BF: gtk_stack_render (gtkstack.c:2207) ==50914== by 0x4BB4B03: gtk_css_custom_gadget_draw (gtkcsscustomgadget.c:159) ==50914== by 0x4BBA4C4: gtk_css_gadget_draw (gtkcssgadget.c:885) ==50914== by 0x4D4D780: gtk_stack_draw (gtkstack.c:2119) ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) ==50914== by 0x4BAF0C3: gtk_container_draw (gtkcontainer.c:3674) ==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084) ==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854) ==50914== Address 0x187a0818 is 8 bytes inside a block of size 16 free'd ==50914== at 0x48480E4: free (vg_replace_malloc.c:872) ==50914== by 0x49A5B8C: g_free (gmem.c:218) ==50914== by 0x49C1013: g_slice_free1 (gslice.c:1183) ==50914== by 0x4990DE4: g_error_free (gerror.c:870) ==50914== by 0x4990FE9: g_clear_error (gerror.c:1052) ==50914== by 0x1A489780: _get_gl_context (gtkgstglwidget.c:540) ==50914== by 0x1A4863CB: gst_gtk_invoke_func (gstgtkutils.c:39) ==50914== by 0x49A3834: g_main_context_invoke_full (gmain.c:6137) ==50914== by 0x1A486450: gst_gtk_invoke_on_main (gstgtkutils.c:59) ==50914== by 0x1A48A29E: gtk_gst_gl_widget_init_winsys (gtkgstglwidget.c:632) ==50914== by 0x1A4887E7: gst_gtk_gl_sink_start (gstgtkglsink.c:267) ==50914== by 0x6579810: gst_base_sink_change_state (gstbasesink.c:5662) ==50914== Block was alloc'd at ==50914== at 0x484586F: malloc (vg_replace_malloc.c:381) ==50914== by 0x49A9278: g_malloc (gmem.c:125) ==50914== by 0x49C1BA5: g_slice_alloc (gslice.c:1072) ==50914== by 0x49C3BCC: g_slice_alloc0 (gslice.c:1098) ==50914== by 0x499096B: g_error_allocate (gerror.c:708) ==50914== by 0x4990AF1: UnknownInlinedFun (gerror.c:722) ==50914== by 0x4990AF1: g_error_copy (gerror.c:892) ==50914== by 0x4C4B9F9: gtk_gl_area_set_error (gtkglarea.c:1036) ==50914== by 0x4C4BAF7: gtk_gl_area_real_create_context (gtkglarea.c:346) ==50914== by 0x4B21B28: _gtk_marshal_OBJECT__VOIDv (gtkmarshalers.c:2730) ==50914== by 0x4920B78: UnknownInlinedFun (gclosure.c:893) ==50914== by 0x4920B78: g_signal_emit_valist (gsignal.c:3406) ==50914== by 0x4920CB2: g_signal_emit (gsignal.c:3553) ==50914== by 0x4C4B927: gtk_gl_area_realize (gtkglarea.c:308) Reproduced by running: MESA_GL_VERSION_OVERRIDE=2.7 totem See https://gitlab.gnome.org/GNOME/totem/-/issues/522 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2565> 2022-06-06 12:31:52 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/flv/gstflvdemux.c: * gst/flv/gstflvdemux.h: flvdemux: Make use of the streams API if used in a streams-aware bin This allows adding audio/video streams after 6s. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2559> 2022-06-03 18:35:54 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/audioparsers/gstaacparse.c: aacparse: Avoid mismatch between src_caps and output_header_type If our downstream caps didn't intersect, we attempted to convert between raw and ADTS stream formats, if possible. If the caps still did not intersect, we then used the modified `src_caps` but left the `output_header_type` unmodified. This caused a mismatch between caps and actual stream format. Avoid this by first copying the `src_caps` to `convcaps` for the additional intersection tests, replacing `src_caps` if we succeed. While we're here, clean up the code a bit and remove the `codec_data` field from outgoing ADTS caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2550> 2022-06-04 10:27:09 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/flv/gstflvdemux.c: * gst/flv/gstflvelement.c: flvdemux: Actually make use of the debug category Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2552> 2022-06-01 16:14:24 +0200 Stéphane Cerveau <scerveau@collabora.com> * ext/soup/gstsoup.c: * ext/soup/gstsoupelement.c: * ext/soup/gstsouploader.c: soup: fix soup debug category Use soup debug category in souploader for soup plugin element load. Inititalize properly soup utils category. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2535> 2022-05-29 06:05:27 +0900 Seungha Yang <seungha@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hlsdemux2: Adjust debug log level HLS manifest might not be represented by a single common caps when different codecs are mixed in a playlist, but it does not seem to be a critical issue we need to warn. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2516> 2022-05-02 16:55:34 +0200 Stéphane Cerveau <scerveau@collabora.com> * ext/adaptivedemux2/dash/gstdashdemux.c: * ext/adaptivedemux2/dash/gstdashdemux.h: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemuxelement.c: * ext/adaptivedemux2/gstadaptivedemuxelements.h: * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/gsthlsdemux.h: * ext/adaptivedemux2/meson.build: * ext/adaptivedemux2/mss/gstmssdemux.c: * ext/adaptivedemux2/mss/gstmssdemux.h: * ext/adaptivedemux2/plugin.c: adaptivedemux2: 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 categories properly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2348> 2022-05-29 20:27:38 +1000 Jan Schmidt <jan@centricular.com> * gst/rtpmanager/gstrtpptdemux.c: rtpptdemux: Don't GST_FLOW_ERROR when ignoring invalid packets https://bugzilla.gnome.org/show_bug.cgi?id=741398 changed rtpptdemux in 2014 to not post a GST_ELEMENT_ERROR on the bus when dropping an invalid (non-RTP) packet, but still returned GST_FLOW_ERROR upstream - so the pipeline still stops, but now without a useful bus error. Return GST_FLOW_OK instead, so the pipeline keeps running. Some old telephony equipment can send invalid packets before the real RTP traffic starts. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2520> 2022-05-28 16:46:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/jack/gstjackaudiosrc.c: jack: Always use jack_free as specified by the docs Fixes a crash on Windows due to a CRT mismatch. The JACK installation still uses MSVCRT, and we the Universal CRT for both MinGW and MSVC. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2497> 2022-05-26 01:21:43 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/jack/meson.build: 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/2497> 2022-05-24 16:07:13 +0800 Hou Qi <qi.hou@nxp.com> * sys/v4l2/gstv4l2object.c: 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/2475> 2022-05-25 13:00:58 +0200 Piotrek Brzeziński <piotr@centricular.com> * gst/cutter/gstcutter.c: * gst/cutter/gstcutter.h: cutter: Include running/stream-time in messages Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2490> 2022-05-03 11:34:15 +0200 Stéphane Cerveau <scerveau@collabora.com> * ext/soup/gstsoup.c: * ext/soup/gstsoupelement.c: * ext/soup/gstsoupelements.h: * ext/soup/gstsouphttpclientsink.c: * ext/soup/gstsouphttpsrc.c: 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/2349> 2022-05-23 21:24:40 -0400 Eli Schwartz <eschwartz@archlinux.org> * meson.build: 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 b93e37592a3ccc0eaece1c8fef2d362b1e5fe685, 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/2484> 2022-05-19 16:33:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: Fix missing handling of resolution-change The pool process function may poll and get the resolution-change event whenever it is not possible to share our buffers. This typically happen when downstream does not support GstVideoMeta. Not handling this would cause the decoder thread to exit silently and the pipeline to stall. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2457> 2022-05-19 16:39:14 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: Downgrade to info resolution-change trace Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2457> 2022-05-23 20:23:38 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/shout2/gstshout2.c: * ext/shout2/gstshout2.h: * ext/shout2/meson.build: shout2: fix compiler warnings and bump req to libshout >= 2.4.2 Fix compiler warnings with latest libshout version (2.4.6). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2473> 2022-05-14 14:58:04 +0200 László Károlyi <laszlo@karolyi.hu> * docs/gst_plugins_cache.json: * ext/shout2/gstshout2.c: * ext/shout2/gstshout2.h: shout2send: Adding send-title-info and user-agent options Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2420> 2022-05-19 11:47:57 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/qtdemux.c: * gst/isomp4/qtdemux.h: qtdemux: Add support for ONVIF XML Timed MetaData Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453> 2022-05-19 11:30:20 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/fourcc.h: * gst/isomp4/qtdemux_dump.c: * gst/isomp4/qtdemux_types.c: qtdemux: Add parsing/dumping of nmhd / metx boxes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453> 2022-05-19 11:06:31 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/fourcc.h: * gst/isomp4/qtdemux.c: qtdemux: Parse styp box for informational purposes And include some more details in the debug logs for the ftyp box too. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453> 2022-05-10 16:20:46 +0800 Hou Qi <qi.hou@nxp.com> * sys/v4l2/gstv4l2object.c: v4l2: set default resolution if caps has no such information Output may attemp to set the width and height to zero values if caps has no such information, which will cause capture get invalid dimensions. Then decoder reports negotiation failure. So need to set default resolution if caps has no such information. Real values can be set again until source change event is signaled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2400> 2022-05-17 05:21:19 +1000 Jan Schmidt <jan@centricular.com> * gst/multifile/gstsplitmuxpartreader.c: splitmuxsrc: Re-queue sticky events after probing. When processing the first event after probing the file and being activated, requeue sticky events as there's no requirement that demuxers send tag and other events again after a seek - that's why they're sticky. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2432> 2022-05-16 14:14:46 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/gstdeinterlace.c: 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/2428> 2022-05-16 14:40:41 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/multifile/gstsplitmuxsink.c: * gst/multifile/gstsplitmuxsink.h: splitmuxsink: When flushing, exit handle_mq_input quickly If we just break the loop, we might run into the `gop != NULL` assert that follows it. Rather, exit immediately with flushing flow. Also use this flushing mechanism when we release a pad. This avoids having an extra flag. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1030> 2021-01-26 16:33:25 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/multifile/gstsplitmuxsink.c: splitmuxsink: Avoid deadlock on release, harder Unlock after broadcasting and wait for the pad to be free before relocking the muxer, giving the input probe a chance to react to our broadcast. Improves the fix from https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/838. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1030> 2022-05-16 19:31:18 +0900 Shingo Kitagawa <shingogo@hotmail.co.jp> * gst/wavparse/gstwavparse.c: wavparse: fix typo in debug message Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2425> 2022-05-13 01:42:21 +0000 Thibault Saunier <tsaunier@igalia.com> * gst/rtpmanager/gstrtpbin.c: rtpbin: Avoid holding lock GST_RTP_BIN_LOCK when emitting pad-added Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2411> 2022-05-12 17:11:38 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/qtdemux.c: 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/2409> 2022-05-11 16:20:42 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/vpx/gstvpxenc.c: * ext/vpx/gstvpxenc.h: vpxenc: enforce strictly increasing pts From vpx_codec_encode() documentation: "The presentation time stamp (PTS) MUST be strictly increasing." Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2405> 2022-05-11 15:37:44 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/vpx/gstvpxenc.c: vpxenc: conver input pts to running time The input pts needs to be strictly increasing, see vpx_codec_encode() doc, so convert it to running time as we don't want to reset the encoder for each segment. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2405> 2022-05-11 15:18:42 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/vpx/gstvpxenc.c: 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/2405> 2022-04-28 09:19:57 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2videoenc.c: 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/2329> 2022-05-05 20:36:04 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/gstqtmux.c: 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/2372> 2022-05-05 20:24:57 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/flv/gstflvmux.c: 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/2372> 2022-05-03 17:27:32 +1000 Matthew Waters <matthew@centricular.com> * gst/wavparse/gstwavparse.c: 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/2356> 2022-04-29 23:33:47 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Free CNAME/SSRC mappings on finalize and PAUSED->READY Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2336> 2022-04-29 23:13:15 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpjitterbuffer.c: rtpmanager: Refactor RTCP packet loops to fix control flow Mixing C loops with switch statements is a bad idea as break has a different meaning in both. Breaking inside the switch statements wrongly caused further loop iterations. Instead use goto to get out of the loop and continue to do another loop iteration, and never ever use break except for the end of a case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2336> 2022-04-28 00:58:30 +0900 Seungha Yang <seungha@centricular.com> * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Initialize variables Avoid use of uninitialized variable Fixing MSVC warning gstrtpjitterbuffer.c(4733) : warning C4700: uninitialized local variable 'have_sdes' used Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2315> 2022-04-28 10:49:55 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/mss/gstmssdemux.c: mssdemux2: Don't expose/use streams we can't handle yet Avoids issues further down Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2319> 2022-04-28 10:46:34 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/mss/gstmssdemux.c: * ext/adaptivedemux2/mss/gstmssmanifest.c: * ext/adaptivedemux2/mss/gstmssmanifest.h: mssdemux2: Ensure stream/track uniqueness If there is more than one track of the same type (say audio), we would end up creating several stream/types with the same name. Instead use the MSS stream name property to make them unique Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2319> 2022-04-27 12:24:23 +0900 dongil.park <dongil.park@lge.com> * gst/wavparse/gstwavparse.c: 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/2305> 2022-04-26 22:17:51 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: add the reference timestamp meta in more situations Previously, we only added it when actually performing synchronization based on the NTP time. The information can be useful downstream in other situations too, and we can compute a NTP time as soon as we get a sender report with the relevant information. Co-authored-by: Mathieu Duponchelle <mathieu@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2252> 2022-04-20 17:35:29 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtp/gstrtpgstpay.c: * gst/rtp/gstrtpgstpay.h: rtpgstpay: Don't push packets before the first input buffer is received It's not possible to create a valid RTP timestamp for them, which would cause a potentially very big RTP timestamp discontinuity between those first packets (created from initial events) and the packet based on the first input buffer. As a side-effect, also simplify the packet aggregation code a bit and work with only a single level of buffer lists. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1157 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2250> 2022-04-22 12:19:03 +0200 Havard Graff <havard@pexip.com> * gst/rtpmanager/rtptwcc.c: rtptwcc: don't map the buffer twice ...and use the pt extracted rather than the one from RTPPacketInfo when logging. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2271> 2022-04-22 02:41:16 +0000 Thibault Saunier <tsaunier@igalia.com> * gst/rtpmanager/rtpsession.c: rtpsession: Emit "notify::stats" when we update stats from RR or SR Sensibily optimizing caching the pspecs and using them directly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2266> 2022-04-23 01:57:53 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/rtp/gstrtpredenc.c: * gst/rtp/gstrtpredenc.h: rtpredenc: quieten warning about ignoring header extensions Turn it into a FIXME, and only log once Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2279> 2021-02-01 10:36:42 +0100 Havard Graff <havard.graff@gmail.com> * gst/rtpmanager/gstrtprtxsend.c: * tests/check/elements/rtprtx.c: rtprtxsend: mark RTX buffers with GST_RTP_BUFFER_FLAG_RETRANSMISSION It is useful for elements downstream from rtxsend to know if the RTP buffer they are dealing with is an RTX buffer or not. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2272> 2022-04-19 18:40:31 -0400 Tristan Matthews <tmatth@videolan.org> * docs/gst_plugins_cache.json: * gst/isomp4/gstqtmux.c: mp4mux: fix spelling Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2241> 2022-01-21 14:21:18 +0100 Jonas Bonn <jonas@norrbonn.se> * gst/udp/gstmultiudpsink.c: multiudpsink: allow binding to IPv6 address When the sink is configured to create sockets with an explicit bind address, then the created socket gets set to the udp_socket field irregardless of whether the bind address indicated that the socket family should be IPv4 or IPv6. When binding to an IPv6 address, this results in the following error: gstmultiudpsink.c:1285:gst_multiudpsink_configure_client:<rtcpsink> error: Invalid address family (got 10) This patch adds a check of the address family being bound to and sets the created socket to used_socket or used_socket_v6, accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1551> 2022-04-18 18:20:00 +0900 Camilo Celis Guzman <camilo@pexip.com> * tests/check/elements/rtphdrextsdes.c: rtphdrextsdes: fixup test trying to g_free a local variable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2235> 2022-04-21 11:47:55 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/m3u8.c: hls/m3u8: Fix starting segment for live playlist RFC 8216 6.3.3 "Playing the Media Playlist File" : states that for live media playlists "the client SHOULD NOT choose a segment that starts less than three target durations from the end of the Playlist file" This is an off-by-one error. Since we are looking for the "index" of the segment, we need to subtract 1 from the searched position. Ex: For a playlist with 12 entries, we want to start playback on the 9th segment ... which is at index 8. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2259> 2022-04-20 14:50:35 +0200 Edward Hervey <edward@centricular.com> * ext/adaptivedemux2/hls/gsthlsdemux-util.c: hls: Relax webvtt checks If no hour field is present (which is allowed), the remaining data can be less than 15 character. Fix time translation failures if the hour field wasn't present Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2248> 2022-04-20 10:53:16 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpfunnel.c: * gst/rtpmanager/gstrtpjitterbuffer.c: * gst/rtpmanager/gstrtpsession.c: * gst/rtpmanager/gstrtputils.c: * gst/rtpmanager/gstrtputils.h: * gst/rtpmanager/meson.build: * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtptwcc.c: rtpmanager: Move some duplicated constant and helper function to a single place Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-18 16:22:50 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpjitterbuffer.c: rtpbin/rtpjitterbuffer: Don't parse RTCP SRs twice unless needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-18 11:50:48 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpjitterbuffer.c: rtpjitterbuffer: Add property to throttle handling of RTCP SR / NTP-64 syncing This proxies the "rtcp-sync-interval" property of rtpbin. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-11 19:14:43 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsession.h: rtpsession: Handle RTCP-SR-REQ (RFC6051) RTCP feedback message This causes an RTCP SR to be sent at the earliest possible time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-11 19:25:43 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpjitterbuffer.c: rtpbin/rtpjitterbuffer: Allow syncing to an SR without CNAME if the CNAME is already known The RTCP SR packet might be without SDES in case of a reduced-size RTCP packet. For syncing purposes the CNAME is needed but it might be known already from an earlier RTCP packet or out of band, via the SDP for example. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-07 18:59:07 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpjitterbuffer.c: rtpbin/jitterbuffer: Use inband 64-bit NTP timestamps according to RFC6051 for faster synchronization When signalled via the caps that the header extension is used, it will be read and used in the same way as the RTP/NTP time mapping from RTCP SRs. If the CNAME of the stream's SSRC is provided out of band via e.g. the SDP then this allows streams to be synchronized immediately on the first packet instead of having to wait for the first RTCP SR to arrive. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/383 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-09 11:00:52 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpsession.c: rtpsession: Only add send latency to the running time if it is actually known Otherwise we can't know the running time yet if rtcp-sync-send-time is set, and have to wait until the latency is known later. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-06 15:39:14 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/gstrtpsession.c: * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtpsession.h: * gst/rtpmanager/rtpstats.h: rtpsession: Update 64-bit NTP header extensions with the actual NTP time in senders Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-04-05 20:05:57 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtphdrext-ntp.c: * gst/rtpmanager/gstrtphdrext-ntp.h: * gst/rtpmanager/gstrtpmanager.c: * gst/rtpmanager/meson.build: rtpmanager: Add header extension implementation for the 64-bit RFC6051 NTP header extension Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132> 2022-03-25 10:18:34 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: Always define ENABLE_NLS GLib guarantees libintl API is always available, provided by proxy-libintl as last resort. GLib itself unconditionally define ENABLE_NLS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2022-03-25 10:20:24 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst-libs/gst/gettext.h: * gst-libs/gst/gst-i18n-plugin.h: Delete unused i18n headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2022-03-25 09:59:23 -0400 Xavier Claessens <xavier.claessens@collabora.com> * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/mss/gstmssdemux.c: * ext/flac/gstflacdec.c: * ext/flac/gstflacelement.c: * ext/jack/gstjackaudiosink.c: * ext/jack/gstjackaudiosrc.c: * ext/jpeg/gstjpegdec.c: * ext/lame/gstlamemp3enc.c: * ext/lame/plugin.c: * ext/libpng/gstpngdec.c: * ext/pulse/gstpulseelement.c: * ext/pulse/pulsesink.c: * ext/shout2/gstshout2.c: * ext/soup/gstsoup.c: * ext/soup/gstsoupelement.c: * ext/soup/gstsouphttpsrc.c: * ext/twolame/gsttwolamemp2enc.c: * ext/wavpack/gstwavpackelement.c: * gst/apetag/gstapedemux.c: * gst/avi/gstavidemux.c: * gst/avi/gstavielement.c: * gst/avi/gstavimux.c: * gst/icydemux/gsticydemux.c: * gst/id3demux/gstid3demux.c: * gst/isomp4/gstisomp4element.c: * gst/isomp4/isomp4-plugin.c: * gst/isomp4/qtdemux.c: * gst/multifile/gstsplitmuxsrc.c: * gst/rtsp/gstrtspelement.c: * gst/rtsp/gstrtspsrc.c: * gst/wavparse/gstwavparse.c: * sys/oss/gstossaudio.c: * sys/oss/gstossaudioelement.c: * sys/oss/gstosshelper.c: * sys/oss/gstosssink.c: * sys/oss/gstosssrc.c: * sys/oss4/oss4-audio.c: * sys/oss4/oss4-sink.c: * sys/oss4/oss4-source.c: * sys/osxaudio/gstosxaudioringbuffer.c: * sys/rpicamsrc/gstrpicamsrcdeviceprovider.c: * sys/v4l2/gstv4l2.c: * sys/v4l2/gstv4l2bufferpool.c: * sys/v4l2/gstv4l2element.c: * sys/v4l2/gstv4l2fwhtenc.c: * sys/v4l2/gstv4l2h263enc.c: * sys/v4l2/gstv4l2h264enc.c: * sys/v4l2/gstv4l2h265enc.c: * sys/v4l2/gstv4l2jpegenc.c: * sys/v4l2/gstv4l2mpeg4enc.c: * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2radio.c: * sys/v4l2/gstv4l2sink.c: * sys/v4l2/gstv4l2src.c: * sys/v4l2/gstv4l2transform.c: * sys/v4l2/gstv4l2videodec.c: * sys/v4l2/gstv4l2videoenc.c: * sys/v4l2/gstv4l2vp8enc.c: * sys/v4l2/gstv4l2vp9enc.c: * sys/v4l2/v4l2_calls.c: * sys/ximage/gstximagesrc.c: Replace gst-i18n-*.h with gi18n-lib.h GLib guarantees libintl is always present, using proxy-libintl as last resort. There is no need to mock gettex API any more. This fix static build on Windows because G_INTL_STATIC_COMPILATION must be defined before including libintl.h, and glib does it for us as part as including glib.h. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028> 2022-04-19 09:52:51 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/dash_mpd.c: tests: dash_mpd: fix linker issues with non-optimizing compilers undefined reference to `download_request_take_buffer' Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2117#note_1344646 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2228> 2021-11-12 20:13:10 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * docs/gst_plugins_cache.json: 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/1344> 2022-03-11 17:11:50 +0100 Edward Hervey <edward@centricular.com> * docs/gst_plugins_cache.json: * docs/meson.build: * ext/adaptivedemux2/dash/gstdash_debug.h: * ext/adaptivedemux2/dash/gstdashdemux.c: * ext/adaptivedemux2/dash/gstdashdemux.h: * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c: * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.h: * ext/adaptivedemux2/dash/gstmpdbaseurlnode.c: * ext/adaptivedemux2/dash/gstmpdbaseurlnode.h: * ext/adaptivedemux2/dash/gstmpdclient.c: * ext/adaptivedemux2/dash/gstmpdclient.h: * ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.c: * ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.h: * ext/adaptivedemux2/dash/gstmpddescriptortypenode.c: * ext/adaptivedemux2/dash/gstmpddescriptortypenode.h: * ext/adaptivedemux2/dash/gstmpdhelper.c: * ext/adaptivedemux2/dash/gstmpdhelper.h: * ext/adaptivedemux2/dash/gstmpdlocationnode.c: * ext/adaptivedemux2/dash/gstmpdlocationnode.h: * ext/adaptivedemux2/dash/gstmpdmetricsnode.c: * ext/adaptivedemux2/dash/gstmpdmetricsnode.h: * ext/adaptivedemux2/dash/gstmpdmetricsrangenode.c: * ext/adaptivedemux2/dash/gstmpdmetricsrangenode.h: * ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.c: * ext/adaptivedemux2/dash/gstmpdmultsegmentbasenode.h: * ext/adaptivedemux2/dash/gstmpdnode.c: * ext/adaptivedemux2/dash/gstmpdnode.h: * ext/adaptivedemux2/dash/gstmpdparser.c: * ext/adaptivedemux2/dash/gstmpdparser.h: * ext/adaptivedemux2/dash/gstmpdperiodnode.c: * ext/adaptivedemux2/dash/gstmpdperiodnode.h: * ext/adaptivedemux2/dash/gstmpdprograminformationnode.c: * ext/adaptivedemux2/dash/gstmpdprograminformationnode.h: * ext/adaptivedemux2/dash/gstmpdreportingnode.c: * ext/adaptivedemux2/dash/gstmpdreportingnode.h: * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c: * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.h: * ext/adaptivedemux2/dash/gstmpdrepresentationnode.c: * ext/adaptivedemux2/dash/gstmpdrepresentationnode.h: * ext/adaptivedemux2/dash/gstmpdrootnode.c: * ext/adaptivedemux2/dash/gstmpdrootnode.h: * ext/adaptivedemux2/dash/gstmpdsegmentbasenode.c: * ext/adaptivedemux2/dash/gstmpdsegmentbasenode.h: * ext/adaptivedemux2/dash/gstmpdsegmentlistnode.c: * ext/adaptivedemux2/dash/gstmpdsegmentlistnode.h: * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.c: * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.h: * ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.c: * ext/adaptivedemux2/dash/gstmpdsegmenttimelinenode.h: * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c: * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.h: * ext/adaptivedemux2/dash/gstmpdsnode.c: * ext/adaptivedemux2/dash/gstmpdsnode.h: * ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.c: * ext/adaptivedemux2/dash/gstmpdsubrepresentationnode.h: * ext/adaptivedemux2/dash/gstmpdsubsetnode.c: * ext/adaptivedemux2/dash/gstmpdsubsetnode.h: * ext/adaptivedemux2/dash/gstmpdurltypenode.c: * ext/adaptivedemux2/dash/gstmpdurltypenode.h: * ext/adaptivedemux2/dash/gstmpdutctimingnode.c: * ext/adaptivedemux2/dash/gstmpdutctimingnode.h: * ext/adaptivedemux2/dash/gstxmlhelper.c: * ext/adaptivedemux2/dash/gstxmlhelper.h: * ext/adaptivedemux2/downloadhelper.c: * ext/adaptivedemux2/downloadhelper.h: * ext/adaptivedemux2/downloadrequest.c: * ext/adaptivedemux2/downloadrequest.h: * ext/adaptivedemux2/gstadaptivedemux-period.c: * ext/adaptivedemux2/gstadaptivedemux-private.h: * ext/adaptivedemux2/gstadaptivedemux-stream.c: * ext/adaptivedemux2/gstadaptivedemux-track.c: * ext/adaptivedemux2/gstadaptivedemux.c: * ext/adaptivedemux2/gstadaptivedemux.h: * ext/adaptivedemux2/gstadaptivedemuxutils.c: * ext/adaptivedemux2/gstadaptivedemuxutils.h: * ext/adaptivedemux2/gstisoff.c: * ext/adaptivedemux2/gstisoff.h: * ext/adaptivedemux2/hls/gsthlsdemux-util.c: * ext/adaptivedemux2/hls/gsthlsdemux.c: * ext/adaptivedemux2/hls/gsthlsdemux.h: * ext/adaptivedemux2/hls/gsthlselement.c: * ext/adaptivedemux2/hls/gsthlselements.h: * ext/adaptivedemux2/hls/m3u8.c: * ext/adaptivedemux2/hls/m3u8.h: * ext/adaptivedemux2/hls/meson.build: * ext/adaptivedemux2/meson.build: * ext/adaptivedemux2/mss/gstmssdemux.c: * ext/adaptivedemux2/mss/gstmssdemux.h: * ext/adaptivedemux2/mss/gstmssfragmentparser.c: * ext/adaptivedemux2/mss/gstmssfragmentparser.h: * ext/adaptivedemux2/mss/gstmssmanifest.c: * ext/adaptivedemux2/mss/gstmssmanifest.h: * ext/adaptivedemux2/plugin.c: * ext/meson.build: * ext/soup/gstsouploader.c: * ext/soup/gstsouploader.h: * meson_options.txt: * tests/check/elements/dash_mpd.c: * tests/check/elements/hlsdemux_m3u8.c: * tests/check/meson.build: New HLS, DASH and MSS adaptive demuxer elements This provides new HLS, DASH and MSS adaptive demuxer elements as a single plugin. These elements offer many improvements over the legacy elements. They will only work within a streams-aware context (`urisourcebin`, `uridecodebin3`, `decodebin3`, `playbin3`, ...). Stream selection and buffering is handled internally, this allows them to directly manage the elementary streams and stream selection. Authors: * Edward Hervey <edward@centricular.com> * Jan Schmidt <jan@centricular.com> * Piotrek Brzeziński <piotr@centricular.com> * Tim-Philipp Müller <tim@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2117> 2022-04-15 09:53:19 +0800 Hou Qi <qi.hou@nxp.com> * sys/v4l2/gstv4l2videodec.c: 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/2192> 2022-04-14 20:10:46 +1000 Brad Hards <bradh@frogmouth.net> * tests/interactive/equalizer-test.c: * tests/interactive/gdkpixbufoverlay-test.c: * tests/interactive/gdkpixbufsink-test.c: * tests/interactive/meson.build: * tests/interactive/test-accurate-seek.c: * tests/interactive/test-oss4.c: * tests/interactive/test-segment-seeks.c: * tests/interactive/videobox-test.c: * tests/interactive/videocrop-test.c: * tests/interactive/videocrop2-test.c: * tests/interactive/ximagesrc-test.c: * tests/meson.build: tests: rename 'icles' subdir to be more descriptive Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2178> 2022-04-07 11:12:47 +1000 Havard Graff <havard.graff@gmail.com> * gst/isomp4/qtdemux.c: qtdemux: fix leak of channel_mapping Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2179> 2022-04-13 10:17:15 +0800 Ming Qian <ming.qian@nxp.com> * docs/gst_plugins_cache.json: doc: Update cache after NV12_8L128 and NV12_10BE_8L128 addition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2158> 2022-04-12 14:15:01 +0800 Ming Qian <ming.qian@nxp.com> * sys/v4l2/gstv4l2object.c: v4l2: Add NV12_8L128 in gst_v4l2_object_get_caps_info It should be included in <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2158> 2022-04-12 10:35:26 +0800 Ming Qian <ming.qian@nxp.com> * sys/v4l2/gstv4l2object.c: v4l2: Add a missed break Fix a typo that miss a break in the switch statement Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2158> 2022-04-11 13:40:56 +0200 Robert Rosengren <robertr@axis.com> * gst/rtpmanager/gstrtpbin.c: rtpbin: Fix division by zero when using ts-offset-smoothing-factor avg_ts_offset may cause division by zero when calculating potential overflow protection. This fix will avoid the division. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2151> 2022-04-06 09:46:30 -0400 Tristan Matthews <tmatth@videolan.org> * gst/rtp/gstrtpopusdepay.c: rtpopusdepay: assume 2 channels if sprop-stereo is missing Fixes #1064 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2125> 2022-03-11 15:13:21 +0100 Matthias Fuchs <matthias1.fuchs@zeiss.com> * ext/qt/gstqtsrc.cc: * ext/qt/qtwindow.cc: * ext/qt/qtwindow.h: qmlglsrc: Fix deadlock when stopping This fix makes sure that streaming thread stops waiting when the qmlglsrc element transitions from playing to paused. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2115> 2022-03-14 17:20:38 +0100 Matthias Fuchs <matthias1.fuchs@zeiss.com> * ext/qt/qtwindow.cc: qmlglsrc: Fix missing depth & stencil buffer Qt Quick primitives which have some kind of alpha blending (transparency, rounded corners) are z-sorted by Qt and rendered in the correct order. For opaque primitives Qt relies on the OpenGL depth buffer to correctly determine the visibility of stacked elements. This change enables the depth buffer to make sure that opaque primitives are correctly z-stacked. https://doc.qt.io/qt-6/qtquick-visualcanvas-scenegraph-renderer.html#opaque-primitives Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2114> 2022-04-06 10:14:19 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpstats.h: rtpstats: Remove non-existing twcc field docs from RTPPacketInfo and add missing field docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2121> 2022-04-05 20:28:36 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpsession.h: rtpsession: Remove unused twcc fields from the struct Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2121> 2022-03-30 11:06:02 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: Use gmodule-no-export-2.0 We don't need `-Wl,--export-dynamic`, that's used only for executables that needs to export an API to be used by plugins they load. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2031> 2022-03-25 15:00:20 -0400 Xavier Claessens <xavier.claessens@collabora.com> * ext/qt/meson.build: * ext/soup/meson.build: * gst/imagefreeze/meson.build: * gst/rtsp/meson.build: * gst/shapewipe/meson.build: * meson.build: * tests/check/meson.build: Remove glib and gobject dependencies everywhere They are part of gst_dep already and we have to make sure to always have gst_dep. The order in dependencies matters, because it is also the order in which Meson will set -I args. We want gstreamer's config.h to take precedence over glib's private config.h when it's a subproject. While at it, remove useless fallback args for gmodule/gio dependencies, only gstreamer core needs it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2031> 2022-03-31 23:41:41 +0200 Thibault Saunier <tsaunier@igalia.com> * gst/debugutils/gstnavigationtest.c: navigation: Rename parse_state to parse_modifier_state `parse_state` sounds a bit weird and `parse_modifier_state` is clearer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2087> 2022-03-26 01:02:02 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/meson.build: meson: Add some messages when selecting libsoup Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2032> 2022-03-26 00:59:12 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/gstsouphttpsrc.c: 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/2032> 2022-03-26 00:56:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/gstsouploader.c: * ext/soup/gstsouploader.h: 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/2032> 2022-03-28 18:12:03 +1100 Matthew Waters <matthew@centricular.com> * sys/osxaudio/gstosxcoreaudio.c: 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/2046> 2022-03-28 10:10:45 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: video-format: Move NV12_8L128 into the correct position in GST_VIDEO_FORMATS_ALL Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2045> 2022-03-28 13:35:17 +1100 Matthew Waters <matthew@centricular.com> * gst/deinterlace/tvtime/tomsmocomp/SearchLoopTop.inc: deinterlace: silence unused-but-set werror from imported code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2042> 2022-03-28 09:50:38 +1100 Matthew Waters <matthew@centricular.com> * sys/osxvideo/osxvideosink.m: 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/2040> 2022-03-25 11:42:03 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/debugutils/gstnavigationtest.c: * gst/debugutils/gstnavigationtest.h: navigationtest: Add some support for modifiers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2010> 2022-03-18 16:59:32 +0000 Thibault Saunier <tsaunier@igalia.com> * ext/gtk/gtkgstbasewidget.c: * ext/qt/qtitem.cc: navigation: Add support for key Modifiers in all relevant events Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2010> 2021-11-17 17:27:13 +1100 Matthew Waters <matthew@centricular.com> * gst/rtpmanager/gstrtpptdemux.c: rtpptdemux: fix leak of caps when ignoring a pt Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2025> 2022-02-23 12:53:04 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * ext/qt/qtitem.cc: * ext/qt/qtitem.h: qt: Add touch event support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-21 20:16:06 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * ext/gtk/gtkgstbasewidget.c: gtk: Add touch event support Add a handler for touch events to gtkbasewidget. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-02 15:46:57 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * docs/gst_plugins_cache.json: * gst/debugutils/gstnavigationtest.c: * gst/debugutils/gstnavigationtest.h: navigationtest: Display touchscreen events, log all events Represents touchscreen events as a trail of black squares, one for each reported position. Additionally, this adds the `display-mouse` and `display-touch` properties to toggle visibility of mouse/touchscreen events, since touchscreens often emulate mouse events, as well as logging for all received navigation events. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-02-14 16:08:23 +0100 Vivienne Watermeier <vwatermeier@igalia.com> * ext/gtk/gstgtkbasesink.c: * ext/gtk/gtkgstbasewidget.c: * ext/qt/gstqtsink.cc: * ext/qt/qtitem.cc: * ext/qt/qtitem.h: * gst/debugutils/gstnavigationtest.c: * gst/debugutils/gstnavseek.c: * gst/videobox/gstvideobox.c: * gst/videocrop/gstvideocrop.c: * gst/videofilter/gstvideoflip.c: all: Use new navigation interface and API Use and implement the new navigation interface in all relevant sink elements, and use API functions everywhere instead of directy accessing the event structure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633> 2022-03-18 15:20:49 +0100 Stéphane Cerveau <scerveau@collabora.com> * gst/wavparse/gstwavparse.c: * tests/check/elements/wavparse.c: 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/1987> 2020-09-13 02:17:59 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/flv/gstflvmux.c: flvmux: Clean up aggregate's control flow This unifies exits to go through a single out label. It mostly simplifies how EOS is handled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1035> 2022-03-18 16:34:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/gst_plugins_cache.json: doc: Update cache after NV12_8L128 addition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379> 2021-10-19 14:41:04 +0800 Ming Qian <ming.qian@nxp.com> * sys/v4l2/ext/videodev2.h: * sys/v4l2/gstv4l2object.c: v4l2: Add NV12_8L128 and NV12_10BE_8L128 These formats are used by i.MX 8QXP/8QM VPU. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1379> 2021-09-09 23:43:33 +1000 Matthew Waters <matthew@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtprtxreceive.c: * gst/rtpmanager/gstrtprtxreceive.h: * gst/rtpmanager/gstrtprtxsend.c: * gst/rtpmanager/gstrtprtxsend.h: * tests/check/elements/rtprtx.c: rtpmanager/rtx: implement initial support for reading/writing rid extensions Two RTP Header extensions are very relevant for rtprtxsend/receive. 1. "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id": will always be removed 2. "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id": will be written instead of the "rtp-stream-id" header extension. Currently it's only a simple replacement of one header extension for another however a future change would only add the relevant extension based on some heuristics (like, video frames only on one of the rtp key frame buffers, or only until the rtx ssrc has been validated by the peer) in order to reduce the required bandwidth. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1759> 2021-08-25 16:59:40 +1000 Matthew Waters <matthew@centricular.com> * tests/check/elements/rtphdrextsdes.c: * tests/check/meson.build: test: add tests for sdes-based RTP header extensions mid, stream id and repaired stream id. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1759> 2021-08-25 16:58:16 +1000 Matthew Waters <matthew@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtphdrext-repairedstreamid.c: * gst/rtpmanager/gstrtphdrext-repairedstreamid.h: * gst/rtpmanager/gstrtphdrext-streamid.c: * gst/rtpmanager/gstrtphdrext-streamid.h: * gst/rtpmanager/gstrtpmanager.c: * gst/rtpmanager/meson.build: rtpmanager: add support for RFC8852 (rid) RTP header extensions Both for regular RID and for adding on a repaired (RTX) etc stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1759> 2021-08-25 16:38:44 +1000 Matthew Waters <matthew@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtphdrext-mid.c: * gst/rtpmanager/gstrtphdrext-mid.h: * gst/rtpmanager/gstrtpmanager.c: * gst/rtpmanager/meson.build: rtpmanager: add support for writing RFC8843 (BUNDLE mid) RTP header extension Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1759> 2022-03-18 19:33:00 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst_plugins_cache.json: * gst/videocrop/gstvideocrop-private.h: * gst/videocrop/gstvideocrop.c: * gst/videocrop/gstvideocrop.h: videocrop: Add support for v210 Like UYVY and similar formats this is rounding down to the start of the previous macro-pixel to not mix up the different components. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1988> 2022-03-18 19:06:05 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/videocrop/gstvideocrop.c: videocrop: Use GST_ROUND_DOWN_2 instead of re-defining a local version Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1988> 2022-03-18 19:03:57 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/videocrop/gstvideocrop.c: * gst/videocrop/gstvideocrop.h: videocrop: Rename PACKED_COMPLEX to PACKED_YVYU It's not handling any kind of complex packed format, only formats that are like YVYU. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1988> 2022-03-18 13:42:27 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: meson: Bump all meson requirements to 0.60 Lots of new warnings ever since https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1934 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1977> 2022-03-15 15:44:17 +0900 Sangchul Lee <sc11.lee@samsung.com> * gst/rtpmanager/rtpjitterbuffer.c: rtpjitterbuffer: Fix invalid memory access in rtp_jitter_buffer_pop() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1973> 2022-03-14 16:19:33 +0800 Hou Qi <qi.hou@nxp.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: set frame duration according to framerate Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1953> 2022-03-15 13:49:09 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * gst/rtsp/gstrtspsrc.c: * gst/rtsp/gstrtspsrc.h: rtspsrc: proxy new "add-reference-timestamp-meta" property from rtpjitterbuffer When syncing to an RFC7273 clock this will add the original reconstructed reference clock timestamp to buffers in form of a GstReferenceTimestampMeta. This is useful when we want to process or analyse data based on the original timestamps untainted by any local adjustments, for example reconstruct AES67 audio streams with sample accuracy. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1964> 2022-03-15 11:56:28 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpbin.h: rtpbin: proxy new "add-reference-timestamp-meta" property from rtpjitterbuffer When syncing to an RFC7273 clock this will add the original reconstructed reference clock timestamp to buffers in form of a GstReferenceTimestampMeta. This is useful when we want to process or analyse data based on the original timestamps untainted by any local adjustments, for example reconstruct AES67 audio streams with sample accuracy. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1964> 2022-03-15 01:35:17 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpjitterbuffer.c: * gst/rtpmanager/rtpjitterbuffer.c: * gst/rtpmanager/rtpjitterbuffer.h: rtpjitterbuffer: add "add-reference-timestamp-meta" property When syncing to an RFC7273 clock this will add the original reconstructed reference clock timestamp to buffers in form of a GstReferenceTimestampMeta. This is useful when we want to process or analyse data based on the original timestamps untainted by any local adjustments, for example reconstruct AES67 audio streams with sample accuracy. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1964> 2022-03-15 09:49:59 +0800 Hou Qi <qi.hou@nxp.com> * sys/v4l2/gstv4l2videodec.c: v4l2videodec: safely retrun from video_dec_loop with stream unlock This is to avoid decoder hang when doing trick play between different resolutions. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1960> 2022-03-14 13:59:37 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtpmanager/rtpjitterbuffer.c: rtpjitterbuffer: Improve accuracy of RFC7273 clock time calculations Previously the result of the calculations included inaccuracies caused by the NTP clock estimation, which caused the timestamps to jitter +/- 1/clockrate. By reorganizing the calculations it is possible to get rid of this inaccuracy and calculate deterministic and exact packet timestamps based on the actual NTP clock as long as the estimation is not off by more than 2**31 clockrate units. The only remaining inaccuracy that is introduced now is caused by the conversion from the NTP clock to the pipeline clock. Also split up debug output, demote many messages to the trace debug level and output more intermediate results. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1955> 2022-03-14 12:29:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/rtpmanager/rtpsession.c: * gst/rtpmanager/rtptwcc.c: 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/1952> 2022-03-14 13:45:36 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/rtpmanager/gstrtpsession.c: 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/1952> 2017-08-11 16:33:23 +0200 Havard Graff <havard.graff@gmail.com> * gst/rtpmanager/gstrtprtxsend.c: * tests/check/elements/rtprtx.c: rtprtxsend: don't require clock-rate in caps For multiplexing, the rtpstreams you are multiplexing might not use the same clock-rate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1881> 2016-11-04 11:47:20 +0100 Havard Graff <havard.graff@gmail.com> * gst/rtpmanager/gstrtprtxsend.c: * tests/check/elements/rtprtx.c: rtprtxsend: don't start the task unless we are doing rtx The rtxsend element can do pass-through when not enabled (no pt-map set) and in those cases there is no point in starting an additional task that does absolutely nothing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1880> 2016-06-27 14:28:06 +0200 Havard Graff <havard.graff@gmail.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtprtxreceive.c: * gst/rtpmanager/gstrtprtxreceive.h: rtprtxreceive: add ssrc-map property Mirroring the rtxsend, this allows the application to "pre-map" the retransmission-ssrcs to the "real" ssrc, if this information is known. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1878> 2019-09-08 15:54:08 +0200 Carlos Rafael Giani <crg7475@mailbox.org> * ext/mpg123/gstmpg123audiodec.c: * ext/mpg123/gstmpg123audiodec.h: * gst/audioparsers/gstmpegaudioparse.c: * tests/check/elements/mpg123audiodec.c: * tests/files/sine-1009ms-1ch-32000hz-gapless-with-lame-tag.mp3: mpg123: Add gapless playback support Co-authored-by: Sebastian Dröge <sebastian@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1028> 2019-09-07 19:15:42 +0200 Carlos Rafael Giani <crg7475@mailbox.org> * gst/audioparsers/gstmpegaudioparse.c: * gst/audioparsers/gstmpegaudioparse.h: * tests/check/elements/mpegaudioparse.c: 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-11 10:32:42 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/tvtime/scalerbob.c: 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 17:13:48 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * gst/deinterlace/yadif.c: 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-10 17:03:45 +0900 Damian Hobson-Garcia <dhobsong@igel.co.jp> * docs/gst_plugins_cache.json: doc: New cropping parameters added to v4l2src v4l2src add several new parameters to control cropping of the captured video stream. Update the doc cache to reflect this. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1089> 2021-10-15 18:33:50 +0900 Damian Hobson-Garcia <dhobsong@igel.co.jp> * tests/examples/v4l2/meson.build: * tests/examples/v4l2/v4l2src-crop.c: examples: v4l2: Add v4l2src crop example Add a simple utility to illustrate how to set input cropping on v4l2src. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1089> 2021-10-14 17:22:19 +0900 Damian Hobson-Garcia <dhobsong@igel.co.jp> * sys/v4l2/gstv4l2src.c: * sys/v4l2/gstv4l2src.h: v4l2src: Add support for cropping at capture source input Add properties to control input cropping in the V4L2 device. The input cropping is applied before composing the result to the capture buffer. By default the capture size will be set to the same size as the crop region, but it can be scaled to a different output frame size if supported by the V4L2 device. If scaling is not supported, the cropped image will be composed as is into the top-left corner of the capture buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1089> 2021-10-13 17:33:12 +0900 Damian Hobson-Garcia <dhobsong@igel.co.jp> * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2object.h: v4l2object: Add function to get crop regions from device Get the current crop bounding region from the V4L2 device so that it can be provided to applications and used to validate crop settings. Also make the default crop region available so that it can be used to reset the crop when appropriate. Uses the selection API when available with fallback to the crop API for older kernels. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1089> 2021-09-30 17:56:56 +0900 Damian Hobson-Garcia <dhobsong@igel.co.jp> * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2object.h: * sys/v4l2/gstv4l2transform.c: 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/1089> 2022-03-10 18:43:45 +0900 Sangchul Lee <sc11.lee@samsung.com> * gst/rtp/gstrtpvp8depay.c: 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-04 18:58:56 +0100 Tomasz Andrzejak <andreiltd@gmail.com> * gst/rtpmanager/gstrtpbin.c: 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-09 12:17:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/gstsouploader.c: 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/1899> 2019-07-10 17:21:01 +0200 Edward Hervey <edward@centricular.com> * gst/isomp4/qtdemux.c: 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> 2021-02-01 16:07:08 +0100 Havard Graff <havard.graff@gmail.com> * gst/rtpmanager/gstrtprtxsend.c: 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> 2016-06-22 14:48:59 +0200 Havard Graff <havard.graff@gmail.com> * gst/rtpmanager/gstrtprtxsend.c: 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> 2016-08-23 19:06:49 +0200 Mikhail Fludkov <misha@pexip.com> * gst/rtpmanager/gstrtprtxreceive.c: * tests/check/elements/rtprtx.c: rtprtxreceive: fix crash when RTX payload has zero length Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1875> 2016-06-26 22:25:46 +0200 Havard Graff <havard.graff@gmail.com> * gst/rtpmanager/gstrtprtxreceive.c: 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> 2021-02-08 21:40:19 +0100 Havard Graff <havard@pexip.com> * gst/rtpmanager/gstrtprtxreceive.c: * gst/rtpmanager/gstrtprtxreceive.h: * gst/rtpmanager/gstrtprtxsend.c: * gst/rtpmanager/gstrtprtxsend.h: 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> 2020-02-10 14:37:30 +0100 Havard Graff <havard@pexip.com> * tests/check/elements/rtprtx.c: rtprtx: signed/unsigned and style fixes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1872> 2022-03-03 13:47:05 +0800 Hou Qi <qi.hou@nxp.com> * sys/v4l2/gstv4l2bufferpool.c: 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/1842> 2022-03-03 14:22:10 +0800 Hou Qi <qi.hou@nxp.com> * gst/flv/gstflvmux.c: 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-04 14:57:30 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/gst_plugins_cache.json: doc: AV1 demuxers now expose their alignment Update the chache accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1837> 2022-03-02 16:31:24 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/matroska/matroska-demux.c: * gst/matroska/matroska-mux.c: 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-02 16:24:38 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/isomp4/gstqtmuxmap.c: * gst/isomp4/qtdemux.c: 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-02-07 17:51:39 -0500 Tristan Matthews <tmatth@videolan.org> * gst/matroska/matroska-mux.c: 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-02-07 16:41:40 -0500 Tristan Matthews <tmatth@videolan.org> * gst/matroska/matroska-mux.c: 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 15:36:20 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/gstdeinterlace.c: 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-03 23:04:36 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/gstsouploader.c: 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/1805> 2022-03-03 00:37:57 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/meson.build: soup: Fix pkgconfig generation and documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1805> 2022-03-02 23:22:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/meson.build: 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/1805> 2022-03-02 23:11:09 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/soup/meson.build: soup: Don't error out in static build unless option is enabled Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1805> 2022-02-27 15:45:01 +0100 Philippe Normand <philn@igalia.com> * ext/soup/gstsouploader.c: soup: Lookup libsoup dylib files on Apple platforms Fixes #1007 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1805> 2021-10-15 15:32:22 +0900 Damian Hobson-Garcia <dhobsong@igel.co.jp> * sys/v4l2/gstv4l2object.c: v4l2src: Reset the compose window to the default after setting format When the size of V4L2 capture or output is changes with VIDIOC_S_FMT, the device is only required to update the compisition window to fit inside the new frame size. This can result in captured data only being updated on a portion of the frame after a resize. Update the composition window to the default value determined by the V4L2 device driver whenever the format is changed to make sure that all image data is composed to its full size. Fixes #765 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1806> 2022-03-01 20:59:30 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/matroska/matroska-mux.c: 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-01 20:56:43 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/matroska/matroska-mux.c: 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-02-27 03:17:26 +1100 Jan Schmidt <jan@centricular.com> * gst/matroska/matroska-mux.c: 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-02-27 02:39:28 +1100 Jan Schmidt <jan@centricular.com> * gst/matroska/matroska-demux.c: * gst/matroska/matroska-demux.h: 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-02-23 11:10:11 +0100 Sebastian Fricke <sebastian.fricke@collabora.com> * README.md: 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/1743> 2022-03-01 00:12:56 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * gst/deinterlace/x86/yadif.asm: 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 00:12:33 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * gst/deinterlace/x86/yadif.asm: yadif.asm: Typo fixes in comments Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1816> 2022-02-28 20:39:11 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * gst/deinterlace/yadif.c: 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> 2021-10-19 16:10:06 +0800 Ming Qian <ming.qian@nxp.com> * sys/v4l2/gstv4l2videodec.c: * sys/v4l2/gstv4l2videodec.h: v4l2videodec : enable resolution change The dynamic resolution changes when the sequence starts when the decoder detects a coded frame with one or more of the following parameters different from those previously established (and reflected by corresponding queries): 1.coded resolution (OUTPUT width and height), 2.visible resolution (selection rectangles), 3.the minimum number of buffers needed for decoding, 4.bit-depth of the bitstream has been changed. Although gstreamer parser has parsed the stream resolution. but there are some case that we need to handle resolution change event. 1. bit-depth is different from the negotiated format. 2. the capture buffer count can meet the demand 3. there are some hardware limitations that the decoded resolution may be larger than the display size. For example, the stream size is 1920x1080, but some vpu may decode it to 1920x1088. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1381> 2021-10-26 10:03:42 +0800 Ming Qian <ming.qian@nxp.com> * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2object.h: * sys/v4l2/gstv4l2videodec.c: v4l2videodec : refactor the setup process of capture v4l2videodec do some refactoring so that it can support dynamic resolution change event. 1.wrap the setup process of capture as a function, as decoder need setup the capture again when dynamic resolution change event is received. 2.move the function "remove_padding" Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1381> 2022-02-22 11:18:53 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/rtp/gstrtpac3pay.c: * gst/rtp/gstrtpamrpay.c: * gst/rtp/gstrtpdvpay.c: * gst/rtp/gstrtpg723pay.c: * gst/rtp/gstrtpg729pay.c: * gst/rtp/gstrtpgstpay.c: * gst/rtp/gstrtph261pay.c: * gst/rtp/gstrtph263pay.c: * gst/rtp/gstrtph263ppay.c: * gst/rtp/gstrtph264pay.c: * gst/rtp/gstrtph265pay.c: * gst/rtp/gstrtpj2kpay.c: * gst/rtp/gstrtpjpegpay.c: * gst/rtp/gstrtpklvpay.c: * gst/rtp/gstrtpmp4apay.c: * gst/rtp/gstrtpmp4gpay.c: * gst/rtp/gstrtpmp4vpay.c: * gst/rtp/gstrtpmpapay.c: * gst/rtp/gstrtpmpvpay.c: * gst/rtp/gstrtpreddec.c: * gst/rtp/gstrtpvp8pay.c: * gst/rtp/gstrtpvp9pay.c: * gst/rtp/gstrtpvrawpay.c: * gst/rtp/rtpulpfeccommon.c: * tests/check/elements/rtpred.c: 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> 2021-12-06 12:49:18 -0500 Joseph Donofry <rubberduckie3554@gmail.com> * sys/osxaudio/gstosxaudiodeviceprovider.c: 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/1385> 2022-02-24 20:28:23 +0530 Sanchayan Maity <sanchayan@asymptotic.io> * docs/gst_plugins_cache.json: * gst/rtp/gstrtpldacpay.c: * gst/rtp/gstrtpldacpay.h: 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-21 11:37:26 -0500 Xavier Claessens <xavier.claessens@collabora.com> * ext/vpx/meson.build: * gst/equalizer/meson.build: * gst/isomp4/meson.build: 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 12:44:26 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/tvtime/greedyh.c: 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-24 17:36:40 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/tvtime/greedyh.c: 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:39:31 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/tvtime/greedyh.c: 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:36:17 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/tvtime/greedyh.c: deinterlace: greedyh: Move code from _planar into _planar_plane Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1790> 2022-02-25 12:30:21 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/deinterlace/tvtime/greedyh.c: 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-22 10:13:28 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/rtpmanager/rtpsource.c: rtpsource: fix rtp_source_get_nack_deadlines doc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1775> 2022-02-21 13:27:06 +1100 Matthew Waters <matthew@centricular.com> * gst/rtp/gstrtpulpfecenc.c: 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 13:24:07 +1100 Matthew Waters <matthew@centricular.com> * gst/rtp/gstrtpulpfecenc.c: 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> 2021-11-09 17:37:24 +1100 Matthew Waters <matthew@centricular.com> * gst/rtp/gstrtpulpfecenc.c: 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-18 15:23:13 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/matroska/matroska-demux.c: 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-20 15:20:07 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/gst_plugins_cache.json: doc: Add NV12_16L32S into the cache Autogenerated by CI Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2022-01-26 10:06:50 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2transform.c: 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/1567> 2022-01-26 09:55:09 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2object.c: 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/1567> 2022-01-25 14:34:32 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2object.c: video4linux2: Add MM21 support This enables mtk-vcodec and MDP driver from mainline Linux kernel. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2022-01-25 14:08:47 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2/gstv4l2bufferpool.c: * sys/v4l2/gstv4l2object.c: * sys/v4l2/gstv4l2object.h: Port plugins to gst_video_format_info_extrapolate_stride() This reduces code duplication and simplify addition of new pixel formats into related plugins. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567> 2022-02-02 12:49:29 +0100 Rouven Czerwinski <rouven@czerwinskis.de> * sys/v4l2/gstv4l2tuner.c: 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/1625> 2022-01-14 23:42:27 -0600 Tim Mooney <Tim.Mooney@ndsu.edu> * sys/v4l2/ext/types-compat.h: v4l2: include <sys/ioccom.h> on Illumos Needed for _IOR/_IORW Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1524> 2022-02-17 17:36:22 +0100 Sebastian Wick <sebastian.wick@redhat.com> * gst/matroska/matroska-demux.c: 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> 2021-11-16 17:35:25 +0900 Seungha Yang <seungha@centricular.com> * gst/isomp4/qtdemux.c: 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> 2021-10-01 20:27:28 +0900 Seungha Yang <seungha@centricular.com> * meson.build: meson: Do hard build error for some MSVC warnings Handle various MSVC warnings as errors for development version. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1006> 2021-04-08 12:18:09 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/isomp4/gstqtmux.c: 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-11 21:35:54 +0100 Heiko Becker <heirecka@exherbo.org> * ext/lame/meson.build: meson: Don't build lame plugin with -Dlame=disabled Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1686> 2022-02-11 23:55:57 +0100 Marek Vasut <marex@denx.de> * ext/jpeg/gstjpegdec.c: 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/1687> 2022-02-11 23:44:24 +0100 Marek Vasut <marex@denx.de> * ext/jpeg/gstjpegdec.c: 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/1687> 2022-02-11 23:44:20 +0100 Marek Vasut <marex@denx.de> * ext/jpeg/gstjpegdec.c: 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/1687> 2022-02-11 23:29:27 +0100 Marek Vasut <marex@denx.de> * ext/jpeg/gstjpegdec.c: Revert "jpegdec: only allow conversions from RGB" This reverts commit 2aa2477208c029b0e1b8232d69f4f99a3bf1d473. 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/1687> 2022-02-01 14:28:24 +0100 Bastien Nocera <hadess@hadess.net> * ext/gtk/gtkgstglwidget.c: 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/1618> 2022-02-01 14:26:02 +0100 Bastien Nocera <hadess@hadess.net> * ext/gtk/gtkgstbasewidget.c: * ext/gtk/gtkgstbasewidget.h: 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/1618> 2022-01-18 17:53:30 +0100 Robert Rosengren <robertr@axis.com> * gst/rtpmanager/gstrtpbin.c: 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> 2021-11-23 09:03:28 +0100 Robert Rosengren <robertr@axis.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpbin.h: 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> 2019-02-26 16:39:55 +0100 Danny Smith <dannys@axis.com> * gst/rtpmanager/gstrtpbin.c: 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> 2018-05-29 16:24:02 +0200 Danny Smith <dannys@axis.com> * docs/gst_plugins_cache.json: * gst/rtpmanager/gstrtpbin.c: * gst/rtpmanager/gstrtpbin.h: 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-04 11:15:47 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst_plugins_cache.json: * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1635> === release 1.20.0 ===
Generated by dwww version 1.15 on Sat May 18 13:30:46 CEST 2024.