diff --git a/ChangeLog b/ChangeLog index 8f54dc5c43..f997cc95b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1035 @@ +=== release 1.19.2 === + +2021-09-23 01:33:39 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-good.doap: + * meson.build: + Release 1.19.2 + +2021-09-22 14:03:57 +0100 Tim-Philipp Müller + + * gst/rtp/gstrtph263pdepay.c: + rtph263pdepay: flag keyframes on output buffers + Part-of: + +2021-08-18 19:47:40 -0400 Olivier Crête + + * gst/rtpmanager/gstrtphdrext-twcc.c: + rtphdrhext-twcc: Return failure on map failure + This feels like exactly like a case that should fail. + Part-of: + +2021-08-18 19:46:25 -0400 Olivier Crête + + * gst/rtp/gstrtphdrext-colorspace.c: + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + * gst/rtpmanager/gstrtphdrext-twcc.c: + rtphdrext: Update write() API to return a signed value + Part-of: + +2021-09-14 17:26:27 +0900 Seungha Yang + + * gst/isomp4/qtdemux.c: + qtdemux: Try to build AAC codec-data whenever it's possible + AAC codec_data is a just collection of AAC profile, samplerate, and + channels. We can know samplerate and channels from parsed + SampleEntry data. Although the AAC profile is unknown there, + let's assume it as AAC-LC like we've been doing for the version 1 + atom. + Part-of: + +2021-09-07 22:23:01 +0200 Vivienne Watermeier + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvdemux.h: + flv: fix seqnum handling for seeks + Part-of: + +2021-01-18 16:06:27 +1100 Matthew Waters + + * gst/isomp4/gstqtmux.c: + isomp4: also allow muxing different h264/5 profiles/levels/etc + All of that is advertised through the codec_data itself so can change + just fine within isomp4. + Part-of: + +2021-09-11 09:24:35 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-mux.c: + matroska: Add support for muxing/demuxing ffv1 + Previously only demuxing when stored via the RIFF/AVI mapping was + supported. + See https://github.com/FFmpeg/FFV1/blob/master/ffv1.md#matroska-file-format + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/923 + Part-of: + +2021-09-12 12:18:32 +0100 Philippe Normand + + * docs/gst_plugins_cache.json: + docs: Update cache + Part-of: + +2021-08-03 19:12:11 +0900 Seungha Yang + + * ext/jpeg/gstjpegdec.c: + jpegdec: Fix crash when interlaced field height is not DCT block size aligned + In case of interlaced JPEG file, we are doubling stride. + The scratch scan line should take account of it as well. + Part-of: + +2021-09-02 08:38:54 +0300 Sebastian Dröge + + * gst/avi/gstavidemux.c: + avidemux: Also detect 0x000001 as H264 byte-stream start code in codec_data + This works around some AVI files storing byte-stream data in the + codec_data. The previous workaround was only checking for + 0x00000001 (4 bytes) instead of 0x000001 (3 bytes). + Part-of: + +2021-08-31 11:05:16 +0100 Philippe Normand + + * ext/qt/qtitem.cc: + qt: Fix build for Qt 5.9 + The QQuickItem::size() method was introduced in 5.10, so use direct width() and + height() access instead. + Fixes #908 + Part-of: + +2021-08-19 10:32:27 -0400 Olivier Crête + + * tests/check/elements/rtphdrextrfc6464.c: + rtphdrext-rfc6464: Add test for inserting in payloader using the API + This makes it clearer how to use the plugin in an API driven application. + Part-of: + +2021-08-18 19:36:07 -0400 Olivier Crête + + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + rtphdrext-rfc6464: Put max level if the audio is beyond it + Otherwise, it just fails to add the extension, which makes no + sense. And our level element produces levels higher than 127 in some + cases. + Part-of: + +2021-08-18 19:35:36 -0400 Olivier Crête + + * gst/rtpmanager/gstrtphdrext-rfc6464.c: + rtphdrext-rfc6464: Add example pipeline + This makes it a bit easier to understand how to use it in an application. + Part-of: + +2021-08-18 19:07:18 -0400 Olivier Crête + + * tests/check/elements/rtphdrextrfc6464.c: + rtphdrext-rfc6464: Add test for inserting it based on caps + Tests adding the extension based on the caps. + Part-of: + +2021-08-27 14:32:45 +0200 Edward Hervey + + * gst/isomp4/qtdemux.c: + qtdemux: Force stream-start push when re-using EOS'd streams + When re-using streams, we *do* need to push a `stream-start` event downstream if + we previously were EOS'd. Failure to do that would never remove the EOS status + on all downstream elements and cause weird issues. + Part-of: + +2021-08-27 02:05:45 -0400 Brad Smith + + * gst/deinterlace/meson.build: + deinterlace: Use proper ASM output format for *BSD OS + FreeBSD/NetBSD/OpenBSD amd64 use the ELF binary format. + Part-of: + +2021-08-27 13:30:57 +1000 Matthew Waters + + * ext/qt/qtitem.cc: + qmlgl: don't critical on input events before input format has been set + Accessing the unset GstVideoInfo would result in criticals + Part-of: + +2021-08-25 11:53:58 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpsession.c: + docs: Add `Since` marker to "twcc-feedback-interval" property + Part-of: + +2021-08-25 10:33:24 +0200 Havard Graff + + * docs/gst_plugins_cache.json: + docs: update with "twcc-feedback-interval" + Part-of: + +2021-04-13 16:19:22 +0200 Tulio Beloqui + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpstats.h: + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + rtptwcc: changes to use rtp buffer arrival time and current time. + For TWCC we are more interested to track the arrival time (receive side) + and the current time (sender side) of the buffers rather than the + running time. + Part-of: + +2021-03-26 11:57:42 +0100 Knut Inge Hvidsten + + * gst/rtpmanager/rtpstats.c: + * gst/rtpmanager/rtptwcc.c: + * gst/rtpmanager/rtptwcc.h: + rtptwcc: add payloadtype to RTPTWCCPacket + The consumer of the stats can then separate between different media-types, + and do individual stats for each of them. + Part-of: + +2021-03-19 18:19:43 +0100 Havard Graff + + * gst/rtpmanager/rtptwcc.c: + rtptwcc: make enabling TWCC sticky + Meaning that if a caps comes along that does NOT have TWCC in it, + this does not turn of TWCC for the rest, as this is in fact + completely allowed. (To have some payload-types not containing TWCC + seqnums). + Part-of: + +2021-02-23 09:44:05 +0100 Havard Graff + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + * gst/rtpmanager/rtptwcc.h: + rtptwcc: move TWCC-logic over to the TWCC-manager + Prevent cluttering up the rtpsession, and keeping things localized. + Also write TWCC-seqnums for *all* streams in the session if configured by + caps. + A while back WebRTC was not doing TWCC for audio, basically breaking the + whole idea of a "transport-wide seqnuencenumber" applying for all bundled + streams. However, they have since fixed this, and now it no longers + makes sense to be able to single out certain payloadtypes for + use with TWCC, rather just including them all. + This also makes using RTX, RED, FEC etc much simpler, as it will apply + to them all as they enter the rtpsession. + Part-of: + +2021-02-23 09:50:04 +0100 Havard Graff + + * gst/rtpmanager/rtptwcc.c: + rtptwcc: fix warning + Part-of: + +2021-02-11 15:17:16 +0100 Tulio Beloqui + + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + rtptwcc: fixes and optimizations around run-length chunks + Co-authored-by: Havard Graff + Part-of: + +2020-12-18 14:01:23 +0100 Havard Graff + + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + rtptwcc: fix seqnum-wrap + Using the proper API to do this is obviously an improvement, and + adding a test for the case of a packet-loss when the seqnum wrap + is also a good idea. + Co-authored-by: Tulio Beloqui + Part-of: + +2020-12-18 13:06:35 +0100 Tulio Beloqui + + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + rtptwcc: fixed feedback packet count overflow that allowed late packets to be processed + Co-authored-by: Havard Graff + Part-of: + +2020-12-16 16:31:18 +0100 Tulio Beloqui + + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + rtptwcc: fixed parsing of old sequence number + Co-authored-by: Havard Graff + Part-of: + +2020-12-16 16:16:09 +0100 Tulio Beloqui + + * gst/rtpmanager/rtptwcc.c: + * tests/check/elements/rtpsession.c: + rtptwcc: fixed guint8 overflow of feedback packet count + Co-authored-by: Havard Graff + Part-of: + +2020-11-19 23:50:23 +0100 Havard Graff + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + * gst/rtpmanager/rtptwcc.h: + * tests/check/elements/rtpsession.c: + rtptwcc: add feedback-interval + To allow RTCP TWCC reports to be scheduled on a timer instead of per + marker-bit. + Part-of: + +2021-08-20 11:54:01 +0200 Havard Graff + + * gst/rtpmanager/rtptwcc.c: + * gst/rtpmanager/rtptwcc.h: + rtptwcc: remove _set_send_packet_ts + Not in use. + Part-of: + +2020-11-17 00:45:02 +0100 Havard Graff + + * tests/check/elements/rtpsession.c: + rtptwcc: make twcc-tests more deterministic + They were a bit racy. + Part-of: + +2021-08-24 13:28:22 +0100 Tim-Philipp Müller + + * gst/isomp4/qtdemux.c: + qtdemux: add depth for ProRes 4:4:4:4 variants if available + Might be 24bpp in case an alpha channel is coded but + the image is always opaque. + Part-of: + +2021-08-22 23:16:26 +0000 Ruslan Khamidullin + + * gst/isomp4/gstqtmux.c: + qtmux: for Apple ProRes, allow overriding pixel bit depth for 4:4:4:4 variants + e.g. when exporting an opaque image, yet with alpha channel. + Apple ProRes certification requires that, when a ProRes-writing + application *knows* that the entire frame is opaque, the application + writes only RGB without alpha even when the clip is RGBA. For that, + this tiny change allows the app to override pixel depth when writing ProRes. + Part-of: + +2019-05-22 11:16:56 +0200 Havard Graff + + * ext/vpx/gstvpxdec.c: + * ext/vpx/gstvpxdec.h: + vpxdec: Fix direct rendering, avoid holding write access + When a buffer is pushed downstream, we should try not to hold the + buffer mapped with write access. Doing so would often lead to + an unneccesary memcpy later. + For instance, gst_buffer_make_writable() in + gst_video_decoder_finish_frame() will cause a memcpy because of + _memory_get_exclusive_reference(). + We know that we can perform a two-step remap when using system + memory, as this will not cause the location of the memory to + change. + Part-of: + +2021-08-19 16:26:17 +1000 Matthew Waters + + * gst/isomp4/gstqtmux.c: + isomp4/mux: add a function for seeking to a specific output byte position + We do it enough times that this makes sense. Also add a debug log line + for the seek position requested. + Part-of: + +2021-08-19 16:02:47 +1000 Matthew Waters + + * gst/isomp4/atoms.c: + isomp4/mux: don't overwrite with a bigger moov when fragmenting + When outputting fragmented mp4, with a seekable downstream, we rewrite + the moov to maybe add a duration to the mvex. If we start by not + writing the initial moov->mvex->mhed duration and then overwrite with a + moov containing mhed atom, the moov's will have different sizes and + could overwrite subsequent data and result in an unplayable file. + e.g. The initial moov would be of size 842 and the final moov would have + a size of 862. + Fix by always pushing out the mhed duration in the moov when + fragmenting. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/898 + Part-of: + +2021-01-15 20:53:27 +1100 Matthew Waters + + * gst/isomp4/gstqtmux.c: + isomp4: actually make streamable fallback work + We weren't setting the fragment_mode field anymore now that the + implementation doesn't change based on the value of the streamable + property. This lead to invalid files. + Part-of: + +2021-01-15 20:54:56 +1100 Matthew Waters + + * gst/isomp4/gstqtmux.c: + isomp4: fix trun data offset handling + The trun offset was missing a calculation for one of the box type + headers. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/866 + Part-of: + +2020-10-15 00:28:36 +1100 Matthew Waters + + * gst/isomp4/atoms.c: + * gst/isomp4/gstqtmux.c: + isomp4/mux: fixes for fragmented mp4 output + Various buffer offset calculations were not quite correct in all cases. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/866 + Part-of: + +2021-08-10 00:53:57 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + * gst/matroska/matroska-mux.c: + matroska-mux: support H264 avc3 / H265 hev1 + The matroska codec specs is unfortunately vague on the subject, + stating for H264: + AVC/H.264 stored as described in [@!ISO.14496-15] + and for H265: + HEVC/H.265 stored as described in [@!ISO.14496-15] + This spec however specifies multiple stream formats, our + implementation has opted for interpreting this as avc1 / hvc1, + both of which disallow in-band SPS. + Most decoders however will support in-band SPS / PPS, and + this commit gives the option to explicitly mux in avc3 / hev1, + which allows changing stream parameters on the fly, that is + useful for smart encoding for example. + When either of these stream formats are picked as the input, + changes in codec_data / tier / level / profile do not cause + renegotiation failure, a warning is logged however as it isn't + clear how compliant such a stream is. + The stream-format field is correctly ordered in the template + caps to avoid selecting potentially non-compliant options on + automatic negotiation. + Part-of: + +2021-08-10 00:51:36 +0200 Mathieu Duponchelle + + * gst/isomp4/gstqtmux.c: + isomp4/qtmux: allow renegotiating when tier / level / profile change + Those are carried either in codec_data or in-band SPS (for avc3), + and it is OK for those to change, though decoders obviously need + to support it. + Part-of: + +2021-08-06 23:36:48 +0200 Mathieu Duponchelle + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmuxmap.c: + isomp4/qtmux: accept video/x-h264, stream-format=avc3 + The main difference between avc1 and avc3 is that avc3 is allowed + to contain in-band SPS / PPS. In practice decoders will always use + in-band parameter sets anyway, but it is cleaner to explicitly + advertise it. + Part-of: + +2021-08-06 22:59:23 +0200 Mathieu Duponchelle + + * gst/isomp4/gstqtmux.c: + isomp4/qtmux: make sure to switch to next chunk on new caps + For example, with single video sink pad, and new codec_data is + received, current_chunk_offset must be reset to -1 for the + aggregate loop to open a new chunk. + Part-of: + +2021-08-06 22:55:32 +0200 Mathieu Duponchelle + + * gst/isomp4/atoms.c: + isomp4/atoms: fix multiple stsd entries + stsd entries are serialized in reverse order (starting from + g_list_last()), and must be prepended to the entry list for their + index to be correct when referenced from stsc entries. + Part-of: + +2021-08-12 11:03:58 -0400 Arun Raghavan + + * docs/gst_plugins_cache.json: + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-mux.h: + matroska-mux: Add a timestamp-offset property + Adds a user-controllable timestamp offset to clusters and blocks. This + should be useful if we want to have timestamps that have significance + outside of the current file (for example, we might set the offset to the + wallclock when the file is being created, or some other common base, if + we want to correlate streams across multiple files). + Part-of: + +2021-07-15 12:02:40 +0200 Stéphane Cerveau + + * gst/matroska/matroska-demux.c: + matroska: demux: update stream_start_time + The stream_start_time can be less than the first detected. + In case of B-Frame based media, the first frame PTS might be + greater than the next one. + Need to keep the segment.start if a seek has been performed. + Part-of: + +2021-08-17 16:08:33 -0400 Nicolas Dufresne + + * gst/matroska/matroska-demux.c: + mastrokademux: Remove redundant assignment + The segment.position is unconditionnaly set few lines below. + Part-of: + +2021-08-17 16:49:47 +0200 Víctor Manuel Jáquez Leal + + * gst/videocrop/gstvideocrop.c: + * tests/icles/videocrop-test.c: + videocrop: Fix icles tests. + Internally videcrop can call gst_video_crop_set_info() with NULL as in + caps. Then critical messages are raised when the in caps are + processed. + To fix this the in caps are checked, and if they are present, its + capsfeature is extracted, otherwise, the previous raw caps detection + remains as before. + Also the videocrop-test removes the format field in the structure + because now its always passed. + Part-of: + +2021-01-08 17:34:02 +0100 Jakub Adam + + * docs/gst_plugins_cache.json: + * gst/rtp/gstrtp.c: + * gst/rtp/gstrtpelements.h: + * gst/rtp/gstrtphdrext-colorspace.c: + * gst/rtp/gstrtphdrext-colorspace.h: + * gst/rtp/meson.build: + * tests/check/elements/rtphdrext-colorspace.c: + * tests/check/meson.build: + rtp: Color Space header extension + Implements WebRTC header extension defined in + http://www.webrtc.org/experiments/rtp-hdrext/color-space. + It uses RTP header to communicate color space information and optionally + also metadata that is needed in order to properly render a high dynamic + range (HDR) video stream. + Part-of: + +2021-08-09 10:46:30 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + v4l2: Add protection when set decoder capture fps accroding to output fps + Some v4l2 drivers don't have the capacity to change framerate. There is + chance to make decoder capture fps to be 0/0 if numerator and denominator + returned by G_PARM ioctl are both 0. It causes critical warning + "passed '0' as denominator for `GstFraction'". + In order to fix this, add protection when set decoder capture fps according + to output fps. + Part-of: + +2021-06-01 15:33:01 +0200 Per Förlin + + * docs/gst_plugins_cache.json: + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Add support to ignore x-server HEADER reply + When connecting to an RTSP server in tunnled mode (HTTP) the server + usually replies with a x-server header. This contains the address + of the intended streaming server. However some servers return an + "invalid" address. Here follows two examples when it might happen. + 1. A server use Apache combined with a separate RTSP process to handle + Https request on port 443. In this case Apache handle TLS and + connects to the local RTSP server, which results in a local + address 127.0.0.1 or ::1 in the x-server reply. This address is + returned to the actual RTSP client in the x-server header. + The client will receive this address and try to connect to it + and fail. + 2. The client use a ipv6 link local address with a specified scope id + fe80::aaaa:bbbb:cccc:dddd%eth0 and connects via Http on port 80. + The RTSP server receives the connection and returns the address + in the x-server header. The client will receive this address and + try to connect to it "as is" without the scope id and fail. + In the case of streaming data from RTSP servers like 1. and 2. it's + useful to have the option to simply ignore the x-server header reply + and continue using the original address. + Part-of: + +2021-08-04 12:33:06 +0700 Dmitry Shusharin + + * ext/qt/qtitem.cc: + gstqmlgl: fix indent + Part-of: + +2021-07-30 16:52:23 +0700 Dmitry Shusharin + + * ext/qt/gstqsgtexture.cc: + * ext/qt/gstqsgtexture.h: + gstqmlgl: wrap raw GstGLContext into GWeakRef + Part-of: + +2021-07-30 16:32:13 +0700 Dmitry Shusharin + + * tests/examples/qt/meson.build: + * tests/examples/qt/qmlsink-multisink/main.cpp: + * tests/examples/qt/qmlsink-multisink/main.qml: + * tests/examples/qt/qmlsink-multisink/meson.build: + * tests/examples/qt/qmlsink-multisink/qmlsink-multi.qrc: + * tests/examples/qt/qmlsink-multisink/videoitem/VideoItem.qml: + * tests/examples/qt/qmlsink-multisink/videoitem/videoitem.cpp: + * tests/examples/qt/qmlsink-multisink/videoitem/videoitem.h: + gstqmlgl: add multisink test application + Part-of: + +2021-07-30 17:21:46 +0700 Dmitry Shusharin + + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + gstqmlgl: refactoring: rename ambiguous variables, clean up unused and duplicated ones + Part-of: + +2021-07-30 17:20:59 +0700 Dmitry Shusharin + + * ext/qt/gstqtglutility.cc: + gstqmlgl: rework WGL-specific context init code + Part-of: + +2021-07-30 17:20:49 +0700 Dmitry Shusharin + + * ext/qt/gstqtglutility.cc: + gstqmlgl: retrieve correct device bound to current GL context (+ minor code cleanup) + Part-of: + +2021-07-30 17:20:25 +0700 Dmitry Shusharin + + * ext/qt/gstqsgtexture.cc: + gstqmlgl: correct validation for Qt GL context + Part-of: + +2021-07-30 17:20:07 +0700 Dmitry Shusharin + + * ext/qt/gstqtglutility.h: + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + * ext/qt/qtwindow.cc: + * ext/qt/qtwindow.h: + gstqmlgl: create helper QRunnable-based class for render jobs + Part-of: + +2021-08-06 16:25:02 +0200 Tulio Beloqui + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: fixed stall on gap when using rtx + Co-authored-by: Håvard Graff + Part-of: + +2021-08-13 19:32:53 +0530 Nirbheek Chauhan + + * gst/flv/gstindex.c: + flv: use g_memdup2() as g_memdup() is deprecated + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Part-of: + +2021-08-15 12:26:38 +0300 Sebastian Dröge + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Always use the content decoder but set `Accept-Encoding: identity` if no compression should be used + Some servers respond with gzip-encoded responses regardless of whether + the request allowed it to be used in the response. By always having the + content decoder enabled, these invalid responses can be decoded + correctly while for well-behaving servers the `compress` property + selects between allowing compressed responses or not. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/833 + Part-of: + +2021-08-12 22:57:01 +1000 Matthew Waters + + * ext/qt/gstqtglutility.cc: + qt: always update the sink_retrieved flag when the sink retrieves + Fixes a case where adding a qmlgloverlay element after an existing + qmlglsink elements was already in the pipeline would create an entirely + separate GstGLDisplay pointing to the same underlying display resource. + Part-of: + +2021-08-11 14:52:52 +0200 Víctor Manuel Jáquez Leal + + * gst/videocrop/gstaspectratiocrop.c: + * gst/videocrop/gstaspectratiocrop.h: + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + * gst/videocrop/gstvideocropelement.c: + * gst/videocrop/gstvideocropelements.h: + * gst/videocrop/gstvideocropplugin.c: + * gst/videocrop/meson.build: + videocrop: Resurrect logging category. + Fix for a regression from commit 8f1384c9. That commit moved the debug + category definition, as static, into a gstvideocropelement.c, but that + category was used as default, in gstvideocrop.c, so it was never used + at logging, so the debug selector never showed the logs for + videocrop. + This patch move back the category definition into gstvideocrop.c and + leaving the function videocrop_element_init() as a noop. + Part-of: + +2021-07-31 23:14:34 +0900 Seungha Yang + + * ext/jpeg/meson.build: + jpeg: Add support for meson fallback + Allow building jpeg plugin by using meson fallback + Part-of: + +2021-07-27 10:43:21 +0800 Hou Qi + + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2videodec.c: + v4l2: Keep decoder capture fps same as output fps if it's not set + Part-of: + +2021-07-27 18:33:18 +0900 Seungha Yang + + * docs/gst_plugins_cache.json: + * ext/jack/gstjack.c: + * ext/jack/gstjack.h: + * ext/jack/gstjackaudioclient.c: + * ext/jack/gstjackaudioclient.h: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosink.h: + * ext/jack/gstjackaudiosrc.c: + * ext/jack/gstjackaudiosrc.h: + jack: Add port-names property to select ports explicitly + By this new property, user can select physical port to connect, + and element will pick requested port instead of random ones. + User should provide full port name including "client_name:" prefix. + An example is + jackaudiosrc port-names="system:capture_1,system:capture_3" ! ... + jackaudiosink port-names="system:playback_2" + In addition to "port-names" property, a new connect type "explicit" + is added so that element can post error message if requested + "port-names" contains invalid port(s). + Part-of: + +2021-07-23 11:04:00 +0200 Kai Uwe Broulik + + * ext/qt/gstqsgtexture.cc: + * ext/qt/gstqtsink.cc: + qt: Support RGB format + In GstQSGTexture::hasAlphaChannel return value based on + whether the video format has alpha channel. + Part-of: + +2021-07-26 20:14:32 +0900 Seungha Yang + + * docs/gst_plugins_cache.json: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosink.h: + * ext/jack/gstjackaudiosrc.c: + * ext/jack/gstjackaudiosrc.h: + jack: Add low-latency property for automatic latency-optimized setting + Similar to wasapi/wasapi2 plugins on Windows, adding low-latency + option so that jack element can optimize GstAudioRingBufferSpec + setting for low latency. + Part-of: + +2021-07-26 19:55:25 +0900 Seungha Yang + + * ext/jack/gstjackaudioclient.c: + * ext/jack/gstjackaudioclient.h: + * ext/jack/gstjackaudiosrc.c: + * ext/jack/gstjackringbuffer.h: + jack: Remove trailing whitespace + Part-of: + +2021-07-27 17:58:15 +0200 Víctor Manuel Jáquez Leal + + * docs/gst_plugins_cache.json: + * gst/videocrop/gstvideocrop-private.h: + videocrop: Resurrect any caps feature negotiation. + Commit e31cbce4 brought a regression to negotiate featured caps. But + only by removing the entry in the caps template. This commit brings it + back. + Part-of: + +2021-07-26 18:43:04 +0900 Seungha Yang + + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + jack: Fix assertion fail when device supports only mono channel + MAX should be larger than MIN for GST_TYPE_INT_RANGE. + GStreamer-CRITICAL **: 18:26:27.912: + gst_value_collect_int_range: assertion 'collect_values[0].v_int < collect_values[1].v_int' failed + Part-of: + +2021-07-21 20:14:46 +1000 Matthew Waters + + * ext/qt/gstqtsrc.cc: + * ext/qt/qtwindow.cc: + * ext/qt/qtwindow.h: + qmlglsrc: fix operation without any qmlglsink + E.g. a pipeline like qmlglsrc ! gldownload ! ... would currently fail to + run because the OpenGL context are not created in the correct order. + The QtWindow also needs to know the OpenGL context used by downstream + elements in order to set optimize for the correct GstGLSyncMeta for + synchonisation purposes. + Part-of: + +2021-07-26 17:55:24 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Fix some reference leaks in error cases. + Part-of: + +2021-07-08 00:12:52 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * tests/check/elements/splitmuxsink.c: + splitmuxsink: Prevent hang going back to NULL after failures + Prevent a condition where splitmuxsink won't go back to NULL state + after a child element fails to change state by making sure that + a READY->READY state change doesn't fail, and by returning + GST_FLOW_ERROR or GST_FLOW_FLUSHING upstream to shut down streaming + as quickly as possible. + This can happen after (for example) setting an invalid filename + on the sink element. In that case, the READY->PAUSED transition + fails, but with internal elements still in the NULL state. Trying + to set splitmuxsink back to NULL then ends up trying to bring + those NULL elements up to READY with a READY->READY transition, + (which fails, prevent splitmuxsink from getting to NULL) + Part-of: + +2021-07-13 01:27:45 +0200 Mathieu Duponchelle + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: reduce noise when gst_pad_set_caps fails + It may be that downstream is simply flushing, in which case logging + an error is misleading. + Part-of: + +2021-07-08 02:22:20 +0200 Mathieu Duponchelle + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: always use factory property when set + Part-of: + +2021-06-21 13:47:50 +0200 Yacine Bandou + + * gst/isomp4/qtdemux.c: + qtdemux: No need for new "application/x-cbcs" caps + Instead of using the new "application/x-cbcs" caps, we are just adding + a new structure field "ciphe-mode", to indicate which encryption scheme + is used: "cenc", "cbcs", "cbc1" or "cens". + Similarly for the protection metadata, we add the "cipher-mode" field + to specify the encryption mode with which the buffers are encrypted. + "cenc": AES-CTR (no pattern) + "cbc1": AES-CBC (no pattern) + "cens": AES-CTR (pattern specified) + "cbcs": AES-CBC (pattern specified, using a constant IV) + Currently only "cenc" and "cbcs" are supported. + Part-of: + +2021-07-05 16:12:57 +0100 Philippe Normand + + * ext/qt/qtitem.h: + qt: Fix clang build + The updatePaintNode method is part of the QQuickItem class interface, so needs + to be flagged as overriding the default implementation. + Part-of: + +2020-04-15 10:38:04 +0100 Philippe Normand + + * ext/qt/gstqtsink.cc: + * ext/qt/qtitem.cc: + * ext/qt/qtitem.h: + qt: Add navigation events support + Currently handles only mouse events. + Part-of: + +2020-04-15 10:33:22 +0100 Philippe Normand + + * ext/gtk/gtkgstbasewidget.c: + gtk: Scroll events dispatch support + Part-of: + +2021-07-02 01:41:05 +1000 Jan Schmidt + + * gst/matroska/matroska-mux.c: + matroskamux: Always write a tags element into seekhead + If there are only stream tags, we still want to write the + tags entry into the seekhead, so that tags can be found + quickly in the player. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/905 + Part-of: + +2021-06-30 23:52:26 +0900 Seungha Yang + + * gst/isomp4/gstqtmux.c: + qtmux: Don't need to update track per GstCaps if it's not changed + Skip GstQTMuxPad::set_caps() call for duplicated caps. + All the processing done in set_caps() method for duplicated caps + are redundant. + Part-of: + +2021-07-01 13:18:45 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpssrcdemux.c: + rtpssrcdemux: Remove pads and reset the element also in READY->NULL + Mostly for completeness. + Part-of: + +2021-07-01 13:18:09 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: Remove pads also in PAUSED->READY + They're based on per-stream information and that should be reset + whenever going to READY state. + Part-of: + +2021-02-16 16:39:34 +0100 Jakub Adam + + * docs/gst_plugins_cache.json: + docs: update plugins cache for vp9enc + Part-of: + +2021-04-09 19:22:29 +0200 Jakub Adam + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvp9enc.h: + * ext/vpx/gstvpxenums.h: + * ext/vpx/meson.build: + vpx: add enum for adaptive quantization modes + Part-of: + +2021-02-16 13:28:00 +0100 Jakub Adam + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvp9enc.h: + vp9enc: expose frame-parallel-decoding property + Part-of: + +2021-02-16 12:57:55 +0100 Jakub Adam + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvp9enc.h: + vp9enc: expose aq-mode property + Part-of: + +2021-06-26 20:00:03 +0900 Seungha Yang + + * gst/udp/gstmultiudpsink.c: + multiudpsink: Fix broken SO_SNDBUF get/set on Windows + SO_SNDBUF has been undefined on Windows because of missing WinSock2.h + include. And don't use native socket functions (e.g., setsockopt()) + if code is expected to be built on Windows. We don't link ws2_32.lib + for this plugin. + Part-of: + +2021-06-24 14:57:14 -0400 Olivier Crête + + * gst/rtpmanager/gstrtphdrext-twcc.c: + rtpmanager: Access GstRTPHdrExt fields through accessor + This way, the implementation can be private. + Part-of: + +2021-06-22 17:19:19 +1000 Jan Schmidt + + * gst/isomp4/qtdemux.c: + qtdemux: Refuse seeks in BYTES format + If downstream tries to seek in BYTES format, don't pass that through + to upstream. The byte positions downstream requests won't make any + sense in the muxed stream. There might be other formats we want to + pass through to upstream, but BYTES is not one of them. If we get a + seeking query about BYTES format, refuse that too. + This fixes a situation where we're playing a fragmented mp4 over http + and qtdemux refuses the initial seek (in TIME format), but then + h264parse/baseparse send a seek in BYTES format and everything falls + apart. + Part-of: + +2021-06-16 16:30:59 +0530 Nirbheek Chauhan + + * gst/rtp/gstrtph265depay.c: + rtph265depay: update codec_data in caps regardless of format + Updating of codec_data in the caps is important to propagate changes + in sps/pps/vps via NALs. Without this, downstream does not renegotiate + when upstream changes resolution. + The comment referring to rtph264pay is from 2015 and is out of date. + rtph264pay stopped doing that in 2017 with commit + dabeed52a995d27e16eba9e4617e61eb0bcd44c4 + Part-of: + +2021-06-04 13:56:05 +0300 Jordan Petridis + + * docs/gst_plugins_cache.json: + doc: update gst_plugins_cache.json + Part-of: + +2021-06-03 20:33:45 +1000 Matthew Waters + + * ext/qt/qtitem.cc: + qtitem: don't potentially leak a large number of buffers + The only other place where these queued buffers are removed, is in + setCaps() but that is not called at all on shutdown so this list of + buffers could not be removed. + Part-of: + +2021-05-28 09:54:12 -0400 Nicolas Dufresne + + * docs/gst_plugins_cache.json: + * ext/jpeg/gstjpegenc.c: + jpegenc: Remove arbitrary encoding size limitation + The encoder is happy to encode with sizes less then 16x16, so remove this + arbitrary limitation. This also fixes the fact the sink and src template caps + disagree. + Fixes #888 + Part-of: + +2021-05-23 15:42:38 +0100 Tim-Philipp Müller + + * gst/isomp4/qtdemux.c: + qtdemux: use g_memdup2() as g_memdup() is deprecated + - atom nodes/bytereader sizes are already checked + - palettes: are fixed/known size + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Also use gst_buffer_new_memdup() instead of _wrapped(g_memdup(),..). + Part-of: + +2021-05-23 01:28:11 +0100 Tim-Philipp Müller + + * gst/matroska/ebml-read.c: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-read-common.c: + matroskademux: use g_memdup2() as g_memdup() is deprecated + - ebml-read: add some sanity checks when going from 64-bit + to 32-bit length + - matroska-ids: codec_data_size has been checked via + gst_ebml_read_binary(), is existing allocation. + - matroska-demux: alloc size is from existing allocations + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Also use gst_buffer_new_memdup() instead of _wrapped(g_memdup(),..). + Part-of: + +2021-05-22 19:39:32 +0100 Tim-Philipp Müller + + * ext/libpng/gstpngdec.c: + * ext/vpx/gstvpxenc.c: + * ext/wavpack/gstwavpackenc.c: + * meson.build: + * tests/check/elements/rtp-payloading.c: + * tests/check/elements/rtph264.c: + * tests/check/elements/rtph265.c: + * tests/check/elements/rtpopus.c: + * tests/check/elements/rtpvp8.c: + * tests/check/elements/rtpvp9.c: + * tests/icles/gdkpixbufoverlay-test.c: + Use g_memdup2() where available and add fallback for older GLib versions + - png: alloc size variable is a png type that's always 32-bit + - vpx: alloc size based on existing allocation + - wavpack: alloc size based on existing allocation + - icles: gdkpixbufoverlay: trusted and hard-coded input data + - rtp tests: rtp-payloading, vp8, vp9, h264, h265: trusted and/or static input data + g_memdup() is deprecated since GLib 2.68 and we want to avoid + deprecation warnings with recent versions of GLib. + Also use gst_buffer_new_memdup() instead of _wrapped(g_memdup(),..) + Part-of: + +2021-06-01 15:28:36 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * meson.build: + Back to development + === release 1.19.1 === 2021-06-01 00:11:44 +0100 Tim-Philipp Müller @@ -6,6 +1038,7 @@ * NEWS: * README: * RELEASE: + * docs/gst_plugins_cache.json: * gst-plugins-good.doap: * meson.build: Release 1.19.1 diff --git a/NEWS b/NEWS index cc6c3b4a8e..0e581c39b8 100644 --- a/NEWS +++ b/NEWS @@ -1,15 +1,15 @@ GStreamer 1.20 Release Notes GStreamer 1.20 has not been released yet. It is scheduled for release -around July 2021. +around October/November 2021. 1.19.x is the unstable development version that is being developed in -the git master branch and which will eventually result in 1.20, and -1.19.1 is the current development release in that series +the git main branch and which will eventually result in 1.20, and 1.19.2 +is the current development release in that series -It is expected that feature freeze will be around June/July 2021, -followed by several 1.19 pre-releases and the new 1.20 stable release -around July 2021. +It is expected that feature freeze will be in early October 2021, +followed by one or two 1.19.9x pre-releases and the new 1.20 stable +release around October/November 2021. 1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6,, 1.4, 1.2 and 1.0 release series. @@ -17,7 +17,7 @@ around July 2021. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Sunday 30 May 2021, 16:00 UTC (log) +Last updated: Wednesday 22 September 2021, 18:00 UTC (log) Introduction @@ -247,6 +247,10 @@ Documentation improvements Possibly Breaking Changes - this section will be filled in in due course +- MPEG-TS SCTE-35 API changes (FIXME: flesh out) +- gst_parse_launch() and friends now error out on non-existing + properties on top-level bins where they would silently fail and + ignore those before. Known Issues @@ -274,16 +278,15 @@ the git 1.20 branch, which will be a stable branch. 1.20.0 -1.20.0 is scheduled to be released around July 2021. +1.20.0 is scheduled to be released around October/November 2021. Schedule for 1.22 Our next major feature release will be 1.22, and 1.21 will be the unstable development version leading up to the stable 1.22 release. The -development of 1.21/1.22 will happen in the git master branch. +development of 1.21/1.22 will happen in the git main branch. -The plan for the 1.22 development cycle is yet to be confirmed, but it -is hoped that feature freeze will take place some time in December 2021. +The plan for the 1.22 development cycle is yet to be confirmed. 1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. diff --git a/RELEASE b/RELEASE index 43016107f5..02e7d4a912 100644 --- a/RELEASE +++ b/RELEASE @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-good 1.19.1. +This is GStreamer gst-plugins-good 1.19.2. GStreamer 1.19 is the development branch leading up to the next major stable version which will be 1.20. diff --git a/docs/gst_plugins_cache.json b/docs/gst_plugins_cache.json index 96b6ca3ce0..1d9e18d14c 100644 --- a/docs/gst_plugins_cache.json +++ b/docs/gst_plugins_cache.json @@ -6607,7 +6607,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.19.1.1 FLV muxer", + "default": "GStreamer 1.19.2 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -6619,7 +6619,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.19.1.1 FLV muxer", + "default": "GStreamer 1.19.2 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -20224,7 +20224,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer/1.19.1.1", + "default": "GStreamer/1.19.2", "mutable": "null", "readable": true, "type": "gchararray", @@ -22181,7 +22181,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer souphttpsrc 1.19.1.1 ", + "default": "GStreamer souphttpsrc 1.19.2 ", "mutable": "null", "readable": true, "type": "gchararray", diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index ba8918ce96..6111bac037 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). + + + 1.19.2 + master + + 2021-09-23 + + + + 1.19.1 diff --git a/meson.build b/meson.build index 1f433f05ad..f8e1299333 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-good', 'c', - version : '1.19.1.1', + version : '1.19.2', meson_version : '>= 0.54', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ])