diff --git a/ChangeLog b/ChangeLog index 3b721ee718..ee3a0edb7c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1017 @@ +=== release 1.15.2 === + +2019-02-26 11:53:22 +0000 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * configure.ac: + * gst-plugins-bad.doap: + * meson.build: + Release 1.15.2 + +2019-02-26 11:53:22 +0000 Tim-Philipp Müller + + * docs/plugins/gst-plugins-bad-plugins.args: + * docs/plugins/gst-plugins-bad-plugins.hierarchy: + * docs/plugins/inspect/plugin-accurip.xml: + * docs/plugins/inspect/plugin-adpcmdec.xml: + * docs/plugins/inspect/plugin-adpcmenc.xml: + * docs/plugins/inspect/plugin-aiff.xml: + * docs/plugins/inspect/plugin-asfmux.xml: + * docs/plugins/inspect/plugin-assrender.xml: + * docs/plugins/inspect/plugin-audiobuffersplit.xml: + * docs/plugins/inspect/plugin-audiofxbad.xml: + * docs/plugins/inspect/plugin-audiolatency.xml: + * docs/plugins/inspect/plugin-audiomixmatrix.xml: + * docs/plugins/inspect/plugin-audiovisualizers.xml: + * docs/plugins/inspect/plugin-autoconvert.xml: + * docs/plugins/inspect/plugin-bayer.xml: + * docs/plugins/inspect/plugin-bluez.xml: + * docs/plugins/inspect/plugin-bs2b.xml: + * docs/plugins/inspect/plugin-bz2.xml: + * docs/plugins/inspect/plugin-camerabin.xml: + * docs/plugins/inspect/plugin-chromaprint.xml: + * docs/plugins/inspect/plugin-closedcaption.xml: + * docs/plugins/inspect/plugin-coloreffects.xml: + * docs/plugins/inspect/plugin-colormanagement.xml: + * docs/plugins/inspect/plugin-curl.xml: + * docs/plugins/inspect/plugin-dashdemux.xml: + * docs/plugins/inspect/plugin-dc1394.xml: + * docs/plugins/inspect/plugin-de265.xml: + * docs/plugins/inspect/plugin-debugutilsbad.xml: + * docs/plugins/inspect/plugin-decklink.xml: + * docs/plugins/inspect/plugin-dfbvideosink.xml: + * docs/plugins/inspect/plugin-dtls.xml: + * docs/plugins/inspect/plugin-dtsdec.xml: + * docs/plugins/inspect/plugin-dvb.xml: + * docs/plugins/inspect/plugin-dvbsuboverlay.xml: + * docs/plugins/inspect/plugin-dvdspu.xml: + * docs/plugins/inspect/plugin-faac.xml: + * docs/plugins/inspect/plugin-faad.xml: + * docs/plugins/inspect/plugin-faceoverlay.xml: + * docs/plugins/inspect/plugin-fbdevsink.xml: + * docs/plugins/inspect/plugin-fdkaac.xml: + * docs/plugins/inspect/plugin-festival.xml: + * docs/plugins/inspect/plugin-fieldanalysis.xml: + * docs/plugins/inspect/plugin-flite.xml: + * docs/plugins/inspect/plugin-fluidsynthmidi.xml: + * docs/plugins/inspect/plugin-freeverb.xml: + * docs/plugins/inspect/plugin-frei0r.xml: + * docs/plugins/inspect/plugin-gaudieffects.xml: + * docs/plugins/inspect/plugin-gdp.xml: + * docs/plugins/inspect/plugin-geometrictransform.xml: + * docs/plugins/inspect/plugin-gme.xml: + * docs/plugins/inspect/plugin-gsm.xml: + * docs/plugins/inspect/plugin-hls.xml: + * docs/plugins/inspect/plugin-id3tag.xml: + * docs/plugins/inspect/plugin-inter.xml: + * docs/plugins/inspect/plugin-interlace.xml: + * docs/plugins/inspect/plugin-ipcpipeline.xml: + * docs/plugins/inspect/plugin-ivfparse.xml: + * docs/plugins/inspect/plugin-ivtc.xml: + * docs/plugins/inspect/plugin-jp2kdecimator.xml: + * docs/plugins/inspect/plugin-jpegformat.xml: + * docs/plugins/inspect/plugin-kate.xml: + * docs/plugins/inspect/plugin-kms.xml: + * docs/plugins/inspect/plugin-ladspa.xml: + * docs/plugins/inspect/plugin-legacyrawparse.xml: + * docs/plugins/inspect/plugin-midi.xml: + * docs/plugins/inspect/plugin-mms.xml: + * docs/plugins/inspect/plugin-modplug.xml: + * docs/plugins/inspect/plugin-mpegpsdemux.xml: + * docs/plugins/inspect/plugin-mpegpsmux.xml: + * docs/plugins/inspect/plugin-mpegtsdemux.xml: + * docs/plugins/inspect/plugin-mpegtsmux.xml: + * docs/plugins/inspect/plugin-musepack.xml: + * docs/plugins/inspect/plugin-mxf.xml: + * docs/plugins/inspect/plugin-neonhttpsrc.xml: + * docs/plugins/inspect/plugin-netsim.xml: + * docs/plugins/inspect/plugin-ofa.xml: + * docs/plugins/inspect/plugin-openal.xml: + * docs/plugins/inspect/plugin-opencv.xml: + * docs/plugins/inspect/plugin-openexr.xml: + * docs/plugins/inspect/plugin-openh264.xml: + * docs/plugins/inspect/plugin-openjpeg.xml: + * docs/plugins/inspect/plugin-openmpt.xml: + * docs/plugins/inspect/plugin-openni2.xml: + * docs/plugins/inspect/plugin-opusparse.xml: + * docs/plugins/inspect/plugin-pcapparse.xml: + * docs/plugins/inspect/plugin-pnm.xml: + * docs/plugins/inspect/plugin-proxy.xml: + * docs/plugins/inspect/plugin-removesilence.xml: + * docs/plugins/inspect/plugin-resindvd.xml: + * docs/plugins/inspect/plugin-rfbsrc.xml: + * docs/plugins/inspect/plugin-rsvg.xml: + * docs/plugins/inspect/plugin-rtmp.xml: + * docs/plugins/inspect/plugin-rtponvif.xml: + * docs/plugins/inspect/plugin-sbc.xml: + * docs/plugins/inspect/plugin-sdpelem.xml: + * docs/plugins/inspect/plugin-segmentclip.xml: + * docs/plugins/inspect/plugin-shm.xml: + * docs/plugins/inspect/plugin-siren.xml: + * docs/plugins/inspect/plugin-smooth.xml: + * docs/plugins/inspect/plugin-smoothstreaming.xml: + * docs/plugins/inspect/plugin-sndfile.xml: + * docs/plugins/inspect/plugin-soundtouch.xml: + * docs/plugins/inspect/plugin-spandsp.xml: + * docs/plugins/inspect/plugin-speed.xml: + * docs/plugins/inspect/plugin-srt.xml: + * docs/plugins/inspect/plugin-srtp.xml: + * docs/plugins/inspect/plugin-subenc.xml: + * docs/plugins/inspect/plugin-teletext.xml: + * docs/plugins/inspect/plugin-timecode.xml: + * docs/plugins/inspect/plugin-ttmlsubs.xml: + * docs/plugins/inspect/plugin-uvch264.xml: + * docs/plugins/inspect/plugin-vdpau.xml: + * docs/plugins/inspect/plugin-videofiltersbad.xml: + * docs/plugins/inspect/plugin-videoframe_audiolevel.xml: + * docs/plugins/inspect/plugin-videoparsersbad.xml: + * docs/plugins/inspect/plugin-videosignal.xml: + * docs/plugins/inspect/plugin-vmnc.xml: + * docs/plugins/inspect/plugin-voaacenc.xml: + * docs/plugins/inspect/plugin-voamrwbenc.xml: + * docs/plugins/inspect/plugin-vulkan.xml: + * docs/plugins/inspect/plugin-wasapi.xml: + * docs/plugins/inspect/plugin-waylandsink.xml: + * docs/plugins/inspect/plugin-webp.xml: + * docs/plugins/inspect/plugin-webrtc.xml: + * docs/plugins/inspect/plugin-wildmidi.xml: + * docs/plugins/inspect/plugin-x265.xml: + * docs/plugins/inspect/plugin-y4mdec.xml: + * docs/plugins/inspect/plugin-yadif.xml: + * docs/plugins/inspect/plugin-zbar.xml: + Update docs + +2019-02-26 11:53:18 +0000 Tim-Philipp Müller + + * 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/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: + Update translations + +2019-02-11 16:49:32 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: release the occupied surface for MFX_WRN_DEVICE_BUSY + When MFXVideoDECODE_DecodeFrameAsync () returns MFX_WRN_DEVICE_BUSY with + an output surface, a new input surface is required when retrying + MFXVideoDECODE_DecodeFrameAsync (). + This fixes the out-of-surface issue mentioned in + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/890 + +2019-01-18 15:14:59 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: don't destroy an image twice + This gets rid of annoying message in the log, e.g. run the pipeline + below: + gst-launch-1.0 videotestsrc num-buffers=100 ! \ + video/x-raw,format=NV12,width=352,height=288 ! msdkh264enc ! filesink \ + location=test.h264 + [LIBVA]:CRITICAL - DdiMedia_DestroyImage:4357: Invalid image + +2019-01-17 16:05:05 +0800 Haihao Xiang + + * sys/msdk/gstmsdkbufferpool.c: + msdk: move the comment to the correct place + +2019-02-20 12:52:08 -0500 Aaron Boxer + + * ext/srt/gstsrtobject.c: + srtobject: check for null local address to avoid SIGSEV + +2019-02-21 23:51:39 +0100 Mathieu Duponchelle + + * ext/closedcaption/gstccconverter.c: + ccconverter: fix typo in framerate + +2019-02-21 15:16:37 +0000 Vivia Nikolaidou + + * gst/audiobuffersplit/gstaudiobuffersplit.c: + * gst/audiobuffersplit/gstaudiobuffersplit.h: + audiobuffersplit: Added max-silence-time property + +2019-02-20 11:26:01 +0100 Mathieu Duponchelle + + * gst/mpegtsmux/mpegtsmux.c: + mpegtsmux: allow specifying the PID of the PCR stream + The structure passed through the prog-map can now contain a + PCR_=sink_ key-value pair. + +2019-02-14 10:58:00 +0000 Tim-Philipp Müller + + * sys/decklink/gstdecklinkaudiosink.cpp: + * sys/decklink/gstdecklinkaudiosrc.cpp: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklink: add Hardware tag to element metadata + +2019-02-14 10:54:25 +0000 Tim-Philipp Müller + + * sys/wasapi/gstwasapisink.c: + * sys/wasapi/gstwasapisrc.c: + wasapi: add Hardware tag to element metadata + +2019-02-14 10:44:00 +0000 Tim-Philipp Müller + + * sys/winks/gstksvideosrc.c: + winks: add Hardware tag to element metadata + +2019-02-14 09:49:46 +0000 Tim-Philipp Müller + + * sys/androidmedia/gstahcsrc.c: + * sys/androidmedia/gstamcvideodec.c: + * sys/androidmedia/gstamcvideoenc.c: + androidmedia: add Hardware tag to element metadata + +2019-02-14 09:49:03 +0000 Tim-Philipp Müller + + * sys/applemedia/avfvideosrc.m: + * sys/applemedia/avsamplevideosink.m: + * sys/applemedia/vtdec.c: + * sys/applemedia/vtenc.c: + applemedia: add Hardware tag to element metadata + +2019-02-14 09:47:29 +0000 Tim-Philipp Müller + + * sys/msdk/gstmsdkh264dec.c: + * sys/msdk/gstmsdkh264enc.c: + * sys/msdk/gstmsdkh265dec.c: + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkmjpegdec.c: + * sys/msdk/gstmsdkmjpegenc.c: + * sys/msdk/gstmsdkmpeg2dec.c: + * sys/msdk/gstmsdkmpeg2enc.c: + * sys/msdk/gstmsdkvc1dec.c: + * sys/msdk/gstmsdkvp8dec.c: + * sys/msdk/gstmsdkvp8enc.c: + * sys/msdk/gstmsdkvp9dec.c: + msdk: add Hardware tag to element metadata + +2019-02-14 09:43:54 +0000 Tim-Philipp Müller + + * sys/nvdec/gstnvdec.c: + * sys/nvenc/gstnvh264enc.c: + * sys/nvenc/gstnvh265enc.c: + nvenc, nvdec: add Hardware tag to element metadata + +2019-02-05 17:10:03 +0000 Alex Ashley + + * ext/curl/gstcurlhttpsrc.c: + curlhttpsrc: set BUFFER_OFFSET when creating GstBuffer + To make curlhttpsrc behave more like souphttpsrc, set the + BUFFER_OFFSET in its output buffers to match the segment + start. This means that in a HTTP RANGE request, the BUFFER_OFFSET + will match the value in the RANGE request. + +2019-02-05 17:06:50 +0000 Alex Ashley + + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlhttpsrc.h: + curlhttpsrc: export same HTTP error status as souphttpsrc + To make it closer to a drop-in replacement for souphttpsrc, + expose the same gst_error_message_with_details as souphttpsrc, + so that applications can received the HTTP status code and reason + when an error occurs. + +2019-02-05 16:34:40 +0000 Alex Ashley + + * ext/curl/gstcurldefaults.h: + * ext/curl/gstcurlhttpsrc.c: + * ext/curl/gstcurlhttpsrc.h: + * ext/curl/gstcurlqueue.c: + * ext/curl/gstcurlqueue.h: + curlhttpsrc: fix various leaks and thread safety issues + curlhttpsrc uses a single thread running the + gst_curl_http_src_curl_multi_loop() function to handle receiving + data and messages from libcurl. Each instance of curlhttpsrc adds + an entry into a queue in GstCurlHttpSrcMultiTaskContext and waits + for the multi_loop to perform the HTTP request. + Valgrind has shown up race conditions and memory leaks: + 1. gst_curl_http_src_change_state() does not wait for the multi_loop + to complete before going to the NULL state, which means that + an instance of GstCurlHttpSrc can be released while + gst_curl_http_src_curl_multi_loop() still has a reference to it. + 2. if multiple elements try to be removed from the queue at once, + only the last one is deleted. + 3. source->caps is leaked + 4. curl multi_handle is leaked + 5. leak of curl_handle if URI not set + 6. leak of http_headers when reusing element + 7. null pointer dereference in negotiate caps + 8. double-free of the default user-agent string + 9. leak of multi_task_context.task + This commit changes the logic so that each element has a connection + status, which is used by the multi_loop to decide when to remove an + element from its queue. An instance of curlhttpsrc will not enter + the NULL state until its reference has been removed from the queue. + When shutting down the curl multi loop, the memory allocated from the + call to curl_multi_init() is now released. + When gstadaptivedemux uses a URI source element, it will re-use + it for multiple requests, moving it between READY and PLAYING + between each request. curlhttpsrc was leaking the http_headers + structure in this use case. + The gst_curl_http_src_negotiate_caps() function extracts the + "response-headers" field from the http_headers, but did not check + that this field might be NULL. + If the user-agent property is set, the global user-agent string + was freed. This caused a double-free error if the user-agent is + ever set a second time during the execution of the process. + There are situations within curlhttpsrc where the code needs + both the global multi_task_context mutex and the per-element + buffer_mutex. To avoid deadlocks, it is vital that the order in + which these are requested is always the same. This commit modifies + the locking order to always be in the order: + 1. multi_task_context.task_rec_mutex + 2. buffer_mutex + Fixes #876 + +2019-02-05 16:23:01 +0000 Alex Ashley + + * tests/check/Makefile.am: + * tests/check/elements/curlhttpsrc.c: + * tests/check/meson.build: + tests: curlhttpsrc: add unit tests + Based upon the souphttpsrc tests, add unit tests for the curlhttpsrc + element. The souphttpsrc tests are able to use an HTTP server that + is provided as part of the soup library. This does not exist in the + curl library, therefore these tests provide a very simple HTTP server + using the GIO library. + These curlhttpsrc tests contain one new test that does not come from + the souphttpsrc tests. The test_multiple_http_requests test tries to + reproduce the way in which GstAdaptiveDemux makes use of URI source + elements. GstAdaptiveDemux creates a bin with the httpsrc element + and a queue element and sets the locked state of that bin to TRUE, + so that it does not follow the state transitions of its parent. It + then moves this bin to the PLAYING state to start each download and + back to READY when the download completes. + +2019-02-14 14:48:12 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: allow UYVY in DMABuf mode in the sink pad + Tested with the pipeline below: + gst-launch-1.0 videotestsrc num-buffers=1 ! msdkvpp ! \ + video/x-raw\(memory:DMABuf\),format=UYVY ! msdkvpp ! video/x-raw, \ + format=YUY2 ! filesink location=a.yuv + +2019-02-14 13:56:52 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: allow UYVY in the src pad + This make the pipeline below works: + gst-launch-1.0 videotestsrc num-buffers=1 ! msdkvpp ! \ + video/x-raw,format=UYVY ! filesink location=a.yuv + Once https://github.com/intel/media-driver/pull/526 in the media-driver + is merged, the pipeline below also works: + gst-launch-1.0 videotestsrc num-buffers=1 ! msdkvpp ! \ + video/x-raw\(memory:DMABuf\),format=UYVY ! filesink location=a.yuv + +2019-01-02 19:48:34 +0800 Haihao Xiang + + * sys/msdk/gstmsdkallocator_libva.c: + msdk: map GST_VIDEO_FORMAT_UYVY to VA_FOURCC_UYVY + +2019-02-14 13:43:13 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: allow BGRx in DMABuf mode in the src pad + Tested with the pipeline below: + gst-launch-1.0 videotestsrc ! msdkvpp ! \ + video/x-raw\(memory:DMABuf\),format=BGRx ! glimagesink + +2019-02-18 15:15:44 +0100 Bastien Nocera + + * configure.ac: + * docs/plugins/gst-plugins-bad-plugins-docs.sgml: + * docs/plugins/gst-plugins-bad-plugins-sections.txt: + * docs/plugins/inspect/plugin-vcdsrc.xml: + * meson_options.txt: + * sys/Makefile.am: + * sys/meson.build: + * sys/vcd/Makefile.am: + * sys/vcd/meson.build: + * sys/vcd/vcdsrc.c: + * sys/vcd/vcdsrc.h: + * tests/check/Makefile.am: + vcdsrc: Remove unusable VCD source + The VCD source was ported in 2014 (commit 89eb1e9), but the necessary + "cdxaparse" plugin, which is used to "Parse a .dat file (VCD) into + raw mpeg1" was never ported. + This means that the probable main user for the feature, totem, hasn't + actually been able to play back VCDs, since 2012, when it switched to + using GStreamer 1.0. + Note that even if cdxaparse was finally ported, a lot of work would + still be necessary before it is considered usable. Notably, it is + missing disc image support [1] and some VCDs just cannot be opened for + reading [2]. + [1]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/898 + [2]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/899 + +2019-02-15 22:51:21 +0530 Nirbheek Chauhan + + * ext/closedcaption/misc.h: + closedcaption: Use portable variadic macro syntax + args... is not understood by MSVC: + error C2010: '.': unexpected in macro parameter list + +2019-02-15 22:52:30 +0530 Nirbheek Chauhan + + * ext/closedcaption/decoder.c: + * ext/closedcaption/decoder.h: + closedcaption: Port plugin to MSVC + pthread is not portable, so we can't use a pthread mutex use GMutex + instead. + +2018-05-09 13:16:15 +0100 Daniel Stone + + * ext/wayland/wlwindow.c: + waylandsink: Don't create throwaway empty regions + Instead of creating a region, adding nothing to it, setting that as the + input region and destroying the region, you can instead just pass NULL + to wl_surface_set_input_region for the same effect. + Fixes #702 + +2019-02-15 19:15:11 +1100 Matthew Waters + + * ext/webrtc/gstwebrtcbin.c: + webrtc: fix rtx + bundle + If bundle was used in combination with rtx, only the bundled transport + stream would have correctly configured rtx parameters. + Iterate over the payloads upfront in the bundled case to ensure the + correct payload mapping is set for the RTX elements. + +2019-02-13 17:24:50 +0100 Edward Hervey + + * ext/dtls/gstdtlsagent.c: + dtls: Don't abort on non-fatal issues + OpenSSL will take care of returning valid context if there are + only non-fatal issues. Don't abort in those cases and instead just + print out the issues + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/811 + +2019-02-13 16:09:45 +0100 Jan Alexander Steffens (heftig) + + * ext/fdkaac/gstfdkaacenc.c: + fdkaacenc: Fix draining with libfdk-aac v2.0.0 + This release requires all buffer descriptor pointers to be valid, even + when we provide zero input buffers. + +2019-02-13 00:54:50 +1100 Jan Schmidt + + * gst/mpegtsdemux/mpegtspacketizer.c: + tsdemux: Skew correction should use the upstream DTS + The MPEG-TS packetiser should use the upstream DTS for + skew correction when running in that mode, as the DTS + carries the upstream arrival time. The PTS (if it's + set at all) is less useful, and can be invalid. + +2019-02-12 14:31:13 +0200 Sebastian Dröge + + * ext/closedcaption/gstccconverter.c: + ccconverter: Don't output empty buffers + +2019-02-12 14:30:49 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosink.cpp: + decklinkvideosink: Use S334_EIA_608 instead of S334_EIA_708 for CEA608 output + +2019-02-12 14:30:13 +0200 Sebastian Dröge + + * sys/decklink/gstdecklinkvideosink.cpp: + decklinkvideosink: S334 1A CEA608 closed captions have the first bit set for the first field + And not for the second field. The logic was inverted here. + +2019-02-11 13:53:19 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: set decode_only for output only + MSDK may return MFX_ERR_MORE_DATA but without output surface + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/887 + +2019-02-12 10:53:55 +0800 Haihao Xiang + + * sys/msdk/gstmsdkcontext.c: + msdk: verify the driver name + We need to make sure the Intel graphics card is used in a dual GPU + system. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/895 + +2019-01-25 16:25:10 +0900 Justin Kim + + * ext/srt/gstsrt-enums.h: + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtobject.h: + srt: re-enable passphrase + With refactoring, supporting passphrase was removed accidently. + This commit re-enables srt encryption and validates 'passphrase' + by checking the return value of 'srt_setsockopt'. + fix: #694 + +2019-02-11 21:21:52 +0900 Seungha Yang + + * ext/openh264/gstopenh264dec.cpp: + openh264dec: Fix build with msvc + Fix following build error + ../subprojects/gst-plugins-bad/ext/openh264/gstopenh264dec.cpp(76): error C2121: + Note that msvc usually complains #if inside macro + +2019-01-26 22:09:59 -0500 Josh Matthews + + * sys/applemedia/Makefile.am: + * sys/applemedia/avfdeviceprovider.h: + * sys/applemedia/avfdeviceprovider.m: + * sys/applemedia/avfvideosrc.h: + * sys/applemedia/avfvideosrc.m: + * sys/applemedia/meson.build: + * sys/applemedia/plugin.m: + Add device provider for AVFoundation capture devices. + +2019-02-05 23:53:17 +0530 Nirbheek Chauhan + + * ext/ladspa/gstladspa.c: + * gst/removesilence/vad_private.c: + * sys/decklink/gstdecklinkvideosink.cpp: + * sys/decklink/win/DeckLinkAPIDispatch.cpp: + * sys/decklink/win/DeckLinkAPI_i.c: + * sys/wasapi/gstwasapiutil.c: + * sys/winks/kshelpers.c: + misc: Fix warnings on Cerbero MinGW + gstladspa.c:360:5: error: zero-length ms_printf format string [-Werror=format-zero-length] + vad_private.c:108:3: error: this decimal constant is unsigned only in ISO C90 [-Werror] + gstdecklinkvideosink.cpp:478:32: error: comparison between 'BMDTimecodeFormat {aka enum _BMDTimecodeFormat}' and 'enum GstDecklinkTimecodeFormat' [-Werror=enum-compare] + win/DeckLinkAPI_i.c:72:8: error: extra tokens at end of #endif directive [-Werror] + win/DeckLinkAPIDispatch.cpp:35:10: error: unused variable 'res' [-Werror=unused-variable] + gstwasapiutil.c:733:3: error: format '%x' expects argument of type 'unsigned int', but argument 8 has type 'DWORD' [-Werror=format] + gstwasapiutil.c:733:3: error: format '%x' expects argument of type 'unsigned int', but argument 9 has type 'guint64' [-Werror=format] + kshelpers.c:446:3: error: missing braces around initializer [-Werror=missing-braces] + kshelpers.c:446:3: error: (near initialization for 'known_property_sets[0].guid.Data4') [-Werror=missing-braces] + +2019-02-02 13:26:32 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + * sys/msdk/gstmsdkdec.h: + msdkdec: Release occupied surface for MFX_ERR_MORE_DATA + An output surface is returned but without sync point when when + MFXVideoDECODE_DecodeFrameAsync () returns MFX_ERR_MORE_DATA, this + surface should be released too, otherwise the surface is occupied + and it is easy to exhaust all pre-allocated mfx surfaces. + Example pipeline (input_vp8.webm contains lots of frame with show_frame + set to 0): + gst-launch-1.0 filesrc location=input_vp8.webm ! matroskademux ! + msdkvp8dec ! msdkvpp ! fakesink + 0:00:05.995959693 19866 0x563f30f14590 ERROR default + gstmsdkvideomemory.c:77:gst_msdk_video_allocator_get_surface: failed to + get surface available + ERROR: from element + /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0: Internal data + stream error. + +2019-02-02 16:54:23 +0100 Nicola Murino + + * ext/opencv/gstcameraundistort.cpp: + opencv cameraundistort: use G_GNUC_UNUSED for better portability + +2018-12-17 23:32:26 +0100 Nicola Murino + + * configure.ac: + * ext/opencv/meson.build: + opencv: remove deprecated headers + are not needed anymore + +2018-12-01 22:48:53 +0100 Nicola Murino + + * ext/opencv/MotionCells.cpp: + * ext/opencv/MotionCells.h: + * ext/opencv/cameraevent.cpp: + * ext/opencv/gstcameracalibrate.cpp: + * ext/opencv/gstcameraundistort.cpp: + * ext/opencv/gstcvdilate.cpp: + * ext/opencv/gstcvequalizehist.cpp: + * ext/opencv/gstcverode.cpp: + * ext/opencv/gstcvlaplace.cpp: + * ext/opencv/gstcvlaplace.h: + * ext/opencv/gstcvsmooth.cpp: + * ext/opencv/gstcvsobel.cpp: + * ext/opencv/gstcvsobel.h: + * ext/opencv/gstdewarp.cpp: + * ext/opencv/gstdewarp.h: + * ext/opencv/gstdisparity.cpp: + * ext/opencv/gstdisparity.h: + * ext/opencv/gstedgedetect.cpp: + * ext/opencv/gstedgedetect.h: + * ext/opencv/gstfaceblur.cpp: + * ext/opencv/gstfaceblur.h: + * ext/opencv/gstfacedetect.cpp: + * ext/opencv/gstfacedetect.h: + * ext/opencv/gstgrabcut.cpp: + * ext/opencv/gstgrabcut.h: + * ext/opencv/gsthanddetect.cpp: + * ext/opencv/gsthanddetect.h: + * ext/opencv/gstmotioncells.cpp: + * ext/opencv/gstmotioncells.h: + * ext/opencv/gstretinex.cpp: + * ext/opencv/gstretinex.h: + * ext/opencv/gstsegmentation.cpp: + * ext/opencv/gstsegmentation.h: + * ext/opencv/gstskindetect.cpp: + * ext/opencv/gstskindetect.h: + * ext/opencv/gsttemplatematch.cpp: + * ext/opencv/gsttemplatematch.h: + * ext/opencv/gsttextoverlay.cpp: + * ext/opencv/gsttextoverlay.h: + * ext/opencv/motioncells_wrapper.cpp: + * ext/opencv/motioncells_wrapper.h: + * gst-libs/gst/opencv/gstopencvutils.cpp: + * gst-libs/gst/opencv/gstopencvutils.h: + * gst-libs/gst/opencv/gstopencvvideofilter.cpp: + * gst-libs/gst/opencv/gstopencvvideofilter.h: + opencv: port to c++ + +2019-02-02 17:51:35 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkdec.c: + msdkdec: explain the the extra ref of input buffer + +2019-01-11 16:18:11 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: avoid releasing the input buffer when it is still in use + The input buffer is released in gst_msdkdec_finish_task () when decoding + some special clips however this buffer is still in use, so ref the input + buffer before gst_msdkdec_finish_task () and unref it at the end of + gst_msdkdec_handle_frame (). + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/862 + +2019-01-31 15:24:06 +0530 Nirbheek Chauhan + + * tests/check/meson.build: + meson: orc-test is not required + This is especially never available on iOS. + +2019-01-16 15:15:13 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9dec.c: + msdkvp9dec: output P010_10LE buffer if possible + +2019-01-16 14:52:35 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvp9dec.c: + msdkvp9dec: use separate src caps + We will add more formats in the src caps of msdkvp9dec, so let + msdkvp9dec uses separate src caps. Note it doesn't change any + capability + +2019-01-30 22:16:39 -0300 Thibault Saunier + + * gst/debugutils/gsttestsrcbin.c: + testbin: Do not take FlowCombiner into account when flushing + The way FlowCombiner combines the FLUSH doesn't work in the case + we have several "sinkpads" since any flush return FLUSH. But in the + case we have a seek where on one branch flush is done, we should + just say OK otherwise we might return FLUSHING to a src that has already + been seeked and is ready to process new buffers + +2019-01-30 18:36:51 -0300 Thibault Saunier + + * gst/debugutils/gsttestsrcbin.c: + testbin: Forward seek to all sources + +2019-01-30 11:11:47 -0500 Aaron Boxer + + * sys/d3dvideosink/d3dhelpers.c: + d3dhelpers.c: fix typo in debug output + +2019-01-30 19:54:33 +0900 Seungha Yang + + * meson.build: + * tests/check/meson.build: + meson: Add support orc fallback + Allow fallback to orc subproject if any, and add missing orc version check. + Additionally 'dependencies' keyword is removed from find_library, + because it's invalid keyword for find_library. + +2017-02-27 22:41:47 +1100 Jan Schmidt + + * ext/openh264/gstopenh264dec.cpp: + openh264: Conditionally support the main and high profiles + openh264 added main/high profile support upstream after the 1.8.0 + release, so detect a version higher than that and support main/high + stream input + +2019-01-04 02:53:33 +1100 Jan Schmidt + + * ext/openh264/gstopenh264dec.cpp: + openh264: Use DecodeFrameNoDelay() API instead of DecodeFrame2 + Replace legacy usage of DecodeFrame2 API in favour of the + recommended DecodeFrameNoDelay() + This fixes problems with DecodeFrame2() not (currently) returning + all frames in main/high streams with B-frames, and reduces latency - + previously openh264 would not return a decoded frame until the next + call to DecodeFrame2(). DecodeFrameNoDelay() returns them immediately. + +2019-01-30 14:46:37 +1100 Jan Schmidt + + * ext/openh264/gstopenh264dec.cpp: + openh264dec: Hook up openh264 messages to GStreamer logging + Use the OpenH264 callback to pass Openh264 internal warning/error + messages through the GStreamer logging framework + +2017-04-05 15:36:06 +1000 Jan Schmidt + + * ext/openh264/gstopenh264dec.cpp: + openh264dec: Handle B frame decoding + Support out-of-order decoding in OpenH264 by tracking + our internal frame reference in the OpenH264 timestamp + field. + Drain any pending frames at EOS. + +2019-01-30 14:38:20 +1100 Jan Schmidt + + * ext/openh264/gstopenh264dec.cpp: + Add OpenH264 version check macro + +2017-03-25 03:37:35 +1100 Jan Schmidt + + * ext/openh264/gstopenh264dec.cpp: + openh264dec: Fix up EOS handling + If the last frame(s) produce errors, then we need to drop them + or else we spin forever failing to decode a frame and thinking + it'll get better if we wait for more data that's never coming. + +2019-01-20 01:23:39 +0530 Nirbheek Chauhan + + * sys/nvdec/meson.build: + meson: Fix building of the nvdec plugin on Windows + Have to use the Nvidia Video Codec SDK when building with a newer CUDA + toolkit. + +2019-01-22 13:52:55 +0100 VaL Doroshchuk + + * sys/applemedia/avfvideosrc.m: + avfvideosrc: add device-name property + This property is readonly and should show the name of selected capture device. + +2019-01-22 01:54:24 +0900 Yeongjin Jeong + + * ext/fdkaac/gstfdkaacdec.c: + fdkaacdec: Fix build for fdkaac < 0.1.4 + The fdkaac decoder supports 6.1 / 7.1 channels with downmixer + since v0.1.4. Old versions can use AAC_PCM_OUTPUT_CHANNELS + instead of AAC_PCM_MAX_OUTPUT_CHANNELS. + Fixes #873 + +2019-01-21 12:25:36 +0800 Haihao Xiang + + * sys/msdk/gstmsdkdec.c: + msdkdec: set the mfx picture structure to MFX_PICSTRUCT_PROGRESSIVE if it is unknown + The picture structure in the output parameters from + MFXVideoDECODE_Query is set to MFX_PICSTRUCT_UNKNOWN for some codecs, so + the structure of the corresponding mfx surfaces created for decoding are + unknown. The pipeline will be broken when these surfaces are used as the + input for msdkvpp. + Example pipeline: + gst-launch-1.0 filesrc location=input_vp8.webm ! matroskademux ! + msdkvp8dec ! msdkvpp ! fakesink + Error message: + 0:00:00.031568911 14259 0x55b79dc684a0 ERROR msdkvpp + gstmsdkvpp.c:728:gst_msdkvpp_transform: MSDK Failed to do VPP + ERROR: from element + /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0: Internal data + stream error. + This is a workaround for the above issue + +2019-01-24 22:51:39 +0100 Nicola Murino + + * gst/mpegpsmux/mpegpsmux.c: + mpegpsmux: add stream-format and alignment to H.264 caps + +2019-01-16 10:44:21 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265enc.c: + * sys/msdk/gstmsdkh265enc.h: + msdkh265enc: enable low power mode + Low power mode is disabled by default, set the value of low-power to + true to enable this mode. + +2019-01-24 10:32:46 +0100 Nicola Murino + + * gst/mpegdemux/gstmpegdefs.h: + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: add support for H.265 + +2019-01-24 10:32:14 +0100 Nicola Murino + + * gst/mpegdemux/gstmpegdemux.c: + mpegdemux: add stream format to H.264 caps + +2019-01-21 18:18:46 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkbufferpool.c: + msdk: bufferpool: refactor memory type decision + The memory type was used as bitwise enum, but the enum was not + defined in that way. + Nonetheless, most of the usage of the memory type was as mutually + exclusive options, rather than option composition. + This patch refactor how the memory type is defined, so it is kept + the mutual exclusion among options. + +2019-01-21 12:46:32 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkdec.c: + msdk: fix some comments typos + +2019-01-21 16:43:11 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkdec.c: + msdk: decoder: fatal failure if negotiations fails + Otherwise it crashes when no parser is used placed upstream, v.gr. + gst-launch-1.0 filesrc location=file.264 ! msdkh264dec ! fakesink + +2019-01-21 16:11:59 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkdec.c: + msdk: decoder: comment to explain array reset + +2019-01-21 15:53:23 +0100 Víctor Manuel Jáquez Leal + + * sys/msdk/gstmsdkdec.c: + msdk: decoder: fix an usage-after-free pointer bug + +2019-01-17 15:06:06 +0100 Mathieu Duponchelle + + webrtc: expose ice-transport-policy property + This is the equivalent of iceTransportPolicy in the RTCConfiguration + dictionary. + Only two values are implemented: + * all: default behaviour + * relay: only gather relay candidates + The third member of the iceTransportPolicy enum, "public", is + obsolete. + +2019-01-22 14:34:23 -0500 Olivier Crête + + * ext/srt/gstsrtobject.c: + * ext/srt/gstsrtsink.c: + * ext/srt/gstsrtsrc.c: + srt: Accepts URIs without host to go into listener mode + Just setting a URI without a hostname should directly go into listener mode. + +2019-01-22 14:33:32 -0500 Olivier Crête + + * ext/srt/gstsrtobject.c: + srt: Fix GClosure usage + One needs to set a marshaller as well as use the object setter when + setting objects. + +2019-01-22 12:52:25 +0000 Tim-Philipp Müller + + * meson.build: + meson: detect opengl api from -base .pc files correctly + There was a mismatch between the .pc files generated by + autotools and by meson that would lead to meson not detecting + that opengl api is available even though it is. This could + lead to build failures when building -bad with meson against + a -base that was built with autotools. The mismatch has now + been rectified but we will still check the old one for backwards + compatibility. + +2019-01-22 12:41:00 +0000 Tim-Philipp Müller + + * meson.build: + meson: remove some cruft + +2019-01-18 13:28:26 +0000 Philippe Normand + + * ext/wpe/WPEThreadedView.cpp: + wpesrc: Plug WPE's exportable leak + +2019-01-21 10:57:57 +0000 Philippe Normand + + * configure.ac: + * ext/Makefile.am: + * ext/wpe/Makefile.am: + wpe: Add autotools build support + +2019-01-22 13:02:30 +0900 Justin Kim + + * ext/srt/gstsrtobject.c: + srt: Use default host and port if uri doesn't provide + +2019-01-22 12:44:07 +0900 Justin Kim + + * ext/srt/gstsrt.c: + * ext/srt/gstsrtobject.c: + srt: Enable logs for srtobject + +2019-01-22 12:42:47 +0900 Justin Kim + + * ext/srt/gstsrtobject.c: + srt: Fix property names + Property name and its enum should match. + +2019-01-22 11:35:03 +0900 Justin Kim + + * ext/srt/gstsrtobject.c: + srt: Fix a regression crash + Even in case that srt is working as a caller mode, uri can have no + hostname or ip address. + fix: #874 + +2019-01-15 13:59:05 +0800 Haihao Xiang + + * sys/msdk/gstmsdkvpp.c: + msdkvpp: add P010_10LE to sink and src caps + example pipelines: + gst-launch-1.0 videotestsrc num-buffers=100 ! \ + video/x-raw,format=P010_10LE,width=352,height=288 ! msdkvpp ! \ + video/x-raw,format=NV12! fakesink + gst-launch-1.0 videotestsrc num-buffers=100 ! \ + video/x-raw,format=NV12,width=352,height=288 ! msdkvpp ! \ + video/x-raw,format=P010_10LE ! fakesink + +2019-01-15 14:30:34 +0800 Haihao Xiang + + * sys/msdk/gstmsdkh265dec.c: + msdkh265dec: support P010_10LE in DMABuf mode + +2018-12-12 13:14:13 +0100 Jacek Tomaszewski + + * sys/wasapi/gstwasapiutil.c: + wasapi: Fixed corner-cases in mapping of channel mask + 'channel-mask' field should not be put in caps if channel mask is 0x0 + Mapping WASAPI channel mask to GST equivalent was going only over + first nChannels elements of wasapi_to_gst_pos array, translating, for + example, WASAPI's 0x63f to GST's 0x3f instead of 0xc3f. + When 'channel-mask' is specified as NULL, it signifies that there's + need to do downmix or upmix and it makes caps negotiation with + audioconvert element impossible. Just omit it. + Signed-off-by: Nirbheek Chauhan + +2019-01-19 23:53:56 +0530 Nirbheek Chauhan + + * sys/msdk/meson.build: + meson: Fix automagic build of msdk plugin + When building the msdk plugin even if libmfx is found, unless the + plugin is explicitly enabled we should not error out if msdk + dependencies are not found. + Also give an error message when we don't build the plugin on Windows + because we're not building with MSVC. + +2019-01-18 13:10:31 +0530 Nirbheek Chauhan + + * sys/msdk/Makefile.am: + * sys/nvenc/Makefile.am: + build: Don't forget to add windows files to EXTRA_DIST + +2019-01-17 17:14:31 +0200 Sebastian Dröge + + * gst/removesilence/Makefile.am: + removesilence: Add $(LIBM) to libraries + /usr/bin/ld: .libs/libgstremovesilence_la-vad_private.o: in function `vad_set_threshold': + ./gst/removesilence/vad_private.c:108: undefined reference to `pow' + /usr/bin/ld: .libs/libgstremovesilence_la-vad_private.o: in function `vad_get_threshold_as_db': + ./gst/removesilence/vad_private.c:114: undefined reference to `log10' + === release 1.15.1 === 2019-01-17 02:16:53 +0000 Tim-Philipp Müller diff --git a/NEWS b/NEWS index 1e860c47a6..6457a5d996 100644 --- a/NEWS +++ b/NEWS @@ -15,7 +15,7 @@ the git master branch and which will eventually result in 1.16. See https://gstreamer.freedesktop.org/releases/1.16/ for the latest version of this document. -_Last updated: Monday 14 January 2019, 13:00 UTC (log)_ +_Last updated: Monday 25 January 2019, 15:00 UTC (log)_ Introduction @@ -24,8 +24,8 @@ The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite cross-platform multimedia framework! -As always, this release is again packed with new features, bug fixes and -other improvements. +As always, this release is again packed with many new features, bug +fixes and other improvements. Highlights @@ -40,7 +40,7 @@ Highlights - Support for Closed Captions and other Ancillary Data in video -- Spport for planar (non-interleaved) raw audio +- Support for planar (non-interleaved) raw audio - GstVideoAggregator, compositor and OpenGL mixer elements are now in -base @@ -98,14 +98,17 @@ Noteworthy new API to process the media in a live pipeline before it reaches the sink. This is on top of the systemic latency that is normally reported by the latency query. This defaults to 20ms and should make pipelines - such as “v4lsrc ! xvimagesink” not claim that all frames are late in - the QoS events. Ideally, this should replace max_lateness for most - applications. + such as v4l2src ! xvimagesink not claim that all frames are late in + the QoS events. Ideally, this should replace the "max-lateness" + property for most applications. - RTCP Extended Reports (XR) parsing according to RFC 3611: Loss/Duplicate RLE, Packet Receipt Times, Receiver Reference Time, Delay since the last Receiver (DLRR), Statistics Summary, and VoIP - Metrics reports. + Metrics reports. This only provides the ability to parse such + packets, generation of XR packets is not supported yet and XR + packets are not automatically parsed by rtpbin / rtpsession but must + be actively handled by the application. - a new mode for interlaced video was added where each buffer carries a single field of interlaced video, with buffer flags indicating @@ -146,9 +149,10 @@ or planar arrangement in memory would look like |LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory chunks or separated by some padding. -GStreamer has always had signalling for non-interleaved audio, but it -was never actually properly implemented in any elements. audioconvert -would advertise support for it, but wasn’t actually able to handle it. +GStreamer has always had signalling for non-interleaved audio since +version 1.0, but it was never actually properly implemented in any +elements. audioconvert would advertise support for it, but wasn’t +actually able to handle it correctly. With this release we now have full support for non-interleaved audio as well, which means more efficient integration with external APIs that @@ -177,18 +181,18 @@ The video support library has gained support for detecting and extracting Ancillary Data from videos as per the SMPTE S291M specification, including: -- a VBI (Video Blanking Interval) parser that can detect and extract - Ancillary Data from Vertical Blanking Interval lines of component - signals. This is currently supported for videos in v210 and UYVY - format. +- a VBI (Vertical Blanking Interval) parser that can detect and + extract Ancillary Data from Vertical Blanking Interval lines of + component signals. This is currently supported for videos in v210 + and UYVY format. - a new GstMeta for closed captions: GstVideoCaptionMeta. This supports the two types of closed captions, CEA-608 and CEA-708, along with the four different ways they can be transported (other systems are a superset of those). -- a VBI (Video Blanking Interval) encoder for writing ancillary data - to the Vertical Blanking Interval lines of component signals. +- a VBI (Vertical Blanking Interval) encoder for writing ancillary + data to the Vertical Blanking Interval lines of component signals. The new closedcaption plugin in gst-plugins-bad then makes use of all this new infrastructure and provides the following elements: @@ -222,6 +226,9 @@ support: - playbin and playbin3 learned how to autoplug CEA 608/708 CC overlay elements +- the externally maintained ajavideosrc element for AJA capture cards + has support for extracting closed captions + The rsclosedcaption plugin in the Rust plugins collection includes a MacCaption (MCC) file parser and encoder. @@ -239,7 +246,7 @@ New Elements - gloverlaycompositor: New OpenGL-based compositor element that flattens any overlays from GstVideoOverlayCompositionMetas into the - video stream. + video stream. This element is also always part of glimagesink. - glalpha: New element that adds an alpha channel to a video stream. The values of the alpha channel can either be set to a constant or @@ -248,7 +255,7 @@ New Elements done in floating point so results may not be identical to the output of the existing alpha element. -- rtpfunnel funnels together rtp-streams into a single session. Use +- rtpfunnel funnels together RTP streams into a single session. Use cases include multiplexing and bundle. webrtcbin uses it to implement BUNDLE support. @@ -264,10 +271,12 @@ New Elements WPE - Two new OpenCV-based elements: cameracalibrate and cameraundistort - who can communicate to figure out distortion correction parameters + that can communicate to figure out distortion correction parameters for a camera and correct for the distortion. -- new sctp plugin based on usrsctp with sctpenc and sctpdec elements +- New sctp plugin based on usrsctp with sctpenc and sctpdec elements. + These elements are used inside webrtcbin for implementing data + channels. New element features and additions @@ -348,12 +357,12 @@ New element features and additions - rtspsrc now allows applications to send RTSP SET_PARAMETER and GET_PARAMETER requests using action signals. -- rtspsrc also has a small (100ms) configurable teardown delay by - default to try and make sure an RTSP TEARDOWN request gets sent out - when the source element shuts down. This will block the downward - PAUSED to READY state change for a short time, but can be unset - where it’s a problem. Some servers only allow a limited number of - concurren clients, so if no proper TEARDOWN is sent clients may have +- rtspsrc has a small (100ms) configurable teardown delay by default + to try and make sure an RTSP TEARDOWN request gets sent out when the + source element shuts down. This will block the downward PAUSED to + READY state change for a short time, but can be disabled where it’s + a problem. Some servers only allow a limited number of concurrent + clients, so if no proper TEARDOWN is sent new clients may have problems connecting to the server for a while. - souphttpsrc behaves better with low bitrate streams now. Before it @@ -364,6 +373,7 @@ New element features and additions - filesink: do internal buffering to avoid performance regression with small writes since we bypass libc buffering by using writev() + instead of fwrite() - identity: add "eos-after" property and fix "error-after" property when the element is reused @@ -405,9 +415,9 @@ New element features and additions relays (TURN servers). - The removesilence element has received various new features and - properties, such as a - "threshold"1 property, detecting silence only after minimum silence time/buffers, a“silent”property to control bus message notifications as well as a“squash”` - property. + properties, such as a "threshold" property, detecting silence only + after minimum silence time/buffers, a "silent" property to control + bus message notifications as well as a "squash" property. - AOMedia AV1 decoder gained support for 10/12bit decoding whilst the AV1 encoder supports more image formats and subsamplings now and @@ -430,15 +440,15 @@ Plugin and library moves - The stereo element was moved from -bad into the existing audiofx plugin in -good. If you get duplicate type registration warnings - when upgrading, check that you don’t have a stale gststereo plugin - lying about somewhere. + when upgrading, check that you don’t have a stale stereoplugin lying + about somewhere. GstVideoAggregator, compositor, and OpenGL mixer elements moved from -bad to -base GstVideoAggregator is a new base class for raw video mixers and muxers -and is based on [GstAggregator][aggregator]. It provides defined-latency -mixing of raw video inputs and ensures that the pipeline won’t stall -even if one of the input streams stops producing data. +and is based on GstAggregator. It provides defined-latency mixing of raw +video inputs and ensures that the pipeline won’t stall even if one of +the input streams stops producing data. As part of the move to stabilise the API there were some last-minute API changes and clean-ups, but those should mostly affect internal elements. @@ -456,14 +466,15 @@ would expected in most scenarios. The compositor element has gained support for per-pad blending mode operators (SOURCE, OVER, ADD) which determines what operator to use for blending this pad over the previous ones. This can be used to implement -crossfading. +crossfading and the available operators can be extended in the future as +needed. A number of OpenGL-based video mixer elements (glvideomixer, glmixerbin, glvideomixerelement, glstereomix, glmosaic) which are built on top of GstVideoAggregator have also been moved from -bad to -base now. These elements have been merged into the existing OpenGL plugin, so if you get duplicate type registration warnings when upgrading, check that you -don’t have a stale gstopenglmixers plugin lying about somewhere. +don’t have a stale openglmixers plugin lying about somewhere. Plugin removals @@ -477,11 +488,11 @@ The following plugins have been removed from gst-plugins-bad: plugin. - The acmmp3dec and acmenc plugins for Windows have been removed. ACM - is an ancient legacy API and there was no point in keeping them - around for a licensed mp3 decoder now that mp3 patents have expired - and we have a decoder in -good. We also didn’t ship these in our - cerbero-built Windows packages, so it’s unlikely that they’ll be - missed. + is an ancient legacy API and there was no point in keeping the + plugins around for a licensed MP3 decoder now that the MP3 patents + have expired and we have a decoder in -good. We also didn’t ship + these in our cerbero-built Windows packages, so it’s unlikely that + they’ll be missed. Miscellaneous API additions @@ -506,7 +517,8 @@ Miscellaneous API additions one might need to put such elements into READY state to test if the hardware is present in the system for example. -- protection: Add a new definition for unspecified system protection +- protection: Add a new definition for unspecified system protection, + GST_PROTECTION_UNSPECIFIED_SYSTEM_ID - take functions for various mini objects that didn’t have them yet: gst_query_take(), gst_message_take(), gst_tag_list_take(), @@ -522,11 +534,18 @@ Miscellaneous API additions gst_clear_mini_object(), gst_clear_object() - miniobject: new API gst_mini_object_add_parent() and - gst_mini_object_remove_parent()to set parent pointers on mini objects to ensure correct writability: Every container of miniobjects now needs to store itself as parent in the child object, and remove itself again later. A mini object is then only writable if there is at most one parent, that parent is writable itself, and the reference count of the mini object is 1.GstBuffer(for memories),GstBufferList(for buffers),GstSample(for caps, buffer, bufferlist), andGstVideoOverlayComposition` - were updated accordingly. Without this it was possible to have - e.g. a buffer list with a refcount of 2 used in two places at once - that both modify the same buffer with refcount 1 at the same time - wrongly thinking it is writable even though it’s really not. + gst_mini_object_remove_parent() to set parent pointers on mini + objects to ensure correct writability: Every container of + miniobjects now needs to store itself as parent in the child object, + and remove itself again later. A mini object is then only writable + if there is at most one parent, that parent is writable itself, and + the reference count of the mini object is 1. GstBuffer (for + memories), GstBufferList (for buffers), GstSample (for caps, buffer, + bufferlist), and GstVideoOverlayComposition were updated + accordingly. Without this it was possible to have e.g. a buffer list + with a refcount of 2 used in two places at once that both modify the + same buffer with refcount 1 at the same time wrongly thinking it is + writable even though it’s really not. - poll: add API to watch for POLLPRI and stop treating POLLPRI as a read. This is useful to wait for video4linux events which are @@ -596,7 +615,7 @@ GstPlayer Miscellaneous changes -- As a result of moving to different FFmpeg APIs, encoder and decoder +- As a result of moving to newer FFmpeg APIs, encoder and decoder elements exposed by the GStreamer FFmpeg wrapper plugin (gst-libav) may have seen possibly incompatible changes to property names and/or types, and not all properties exposed might be functional. We are @@ -649,48 +668,48 @@ Tracing framework and debugging improvements object. This is currently limited to pads for GstElements and events for the pads. The output may look like this: - (gdb) gst-print pad.object.parent - GstMatroskaDemux (matroskademux0) { - SinkPad (sink, pull) { + (gdb) gst-print pad.object.parent + GstMatroskaDemux (matroskademux0) { + SinkPad (sink, pull) { + } + SrcPad (video_0, push) { + events: + stream-start: + stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/001:1274058367 + caps: video/x-theora + width: 1920 + height: 800 + pixel-aspect-ratio: 1/1 + framerate: 24/1 + streamheader: < 0x5555557c7d30 [GstBuffer], 0x5555557c7e40 [GstBuffer], 0x7fffe00141d0 [GstBuffer] > + segment: time + rate: 1 + tag: global + container-format: Matroska + } + SrcPad (audio_0, push) { + events: + stream-start: + stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/002:1551204875 + caps: audio/mpeg + mpegversion: 4 + framed: true + stream-format: raw + codec_data: 0x7fffe0014500 [GstBuffer] + level: 2 + base-profile: lc + profile: lc + channels: 2 + rate: 44100 + segment: time + rate: 1 + tag: global + container-format: Matroska + tag: stream + audio-codec: MPEG-4 AAC audio + language-code: en + } } - SrcPad (video_0, push) { - events: - stream-start: - stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/001:1274058367 - caps: video/x-theora - width: 1920 - height: 800 - pixel-aspect-ratio: 1/1 - framerate: 24/1 - streamheader: < 0x5555557c7d30 [GstBuffer], 0x5555557c7e40 [GstBuffer], 0x7fffe00141d0 [GstBuffer] > - segment: time - rate: 1 - tag: global - container-format: Matroska - } - SrcPad (audio_0, push) { - events: - stream-start: - stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/002:1551204875 - caps: audio/mpeg - mpegversion: 4 - framed: true - stream-format: raw - codec_data: 0x7fffe0014500 [GstBuffer] - level: 2 - base-profile: lc - profile: lc - channels: 2 - rate: 44100 - segment: time - rate: 1 - tag: global - container-format: Matroska - tag: stream - audio-codec: MPEG-4 AAC audio - language-code: en - } - } - gst_structure_to_string() now serialises the actual value of pointers when serialising GstStructures instead of claiming they’re @@ -704,10 +723,10 @@ Tools - gst-inspect-1.0 has coloured output now and will automatically use a pager if the output does not fit on a page. This only works in a - unix environment and if the output is not piped. If you don’t like - the colours you can disable them by setting the - GST_INSPECT_NO_COLORS=1 environment variable or passing the - --no-colors command line option. + UNIX environment and if the output is not piped, and on Windows 10 + build 16257 or newer. If you don’t like the colours you can disable + them by setting the GST_INSPECT_NO_COLORS=1 environment variable or + passing the --no-color command line option. GStreamer RTSP server @@ -736,6 +755,29 @@ GStreamer VAAPI - this section will be filled in in due course +GStreamer OMX + +- Add support of NV16 format to video encoders input. + +- Video decoders now handle the ALLOCATION query to tell upstream + about the number of buffers they require. Video encoders will also + use this query to adjust their number of allocated buffers + preventing starvation when using dynamic buffer mode. + +- The OMX_PERFORMANCE debug category has been renamed to OMX_API_TRACE + and can now be used to track a widder variety of interactions + between OMX and GStreamer. + +- Video encoders will now detect frame rate only changes and will + inform OMX about it rather than doing a full format reset. + +- Various Zynq UltraScale+ specific improvements: + - Video encoders are now able to import dmabuf from upstream. + - Support for HEVC range extension profiles and more AVC profiles. + - We can now request video encoders to generate an IDR using the + force key unit event. + + GStreamer Editing Services and NLE - this section will be filled in in due course @@ -858,7 +900,7 @@ Added value per tag. The old ::iter_tag_list() function was renamed to ::iter_generic() and still provides access to each value for a tag - Bus::iter() and Bus::iter_timed() iterators around the corresponding - ::pop*() functions + ::pop\*() functions - serde serialization of Value can also handle Buffer now @@ -995,11 +1037,78 @@ Build and Dependencies - New sctp plugin based on usrsctp (for WebRTC data channels) +Cerbero + +Cerbero is a meta build system used to build GStreamer plus dependencies +on platforms where dependencies are not readily available, such as +Windows, Android, iOS and macOS. + +Cerbero has seen a number of improvements: + +- Cerbero has been ported to Python 3 and requires Python 3.5 or newer + now + +- Source tarballs are now protected by checksums in the recipes to + guard against download errors and malicious takeover of projects or + websites. In addition, downloads are only allowed via secure + transports now and plain HTTP, FTP and git:// transports are not + allowed anymore. + +- There is now a new fetch-bootstrap command which downloads sources + required for bootstrapping, with an optional --build-tools-only + argument to match the bootstrap --build-tools-only command. + +- The bootstrap, build, package and bundle-source commands gained a + new --offline switch that ensures that only sources from the cache + are used and never downloaded via the network. This is useful in + combination with the fetch and fetch-bootstrap commands that acquire + sources ahead of time before any build steps are executed. This + allows more control over the sources used and when sources are + updated, and is particularly useful for build environments that + don’t have network access. + +- bootstrap --assume-yes will automatically say ‘yes’ to any + interactive prompts during the bootstrap stage, such as those from + apt-get or yum. + +- bootstrap --system-only will only bootstrap the system without build + tools. + +- Manifest support: The build manifest can be used in continuous + integration (CI) systems to fixate the Git revision of certain + projects so that all builds of a pipeline are on the same reference. + This is used in GStreamer’s gitlab CI for example. It can also be + used in order to re-produce a specific build. To set a manifest, you + can set manifest = 'my_manifest.xml' in your configuration file, or + use the --manifest command line option. The command line option will + take precendence over anything specific in the configuration file. + +- The new build-deps command can be used to build only the + dependencies of a recipe, without the recipe itself. + +- new --list-variants command to list available variants + +- variants can now be set on the command line via the -v option as a + comma-separated list. This overrides any variants set in any + configuration files. + +- new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware + codec support. See the Enabling Optional Features with Variants + section in the Cerbero documentation for more details how to enable + and use these variants. + +- A new -t / --timestamp command line switch makes commands print + timestamps + Platform-specific changes and improvements Android +- toolchain: update compiler to clang and NDKr18. NDK r18 removed the + armv5 target and only has Android platforms that target at least + armv7 so the armv5 target is not useful anymore. + - The way that GIO modules are named has changed due to upstream GLib natively adding support for loading static GIO modules. This means that any GStreamer application using gnutls for SSL/TLS on the @@ -1010,9 +1119,15 @@ Android library. Look at this commit for the necessary change in the examples. +- various build issues on Android have been fixed. + macOS and iOS -- macOS binaries should be fully relocatable now +- various build issues on iOS have been fixed. + +- the minimum required iOS version is now 9.0. The difference in + adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some + build issues. - The way that GIO modules are named has changed due to upstream GLib natively adding support for loading static GIO modules. This means diff --git a/RELEASE b/RELEASE index a6731fbced..d555791eff 100644 --- a/RELEASE +++ b/RELEASE @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.15.1. +This is GStreamer gst-plugins-bad 1.15.2. GStreamer 1.15 is the development branch leading up to the next major stable version which will be 1.16. diff --git a/configure.ac b/configure.ac index 6aa9119ca4..d5f98f3747 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.69]) dnl initialize autoconf dnl when going to/from release please set the nano (fourth number) right ! dnl releases only do Wall, git and prerelease does Werror too -AC_INIT([GStreamer Bad Plug-ins],[1.15.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad]) +AC_INIT([GStreamer Bad Plug-ins],[1.15.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad]) AG_GST_INIT @@ -51,11 +51,11 @@ dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0 dnl - interfaces added -> increment AGE dnl - interfaces removed -> AGE = 0 dnl sets GST_LT_LDFLAGS -AS_LIBTOOL(GST, 1501, 0, 1501) +AS_LIBTOOL(GST, 1502, 0, 1502) dnl *** required versions of GStreamer stuff *** -GST_REQ=1.15.1 -GSTPB_REQ=1.15.1 +GST_REQ=1.15.2 +GSTPB_REQ=1.15.2 dnl *** autotools stuff **** diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap index 878d4719e0..5e0c0c7a2e 100644 --- a/gst-plugins-bad.doap +++ b/gst-plugins-bad.doap @@ -33,6 +33,16 @@ real live maintainer, or some actual wide use. + + + 1.15.2 + master + + 2019-02-26 + + + + 1.15.1 diff --git a/meson.build b/meson.build index c3a9c50410..b070b13792 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.15.1', + version : '1.15.2', meson_version : '>= 0.47', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ])