summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3869
-rw-r--r--NEWS1302
-rw-r--r--RELEASE15
-rw-r--r--gstreamer-vaapi.doap12
-rw-r--r--meson.build2
5 files changed, 3910 insertions, 1290 deletions
diff --git a/ChangeLog b/ChangeLog
index 10889028..92a037ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,3820 @@
+=== release 1.17.1 ===
+
+2020-06-19 19:27:11 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * gstreamer-vaapi.doap:
+ * meson.build:
+ Release 1.17.1
+
+2020-06-19 15:21:56 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * docs/gst_plugins_cache.json:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ Update plugin docs and add more plugins
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/344>
+
+2020-06-11 08:32:05 +0200 Michael Olbrich <m.olbrich@pengutronix.de>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay_wayland.c:
+ libs: wayland: display: only handle the first output
+ Right now, all outputs are handled. The means that the registry object for
+ all but the last are leaked. As a result the sizes are not used correctly.
+ With two outputs, at first the mode and physical size of the second output
+ are used. If the first output changes the mode, then the physical size of
+ the second output is used in combination with the resolution of the first
+ output. The resulting pixel aspect ratio is incorrect.
+ There seems to be no way to determine on which output the window is shown,
+ so just use the first one to get consistent results.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/341>
+
+2020-06-11 18:15:17 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapipluginbase.c:
+ plugins: pluginbase: Do not destroy display when _close()
+ When the element's state changes to NULL, it can still receive
+ queries, such as the image formats. The display is needed in such
+ queries but not well protected for MT safe.
+ For example, ensure_allowed_raw_caps() may still use the display
+ while it is disposed by gst_vaapi_plugin_base_close() because of
+ the state change.
+ We can keep the display until the element is destroyed. When the
+ state changes to NULL, and then changes to PAUSED again, the display
+ can be correctly set(if type changes), or leave untouched.
+ Fix: #260
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/343>
+
+2020-06-09 21:19:11 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ libs: context: use correct printing modifier
+ GstVaapiID is an alias of gsize, thus its modifier is platform
+ dependant.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/340>
+
+2020-06-06 00:42:46 +0200 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapivalue.c:
+ plugins: uddate gst_type_mark_as_plugin_api() calls
+
+2020-03-05 18:12:27 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: Enable tile in VA command.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-03-05 17:56:51 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: Add ensure_tile to calculate tiles.
+ We need consider tiles and slices together, separate tiles uniformly
+ and then assign slices uniformly to each tiles.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-04-30 14:19:29 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ libs: display: add a quirk for iHD driver tile encoding.
+ The iHD driver has a requirement that one slice can not span tiles
+ when tile is enabled, which is not required by hevc spec.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-03-05 17:40:43 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: Add tile info to bitstream.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-03-05 17:29:41 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: promote level if tile is enabled.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-03-05 17:07:28 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.h:
+ libs: encoder: h265: Add num-tile-cols/rows properties.
+ These properties are used for support of tile encoding. We just
+ support uniform mode of tile encoding, that is, separating picture
+ equally by (num-tile-cols X num-tile-rows).
+ According to HEVC spec A1, the max number of tiles in column is 20
+ and in rows is 22, so add two constant definitions.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-03-05 16:21:24 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: extract slice creation from add_slice_headers
+ extract slice creation details from add_slice_headers, and let the
+ add_slice_headers just focuses on calculating slice start address
+ and CTU number.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-03-05 12:44:45 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: Add a helper function to check the tile support.
+ Encoding by tiles separation now is a very common feature for all
+ relative new codecs, such as HEVC, AV1, and VP9. Just make this
+ check as a common helper function of the encoder base class.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294>
+
+2020-05-13 18:02:07 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ libs: decoder: H265: Add SCC_MAIN_444_10 profile support.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311>
+
+2020-05-13 16:05:59 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: decoder: update reference list for SCC.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311>
+
+2020-05-13 15:46:29 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: decoder: H265: Fill picture and slice SCC parameters.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311>
+
+2020-05-13 15:00:53 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ libs: util: H265: recognize the SCC profiles.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311>
+
+2020-05-13 14:53:46 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiprofile.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: profile: Add screen extended main/main10/main444 define.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311>
+
+2020-04-03 14:53:40 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ libs: encoder: h265: Add support for MAIN 4:2:2 10 profile.
+ Using YUY2 as the input of the encoder can generate main 4:2:2 bit
+ streams and using Y210 as the input of the encoder can generate main
+ 4:2:2 10 bit streams.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/334>
+
+2020-05-29 16:40:20 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: Use correct index for SubWidthC and SubHeightC.
+ We need to use the chroma_format_idc as the index for getting the
+ SubWidthC and SubHeightC values as the spec 6.1(table 6-1) defines.
+ The wrong SubWidthC or SubHeightC make us calculate a wrong right
+ or bottom offset for crop size and generate garbage in output.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/334>
+
+2020-05-29 15:37:24 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ libs: encoder: h265: Fix chrome idc for 444 10 bits
+ GST_VAAPI_CHROMA_TYPE_YUV444_10BPP should also set chroma_format_idc
+ to 3 as GST_VAAPI_CHROMA_TYPE_YUV444 does.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/334>
+
+2020-06-03 18:37:22 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * docs/meson.build:
+ doc: Require hotdoc >= 0.11.0
+
+2020-06-03 18:49:53 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ doc: Fix wrong link to GstVideoDirectionMethod
+
+2020-06-03 17:38:10 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * docs/gst_plugins_cache.json:
+ * meson_options.txt:
+ docs: Update plugin cache with the new format
+ And fix the default URL which should not be inside quotes.
+
+2020-06-03 17:37:48 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapivalue.c:
+ * gst/vaapi/gstvaapipostproc.c:
+ Use gst_type_mark_as_plugin_api() for all non-element plugin types
+
+2020-05-23 22:09:17 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapibufferproxy_priv.h:
+ * gst-libs/gst/vaapi/gstvaapicontext.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_mpeg4.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_vc1.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapiimage.h:
+ * gst-libs/gst/vaapi/gstvaapiobject.c:
+ * gst-libs/gst/vaapi/gstvaapiobject.h:
+ * gst-libs/gst/vaapi/gstvaapiobject_priv.h:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ * gst-libs/gst/vaapi/gstvaapisubpicture.c:
+ * gst-libs/gst/vaapi/gstvaapisubpicture.h:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ * gst-libs/gst/vaapi/gstvaapisurfaceproxy_priv.h:
+ * gst-libs/gst/vaapi/gstvaapivideopool.c:
+ * gst-libs/gst/vaapi/meson.build:
+ libs: delete all gstvaapiobject related files.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/331>
+
+2020-05-23 20:48:54 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: surface: return fail immediately if can not create subpicture
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/331>
+
+2020-05-23 14:00:58 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapisubpicture.c:
+ * gst-libs/gst/vaapi/gstvaapisubpicture.h:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * tests/internal/image.c:
+ libs: subpicture: Make subpicture a standard GstMiniObject.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/331>
+
+2020-05-26 02:19:15 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ libs: decoder: h264: Add ref flags for splited field.
+ When split one frame into fields, the second field should also
+ copy the reference flags.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/333>
+
+2020-05-25 15:46:58 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ libs: decoder: h264: disallow multiple slice group
+ As far as we know there are no VAAPI drivers supporting FMO, which
+ migth be used in baseline streams.
+ This commit is a continuation of
+ https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/328
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/332>
+
+2020-05-20 10:50:05 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.h:
+ * gst/vaapi/gstvaapidecode.c:
+ * gst/vaapi/gstvaapidecode_props.c:
+ * gst/vaapi/gstvaapidecode_props.h:
+ vaapidecoder: h264: remove baseline as constrained property
+ From now on always the baseline is going to be treated as constrained without
+ need of setting a property.
+ Since the property was added along the development cycle (1.17 / commit
+ 866a9f06) and never released, we assume that it is safe to remove it.
+ Fixes: #252
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/328>
+
+2020-05-21 11:37:36 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * README:
+ README: update VP9 decoder and encoder
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/330>
+
+2020-05-21 13:42:47 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ vaapiencoder_h264: set direct_spatial_mv_pred_flag to true by default
+ This flag is set to true by default in both MediaSDK and FFmpeg-vaapi,
+ so let's align this plugin with other libraries / softwares.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/329>
+
+2020-05-18 18:29:05 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: fix meta overwrite
+ commit 7ac2a207 added a regression by erroneously assumed that
+ GstVaapiVideoMeta is actually a GstMeta, which is not.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/327>
+
+2020-05-17 09:55:42 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ * gst/vaapi/gstvaapivideometa_texture.c:
+ * gst/vaapi/gstvaapivideometa_texture.h:
+ vaapivideopool: Set pooled flag to added metas.
+ So this could hint filters how to use these metas.
+ Had to change the return value for texutre upload meta in order
+ to flag it.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/326>
+
+2020-05-16 20:49:31 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay_x11.c:
+ * gst-libs/gst/vaapi/gstvaapiparser_frame.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: use array_unref() rather than array_free()
+ It is more convinience and thread-safe.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/325>
+
+2020-04-10 22:20:35 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapi.c:
+ plugin: use register_type to replace get_type for encode init.
+ xxx_register_type will detect the template sink caps and is needed
+ to be called at init time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 22:05:50 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_vp9.c:
+ * gst/vaapi/gstvaapiencode_vp9.h:
+ plugins: encode: Modify sink template of vp9 encode.
+ Use gst_vaapi_detect_codec_caps to get more precise template caps.
+ Also implement gst_vaapiencode_vp9_register_type, which should be
+ called at plugin register time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 22:05:18 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_vp8.c:
+ * gst/vaapi/gstvaapiencode_vp8.h:
+ plugins: encode: Modify sink template of vp8 encode.
+ Use gst_vaapi_detect_codec_caps to get more precise template caps.
+ Also implement gst_vaapiencode_vp8_register_type, which should be
+ called at plugin register time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 22:04:34 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_mpeg2.c:
+ * gst/vaapi/gstvaapiencode_mpeg2.h:
+ plugins: encode: Modify sink template of mpeg2 encode.
+ Use gst_vaapi_detect_codec_caps to get more precise template caps.
+ Also implement gst_vaapiencode_mpeg2_register_type, which should be
+ called at plugin register time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 22:03:49 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_h265.c:
+ * gst/vaapi/gstvaapiencode_h265.h:
+ plugins: encode: Modify sink template of h265 encode.
+ Use gst_vaapi_detect_codec_caps to get more precise template caps.
+ Also implement gst_vaapiencode_h265_register_type, which should be
+ called at plugin register time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 22:00:38 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h264.h:
+ plugins: encode: Modify sink template of h264 encode.
+ Use gst_vaapi_detect_codec_caps to get more precise template caps.
+ Also implement gst_vaapiencode_h264_register_type, which should be
+ called at plugin register time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 22:11:34 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_jpeg.c:
+ * gst/vaapi/gstvaapiencode_jpeg.h:
+ plugins: encode: Modify sink template of jpeg encode.
+ Use gst_vaapi_detect_codec_caps to get more precise template caps.
+ Also implement gst_vaapiencode_jpeg_register_type, which should be
+ called at plugin register time.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-23 00:02:02 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.h:
+ plugin: encode: add a helper macro to register encode type.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 21:44:05 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapipluginutil.c:
+ * gst/vaapi/gstvaapipluginutil.h:
+ plugins: util: Add a helper function to detect supported caps.
+ This helper function iterate all profiles and entrypoints belong
+ to the specified codec, query the VAConfigAttribRTFormat and list
+ all possible video formats.
+ This function is used by each codec to get the template sink caps
+ (for encode) or src caps(for decode) at register time, when just
+ all possible formats are listed and no need to be very accurate.
+ So there is no context created for the performance reason. Most
+ codecs just use YUV kinds of formats as the input/output, so we do
+ not include RGB kinds of formats. User can specified more formats
+ in extra_fmts(For example, jpeg may need BGRA) if needed.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 21:27:32 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapipluginutil.c:
+ * gst/vaapi/gstvaapipluginutil.h:
+ plugin: encode: extract the allowed caps maker as a helper function.
+ Extract all logic about making caps for encode's sink as a standalone
+ helper function. It can be reused.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-04-10 21:21:43 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/video-format.c:
+ * gst-libs/gst/vaapi/video-format.h:
+ libs: video-format: add a helper function of get_formats_by_chroma.
+ The function iterates all supported video formats and returns the
+ formats belong to the specified chroma type.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315>
+
+2020-05-16 21:03:32 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapitexture.c:
+ * gst-libs/gst/vaapi/gstvaapitexture_priv.h:
+ libs: texture: remove unused headers include
+ This is continuation of
+ https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/317
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/324>
+
+2020-05-16 19:58:25 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicodedbuffer.h:
+ * gst-libs/gst/vaapi/gstvaapiimage.h:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ libs: removed duplicated function declarations
+ Some headers had duplicated inlined function declaration. This was
+ for gtkdoc, but now GStreamer uses hotdoc and the internal library
+ documentation is not generated. So let's remove these extra lines.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/323>
+
+2020-04-18 19:32:24 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapitexture.c:
+ * gst-libs/gst/vaapi/gstvaapitexture.h:
+ * gst-libs/gst/vaapi/gstvaapitexture_egl.c:
+ * gst-libs/gst/vaapi/gstvaapitexture_glx.c:
+ * gst-libs/gst/vaapi/gstvaapitexture_priv.h:
+ * gst-libs/gst/vaapi/gstvaapitexturemap.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_egl.c:
+ * gst/vaapi/gstvaapivideometa_texture.c:
+ * tests/internal/test-textures.c:
+ libs: texture: Make texture a standard GstMiniObject.
+ We store GstVaapiTextureGLX and GstVaapiTextureEGL's private data in
+ the qdata of miniobject and avoid extending the base texture class.
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/317>
+
+2020-04-26 12:33:29 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * README:
+ Update README
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/320>
+
+2020-04-21 18:00:26 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay_drm.c:
+ libs: display: drm: use g_strcmp0 to be null safe
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/321>
+
+2020-04-26 13:30:16 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * gst/vaapi/gstvaapipluginutil.c:
+ vaapipluginutil: Use GST_VAAPI_DISPLAY_TYPE_DRM for Mesa3D GBM
+ We may build this plugin with window system support but run it without
+ window system. Without this patch, the following pipeline will trigger a
+ segfault when running it without window system.
+ gst-launch-1.0 filesrc location=input.264 ! h264parse ! vaapih264dec ! fakesink
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/319>
+
+2020-04-21 11:16:37 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * meson.build:
+ build: use join_paths() for driverdir
+
+2020-04-21 09:04:51 +0000 Veerabadhran G <vegopala@amd.com>
+
+ * README:
+ README: Update supported hardware
+ Added the AMD hardware list to the "Hardware Requirements" section.
+
+2020-04-04 13:58:00 +0200 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.h:
+ * gst-libs/gst/vaapi/gstvaapibufferproxy_priv.h:
+ libs: bufferproxy: remove GstMemory reference
+ Since bufferproxy and surface are not referenced circularly, there's
+ no need to keep, in the buffer proxy, a reference to the GstMemory
+ where it is held. This patch removes that handling.
+
+2020-03-15 23:29:05 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface_drm.c:
+ * gst-libs/gst/vaapi/gstvaapisurface_drm.h:
+ * gst/vaapi/gstvaapivideomemory.c:
+ libs,plugin: break surface-bufferproxy circular reference
+ The bufferproxy may reference the surface and the surface may also
+ reference the bufferproxy, producing a circular reference, which might
+ lead to serious resource leak problems.
+ Now make the relationship clearer, the bufferproxy's references is
+ transfered to surface, while bufferproxy just keeps the surface's
+ address without increasing its reference count.
+ The surface can be created through a bufferproxy like in
+ gst_vaapi_surface_new_with_dma_buf_handle(), and the surface might
+ get its bufferproxy via gst_vaapi_surface_get_dma_buf_handle(). In
+ both cases the surface holds a bufferproxy's reference.
+
+2020-04-03 18:43:52 +0200 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapibufferproxy_priv.h:
+ * gst-libs/gst/vaapi/gstvaapisurface_drm.c:
+ libs: bufferproxy: rename parent memeber as surface
+
+2020-03-15 22:07:31 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ plugin: bufferpool: use hashmap to cache dmabuf mem-surface
+ The old way of refer memory by bufferproxy is not a good one, since it
+ make the logic error prone.
+ Now it is established a map between surface-bufferproxy and its GstMemory,
+ caching the memory bound by a surface looked for the specified surface.
+
+2020-03-15 21:50:24 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ * gst/vaapi/gstvaapivideobufferpool.h:
+ plugin: bufferpool: Delete ACQUIRE_FLAG_NO_ALLOC flag.
+ Delete the GST_VAAPI_VIDEO_BUFFER_POOL_ACQUIRE_FLAG_NO_ALLOC flag.
+ In fact, no one is using that flag, and all vaapi buffers should
+ have GstVaapiVideoMeta.
+
+2020-02-13 09:43:38 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostproc.h:
+ vaapipostproc: enable HDR10 tone mapping
+
+2020-02-13 09:00:18 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ libs: filter: HDR10 tone mapping support
+ Add support for HDR10 tone mapping (since VA-API 1.4.0).
+
+2020-04-02 15:14:15 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ libs: encoder: h265: Support MAIN 4:4:4 10 profile.
+ Using Y410 as the input of the encoder can generate main_444_10 bit
+ streams.
+
+2020-04-02 15:19:41 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: fix an inexact trace info in chroma type check.
+
+2020-03-31 12:22:31 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: make sure format array is not NULL when returning TRUE
+ This fixed segfault when running the pipeline below with iHD driver
+ (commit efe5e9a) on ICL
+ gst-launch-1.0 videotestsrc ! vaapivp9enc tune=low-power ! vaapivp9dec ! \
+ fakesink
+
+2020-03-18 13:28:00 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_jpeg.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_mpeg4.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_vc1.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp8.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp9.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay_drm.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay_egl.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay_glx.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay_wayland.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay_x11.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ * gst-libs/gst/vaapi/gstvaapitexturemap.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_drm.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_egl.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_glx.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_wayland.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.h:
+ libs: extend g_autoptr support
+
+2020-03-26 22:40:40 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideometa.c:
+ vaapivideometa: remove compiler warning
+
+2020-03-22 20:59:20 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * meson.build:
+ * meson_options.txt:
+ build: Add meson's option package-origin.
+ This options is added to synchronize with other gstreamer packages
+ build configuration.
+ Though, to avoid breaking distro configuration it is set, as default,
+ the issues gitlab's url, instead of the used string
+ "Unkown package origin".
+ Also, set_quoted is used for string based cdata.
+
+2020-02-25 13:45:05 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: deprecate format, width and size parameters
+ Since they should only be controlled by caps negotiation.
+
+2020-03-18 16:41:01 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiprofile.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ * gst/vaapi/gstvaapidecode.c:
+ libs,plugins: decoder: Add -intra profile support for hevc.
+ In hevc, we can consider the -intra profile a subset of the none
+ -intra profile. The -intra profiles just contain I frames and we
+ definitely can use the none -intra profiles's context to decode
+ them.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2020-03-04 12:35:42 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: support ICQ/QVBR BRC
+ Enable support for ICQ and QVBR bitrate control.
+ The code is essentially the same for h264 ICQ/QVBR support
+ which was added in commit 9e0c133a2403.
+
+2020-03-19 11:19:18 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: set VA HRD param before RC param
+ This is a workaround for intel-media-driver bug
+ https://github.com/intel/media-driver/issues/865
+ The driver will force the RC method to CBR for HEVCe
+ when it parses the HRD param. Thus, any RC method
+ param submitted "prior" to the HRD param will be lost.
+ Therefore, VBR, ICQ and QVBR for HEVCe can't be
+ effectively enabled if the RC method param "precedes"
+ the HRD param.
+ To work around this issue, set the HRD param before
+ the RC method param so the driver will parse the RC
+ method param "after" the HRD param.
+ Afaict, other codecs in the driver (and other drivers)
+ do not appear to be dependent on the order of HRD and
+ RC param submission.
+
+2019-11-25 14:16:30 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ vaapijpegenc: Add a quantization quirk for iHD driver
+ iHD driver shifts the value by 50 when calculating quantization for JPEG
+ encoding, so we should add 50 in this plugin for iHD driver too.
+
+2020-03-13 21:49:15 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay_x11.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay_x11_priv.h:
+ * gst-libs/gst/vaapi/gstvaapipixmap.c:
+ * gst-libs/gst/vaapi/gstvaapipixmap.h:
+ * gst-libs/gst/vaapi/gstvaapipixmap_priv.h:
+ * gst-libs/gst/vaapi/gstvaapipixmap_x11.c:
+ * gst-libs/gst/vaapi/gstvaapipixmap_x11.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_egl.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_priv.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11_priv.h:
+ * gst-libs/gst/vaapi/meson.build:
+ * meson.build:
+ * tests/internal/output.c:
+ * tests/internal/output.h:
+ * tests/internal/simple-decoder.c:
+ * tests/internal/test-decode.c:
+ libs: remove GstVaapiPixmap
+ GstVaapiPixmap is an abstract base class which only implementation
+ were GstVaapiPixmapX11. This class were used for a special type of
+ rendering in the tests apps, utterly unrelated in GStreamer.
+ Since gstreamer-vaapi is no longer a general-user wrapper for VA-API
+ we should remove this unused API.
+ This removal drops libxrender dependency.
+
+2020-03-17 18:51:19 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: Add HEVC Main444 sting in string_of_VAProfile
+ HEVCMain444_10 is already a supported profile and misses the strings.
+
+2020-03-17 12:47:33 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapi.c:
+ plugin: don't error if cannot create display
+ This might generated errors on automatic tools such as CI. Let's
+ rather just raise a warning and let continue.
+
+2020-03-09 01:52:57 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * tests/check/meson.build:
+ test: fix a ninja test failure for vaapioverlay.
+ That test case only works with drm display, so the build such as
+ meson -Dwith_x11=yes -Dwith_wayland=no -Dwith_drm=no -Dwith_egl=no
+ -Dwith_glx=no
+ gets a failure when run ninja test. Just enable this test when drm
+ is enabled.
+
+2020-02-07 23:56:13 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapivideopool.c:
+ libs: videopool: fix a condition race for pool allocate.
+
+2020-03-05 13:22:23 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: force video meta if sizes are different
+ The strides and offsets could be the same, but the allocation
+ size might be different (e.g. alignment). Thus, ensure we also
+ set the flag to copy from VA memory to system memory when alloc
+ size differs.
+ Fixes #243
+
+2020-03-05 14:18:32 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: don't set base sink caps twice
+ Base class's sink pad caps are already set when calling set_format().
+ There's no need to call it again in gst_vaapidecode_negotiate().
+
+2020-03-05 13:26:38 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: unlock stream if caps update fails
+ If caps update fail a dead lock occurs since the stream mutex is not
+ unlocked.
+
+2020-03-03 15:24:32 +0800 Xu Guangxin <guangxin.xu@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: decoder: h265: parser state after update dependent slice
+ If the dependent_slice_segment_flag is true, most slice info derived from last slice.
+ So we need check the slice type after we call populate_dependent_slice_hdr
+
+2020-02-16 12:21:28 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ libs: display: force RGBA image format for i965 driver
+ Since commit 32bf6f1e GLTextureUpload is broken because i965
+ doesn't report properly RGBA support. It could be possible to use RGBx
+ but GLTextureUpload only regotiates RGBA.
+ The simplest fix to this regression is adding synthetically the RGBA
+ format in the internal format map.
+
+2020-02-14 19:30:54 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ libs: display: iterate all quirks table
+ Instead of break at the fist foud quirk in the table, iterate all over
+ so it would be feasible to add several quirks for one driver per
+ element in array.
+
+2020-02-25 12:05:28 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: handle RGB to/from YUV color primary driver quirk
+ The intel-media-driver (iHD) can't convert output color
+ primaries when doing YUV to/from RGB CSC. Thus, we must
+ keep the output color primaries the same as the input
+ color primaries for this case.
+ fixes #238
+
+2020-02-25 12:00:36 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ libs: display: add YUV to/from RGB color primary quirk
+ The intel-media-driver (iHD) can't convert output color
+ primaries when doing YUV to/from RGB CSC.
+
+2020-02-28 11:33:18 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideomemory.c:
+ Revert "vaapivideomemory: Store surface allocation flags."
+ This reverts commit dd428cc4a12c2d5c694fcd3303811cf486002c9d because
+ it rewrites the buffer size whilst surface allocation flags are
+ stored when allocator_params_init() is called since fab890ce.
+ Fix: #239
+
+2020-01-27 18:19:57 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideomemory.c:
+ vaapivideomemory: Try surface with allocation flags.
+ When a vaapi allocator is instantiated, it first try to generate a
+ surface with the specified configuration.
+ This patch adds, in this tried buffer, the requested allocation flags.
+
+2020-01-27 18:10:18 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideomemory.c:
+ vaapivideomemory: Store surface allocation flags.
+ Store surface allocation flags passed to the vaapi allocator in
+ GObject's qdata, because it might be used by the vaapivideobufferpool
+ when recreating the allocator given any resolution change.
+
+2020-01-24 19:32:52 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ libs: surface: Add hints to allocation flags.
+ When creating surfaces it is possible to pass to VA hints of its usage,
+ so the driver may do some optimizations.
+ This commit adds the handling of encoding/decoding hints.
+
+2020-01-24 22:08:50 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ * gst-libs/gst/vaapi/gstvaapisurface_egl.c:
+ * gst-libs/gst/vaapi/gstvaapisurfacepool.c:
+ * gst-libs/gst/vaapi/gstvaapisurfacepool.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow.c:
+ * tests/internal/test-filter.c:
+ * tests/internal/test-surfaces.c:
+ libs: surface: surfacepool: Add allocation flags in constructors.
+
+2020-02-22 16:06:13 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * meson.build:
+ build: let the build fail if none if X11, wayland or drm.
+ In fact, gst_vaapi_create_test_display only test x11, wayland and
+ drm, no glx and egl entries. So if none of them is enabled, no
+ vaapi element can be detected.
+
+2020-02-21 00:58:47 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * tests/internal/test-display.c:
+ test: avoid unused warning for test-display
+ meson -Dwith_x11=yes -Dwith_wayland=no -Dwith_drm=no -Dwith_egl=no
+ -Dwith_glx=no buildir
+ generate unused warnings.
+
+2020-02-21 00:50:47 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * meson.build:
+ build: fix meson build error when without x11.
+ meson -Dwith_x11=no build_dir
+ can not success build the project because the glx is still enabled.
+ We need to disable GLX when X11 is disabled.
+
+2020-02-14 19:53:09 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: h265enc: Set max_transform_hierarchy_depth_{inter, intra} to 2
+ Intel HW has limitation on max_transform_hierarchy_depth_inter and
+ max_transform_hierarchy_depth_intra (see [1]). We can provide a quirk for
+ other HWs if other HWs may support other values
+ [1] https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol10-hevc.pdf
+
+2020-02-21 07:37:50 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: do not compensate for crop/direction if no VPP
+ If we do not have functional VPP, then cropping and video
+ direction is non-functional and we should avoid calling
+ any of the gst_vaapi_filter* APIs.
+
+2020-02-21 06:54:47 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: only set VPP colorimetry when VPP is available
+ If we don't have functional vpp then we should not call
+ gst_vaapi_filter_set_colorimetry.
+
+2020-02-16 01:25:37 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ * gst/vaapi/gstvaapivideomemory.c:
+ * gst/vaapi/gstvaapivideomemory.h:
+ videobufferpool: don't reset surface when created internally
+ The bug fixing, in commit 89f202ea, just considers the case when
+ surface's DMABuf is set through gst_buffer_pool_acquire_buffer(),
+ which is typically a decoder's behavior. But vaapipostproc doesn't
+ provide any surface when calling gst_buffer_pool_acquire_buffer(),
+ thus a surface is created when GstMemory is allocated.
+ If the surface proxy in buffer's meta is reset at
+ buffer_pool_reset_buffer(), that surface will be destroyed and it
+ won't be available anymore. But GstBuffers are cached in the buffer
+ pool and they are reused again, hence only those images are rendered
+ repeatedly.
+ Fixes: #232
+
+2020-02-16 17:19:04 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst/vaapi/gstvaapi.c:
+ libs: blend: filter: handle finalize() if display isn't assigned
+ I've just discovered iHD driver in Skylake doesn't have VideoProc
+ entry point, hence, in this platform, when vaapioverlay is tried to be
+ registered, critical warnings are raised because blend doesn't have a
+ display assigned.
+ As it is possible to have drivers without EntryPointVideoProc it is
+ required to handle it gracefully. This patch does that: only tries to
+ register vaapioverlay if the testing display has VPP and finalize()
+ vmethods, in filter and blend, bail out if display is NULL.
+
+2020-02-15 11:02:49 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: filter: guard all color properties to VA-API 1.2.0
+ Older VA-API (0.39.0) doesn't have VAProcColorProperties.
+ Thus, guard all colorimetry -> VA-API support to version
+ 1.2.0.
+ Fixes #234
+
+2020-02-17 08:55:36 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: decoder: h265: set parser info state at decoding codec data
+ Commit 1168d6d5 showed up a regression: decode_sps() stores the unit's
+ parser info in sps array. If that parser info comes from decoding
+ codec data, that parser info will have an undefined state which might
+ break ensure_sps().
+ This patch sets the parser info state, at decoding codec data, with
+ the internal parser state. This is similar with h264 decoder apprach.
+ Original-patch-by: Xu Guangxin <guangxin.xu@intel.com>
+
+2020-02-07 15:24:18 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: demote log message to trace level
+
+2020-02-14 14:45:56 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/video-format.c:
+ libs: video-format: set general vaapi log category
+ Instead of logging in an unspecified category, set the default vaapi.
+
+2020-02-15 11:44:48 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: guard EncSliceLP for VA-API < 0.39.1
+ Relates to #234
+
+2020-02-14 16:17:04 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: h265enc: Set VA_PICTURE_HEVC_INVALID flag for invalid picture
+
+2020-02-11 11:31:31 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_vc1.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: remove crumbs of libva < 0.39
+ All these guarded code seem like leftovers of commit 920b1ec7a. This
+ patch completes that missing clean up.
+
+2020-02-11 00:38:40 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: VA explicit color standard not supported until 1.2.0
+ VAProcColorStandardExplicit and associated VAProcColorProperties
+ (primaries, transfer and matrix) are not supported until
+ VA-API 1.2.0.
+ Use VAProcColorStandardNone instead of VAProcColorStandardExplicit
+ if VA-API < 1.2.0.
+ Fixes #231
+
+2020-02-10 09:31:15 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: WA: use explicit for sRGB colorimetry
+ Addresses #228 on iHD side. It seems iHD can't handle
+ VAProcColorStandardSRGB in all situations for vpp. But
+ it has no problem when we specify the sRGB parameters
+ via VAProcColorStandardExplicit parameters.
+
+2020-02-07 11:25:31 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: set vpp input/output color range
+ We've always sent VA_SOURCE_RANGE_UNKNOWN to the driver.
+ And, the [iHD] driver essentially computes the same color
+ range as gstreamer when we send VA_SOURCE_RANGE_UNKNOWN for
+ cases were gstreamer computes it automatically. But,
+ if the user wants to make it explicit, we should try
+ to honor it.
+
+2020-02-07 11:20:11 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.h:
+ libs: utils: map GstVideoColorRange to VAAPI VPP
+
+2020-02-07 15:28:24 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: don't remove chroma-site nor colorimetry
+ Since now they can be handled by vaapipostproc.
+
+2020-02-04 14:17:43 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: use sink resolution to calculate src colorimetry
+ The default output colorimetry is persuaded by the output
+ resolution, which is too naive when doing VPP cropping
+ and/or scaling. For example, scaling 4K(sink)->1080P(src)
+ resolution (i.e. both YUV) results in bt2020(sink)->bt709(src)
+ colorimetry selection and some drivers don't support that
+ mode in vpp.
+ Thus, if output (i.e. downstream) does not specify a
+ colorimetry then we use the input resolution instead of the
+ output resolution to create the default colorimetry. Also,
+ note that we still use the output format since it may be a
+ different color space than the input. As in the example
+ above, this will result in bt2020(sink)->bt2020(src)
+ colorimetry selection and all drivers (afaik) should support
+ that in vpp.
+
+2020-02-04 09:57:42 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: set srcpad colorimetry unconditionally
+ We always need a srcpad colorimetry for VAAPI VPP
+ operations.
+ Also, check the return value of _set_colorimetry.
+
+2020-01-30 12:34:07 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: do not override explicit srcpad colorimetry
+ If colorimetry has been set by a capsfilter (e.g.
+ vaapipostproc ! video/x-raw,colorimetry=bt709) then
+ don't try to override it. Previously, the aforementioned
+ capsfilter will fail to negotiate if default colorimetry
+ is not the same as the capsfilter (e.g. 4K resolutions).
+
+2020-01-30 09:37:18 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: set vpp filter colorimetry
+ Set the input and output colorimetry for vpp filter.
+
+2020-01-30 09:34:10 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ libs: filter: support vpp input/output color standard
+ Add API function to allow setting the input and output vpp
+ color standard from GstVideoColorimetry.
+
+2020-02-04 11:32:54 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.h:
+ libs: utils: map GstVideoColorimetry to VAAPI VPP
+ Fallback to VAProcColorStandardExplicit if there is no
+ 1:1 mapping.
+
+2020-02-04 10:27:23 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ libs: display: add vpp color standard quirk for i965 driver
+ The i965 does not properly report supported vpp color
+ standards.
+
+2020-02-02 18:04:35 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: dmabuf implies allocator
+ Some code can be optimized since only if the dmabuf allocator is set,
+ the internal flag of dmabuf is TRUE, thus there's no need to evaluate
+ the allocator address.
+
+2020-01-29 11:55:39 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: reject configuration if allocator isn't vaapi
+ If the requested allocator in set_config() is not a VAAPI valid one,
+ reject the configuration, instead of lying and using a private one.
+ This patch superseeds !254 and !24
+
+2020-01-29 11:55:28 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: add explanation for allocator reconfig
+
+2020-01-29 11:54:38 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: check for vaapi meta first
+ If the configured meta doesn't request vaapi meta then it is not a
+ vaapi buffer pool. Bail out as soon as possible.
+
+2020-01-29 11:52:38 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: turn errors into warnings
+ set_config() vmethod should fail gracefully, thus upstream could
+ negotiate another pool if possible.
+ Instead of sending error messages to the bus, let demote the level
+ to warning.
+
+2020-01-29 11:51:47 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ libs: display: log out vendor string when available
+ This is useful while asking for logs to know the used driver.
+
+2020-01-27 11:49:26 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: surface: initialize VASurfaceAttribExternalBuffers
+ Initialize VASurfaceAttribExternalBuffers using compiler's syntax
+ rather than using memset().
+
+2020-01-27 11:44:49 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: surface: merge two loops into one
+ Merge two loops into one for setting offsets and strides in the
+ external buffer descriptor.
+
+2020-01-22 10:42:35 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ * gst-libs/gst/vaapi/gstvaapisurfacepool.c:
+ * gst-libs/gst/vaapi/gstvaapisurfacepool.h:
+ libs: surface: surfacepool: rename variable for clearity
+ In order to be readable, the meaningless 'flags' is renamed to
+ surface_allocation_flags, which is clearer.
+
+2020-01-27 18:40:46 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: Reuse internal allocator is possible.
+ Instead of creating a new allocator when upstream requests a different
+ allocator, this patch tries to reuse the internal allocator if it was
+ already initializated.
+ If the stream changes, then either one will be unref and a new
+ allocator is created.
+
+2020-01-27 18:05:14 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: Log messages in proper category.
+ The log messages where logged in the GstBufferPool category because
+ the instance was not properly casted. This fix that situation.
+
+2020-01-16 11:49:21 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay_priv.h:
+ * gst/vaapi/gstvaapipluginbase.c:
+ libs: display: driver quirks mechanism
+ This mechanism comes from ffmpeg vaapi implementation, where they have
+ their own quirks.
+ A specific driver is identified by a substring present in the vendor
+ string. If that substring is found, a set of bitwise flags are store.
+ These flags can be accessed through the function
+ gst_vaapi_display_has_driver_quirks().
+ The purpose for this first quirks is to disable the put image try for
+ AMD Gallium driver (see [1]).
+ 1. https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/merge_requests/72
+
+2020-01-15 23:07:29 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipluginutil.c:
+ plugins: renable Mesa Gallium driver
+
+2020-01-24 11:55:22 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: validate returned meta
+ Validate if the meta returned by gst_buffer_get_vaapi_video_meta() in
+ the acquired buffer is not null.
+ This situation should be very "pathological", but still it is better
+ be safe since that meta might be used later to create a new dma
+ buffer.
+
+2020-01-22 18:50:36 +0100 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * gst/vaapi/gstvaapivideobufferpool.c:
+ vaapivideobufferpool: always update/release the underlying surface proxy
+ gst_vaapi_video_buffer_pool_reset_buffer() is called when the sink
+ releases the last reference on an exported DMA buffer. This should
+ release the underlying surface proxy. To avoid releasing the wrong
+ surface due to a stale surface proxy reference in the buffer's
+ GstVaapiVideoMeta, always update the reference to the correct surface
+ in gst_vaapi_video_buffer_pool_acquire_buffer().
+
+2020-01-23 16:56:44 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapicontext.h:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ libs: context: select vaCreateSurfaces version according attributes
+ This commit tries to centralize the selection of vaCreateSurfaces
+ version, instead of having fallbacks everywhere.
+ These fallbacks are hacks, added because new drivers use the latest
+ version of vaCreateSurfaces (with surface attributes) [1], meanwhile
+ old drivers (or profiles as JPEG decoder in i965) might rather use the
+ old version.
+ In order to select which method, there's detected hack: each config
+ context has a list of valid formats, in the case of JPEG decoder the
+ list only contains "rare" 4:2:2 formats (ICM3, GRAY8) which aren't
+ handled correctly by the current gstreamer-vaapi code [2].
+ The hack consist in identify if the format list contains an arbitrary
+ preferred format (which is suposedly well supported by
+ gstreamer-vaapi, mostly NV12). If no prefered colour format is found,
+ the the old version of vaCreateSurfaces is used, and the surfaces wil
+ be mapped into a image with their own color format.
+ 1. https://bugzilla.gnome.org/show_bug.cgi?id=797143
+ 2. https://bugzilla.gnome.org/show_bug.cgi?id=797222
+
+2020-01-21 19:35:02 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ libs: context: add debug category for context
+
+2020-01-22 20:20:30 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ libs: blend: guard VA_BLEND_GLOBAL_ALPHA
+
+2020-01-21 14:09:33 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapiencode: promote info to warning
+ Let's notify user about using constrained-baseline instead on
+ requested basline profile.
+
+2019-06-28 15:41:16 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.h:
+ * gst/vaapi/gstvaapidecode.c:
+ * gst/vaapi/gstvaapidecode_props.c:
+ * gst/vaapi/gstvaapidecode_props.h:
+ vaapih264dec: Add a property to assume constrained-baseline
+ When baseline-as-constrained is set, the decoder will expose support
+ for baseline decoding and assume that the baseline content is
+ constrained-baseline. This can be handy to decode streams in hardware
+ that would otherwise not be possible to decode. A lot of baseline
+ content is in fact constrained.
+
+2020-01-17 16:19:52 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapipluginutil.c:
+ vaapih264enc: accept baseline as constrained baseline compatible
+
+2020-01-17 14:24:37 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapih264enc: update level in src caps
+ And, if downstream requests a specific level, the caps are not
+ negotiated, because there is no mechanism right now to specify a
+ custom level in the internal encoder.
+
+2020-01-17 17:12:53 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ libs: encoder: h264: document gst_vaapi_encoder_h264_supports_avc()
+
+2020-01-17 13:38:29 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapih264enc: force byte-stream if avc isn't supported
+ Removing the validation in gst_vaapiencode_h264_get_caps() since that
+ ought be handled in gst_vaapiencode_h264_set_config()
+
+2020-01-08 17:37:22 +0100 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaaph264enc: suppress avc if the driver does not support packed headers
+ Do not negotiate AVC output if the driver does not support it.
+
+2020-01-08 17:16:35 +0100 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ libs: encoder: h264: Add gst_vaapi_encoder_h264_supports_avc()
+ AVC output requires packed header support in the driver.
+
+2020-01-17 13:07:04 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapih264enc: intersect the new proposed caps
+ Instead of just leave to keep the proposed caps, with the best profile
+ in the allowed caps, is its intersected again.
+
+2020-01-17 12:58:58 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapih264enc: propose new profile caps and fixate it
+ When the available caps doesn't intersect with the allowed caps in the
+ pipeline, a new caps is proposed rather than just expecting to
+ iterate.
+ Later, the intersected caps (profile_caps) is fixated in order to
+ extract the configuration.
+
+2020-01-17 13:18:28 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapih264enc: common fail for gst_vaapiencode_h264_set_config()
+ Add a common fail code path for gst_vaapiencode_h264_set_config().
+
+2020-01-17 12:54:21 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: unref formats array if none
+ The formats array is always created, in order to keep the logic and
+ to avoid broken caps, if this formats array doesn't contain any
+ elements, it has to be unref and the function should return NULL.
+
+2020-01-17 14:22:48 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ vaapih264enc: fix log message
+ Before the log wasn't processed because wrong instance pointer.
+
+2019-06-22 00:44:25 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ plugin: encode: Add H265 main-444 profile.
+ Expose the main-444 profile to h265enc caps, when the upstream
+ chooses to use VUYA as input, we choose main 4:4:4 profile to encode
+ the frames.
+
+2020-01-15 19:36:00 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: Consider main-444 profile when encoding.
+ Add support of main-444 profile for parameter setting and packed header
+ generation.
+
+2020-01-15 23:04:08 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.c:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.h:
+ * gst/vaapi/gstvaapiencode.c:
+ vaapiencode: DMABuf only if PRIME is available
+ Add DMABuf capsfeature in encoders' allowed sinkcaps only if PRIME
+ memory type is available in the VA surface attributes of codec
+ context.
+
+2020-01-16 09:14:30 +0800 Haihao Xiang <haihao.xiang@intel.com>
+
+ * hooks/pre-commit.hook:
+ Add hooks/pre-commit.hook
+ meson.build in gstreamer-vaapi requires hooks/pre-commit.hook
+ Copied and pasted pre-commit.hook from other gstreamer modules to make
+ sure gstreamer-vaapi follows the same code style
+
+2019-12-26 16:45:51 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: Set encoder paramters base on entrypoint.
+ When the tune is NONE, we now can choose entrypoint freely. So the
+ GST_VAAPI_ENCODER_TUNE macro may not return the correct current
+ entrypoint.
+ We also delay CTU size calculation after entrypoint has been decided.
+
+2019-12-28 19:18:12 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicodedbufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapicodedbufferproxy.h:
+ * gst-libs/gst/vaapi/gstvaapicodedbufferproxy_priv.h:
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapicontext.h:
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_objects.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_objects.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ * gst-libs/gst/vaapi/gstvaapifei_objects.c:
+ * gst-libs/gst/vaapi/gstvaapifei_objects.h:
+ * gst-libs/gst/vaapi/gstvaapifei_objects_priv.h:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.h:
+ * gst-libs/gst/vaapi/gstvaapifeipak_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeipak_h264.h:
+ * gst-libs/gst/vaapi/gstvaapifeiutils_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeiutils_h264.h:
+ * gst-libs/gst/vaapi/gstvaapiprofile.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ * gst-libs/gst/vaapi/gstvaapisurfaceproxy.c:
+ * gst-libs/gst/vaapi/gstvaapisurfaceproxy.h:
+ * gst-libs/gst/vaapi/gstvaapisurfaceproxy_priv.h:
+ * gst-libs/gst/vaapi/meson.build:
+ * gst/vaapi/gstvaapi.c:
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode.h:
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ * gst/vaapi/gstvaapiencode_h264_fei.h:
+ * gst/vaapi/gstvaapifeivideometa.c:
+ * gst/vaapi/gstvaapifeivideometa.h:
+ * gst/vaapi/meson.build:
+ * meson.build:
+ * tests/internal/meson.build:
+ * tests/internal/test-fei-enc-in.c:
+ * tests/internal/test-fei-enc-out.c:
+ Remove all FEI related
+ FEI encoders are not actively mantained neither tested, and it is
+ using infrastructure that is changing and FEI is stopping this
+ effort.
+ Also it is required to rethink how FEI can be used in GStreamer.
+
+2020-01-14 11:17:49 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapioverlay.c:
+ vaapioverlay: ensure sinkpad has current buffer
+ Use the gst_video_aggregator_pad_has_current_buffer API
+ to check if the current sinkpad has a queued buffer before
+ attempting to obtain a input buffer from the base plugin.
+ If the sinkpad does not have a current buffer, then it is
+ either not producing them yet (e.g. current time < sinkpad
+ start time) or it has reached EOS.
+ Previously, we only handled EOS case.
+ Example:
+ gst-launch-1.0 videotestsrc num-buffers=100 \
+ ! vaapipostproc ! vaapioverlay name=overlay \
+ ! vaapisink videotestsrc timestamp-offset=1000000000 \
+ num-buffers=100 ! video/x-raw,width=160,height=120 \
+ ! overlay.
+
+2020-01-14 18:57:31 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapioverlay.c:
+ vaapioverlay: unroll the recursive call
+ Recursive functions are elegant but dangerous since they might
+ overflow the stack. It is better to turn them into a list tranversal
+ if possible, as this case.
+
+2020-01-14 18:46:49 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ * gst/vaapi/gstvaapioverlay.c:
+ vaapioverlay: add minimal documentation
+
+2020-01-14 18:25:11 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ * gst-libs/gst/vaapi/gstvaapiblend.h:
+ * gst/vaapi/gstvaapioverlay.c:
+ libs: blend: simplify generator API
+ Instead of using a parent structure that has to be derived by API
+ consumers, this change propse a simplification by using the common
+ pattern of GTK of passing a function pointer and user data which will
+ be passed as its parameter. That user data contains the state and the
+ function will be called to update that state.
+
+2020-01-10 10:14:38 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ * gst-libs/gst/vaapi/gstvaapiblend.h:
+ libs: blend: remove begin/render/end API
+ This API was risky and is superseded by the surface
+ generator (process) API.
+ Resolves #219
+
+2020-01-10 10:12:36 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapioverlay.c:
+ vaapioverlay: use blend surface generator API
+ See #219
+
+2020-01-10 09:54:30 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ * gst-libs/gst/vaapi/gstvaapiblend.h:
+ libs: blend: add surface generator API
+ This new API allows the user to call a single method (process)
+ which handles the [display] lock/unlock logic internally for
+ them.
+ This API supersedes the risky begin, render, end API.
+ It eliminates the need for the user to call a lock method
+ (process_begin) before processing the input buffers
+ (process_render) and calling an unlock method (process_end)
+ afterwards.
+ See #219
+
+2019-12-23 14:29:08 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode.h:
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ plugin: encode: List all possible profiles to detect input formats.
+ The current get_profile just return one possible profile for the encode,
+ which is not enough. For example, if we want to support HEVC 4:4:4
+ profile, the input of encode should be VYUA rather than NV12 in HEVC
+ main profile. So the command line:
+ gst-launch-1.0 videotestsrc num-buffers=200 ! capsfilter \
+ caps=video/x-raw,format=VUYA,width=800,height=600 ! vaapih265enc \
+ tune=low-power init-qp=30 ! fakesink
+ can not work because vaapih265enc just report NV12 in sink caps, we need
+ to specify the profile obviously like:
+ gst-launch-1.0 videotestsrc num-buffers=200 ! capsfilter \
+ caps=video/x-raw,format=VUYA,width=800,height=600 ! vaapih265enc \
+ tune=low-power init-qp=30 ! capsfilter caps=video/x-h265, \
+ profile=main-444 ! fakesink
+ The encode should have the ability to choose the profile based on input
+ format automatically. If the input video format is VUYA, the main-444
+ profile should be auto choosed.
+ We modify to let get_allowed_profiles of each encode sub class to return
+ an array of all supported profiles based on downstream's allowed caps, or
+ return NULL if no valid profiles specified by downstream.
+ If no allowed profiles found, all profiles which belong to the current
+ encoder's codec will be the candidates.
+ The function gst_vaapi_encoder_get_surface_attributes collects the surface's
+ attributes for that profile list we just get.
+ So for this case, both NV12 and VUYA should be returned.
+ TODO: some codec like VP9, need to implement the get_profile() function.
+
+2020-01-08 15:07:36 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapipluginutil.c:
+ * gst/vaapi/gstvaapipluginutil.h:
+ plugin: util: add helper function to detect profiles in caps.
+
+2020-01-08 15:04:18 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ libs: encoder: add a helper function to get all supported profiles
+
+2020-01-13 15:34:54 +0900 Seungha Yang <seungha.yang@navercorp.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder.c:
+ libs: decoder: Don't unref null object
+ ** (gst-launch-1.0:9789): CRITICAL **: 15:29:09.330:
+ gst_vaapi_context_unref: assertion 'context != NULL' failed
+
+2020-01-10 09:26:44 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapioverlay.c:
+ plugins: overlay: use proper NULL check on double pointer
+ Check the address of the variable is not NULL,
+ not the address of the pointer.
+
+2020-01-08 23:42:21 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapicodedbuffer_priv.h:
+ libs: codedbuf: delete a useless field.
+ The context field in GstVaapiCodedBuffer is not inited correctly
+ and is never used, just delete it.
+
+2019-12-29 17:57:52 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipluginutil.c:
+ plugins: add iHD driver in whitelist
+
+2020-01-02 21:02:40 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: modify 265 SPS header's profile compatibility flag.
+ Make the SPS profile compatibility flags more precisely conform to
+ the HEVC Spec.
+
+2020-01-06 19:39:06 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * tests/check/elements/vaapioverlay.c:
+ test: vaapioverlay: bail test if not available
+ vaapioverlay is only registered if the VA driver support the blend
+ operation.
+ This patch only executes the test if vaapioverlay is available,
+ otherwise the test is bail out without raising an error.
+
+2020-01-06 14:53:28 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * tests/check/elements/vaapioverlay.c:
+ tests: vaapioverlay: force drm backend
+
+2019-12-22 17:32:19 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ libs: blend: update to new mini-object API
+
+2019-11-19 13:48:22 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * tests/check/elements/vaapioverlay.c:
+ * tests/check/meson.build:
+ tests: check: add basic vaapioverlay test
+ Add test_overlay_position test to verify sink_1 input
+ is overlayed onto sink_0 input at the appropriate
+ position.
+
+2019-11-14 12:03:57 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapi.c:
+ * gst/vaapi/gstvaapioverlay.c:
+ * gst/vaapi/gstvaapioverlay.h:
+ * gst/vaapi/meson.build:
+ plugins: add vaapioverlay plugin
+ A plugin similar to the base compositor element but
+ uses VA-API VPP blend functions to accelerate the
+ overlay/compositing.
+ Simple example:
+ gst-launch-1.0 -vf videotestsrc ! vaapipostproc \
+ ! tee name=testsrc ! queue \
+ ! vaapioverlay sink_1::xpos=300 sink_1::alpha=0.75 \
+ name=overlay ! vaapisink testsrc. ! queue ! overlay.
+
+2019-11-14 12:02:19 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiblend.c:
+ * gst-libs/gst/vaapi/gstvaapiblend.h:
+ * gst-libs/gst/vaapi/meson.build:
+ libs: add a vaapi blend class
+ Support for the VA-API VPP blend functions.
+
+2019-11-14 11:54:59 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipluginbase.c:
+ * gst/vaapi/gstvaapipluginbase.h:
+ plugins: base: add GstVideoAggregator subclass support
+
+2020-01-05 19:32:16 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiimage.c:
+ libs: image: init all image fields correctly.
+
+2020-01-06 17:41:53 +0100 Stéphane Cerveau <scerveau@collabora.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ doc: fix pipeline typo in vaapipostproc
+
+2020-01-02 21:11:44 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: modify 265 VPS header fields.
+ vps_base_layer_internal_flag and vps_base_layer_available_flag
+ have been clearly defined now.
+
+2020-01-01 19:54:13 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay_x11.c:
+ libs: display: fix a resource leak in X11 pixmap format.
+
+2020-01-02 18:00:21 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.c:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.h:
+ libs: utils: delete useless gst_vaapi_profile_caps_append_encoder.
+
+2019-12-30 14:09:17 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst/vaapi/gstvaapiencode.c:
+ libs: encoder: get surfaces resolution the same time with formats.
+ We can get all the information about the video format at one shot
+ when we create the test context for getting the supported formats.
+ The current way to get the width and height ranges are inefficient,
+ since it calls the function gst_vaapi_profile_caps_append_encoder()
+ and it creates another temporal context to detect the resolution
+ information.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-12-28 17:42:55 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: vp9: fix code style
+
+2019-12-16 23:19:46 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: set entrypoint based on tune automatically
+ Some profile, such as H265_MAIN_444 on new Intel platform, may only
+ support ENTRYPOINT_SLICE_ENCODE_LP entrypoint. This leads two
+ problems:
+ 1. We need to specify the tune mode like `vaapih265enc tune=low-power`
+ every time when we need to use this kind of profile. Or we can not
+ create the encoder context successfully.
+ 2. More seriously, we set the entrypoint to a fixed value in
+ init_context_info() and so the create_test_context_config() can not
+ create the test context for these profile and can not get the
+ supported video formats, either.
+ We now change the entrypoint setting based on the tune option of the
+ encoder. If no tune property provided, we just choose the first
+ available entrypoint.
+
+2019-12-16 23:19:46 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: set context info profile by encoder
+ Instead of init_context_info() setting the passed profile, it is
+ assumed that it has to be set by each encoder.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-12-27 18:49:02 +0100 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ libs: context: add invalid entrypoint symbol
+ The symbol GST_VAAPI_ENTRYPOINT_INVALID is just a representation of
+ zero, which was already used as an invalid value tacitly. This patch
+ only makes it explicit.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-12-29 01:13:29 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapipixmap_x11.c:
+ libs: pixmap: Fix a pixmap creation crash.
+ We use GST_VAAPI_OBJECT_NATIVE_DISPLAY with wrong parameter for x11
+ pixmap creation, which causes crash if we run the internal test case
+ of:
+ test-decode --pixmap
+
+2019-12-22 14:35:18 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ plugin: encode: set allowed_sinkpad_caps to empty.
+ We now set encode->allowed_sinkpad_caps to NULL if we fail to get
+ surfaces formats. This causes two problem:
+ 1. gst_video_encoder_proxy_getcaps use NULL as its caps parameter,
+ which changes its behavior. It will use encode's sinkpad template
+ rather than empty caps to do the clip job. So even if we fail to set
+ allowed_sinkpad_caps, gst_video_encoder_proxy_getcaps can still return
+ valid caps.
+ 2. We should just set the allowed_sinkpad_caps once. The NULL point
+ make the ensure_allowed_sinkpad_caps function works again and again.
+
+2019-12-22 15:22:57 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: Add NULL pointer check for context when finalize.
+ Context may be NULL if pipeline fail in early stage, and the
+ ensure_context will not be called. Need to add a pointer protection
+ for it.
+
+2019-12-20 06:38:42 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipluginbase.c:
+ plugins: base: do not reset can_dmabuf
+ Don't reset the can_dmabuf field. This restores the
+ close/reset logic that existed prior to commit
+ ca2942176b5632e07eebac23336954f9aaf1cb26 in regards to
+ dmabuf support.
+ Plugins only call gst_vaapi_plugin_base_set_srcpad_can_dmabuf
+ once during startup, but may need to reset the other private
+ fields multiple times during negotiation. Thus, can_dmabuf
+ should be exempt from the resets.
+ Fixes #208
+
+2019-12-06 00:21:12 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ plugin: encode: Refine encode's sink caps.
+ The old manner to get the encode's sink caps is not correct.
+ Such as 264 encode, it gets:
+ video/x-raw(memory:VASurface),
+ format=(string){ ENCODED, NV12, I420, YV12, YUY2, UYVY, Y210,
+ P010_10LE, AYUV, Y410, Y444 }, width=(int)[ 32, 4096 ],
+ height=(int)[ 32, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
+ video/x-raw(memory:DMABuf), format=(string){ I420, YV12, RGBA },
+ width=(int)[ 32, 4096 ], height=(int)[ 32, 4096 ],
+ framerate=(fraction)[ 0/1, 2147483647/1 ];
+ video/x-raw, format=(string){ NV12 }, width=(int)[ 32, 4096 ],
+ height=(int)[ 32, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
+ where the formats for memory:VASurface and memory:DMABuf are superfluous.
+ All the "I420, YV12, YUY2, UYVY, Y210, RGBA" can not be really used as
+ input format for encoder.
+ We should get:
+ video/x-raw, format=(string){ NV12 }, width=(int)[ 32, 4096 ],
+ height=(int)[ 32, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
+ video/x-raw(memory:VASurface), format=(string){ NV12 },
+ width=(int)[ 32, 4096 ], height=(int)[ 32, 4096 ],
+ framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:DMABuf),
+ format=(string){ NV12 }, width=(int)[ 32, 4096 ],
+ height=(int)[ 32, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
+ as the correct result.
+
+2019-12-20 08:37:11 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ libs: display: code clean up
+
+2019-12-12 21:34:21 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/gstvaapidisplay_priv.h:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ libs: display: refine the profile/entrypoint map.
+ The old way make the one config for each profile/entrypoint pair,
+ which is not very convenient for description the relationship
+ between them. One profile may contain more than one entrypoints
+ to within it, so a set like data structure should be more suitable.
+
+2019-12-19 14:19:10 +0100 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapibufferproxy_priv.h:
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_objects.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapipixmap_x11.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ * gst-libs/gst/vaapi/gstvaapisurface_drm.c:
+ * gst-libs/gst/vaapi/gstvaapisurface_egl.c:
+ * gst-libs/gst/vaapi/gstvaapisurface_priv.h:
+ * gst-libs/gst/vaapi/gstvaapisurfaceproxy.c:
+ * gst-libs/gst/vaapi/gstvaapisurfaceproxy_priv.h:
+ * gst-libs/gst/vaapi/gstvaapitexture_egl.c:
+ * gst-libs/gst/vaapi/gstvaapitexture_glx.c:
+ * gst-libs/gst/vaapi/gstvaapivideopool.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.c:
+ * gst/vaapi/gstvaapipluginbase.c:
+ * gst/vaapi/gstvaapivideomemory.c:
+ * gst/vaapi/gstvaapivideometa.c:
+ * gst/vaapi/gstvaapivideometa_texture.c:
+ * tests/internal/image.c:
+ * tests/internal/test-filter.c:
+ * tests/internal/test-surfaces.c:
+ * tests/internal/test-windows.c:
+ libs: surface: port to GstMiniObject
+ GstVaapiMiniObject and GstVaapiObject are deprecated.
+ This is the first step to remove them by porting GstVaapiSurface as
+ a GstMiniBuffer descendant.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-12-19 18:26:10 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: surface: rename create function names to init
+ There are several internal functions with 'create' name, but they
+ don't create any new structure, but rather it initializes that
+ structure. Renaming those function to reflect better their purpose.
+
+2019-12-19 14:17:34 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: surface: use macro accessors
+
+2019-12-19 13:46:09 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface_priv.h:
+ libs: surface: fix internal documentation
+
+2019-12-18 18:00:49 +0100 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapicodedbuffer.c:
+ * gst-libs/gst/vaapi/gstvaapicodedbuffer.h:
+ * gst-libs/gst/vaapi/gstvaapicodedbuffer_priv.h:
+ * gst-libs/gst/vaapi/gstvaapicodedbufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeipak_h264.c:
+ * gst-libs/gst/vaapi/gstvaapivideopool.c:
+ libs: codedbuffer: port to GstMiniObject
+ GstVaapiMiniObject and GstVaapiObject are deprecated.
+ This is the first step to remove them by porting GstVaapiCodedBuffer
+ as a GstMiniBuffer descendant.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-12-18 12:57:01 +0100 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiimage.c:
+ * gst-libs/gst/vaapi/gstvaapiimage.h:
+ * gst-libs/gst/vaapi/gstvaapiimage_priv.h:
+ * gst-libs/gst/vaapi/gstvaapisubpicture.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface_drm.c:
+ * gst-libs/gst/vaapi/gstvaapivideopool.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.c:
+ * gst/vaapi/gstvaapipluginbase.c:
+ * gst/vaapi/gstvaapivideomemory.c:
+ * gst/vaapi/gstvaapivideometa.c:
+ * tests/internal/image.c:
+ * tests/internal/simple-encoder.c:
+ * tests/internal/test-fei-enc-in.c:
+ * tests/internal/test-filter.c:
+ * tests/internal/test-windows.c:
+ libs: image: port to GstMiniObject base class
+ GstVaapiMiniObject and GstVaapiObject are deprecrated. This is the
+ first step to remove them, by porting GstVaapiImage as a
+ GstMiniObject.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-09-24 01:01:22 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapicodedbuffer.c:
+ * gst-libs/gst/vaapi/gstvaapicodedbufferpool.c:
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapicontext.h:
+ * gst-libs/gst/vaapi/gstvaapidecoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.c:
+ libs: context: port to a plain C structure
+ The GstVaapiMiniObject is obsolete and we need to replace it. This
+ patch turns GstVaapiContext into a plain C structure with its own
+ reference counting mechanism.
+ Also this patch removes unused overlays attributes.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-12-18 00:40:58 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ * gst/vaapi/gstvaapiencode_jpeg.c:
+ * gst/vaapi/gstvaapiencode_mpeg2.c:
+ * gst/vaapi/gstvaapiencode_vp8.c:
+ * gst/vaapi/gstvaapiencode_vp9.c:
+ plugin: encode: change the dmabuf caps to all supported formats.
+ The encode's dmabuf caps definition is obsolete, it can support
+ more formats now. Re-define it to include all supported formats
+ in video format map.
+
+2019-12-17 17:09:37 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ libs: encoder: h264fei: remove unnecessary check
+ Issue detected by Coverity
+ `info_to_pack.h264_slice_header` is always allocated by
+ gst_vaapi_feipak_h264_encode(), thus checking it to free it afterwards
+ in doesn't make much sense. But it requires to be free on the error
+ path.
+ There may be a null pointer dereference, or else the comparison
+ against null is unnecessary.
+ In gst_vaapi_encoder_h264_fei_encode: All paths that lead to this null
+ pointer comparison already dereference the pointer earlier
+
+2019-12-17 17:05:22 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ libs: encoder: h264fei: remove unnecessary assert
+ Issue detected by Coverity
+ An unsigned value can never be negative, so this test will always
+ evaluate the same way.
+ In add_slice_headers: An unsigned value can never be less than 0
+
+2019-12-17 16:57:41 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ libs: encoder: h264fei: remove unnecessary check
+ Issue detected by Coverity
+ There may be a null pointer dereference, or else the comparison
+ against null is unnecessary.
+ In gst_vaapi_encoder_h264_fei_encode: All paths that lead to this null
+ pointer comparison already dereference the pointer earlier
+
+2019-12-17 16:49:47 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ libs: encoder: h264fei: don't free memory on stack
+ Issue detected by Coverity
+ `info_to_pak` variable in gst_vaapi_encoder_h264_fei_encode() is
+ declared in the stack, but it is free in
+ gst_vaapi_feienc_h264_encode() as if declared on the heap.
+ This patch initializes the structure and removes the free.
+ A non-heap pointer is placed on the free list, likely causing a crash
+ later.
+ In gst_vaapi_encoder_h264_fei_encode: Free of an address-of
+ expression, which can never be heap allocated.
+
+2019-12-17 13:22:12 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ libs: encoder: h264fei: fix surface leak
+ Issue detected by Coverity
+ If the FEI mode is not handled the created resources should be
+ released and return and error code.
+ The system resource will not be reclaimed and reused, reducing the
+ future availability of the resource.
+ In gst_vaapi_encoder_h264_fei_encode: Leak of memory or pointers to
+ system resources
+
+2019-12-17 13:09:58 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * tests/check/elements/vaapipostproc.c:
+ tests: check return calling of gst_navigation_event_parse.*
+ This issue was detected by Coverity.
+ If the function returns an error value, the error value may be mistaken
+ for a normal value.
+ In cb_mouse_event: Value returned from a function is not checked for
+ errors before being used
+
+2019-12-16 16:25:02 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ * gst/vaapi/gstvaapiencode_jpeg.c:
+ * gst/vaapi/gstvaapiencode_mpeg2.c:
+ * gst/vaapi/gstvaapiencode_vp8.c:
+ * gst/vaapi/gstvaapiencode_vp9.c:
+ plugin: encode: set sink's raw caps to GST_VAAPI_FORMATS_ALL.
+ Then encode plugin just supports raw formats declared in vaapi video
+ format map. This modification makes the template caps more precise.
+
+2019-11-14 11:13:51 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipluginbase.c:
+ plugins: base: add GstPad param to internal helper functions
+ The base plugin public API function implementations determine
+ which pad should be passed to the internal helper functions.
+ Currently, only the base plugin static sinkpad and static
+ srcpad are supported/used. However, this change enables future
+ API functions to be added that can accept a pad (i.e. request pad)
+ from an element subclass (e.g. a GstVideoAggregator subclass).
+
+2019-11-12 12:21:52 -0800 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipluginbase.c:
+ * gst/vaapi/gstvaapipluginbase.h:
+ plugins: base: manage pad-specific data in a single struct
+ Define a struct (GstVaapiPadPrivate) to encapsulate the
+ pad-specific data (i.e. buffer pool, allocator, info,
+ caps, etc.).
+ Add an interface to retrieve the data struct for a given
+ pad.
+ Finally, update the base plugin to use the data struct
+ throughout the implementation.
+ This will enable us to easily extend the base plugin in the
+ future to allow for N-to-1 pad subclasses (e.g. overlay/
+ composite).
+
+2019-10-29 15:13:44 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapipluginbase.h:
+ * gst/vaapi/gstvaapipostproc.c:
+ plugins: use plugin base macros to access pad specific data
+ Don't access base struct fields directly since the underlying
+ definition can change. Instead, use the accessor macros.
+
+2019-12-03 00:52:45 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ libs: decoder: Modify decode src's template raw formats
+ We do not need to maintain a standalone list of decoder's output
+ template for raw formats and that is easy to make mistake(for
+ example, the AYVU is wrong in that list, should be VUYA).
+ Just use GST_VAAPI_FORMATS_ALL to replace the raw formats list for
+ src template.
+
+2019-12-11 14:11:13 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ libs: postproc: Modify src/sink template raw formats
+ We need to provide more precise template caps for postproc's src
+ and sink pads. The GST_VIDEO_FORMATS_ALL make all video formats
+ available which are really superfluous.
+
+2019-12-10 18:40:42 -0300 Thibault Saunier <tsaunier@igalia.com>
+
+ * tests/check/elements/vaapipostproc.c:
+ Do not mix declaration and code
+
+2019-11-03 17:59:01 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: decoder: h265: skip all pictures prior the first I-frame
+ Don't try to decode until the first I-frame is received within the
+ currently active sequence. i965 H265 decoder don't show any artifact
+ but it crashes.
+ Fixes: #98
+
+2019-11-27 01:44:05 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/video-format.c:
+ libs: video-format: remove dead code
+
+2019-10-31 00:59:34 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/video-format.c:
+ * gst-libs/gst/vaapi/video-format.h:
+ * gst/vaapi/gstvaapipluginutil.h:
+ libs: video-format: add GST_VAAPI_FORMATS_ALL
+ GST_VAAPI_FORMATS_ALL collects all declared formats in video-format
+ as a caps template string, and make them available in caps with
+ memory:VASurface feature.
+ Fixes: #199
+
+2019-11-06 22:37:12 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/video-format.c:
+ * tests/internal/test-windows.c:
+ libs: video-format: change GST_VIDEO_FORMAT_AYUV to VUYA.
+ We only support VUYA format in gst vaapi now, need to correct
+ the mapping.
+
+2019-10-09 15:13:09 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * tests/check/elements/vaapipostproc.c:
+ tests: check: vaapipostproc test_orientation_mouse_events
+ Test that vaapipostproc properly translates mouse events
+ when using video-direction (orientation).
+
+2019-10-09 10:11:54 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * tests/check/elements/vaapipostproc.c:
+ * tests/check/meson.build:
+ tests: check: vaapipostproc test_crop_mouse_events
+ Test that vaapipostproc properly translates mouse events
+ when cropping.
+
+2019-10-08 12:20:26 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * meson.build:
+ * meson_options.txt:
+ * tests/check/elements/vaapipostproc.c:
+ * tests/check/meson.build:
+ * tests/meson.build:
+ tests: check: initial unit test support
+ Add minimal unit test toolchain files and a simple
+ vaapipostproc unit test.
+
+2019-10-08 12:19:06 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * meson.build:
+ * tests/examples/meson.build:
+ * tests/examples/test-roi.c:
+ * tests/examples/test-vaapicontext.c:
+ * tests/examples/test-vaapipostproc.c:
+ * tests/examples/test-vaapisink.c:
+ * tests/internal/codec.c:
+ * tests/internal/codec.h:
+ * tests/internal/decoder.c:
+ * tests/internal/decoder.h:
+ * tests/internal/image.c:
+ * tests/internal/image.h:
+ * tests/internal/meson.build:
+ * tests/internal/output.c:
+ * tests/internal/output.h:
+ * tests/internal/simple-decoder.c:
+ * tests/internal/simple-encoder.c:
+ * tests/internal/test-decode.c:
+ * tests/internal/test-decode.h:
+ * tests/internal/test-display.c:
+ * tests/internal/test-fei-enc-in.c:
+ * tests/internal/test-fei-enc-out.c:
+ * tests/internal/test-filter.c:
+ * tests/internal/test-h264.c:
+ * tests/internal/test-h264.h:
+ * tests/internal/test-jpeg.c:
+ * tests/internal/test-jpeg.h:
+ * tests/internal/test-mpeg2.c:
+ * tests/internal/test-mpeg2.h:
+ * tests/internal/test-mpeg4.c:
+ * tests/internal/test-mpeg4.h:
+ * tests/internal/test-subpicture-data.c:
+ * tests/internal/test-subpicture-data.h:
+ * tests/internal/test-subpicture.c:
+ * tests/internal/test-surfaces.c:
+ * tests/internal/test-textures.c:
+ * tests/internal/test-vc1.c:
+ * tests/internal/test-vc1.h:
+ * tests/internal/test-windows.c:
+ * tests/internal/y4mreader.c:
+ * tests/internal/y4mreader.h:
+ * tests/meson.build:
+ tests: move examples and tests to subfolders
+ This makes way for adding unit (check) tests.
+
+2019-10-14 01:01:27 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * .gitmodules:
+ * Makefile.am:
+ * autogen.sh:
+ * common:
+ * configure.ac:
+ * git.mk:
+ * gst-libs/Makefile.am:
+ * gst-libs/gst/Makefile.am:
+ * gst-libs/gst/vaapi/Makefile.am:
+ * gst/Makefile.am:
+ * gst/vaapi/Makefile.am:
+ * m4/Makefile.am:
+ * tests/Makefile.am:
+ * tests/elements/Makefile.am:
+ Remove autotools build
+
+2019-10-10 15:26:36 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: fix off-by-one coord translations
+ When translating navigation x,y coordinates for
+ video-direction, it is necessary to subtract 1
+ when using the video dimensions to compute the
+ new x,y coordinates. That is, a 100x200 image
+ should map coordinates in x=[0-99],y=[0-199].
+ This issue was found with unit tests provided
+ in !182.
+
+2019-10-11 17:34:06 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.c:
+ libs: window: x11: Avoid usage of deprecated API
+
+2019-10-11 17:13:34 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * meson.build:
+ build: halt meson configuration if no renderer API
+ We should halt meson configuration if there is no render API
+ installed (either DRM, Wayland or X11).
+ That behavior was already in autotools but missed in meson. This patch
+ brings it back.
+ Fixes: #196
+
+2019-10-09 12:12:18 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: fix default orientation regression
+ Fix regression introduced in f232f87f7082
+
+2019-10-07 11:53:23 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: use OP_DATA_DEFAULT_VALUE macro
+
+2019-10-07 11:39:19 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: use macro for returning op default value
+ The code is essentially the same for getting all op default
+ values. Thus, use a macro to help minimize code duplication
+ and [hopefully] encourage using the same mechanism for all
+ default getters.
+
+2019-10-07 09:56:37 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: query param spec for default scale method
+ Related: #159
+
+2019-10-07 09:44:06 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: query param spec for default skin-tone values
+ Related: #159
+
+2019-10-02 12:54:52 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: query param spec for default video-direction
+ Related: #159
+
+2019-10-07 10:23:09 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * .gitignore:
+ add .gitignore
+
+2019-09-05 16:40:52 +0800 Yan Wang <yan.wang@linux.intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostproc.h:
+ vaapipostproc: Use level value for skin-tone-enhancement filter.
+ Currently the parameter of skin-tone-enhancement filter is forced
+ to zero. In fact it could be set different value by the user.
+ So create a new property named as "skin-tone-enhancement-level"
+ for accepting the used defined parameter value.
+ At the same time, skin-tone-enhancement is marked as deprecated.
+ When skin-tone-enhancement-level is set, skin-tone-enhancement
+ will be ignored.
+
+2019-09-21 13:39:42 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: decoder: h264, h266: fix g_return_val_if_fail() missuse
+ g_return_val_fail() documentations says:
+ If expr evaluates to FALSE, the current function should be
+ considered to have undefined behaviour (a programmer error).
+ The only correct solution to such an error is to change the
+ module that is calling the current function, so that it avoids
+ this incorrect call.
+ So it was missused in a couple parts of the H264 and H265 internal
+ decoders. This patch changes that to plain conditionals.
+ Also, it was included a couple code-style fixes.
+
+2019-09-23 19:52:20 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * tests/simple-encoder.c:
+ * tests/test-fei-enc-in.c:
+ libs: encoder: remove gst_vaapi_encoder_{ref,unref}()
+ Since GstVaapiEncoder is a descendant of of GstObject, there is no
+ need to keep a custom ref()/unref() methods. This patch deletes them.
+
+2019-09-24 01:03:02 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: correct encoder's ref/unref function.
+ GstVaapiEncoder now is a standard gstobject and need to use
+ gst_object_ref/unref functions.
+
+2019-09-19 12:09:20 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ gst: encode: h264_fei: remove useless comparison
+ The expression "len >= 0" is always true since "len"
+ is an unsigned type. And it is clear that the writers
+ intention was not to write "len > 0" since we handle
+ len == 0 in the ensuing "if (len < 3)" conditional
+ block.
+
+2019-09-19 11:17:24 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ libs: encoder: h264_fei: fix potential overflow before widen
+ Found by static analysis. encoder->mb_width * encoder->mb_height
+ is evaluated using 32-bit arithmetic before widen. Thus, cast
+ at least one of these to guint64 to avoid overflow.
+
+2019-09-19 10:56:13 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ libs: encoder: h264_fei: remove dead error condition
+ Found by static analysis. The feipak is always null
+ when we reach the error target.
+
+2019-09-19 10:49:11 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: add missing break in switch
+
+2019-09-11 11:56:35 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/video-format.c:
+ libs: video-format: Make all YUV format available
+ The YUV formats have no ambiguity for drivers, so we can add them all.
+ Some old driver(i965) does not implement full get/put image functions
+ but can use derive image funtions for the YUV format. It does not
+ report that kind of formats correctly in image query, but will derive
+ that YUV format image from surface. The dynamic mapping of YUV format
+ will block that manner.
+ Adding more YUV format mapping has no side effect. So considering the
+ legacy driver conformance, we add all YUV formats mapping statically
+ and dynamic mapping RBG formats
+ Fix: #189
+ Fix: #190
+
+2019-09-18 15:30:03 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_egl.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_egl.h:
+ egl: Fix racyness in display thread creation
+ Multiple different scenarios could break the display thread creation and
+ end up blocking waiting for thread o be created. Fix them all by
+ correctly waiting for a new boolean to become valid.
+
+2019-09-18 15:29:03 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_egl.c:
+ egl: don't advertise a wrapped EGLContext as actually wrapped
+ It's not actually wrapped as we create a new EGLContext from the passed
+ in EGLContext. As a result, the created EGLContext was never destroyed.
+
+2019-09-16 23:28:31 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ libs: h264decoder: do not return error for unhandled NAL unit.
+ Some streams have error data introducing unknown NAL type. There are
+ also kinds of NAL types we do not want to handle. The old manner will
+ set a decoder error when encounter this, which cause a latent crash bug.
+ The decoder may successfully decode the picture and insert it into DPB.
+ But there are error NAL units after the AU which cause the post unit error
+ and make that frame dropped. The later output of the picture still want
+ to ref that frame and crash.
+ No need to set decoder error when can not recognize or handle the NAL
+ unit, just skip it and continue.
+ Fix: #191
+
+2019-09-11 14:32:22 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ * gst/vaapi/gstvaapiencode.c:
+ libs: encoders: use GST_PARAM_USER_SHIFT to define internal params
+ This patch makes use of GST_PARAM_USER_SHIFT to define the internal
+ param in encoders to decide which parameters to expose. Thus
+ gstreamer-vaapi will not interfere with any change in GStreamer in the
+ future.
+ Also, the internal symbol was change to
+ GST_VAAPI_PARAM_ENCODER_EXPOSURE to keep the namespacing.
+
+2019-09-09 18:06:51 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiimage.c:
+ * gst-libs/gst/vaapi/video-format.c:
+ libs: Add BGR10A2_LE support for color space conversion.
+ Fix: #179
+
+2019-08-23 14:41:06 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ libs: surface: add pointer check for surface_new_from_formats.
+ The command line:
+ gst-launch-1.0 filesrc location=some_name.mjpeg ! jpegparse !
+ vaapijpegdec ! videoconvert ! video/x-raw,format=I420 ! vaapisink
+ will crash on i965 driver because of no pointer check.
+ We now generate the video format map between GST format and VA format
+ dynamically based on the image format returned by vaQueryImageFormats.
+ i965 driver does to report image format of 444P and Y800 forcc, while
+ the jpeg decoder context VASurfaceAttribPixelFormat use them. We can
+ not recognize these format and pass a NULL pointer to
+ gst_vaapi_surface_new_from_formats.
+ We need to add a pointer check here and let the fallback logic handle
+ this case correctly.
+ Other drivers work well.
+
+2019-09-07 13:23:01 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: guard the VAEntrypointFEI symbol
+ VAEntrypointFEI appeared in libva 2.0.0 (API version 1.0.0)
+
+2019-09-05 14:48:22 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidisplay.c:
+ * gst-libs/gst/vaapi/video-format.c:
+ * gst-libs/gst/vaapi/video-format.h:
+ libs: video-format: Refine the video format mapping.
+ Improve the mapping between va format and gst format. The new map
+ will be generated dynamically, based on the query result of image
+ format in VA driver. Also consider the ambiguity of RGB color
+ format in LSB mode.
+
+2019-04-15 16:51:26 +0100 Philippe Normand <philn@igalia.com>
+
+ * gst/vaapi/gstvaapipluginutil.c:
+ pluginutil: Remove Mesa from drivers white list
+ The Mesa Gallium driver is poorly tested currently, leading to bad user
+ experience for AMD users. The driver can be added back to the white list at
+ runtime using the GST_VAAPI_ALL_DRIVERS environment variable.
+
+2019-07-08 14:18:00 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostproc.h:
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: allow cropping via properties
+ Add crop-left, crop-right, crop-top and crop-bottom
+ properties to vaapipostproc.
+
+2019-08-30 17:31:45 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: rotate outbuf and crop meta if forwarding
+ When forwarding crop meta to downstream, the output
+ buffer and crop meta need to be rotated, too.
+ Test:
+ for i in 90r 180 90l vert horiz ul-lr ur-ll
+ do
+ gst-launch-1.0 -vf videotestsrc num-buffers=500 \
+ ! videocrop top=100 bottom=30 left=40 right=20 \
+ ! vaapipostproc video-direction=$i \
+ ! vaapisink & \
+ gst-launch-1.0 -vf videotestsrc num-buffers=500 \
+ ! videocrop top=100 bottom=30 left=40 right=20 \
+ ! vaapipostproc video-direction=$i \
+ ! identity drop-allocation=true \
+ ! vaapisink
+ done
+
+2019-08-30 14:14:30 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: fix output buffer WxH for crop meta forwarding
+ Adding crop meta x,y to w,h only compensates for left,top
+ cropping. But we also need to compensate for right,bottom
+ cropping.
+ The video meta contains the appropriate w,h (uncropped)
+ values, so use it instead.
+ Test:
+ gst-launch-1.0 -vf videotestsrc num-buffers=500 \
+ ! videocrop top=50 bottom=30 left=40 right=20 \
+ ! vaapipostproc ! vaapisink & \
+ gst-launch-1.0 -vf videotestsrc num-buffers=500 \
+ ! videocrop top=50 bottom=30 left=40 right=20 \
+ ! vaapipostproc ! identity drop-allocation=1 \
+ ! vaapisink
+
+2019-09-04 10:52:51 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: handle size and direction together in src events
+ Mapping a pointer event needs to consider both size and
+ video-direction operations together, not just one or the other.
+ This fixes an issue where x,y were not being mapped correctly
+ for 90r, 90l, ur-ll and ul-lr video-direction. In these directions,
+ the WxH are swapped and GST_VAAPI_POSTPROC_FLAG_SIZE is set. Thus,
+ the first condition in the pointer event handling was entered and
+ x,y scale factor were incorrectly computed due to srcpad WxH
+ swap.
+ This also fixes all cases where both video-direction and scaling
+ are enabled at the same time.
+ Test that all pointer events map appropriately:
+ for i in `seq 0 7`
+ do
+ GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
+ ! vaapipostproc video-direction=${i} width=300 \
+ ! vaapisink
+ GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
+ ! vaapipostproc video-direction=${i} width=300 height=200 \
+ ! vaapisink
+ GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
+ ! vaapipostproc video-direction=${i} height=200 \
+ ! vaapisink
+ GST_DEBUG=vaapipostproc:5 gst-launch-1.0 -vf videotestsrc \
+ ! vaapipostproc video-direction=${i} \
+ ! vaapisink
+ done
+
+2019-08-20 14:22:57 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostproc.h:
+ vaapipostproc: advertise crop meta is handled
+ Advertise to upstream that vaapipostproc can handle
+ crop meta.
+ When used in conjunction with videocrop plugin, the
+ videocrop plugin will only do in-place transform on the
+ crop meta when vaapipostproc advertises the ability to
+ handle it. This allows vaapipostproc to apply the crop
+ meta on the output buffer using vaapi acceleration.
+ Without this advertisement, the videocrop plugin will
+ crop the output buffer directly via software methods,
+ which is not what we desire.
+ vaapipostproc will not apply the crop meta if downstream
+ advertises crop meta handling; vaapipostproc will just
+ forward the crop meta to downstream. If crop meta is
+ not advertised by downstream, then vaapipostproc will
+ apply the crop meta.
+ Examples:
+ 1. vaapipostproc will forward crop meta to vaapisink
+ gst-launch-1.0 videotestsrc \
+ ! videocrop left=10 \
+ ! vaapipostproc \
+ ! vaapisink
+ 2. vaapipostproc will do the cropping
+ gst-launch-1.0 videotestsrc \
+ ! videocrop left=10 \
+ ! vaapipostproc \
+ ! identity drop-allocation=1 \
+ ! vaapisink
+
+2019-08-29 18:44:36 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: clean two virtual func in encoder class
+ set_property and get_default_properties functions are no longer
+ needed for encoder class.
+
+2019-08-29 18:43:30 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.h:
+ libs: encoder: delete old set_property and property enum feienc264
+
+2019-08-29 18:39:27 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.h:
+ libs: encoder: delete old set_property and property enum in h264 fei
+
+2019-08-29 18:37:58 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h:
+ libs: encoder: delete old set_property and property enum in vp9
+
+2019-08-29 18:36:51 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.h:
+ libs: encoder: delete old set_property and property enum in vp8
+
+2019-08-29 18:35:59 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.h:
+ libs: encoder: delete old set_property and property enum in mpeg2
+
+2019-08-29 18:34:57 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.h:
+ libs: encoder: delete old set_property and property enum in jpeg
+
+2019-08-29 18:31:56 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.h:
+ libs: encoder: delete old set_property and property enum in h265
+
+2019-08-29 18:30:07 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ libs: encoder: delete old set_property and property enum in h264
+
+2019-08-29 18:17:42 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: delete EncoderPropInfo related functions
+
+2019-08-29 16:13:19 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ libs: encoder: delete encoder_set_property
+ We no longer need this obsolete set_property function now after
+ switch to standard gobject's property manner.
+ Also delete the old encoder's property enum in the header file.
+
+2019-08-29 15:59:43 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: delete properties_get_default for base class
+
+2019-08-29 15:52:04 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode.h:
+ plugin: encode: delete useless init_properties.
+ Also delete the get_properties function in encode class. We now
+ use g_object_class_list_properties to get all properties for
+ internal encoder class.
+
+2019-08-29 15:43:45 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode.h:
+ plugin: encode: delete set/get_property func in encode class
+ Use standard gobject's property functions to replace the old way.
+
+2019-08-29 15:31:16 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode.h:
+ plugin: encode: delete gst_vaapiencode_init_properties
+ No need to init the properties got by get_default_properties func
+ now. The properties are inited correctly in internal encoder class.
+
+2019-08-29 15:19:10 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: delete 3 useless init macro
+
+2019-08-29 15:16:26 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.h:
+ libs: encoder: delete get_default_properties of feienc
+
+2019-08-29 15:14:14 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.h:
+ libs: encoder: delete get_default_properties of H264 Fei
+
+2019-08-29 15:07:17 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h:
+ libs: encoder: delete get_default_properties of VP9
+
+2019-08-29 15:06:25 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.h:
+ libs: encoder: delete get_default_properties of VP8
+
+2019-08-29 15:03:52 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.h:
+ libs: encoder: delete get_default_properties of MPEG2
+
+2019-08-29 15:03:19 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.h:
+ libs: encoder: delete get_default_properties of JPEG
+
+2019-08-30 19:15:38 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.h:
+ libs: encoder: delete get_default_properties of H265
+
+2019-08-29 14:59:12 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ libs: encoder: delete get_default_properties of H264
+
+2019-08-29 14:53:59 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: delete the useless constructed func for encoder.
+
+2019-08-26 23:16:33 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ libs: encoder: implement get_view_ids for h264 encoder.
+
+2019-08-20 23:56:33 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ * gst/vaapi/gstvaapiencode_jpeg.c:
+ * gst/vaapi/gstvaapiencode_mpeg2.c:
+ * gst/vaapi/gstvaapiencode_vp8.c:
+ * gst/vaapi/gstvaapiencode_vp9.c:
+ gst: encode: enable new type of property mechanism.
+
+2019-08-20 22:16:35 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode.h:
+ gst: encode: add property help functions for encoder properties.
+ The encoder is a true gstobject now and all the properties are using
+ gobject's properties mechanism. Add help functions to handle the properties
+ between encode and encoder class.
+ The basic idea is mapping the same property between encoder and encode. All
+ the encoder's properties will have the same name, the same type in encode.
+ The set/get property function just forward the property setting/getting to
+ the encoder using the same property name and value. Because the encoder is
+ created on needed, we need to cache the property setting in encode.
+
+2019-08-30 18:39:32 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ libs: encoder: add flags to all encoder properties.
+ G_PARAM_CONSTRUCT make all properties init correctly, we do not
+ need to init the properties manually.
+ G_PARAM_FLAG_VAAPI_ENCODER_EXPOSURE is a vaapi encoder specific
+ flag, means need to expose the property to according encode class.
+
+2019-08-20 17:00:39 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ libs: encoder: Add properties for h264 encoder fei.
+ Install properties for h264 encoder fei class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 15:58:30 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ libs: encoder: Add properties for h264 fei encoder.
+ Install properties for h264 fei encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 15:29:27 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: Add properties for vp9 encoder.
+ Install properties for vp9 encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 15:01:02 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ libs: encoder: Add properties for vp8 encoder.
+ Install properties for vp8 encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 14:31:58 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ libs: encoder: Add properties for mpeg2 encoder.
+ Install properties for mpeg2 encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 14:53:06 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ libs: encoder: Add properties for jpeg encoder.
+ Install properties for jpeg encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 14:12:36 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: Add properties for h265 encoder.
+ Install properties for h265 encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-20 01:33:40 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ libs: encoder: Add properties for h264 encoder.
+ Install properties for h264 encoder class. Also set the new get/set
+ property functions for gobject class. Still use the old properties
+ way now and this new feature will be enabled later.
+
+2019-08-19 15:38:09 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: add properties and prop help functions
+ Add all common properties to encoder base class. rate-control and
+ tune are moved to sub class.
+
+2019-08-29 14:38:49 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: delete useless gst_vaapi_encoder_new func.
+ GstVaapiEncoder is a abstract gobject and never be created directly.
+
+2019-07-27 00:55:53 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.c:
+ * gst-libs/gst/vaapi/gstvaapifeienc_h264.h:
+ lib: encoder: gstobjectfy all vaapi encoders.
+ Replace all gstvaapiobject in vaapi encoders with standard gstobject.
+ Let the gstobject common logic to handle all the init and finalize
+ works. But the property install/set/get still use the old way, need
+ to be improved later.
+
+2019-08-29 12:11:36 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: check for filter before appending caps
+ While ensuring the allowed sink pad caps, the filter attributes set
+ the frame size restriction, but it is not ensured, at that moment,
+ that the filter is already instantiaded.
+ In order to silence the glib logs, this patch add only calls
+ gst_vaapi_filter_append_caps() if the filter is instantiated.
+
+2019-08-28 12:49:03 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * gst/vaapi/gstvaapidecodebin.c:
+ Classify vaapidecodebin as a hardware decoder
+
+2019-08-27 18:12:45 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ libs: postproc: fix a memory leak point.
+ filter_ops and filter_formats should already have valid value when
+ the function gst_vaapipostproc_ensure_filter_caps re-enter
+
+2019-08-27 01:30:36 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_core.c:
+ libs: util: Fix a memory leak in config_surface_attributes_get
+
+2019-08-22 14:33:54 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: support transform ROI meta
+ This will benefit the use case like:
+ src ---> encode ---> decode ---> circle ROI ---> sink
+ | |
+ --> analyse to -->
+ get ROI
+
+2019-08-23 19:10:15 +0200 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * gst/vaapi/gstvaapidecodedoc.c:
+ docstrings: port ulinks to markdown links
+
+2019-08-20 17:05:14 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/Makefile.am:
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapicontext_overlay.c:
+ * gst-libs/gst/vaapi/gstvaapicontext_overlay.h:
+ * gst-libs/gst/vaapi/meson.build:
+ libs: remove context's overlay
+ The context overlay was an optimization to apply a video composition
+ to all the surfaces bound to a context.
+ But since commit 18031dc6 this optimization was disabled, so it is
+ better just get rid of it.
+
+2019-08-20 16:50:46 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.c:
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ * gst-libs/gst/vaapi/gstvaapisurface_priv.h:
+ * gst/vaapi/gstvaapipluginutil.c:
+ * tests/test-subpicture.c:
+ libs: remove surface's parent context
+ In commit 18031dc6 surface's parent context is not assigned because of
+ circular references. Since then (2013), there's has no issue with
+ subpictures attached to a context, the current only users of this API.
+ This patch cleans up all of related code with the unused surface's
+ parent context.
+
+2019-08-18 13:53:53 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: guard if no structure is available in caps
+
+2019-08-18 13:53:19 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: append frame size restrictions in caps
+
+2019-08-18 13:09:58 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.c:
+ libs: profilecaps: refactor common code
+
+2019-08-16 19:35:58 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ vaapiencode: set frame size restrictions in caps
+ Fixes: #12
+
+2019-08-16 19:28:27 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst/vaapi/gstvaapiencode.c:
+ vaapiencode: enhance how the profile is defined
+ This code doesn't define the profile used by the internal encoder, but
+ it used to "predict" which is going to be used and to get the caps
+ restrictions.
+ Before the profile was predicted by checking the donwstream caps, but
+ sometimes they are not defined, setting an unknown profile. In order
+ to enhances this situation, the encoder asks to internal encoder if it
+ has one. If so, it is used.
+ To ask the internal encoder's profile a new accessor function was
+ added: gst_vaapi_encoder_get_profile()
+
+2019-08-16 19:26:36 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.c:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.h:
+ libs: profilecaps: defines gst_vaapi_profile_caps_append_encoder()
+ Previously it was just a boilerplate. Now it is real implementation.
+
+2019-08-16 19:17:48 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: treat va_rt_format as bitwise flag
+ The return value of vaGetConfigAttributes() of VAConfigAttribRTFormat
+ is a bitwise flag with *all* the supported chroma types.
+ Previously it was assumed that the return value was a single value,
+ thus when returning the GST_VAAPI_CHROMA_TYPE_XXX the code was a
+ simple case. But it is wrong.
+ This patch changes the case block with a sequence of ifs testing the
+ bitwise. For now we assume a "priority" list in the testing sequence.
+
+2019-08-16 18:07:43 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.c:
+ * gst-libs/gst/vaapi/gstvaapiprofile.h:
+ * tests/test-display.c:
+ libs: profile: add gst_vaapi_profile_get_va_name()
+ gst_vaapi_profile_get_name() returns a proper name for
+ GstCaps. Nonetheless, there are many profiles which don't have a name
+ representation for that realm.
+ gst_vaapi_profile_get_va_name() returns the name of the profile
+ according to its VAProfile name.
+ This new funtion is used in the encoder error message.
+
+2019-08-05 19:47:30 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/Makefile.am:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.c:
+ * gst-libs/gst/vaapi/gstvaapiprofilecaps.h:
+ * gst-libs/gst/vaapi/meson.build:
+ * gst/vaapi/gstvaapidecode.c:
+ libs: profilecaps: move caps config into a new file
+ Implement all the appending of frame size restrictions in caps, for
+ encoders and decoders, in a new source file.
+
+2019-08-05 19:45:49 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder.c:
+ libs: decoder: ref the caps as property
+
+2019-08-02 16:56:17 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapicontext.h:
+ libs: context: add gst_vaapi_context_get_surface_attributes()
+ This function copies the surface attributes from the context's object
+ to the caller.
+
+2019-08-02 12:46:55 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.c:
+ * gst-libs/gst/vaapi/gstvaapibufferproxy.h:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.h:
+ libs: move memory types conversions to gstvaapiutils
+ And add more supported memory types by current VA.
+
+2019-08-01 19:48:21 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_core.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_core.h:
+ libs: utils: remove unused function gst_vaapi_get_surface_formats()
+
+2019-08-01 19:46:17 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapicontext.c:
+ * gst-libs/gst/vaapi/gstvaapicontext.h:
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: context, filter: use new surface attributes API
+
+2019-08-01 19:13:39 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_core.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_core.h:
+ libs: utils: add gst_vaapi_config_surface_attributes_get()
+ To extract the surface restrictions per config using a new structure:
+ GstVaapiConfigSurfaceAttributes
+
+2019-07-31 13:08:43 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_core.c:
+ Split the surface attribute retrieval
+
+2019-07-15 21:51:46 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: handle navigation downstream event
+ When navigation events contains coordiantes those have to be mapped
+ to the new size and/or orientation.
+
+2019-07-15 21:23:21 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * tests/elements/test-vaapisink.c:
+ test-vaapisink: also use vaapipostproc to change orientation
+
+2019-07-15 21:27:20 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostproc.h:
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: handle image-orientation upstream event
+ Now that vaapipostproc can possible handle video-direction, it
+ should also handle the image-orientation event from upstream if
+ video-direction property is set to auto.
+
+2019-07-26 22:09:37 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: add missing locks when adding flags
+
+2019-07-26 22:05:29 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: update filter before fixate caps
+ It is requiered to know if postproc is capable to change the video
+ direction before fixating the source caps.
+ In order to do it, it'ss required to know if there's a functional VPP,
+ but that's checked at create() vmethod, which occurs after caps
+ fixating.
+ This patch checks for a functional VPP at fixate caps and, if so,
+ checks for the enabled filtes and later do the caps fixations.
+
+2019-07-26 19:46:09 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapivalue.c:
+ * gst-libs/gst/vaapi/gstvaapivalue.h:
+ * gst/vaapi/gstvaapipostproc.c:
+ vaapipostproc: element warning if video direction is unsupported
+ If the video direction is unsupported by the driver, an element
+ warning is posted in the bus to notify the application.
+ gst_vaapi_enum_type_get_nick() was added in the library thus it can
+ be used elsewhere. It retrives the nick from an enum gtype.
+
+2019-07-26 19:09:54 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: check mirror and rotation caps only once
+ This patch locks the display before querying the pipeline caps and
+ stores the mirror and rotation capabilities, thus they are not queried
+ every time the video direction is set.
+
+2019-08-16 19:51:29 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: vp9: set VP9_0 profile as default
+ Commit 0afc8131 introduced a regression and only NV12 format were
+ admitted, failing in any other valid color format.
+ This patch sets the profile to GST_VAAPI_PROFILE_VP9_0 by default.
+
+2019-08-16 13:25:06 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ libs: filter: fail if first color balance value is invalid
+
+2019-08-06 19:24:08 +0800 Yan Wang <yan.wang@linux.intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.h:
+ libs: filter: set all color balance values
+ When set multiple settings of color balance like hue, saturation,
+ brightness and contrast for vaapipostproc, they should be set as
+ parameters of color balance filter, at the same color balance
+ filter calling.
+ Otherwise, multiple color balance filter calling will cause
+ previous setting get reset by the last calling with default value.
+ Fixes #182.
+ Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
+
+2019-08-16 11:02:08 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: h265dec: remove limitation of get iq matrix
+ According hevc spec, scaling_list_data is not related
+ to chroma_format_idc.
+
+2019-05-30 23:52:51 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapivideopool.c:
+ libs: videopool: fix undocumented behavior and counting
+ gst_vaapi_video_pool_reserve_unlocked() hit an undocumented behavoir
+ because it locks twice the same mutex.
+ Also, n had different meanings in the current code: as an increase
+ value and as a new total of allocated surfaces.
+ This patche removes the undocumented behavoir (usually a deadlock) and
+ fixes the meaning of n as the new total of allocated surfaces.
+ Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+2019-07-17 11:56:45 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: utils: Add missing entries for string_of_VAEntrypoint.
+
+2019-07-18 22:01:01 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: Consider vp9 profiles based on input format.
+ Only support GST_VAAPI_PROFILE_VP9_0 and GST_VAAPI_PROFILE_VP9_2 now.
+ Fix: #184
+
+2019-08-12 18:41:52 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapivideomemory.c:
+ vaapivideomemory: demote error message to info
+ The main reason to demote the message's level is because it is not an
+ error, it's a possible output of the trial and there's a code path
+ that handles it.
+ Secondly, it's very annoying when using gallium driver for radeon.
+
+2019-07-18 13:32:46 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ * gst-libs/gst/vaapi/gstvaapitypes.h:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapivalue.c:
+ libs: encoder: h264: support ICQ/QVBR bitrate control mode
+ ICQ is Intelligent Constant Quality. It will use the initial QP
+ vaule of icq-quality-factor to adjust QP at MB level intelligently
+ to improve subjective quality.
+ QVBR is Quality defined VBR. It will use qvbr-quality-factor to
+ adjust QP for each MB to get enough quality picture without waste
+ of bits.
+
+2019-08-05 10:51:24 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapitypes.h:
+ libs: Let GST_VAAPI_RATECONTROL_MASK return unsigned int
+ The value return from GST_VAAPI_RATECONTROL_MASK will be used by
+ GST_VAAPI_POPCOUNT32 as its inpput. GST_VAAPI_POPCOUNT32 can only
+ deal with unsigned int. Otherwise there may be an error of out of
+ range of integer if we define few more rate-control mode.
+
+2019-06-07 09:54:12 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecodebin.c:
+ vaapidecodebin: set queue's max size buffers to 1
+ Otherwise the queue will swallow all the available decoder's surfaces
+ reaching a dead-lock.
+ This setting might impact the bin's peformance, but it's a trade-off.
+
+2019-06-07 09:53:08 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecodebin.c:
+ vaapidecodebin: set properties default values
+
+2019-05-31 13:12:35 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: don't error if can't push buffers downtream
+ When the code path goes to push buffers downstream when no surface
+ available in decoder context, and it fails the code bails out with a
+ fatal error.
+ That behavior is wrong, since it shouldn't be fatal. The use case is
+ when the video stream is disabled.
+ This patch just ignores the errors in this situation and demotes the
+ level of a log message.
+
+2019-05-18 13:24:35 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264_fei.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.h:
+ libs: encoder: h264,h265: add new property "max-qp"
+ Add new property "max-qp" to allow set the maximum quantisation
+ parameter values.
+
+2019-05-23 10:18:52 -0400 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: vp9: add low power mode encode
+ By now, this feature only support by media-driver on Ice Lake
+ platform, more information you can reference:
+ https://github.com/intel/media-driver
+
+2019-07-15 15:33:07 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: update PAR when rotating
+ When rotating, swap pixel-aspect-ratio during
+ negotiation.
+ Fixes #181
+
+2019-07-01 15:26:18 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.h:
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: add rotation support
+ Adds vpp rotation support to vaapipostproc. Uses
+ property video-direction. Default is identity (no
+ rotation).
+ Closes #104
+
+2019-05-22 10:47:30 -0400 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: h265: pass diff_cu_qp_delta_depth flag to driver
+ Intel media-driver requires enablement of diff_cu_qp_delta_depth when
+ cu_qp_delta_enabled_flag enabled.
+ Fixes: #177
+
+2019-07-01 17:02:33 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: encoder: Add MB ratecontrol mode to get its string
+
+2019-07-01 16:52:00 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ libs: encoder: refine guard of bitrate control mode
+ Remove useless guard of all bitrate control mode's guard except MB
+ which is define in VA-API version 0.39.1.
+
+2019-06-29 00:08:40 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h264.c:
+ h264: Update for parse_vui_params parameter removal.
+ Update calls to the h264 parser lib for removal of the
+ parse_vui_params parameter.
+
+2019-06-24 16:26:56 -0400 Wang Zhanjun <zhanjunx.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c:
+ libs: dec: vp9: do not use display size as decoded size
+ If display size is smaller than current frame size, then the crop size
+ will be set as display size, which either crashes the pipeline or the
+ output MD5 does not match. Rather it should use the actual decoded size.
+ This patch removes the cropping set. For rendering we can use aspect
+ ratio to set display size.
+ Fixes #175
+ Signed-off-by: Wang Zhanjun <zhanjunx.wang@intel.com>
+ Signed-off-by: Xu Guangxin <guangxin.xu@intel.com>
+
+2019-06-28 16:32:51 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * README:
+ Update README
+
+2019-06-25 19:11:12 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ * gst-libs/gst/vaapi/gstvaapiutils_h265_priv.h:
+ libs: dec: h265: Consider chroma_bit_depth to choose chrome type
+ For some main-10 stream, sometime the luma is 8 bits while chrome is more
+ than 8 bits, which cause using the wrong NV12 surface as the render target
+ and decoding error.
+ Fix #176
+
+2019-06-25 10:31:20 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst/vaapi/gstvaapidecode.c:
+ vaapidecode: set initial decode format according surface chroma type
+ For surfaces with different chroma type, it is prefer to initialize
+ a format which chroma type should be same with surface chroma type
+ instead of using fixed NV12.
+
+2019-05-30 09:48:51 -0400 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c:
+ * gst-libs/gst/vaapi/gstvaapiimage.c:
+ * gst-libs/gst/vaapi/video-format.c:
+ * gst/vaapi/gstvaapidecode.c:
+ * gst/vaapi/gstvaapipluginutil.h:
+ libs: decoder: jpeg: add support 400/411/422/444 chroma type
+ When create vaapi surface, it is better to use the chroma type get
+ from jpeg file instead of using fixed 420 format. And the correct
+ chroma type can be determined by horizontal_factor/vertical_factor
+ flags that get from jpegparse.
+
+2019-06-22 00:05:24 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_h265.c:
+ libs: dec: h265: Fix profile_idc mapping.
+ The old mapping values return by gst_vaapi_utils_h265_get_profile_idc is
+ wrong, though GST_H265_PROFILE_IDC_MAIN and GST_H265_PROFILE_IDC_MAIN_10
+ happened to be the correct value.
+ We only support Annex A profile_idc (1-4).
+
+2019-06-10 20:46:30 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapipluginbase.c:
+ plugins: remove last negotiated video info if caps are same
+ If the allocation caps and negotiated caps are the same,
+ then ensure any previously negotiated video info is also
+ removed. This can occur when multi-resolution video
+ decoding returns to it's original resolution.
+ Fixes #170
+
+2019-06-10 20:39:28 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst/vaapi/gstvaapivideomemory.c:
+ vaapivideomemory: allow negotiated info to be removed
+ Allow NULL negotiated_vinfo to be passed into
+ gst_allocator_set_vaapi_negotiated_video_info to allow
+ any previously set info to be removed.
+
+2019-06-06 17:24:30 +0300 Freyr <freyrnjordrson@gmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp8.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c:
+ libs: encoder: vp8,vp9: reset frame_counter when input frame's format changes
+ When input frame's formate changes, vp{8,9} encoders don't reset their frame
+ counter, hence the newly created frame could become a P-frame, leading to some
+ major troubles (sigabrt in libdrm in case of vp9). This patch adds some frame
+ prediction-related reset logic to the `flush' methods of GstVaapiEncoderVP8 and
+ GstVaapiEncoderVP9 implementations.
+
+2019-05-31 12:30:03 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: increase bitrate prop max value
+ There are many profile levels that can support
+ more than 102400 kbps. Thus, increase the max
+ allowed bitrate property value from 102400 kbps
+ to 2048000 kbps (same as msdk encoder plugins).
+
+2019-06-04 13:27:50 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_mpeg2.c:
+ libs: mpeg2 encoder: No packed header for SPS and PPS
+ Dislable passing down packed PPS and PPS to driver if driver does
+ not want it.
+ Fix: #168
+
+2019-05-31 23:10:33 +0200 Niels De Graef <niels.degraef@barco.com>
+
+ * configure.ac:
+ * meson.build:
+ * tests/output.c:
+ meson: Bump minimal GLib version to 2.44
+ This means we can use some newer features and get rid of some
+ boilerplate code using the G_DECLARE_* macros.
+ As discussed on IRC, 2.44 is old enough by now to start depending on it.
+
+2019-05-31 13:08:39 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c:
+ libs: dec: vp9: clear parser pointer after release
+ Fix an use-after-release of the parser pointer in VP9 decoder.
+
+2019-05-28 12:09:36 +0300 Freyr666 <sky_rider_93@mail.ru>
+
+ * gst/vaapi/gstvaapiencode.c:
+ vaapiencode: Fixes deadlock in gst_vaapiencode_change_state function
+ This fixes a deadlock in gst_vaapiencode_change_state, which was due to
+ srcpad's chain function was locked waiting for available buffers. Since the
+ coded buffers in codedbuf_queue become available after sinkpad consume the
+ encoded frames, Paused -> Ready state change leads to deadlock. Coded buffers
+ are never consumed and marked free, hence gst_vaapiencode_handle_frame waits for
+ available buffers and holds the stream_lock of the srcpad.
+
+2019-05-29 23:08:22 +0200 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * gst-libs/gst/vaapi/gstvaapitypes.h:
+ * gst/vaapi/gstvaapidecodebin.c:
+ * gst/vaapi/gstvaapidecodedoc.c:
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ * gst/vaapi/gstvaapiencode_jpeg.c:
+ * gst/vaapi/gstvaapiencode_mpeg2.c:
+ * gst/vaapi/gstvaapiencode_vp8.c:
+ * gst/vaapi/gstvaapiencode_vp9.c:
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapisink.c:
+ doc: remove xml from comments
+
+2019-05-13 16:39:33 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapifilter.c:
+ * gst-libs/gst/vaapi/gstvaapifilter.h:
+ * gst-libs/gst/vaapi/gstvaapiutils.c:
+ * gst-libs/gst/vaapi/gstvaapiutils.h:
+ * gst/vaapi/gstvaapipostproc.c:
+ * gst/vaapi/gstvaapipostproc.h:
+ vaapipostproc: add mirror support
+ Adds vpp mirroring support to vaapipostproc. Use
+ property video-direction. Valid values are identity,
+ horiz or vert. Default is identity (no mirror).
+ Closes #89
+ v2: Use GstVideoOrientationMethod enum
+ v3: Don't warn for VA_MIRROR_NONE.
+ Use GST_TYPE_VIDEO_ORIENTATION_METHOD type.
+ v4: Query VAAPI caps when setting mirror value
+ instead of during per-frame processing.
+ v5: Return TRUE in warning cases when setting mirror value.
+
+2019-05-29 01:35:17 +0200 Mathieu Duponchelle <mathieu@centricular.com>
+
+ * gst-libs/gst/vaapi/gstvaapiutils_x11.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_glx.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_wayland.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.c:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11.h:
+ * gst-libs/gst/vaapi/gstvaapiwindow_x11_priv.h:
+ * gst/vaapi/gstvaapidecodebin.c:
+ * gst/vaapi/gstvaapisink.c:
+ doc: fix some incorrect gtk-doc links
+
+2019-05-16 09:22:42 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * docs/gst_plugins_cache.json:
+ docs: Update plugin cache
+ Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36
+
+2019-05-16 16:46:43 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface.h:
+ libs: surface: fix documentation format
+
+2019-05-16 10:05:17 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: enc: h265: reset num_ref_idx_l1_active_minus1 when low delay B.
+ When enable low delay B, the reference list 1 will be same with
+ reference list 0, so need reset the num_ref_idx_l1_active_minus1
+ to num_ref_idx_l0_active_minus1.
+ Fixes: #160
+
+2019-05-13 19:05:43 -0400 Thibault Saunier <tsaunier@igalia.com>
+
+ * docs/meson.build:
+ meson: Fix call to wrong function
+
+2018-10-22 11:48:29 +0200 Thibault Saunier <tsaunier@igalia.com>
+
+ * Makefile.am:
+ * configure.ac:
+ * docs/Makefile.am:
+ * docs/gst_plugins_cache.json:
+ * docs/index.md:
+ * docs/meson.build:
+ * docs/plugins/Makefile.am:
+ * docs/plugins/gstreamer-vaapi-plugins-docs.xml.in:
+ * docs/plugins/gstreamer-vaapi-plugins-sections.txt:
+ * docs/plugins/gstreamer-vaapi-plugins.types:
+ * docs/plugins/inspect/plugin-vaapi.xml:
+ * docs/plugins/running.xml:
+ * docs/sitemap.txt:
+ * docs/version.entities.in:
+ * gst/vaapi/meson.build:
+ * meson.build:
+ * meson_options.txt:
+ docs: Port to hotdoc
+
+2019-05-10 18:29:10 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h265.c:
+ libs: encoder: not call ensure_num_slices inside g_assert
+ g_assert will take no effect when glib's G_DISABLE_ASSERT macro is
+ defined. The function inside the g_assert will take no effect and
+ we will fail to set the correct slice number.
+
+2019-04-29 09:52:39 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_h265.c:
+ libs: h265: dec: Add extension flags setting.
+ Use VAPictureParameterBufferHEVCExtension&
+ VASliceParameterBufferHEVCExtension to pass extension setting from
+ some extension profile clips which may include these information.
+ The hevc extension setting only supported after libva release 2.2.0
+ (API 1.2.0).
+
+2019-05-01 12:56:55 -0700 U. Artie Eoff <ullysses.a.eoff@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: add target-percentage property
+ Allow users to set the target-percentage for
+ variable rate controls. The default value is
+ 70 (as hard-coded prior).
+ v2: minimum allowed value changed from 0 to 1
+ v3: target-percentage unchanged if CBR used
+ Resolves #129
+
+2019-05-09 00:09:21 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ libs: encoder: Add a missing comment for DEFAULT_ROI_VALUE property.
+
+2019-05-08 23:39:20 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ * gst-libs/gst/vaapi/gstvaapiencoder_objects.h:
+ * gst-libs/gst/vaapi/gstvaapiencoder_priv.h:
+ libs: encoder: Enable trellis quantization method.
+ The advanced trellis algorithm is supported in VA driver. We add
+ its support as a property named "trellis" of encoder.
+ It only works for H264 now, should be more in future.
+
+2019-05-07 11:03:51 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c:
+ libs: decoder: vp9: support 422/444 8bit/10bit chroma type.
+ According to the vp9 sepc, profile 1/3 support 422/440/444 chroma
+ type, so we need to add subsampling_x&subsampling_y to fix it.
+ Here is the relationship between chroma type and profile and
+ subsampling_x&subsampling_y according to vp9 spec:
+ ------------------------------------------
+ Profile | Bit depth | Chroma subsampling |
+ ------------------------------------------
+ 0 | 8 | 420 |
+ ------------------------------------------
+ 1 | 8 | 422,440,444 |
+ ------------------------------------------
+ 2 | 10, 12 | 420 |
+ ------------------------------------------
+ 3 | 10, 12 | 422,440,444 |
+ ------------------------------------------
+ -----------------------------------------------
+ Subsampling_x | Subsampling_y | Chroma format |
+ -----------------------------------------------
+ 0 | 0 | 444 |
+ -----------------------------------------------
+ 0 | 1 | 440 |
+ -----------------------------------------------
+ 1 | 0 | 422 |
+ -----------------------------------------------
+ 1 | 1 | 420 |
+ -----------------------------------------------
+
+2019-04-16 18:33:54 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiimage.c:
+ * gst-libs/gst/vaapi/video-format.c:
+ libs: Add packed 24 RGB format support.
+ Can not find a suitable chrome_type for this GST_VIDEO_FORMAT_RGB
+ packed 24 format. Just use GST_VAAPI_CHROMA_TYPE_RGB32 as its chrome
+ type. This kind of surface will just be created by new API with fourcc
+ and no old style chrome based creation is available.
+ fixes: #151
+
+2019-03-15 14:29:41 +0800 Wangfei <fei.w.wang@intel.com>
+
+ * gst/vaapi/gstvaapiencode.c:
+ * gst/vaapi/gstvaapiencode_h264.c:
+ * gst/vaapi/gstvaapiencode_h264_fei.c:
+ * gst/vaapi/gstvaapiencode_h265.c:
+ * gst/vaapi/gstvaapiencode_jpeg.c:
+ * gst/vaapi/gstvaapiencode_mpeg2.c:
+ * gst/vaapi/gstvaapiencode_vp8.c:
+ * gst/vaapi/gstvaapiencode_vp9.c:
+ vaapiencode: handle DMABuf caps feature in sink pad
+ Add DMABuff caps features in all encoders' sink pad.
+
+2019-05-03 10:31:52 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder.c:
+ libs: encoder: continue if roi meta is NULL
+ Coverity scan bug:
+ If the function actually returns a null value, a null pointer
+ dereference will occur.
+ In gst_vaapi_encoder_ensure_param_roi_regions(): Return value of
+ function which returns null is dereferenced without checking
+
+2019-04-15 19:58:14 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c:
+ lib: decoder: vp9: Set chroma_type by VP9 bit_depth
+ The decoder's surface chroma type should depend on the bit depth
+ of VP9's parser. For 10bits VP9 stream, we need to use P10LE kind
+ 10 bits surface as the decoder result.
+ Fixes #155
+
+2019-05-02 16:00:57 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * gst/vaapi/gstvaapipostprocutil.c:
+ vaapipostproc: don't do any color conversion when GL_TEXTURE_UPLOAD
+ https://bugzilla.gnome.org/show_bug.cgi?id=748184 has resurrected
+ with commit 3e992d8a
+ Since gst_vaapi_find_preferred_caps_feature() returns a color format
+ from caps negotiation, different from the default one (NV12), the
+ postproc enables the color transformation. But when GL_TEXTURE_UPLOAD
+ feature is negotiated, no color transformation shall be done.
+ Nonetheless, with commit 3e992d8a the requested format changes
+ firstly, because there's no video sink yet, so ANY caps are
+ negotiated; but later, when there's a video sink and a caps
+ renegotiation, the GL_TEXTURE_UPLOAD is negotiated though the color
+ format conversion still ongoing. It is required to reset that
+ conversion.
+ This patch force default color format when GL_TEXTURE_UPLOAD is
+ selected as preferred, thus avoiding the color conversion.
+ Fixes: #157
+
+2019-04-19 15:49:37 -0700 Julien Isorce <jisorce@oblong.com>
+
+ * gst-libs/gst/vaapi/gstvaapisurface_drm.c:
+ libs: surface: fix double free when dmabuf export fails
+ Happens if vaAcquireBufferHandle fails.
+
+2019-04-29 20:10:39 +0800 He Junyan <junyan.he@hotmail.com>
+
+ * gst-libs/gst/vaapi/gstvaapiencoder_h264.c:
+ libs: h264encoder: fix a typo of GstVaapiEncoderH264PredictionType
+
+2019-04-19 10:43:35 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * RELEASE:
+ * configure.ac:
+ * docs/plugins/inspect/plugin-vaapi.xml:
+ * meson.build:
+ Back to development
+
=== release 1.16.0 ===
2019-04-19 00:38:12 +0100 Tim-Philipp Müller <tim@centricular.com>
@@ -14904,8 +18721,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.9 ===
-
2014-07-29 10:31:58 +0200 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* AUTHORS:
@@ -16584,8 +20399,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.8 ===
-
2014-01-24 10:55:39 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* debian.upstream/control.in:
@@ -18598,8 +22411,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.7 ===
-
2013-11-22 11:28:09 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* gst/vaapi/Makefile.am:
@@ -19599,8 +23410,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.6 ===
-
2013-08-31 15:47:33 +0200 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -20147,8 +23956,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.5 ===
-
2013-07-15 17:49:31 +0200 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* gst-libs/gst/vaapi/gstvaapidecoder_mpeg2.c:
@@ -20686,8 +24493,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.4 ===
-
2013-06-14 11:47:50 +0200 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -21234,8 +25039,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.3 ===
-
2013-04-18 19:09:45 +0200 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -21733,8 +25536,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.2 ===
-
2013-03-28 10:18:51 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -22220,8 +26021,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.1 ===
-
2013-01-30 09:37:38 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -22686,8 +26485,6 @@
* configure.ac:
Bump version for development.
-=== release 0.5.0 ===
-
2013-01-15 09:21:08 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -25723,8 +29520,6 @@
* configure.ac:
Bump version for development.
-=== release 0.3.6 ===
-
2012-04-02 10:07:33 +0200 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* configure.ac:
@@ -26038,8 +29833,6 @@
bitstream. i.e. the direct slice() information. VA drivers will be fixed
accordingly.
-=== release 0.3.5 ===
-
2012-03-02 15:03:57 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* gst/vaapi/gstvaapidecode.c:
@@ -26213,8 +30006,6 @@
* configure.ac:
Bump version for development.
-=== release 0.3.4 ===
-
2012-02-01 23:34:09 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -26492,8 +30283,6 @@
* configure.ac:
Bump version for development.
-=== release 0.3.3 ===
-
2012-01-16 11:05:31 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -26927,8 +30716,6 @@
* configure.ac:
Bump version for development.
-=== release 0.3.2 ===
-
2012-01-06 11:20:48 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -27056,8 +30843,6 @@
* configure.ac:
Bump version for development.
-=== release 0.3.1 ===
-
2012-01-03 13:42:12 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -27238,8 +31023,6 @@
* gst-libs/gst/video/gstbasevideoutils.h:
Drop unused copy of GstBaseVideoDecoder.
-=== release 0.3.0 ===
-
2011-12-09 11:46:45 +0100 Gwenole Beauchesne <gwenole.beauchesne@intel.com>
* NEWS:
@@ -27670,8 +31453,6 @@
* tests/Makefile.am:
Fix build with libva headers not in a standard include dir.
-=== release 0.2.6 ===
-
2011-06-14 15:59:08 +0200 Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
* configure.ac:
@@ -27886,8 +31667,6 @@
* gst-libs/gst/vaapi/gstvaapicompat.h:
Fix build with older VA-API 0.29-sds.
-=== release 0.2.4 ===
-
2010-05-18 11:22:54 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* gst/vaapisink/gstvaapisink.c:
@@ -27921,8 +31700,6 @@
* configure.ac:
Bump version for development.
-=== release 0.2.3 ===
-
2010-05-16 21:44:17 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* NEWS:
@@ -27999,8 +31776,6 @@
* configure.ac:
Bump version for development.
-=== release 0.2.2 ===
-
2010-05-13 21:52:22 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* NEWS:
@@ -28069,8 +31844,6 @@
* gst/vaapisink/gstvaapisink.c:
Use XGetGeometry() to retrieve the window size.
-=== release 0.2.1 ===
-
2010-05-12 19:40:30 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* gst/vaapisink/gstvaapisink.c:
@@ -28221,8 +31994,6 @@
* configure.ac:
Bump version for development.
-=== release 0.2.0 ===
-
2010-05-05 12:29:28 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* NEWS:
@@ -28935,8 +32706,6 @@
* configure.ac:
Bump version for development.
-=== release 0.1.2 ===
-
2010-03-30 13:29:34 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* configure.ac:
@@ -29606,8 +33375,6 @@
* configure.ac:
Bump version for development.
-=== release 0.1.1 ===
-
2010-03-23 17:29:47 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* gst-libs/gst/vaapi/gstvaapiutils_x11.c:
@@ -30137,8 +33904,6 @@
* configure.ac:
Bump version for development.
-=== release 0.1.0 ===
-
2010-03-16 14:07:53 +0000 gb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
* configure.ac:
diff --git a/NEWS b/NEWS
index 816a3aae..a4e7232a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,14 +1,30 @@
-GSTREAMER 1.16 RELEASE NOTES
+GSTREAMER 1.18 RELEASE NOTES
-GStreamer 1.16.0 was originally released on 19 April 2019.
+THESE RELEASE NOTES ARE A PLACEHOLDER, PLEASE BEAR WITH US WHILE WE
+FINISH WRITING UP THE REAL THING.
-See https://gstreamer.freedesktop.org/releases/1.16/ for the latest
+GStreamer 1.18.0 has not yet been released. It is scheduled for release
+in summer 2020 now.
+
+1.17.x is the unstable development series that is currently being
+developed in the git master branch and which will eventually result in
+1.18, and 1.17.1 is the current development release in that series.
+
+The schedule for the 1.18 development cycle is yet to be confirmed, but
+it is expected that feature freeze will be in June/July 2020, followed
+by several 1.17 pre-releases and then a new 1.18 stable release in
+July/August 2020.
+
+1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10,
+1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+
+See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
version of this document.
-_Last updated: Friday 19 April 2019, 00:00 UTC (log)_
+_Last updated: Thursday 18 June 2020, 16:00 UTC (log)_
Introduction
@@ -23,1146 +39,133 @@ fixes and other improvements.
Highlights
-- GStreamer WebRTC stack gained support for data channels for
- peer-to-peer communication based on SCTP, BUNDLE support, as well as
- support for multiple TURN servers.
-
-- AV1 video codec support for Matroska and QuickTime/MP4 containers
- and more configuration options and supported input formats for the
- AOMedia AV1 encoder
-
-- Support for Closed Captions and other Ancillary Data in video
-
-- Support for planar (non-interleaved) raw audio
-
-- GstVideoAggregator, compositor and OpenGL mixer elements are now in
- -base
-
-- New alternate fields interlace mode where each buffer carries a
- single field
-
-- WebM and Matroska ContentEncryption support in the Matroska demuxer
-
-- new WebKit WPE-based web browser source element
-
-- Video4Linux: HEVC encoding and decoding, JPEG encoding, and improved
- dmabuf import/export
-
-- Hardware-accelerated Nvidia video decoder gained support for VP8/VP9
- decoding, whilst the encoder gained support for H.265/HEVC encoding.
-
-- Many improvements to the Intel Media SDK based hardware-accelerated
- video decoder and encoder plugin (msdk): dmabuf import/export for
- zero-copy integration with other components; VP9 decoding; 10-bit
- HEVC encoding; video post-processing (vpp) support including
- deinterlacing; and the video decoder now handles dynamic resolution
- changes.
-
-- The ASS/SSA subtitle overlay renderer can now handle multiple
- subtitles that overlap in time and will show them on screen
- simultaneously
-
-- The Meson build is now feature-complete (*) and it is now the
- recommended build system on all platforms. The Autotools build is
- scheduled to be removed in the next cycle.
-
-- The GStreamer Rust bindings and Rust plugins module are now
- officially part of upstream GStreamer.
-
-- The GStreamer Editing Services gained a gesdemux element that allows
- directly playing back serialized edit list with playbin or
- (uri)decodebin
-
-- Many performance improvements
+- FIXME
Major new features and changes
Noteworthy new API
-- GstAggregator has a new "min-upstream-latency" property that forces
- a minimum aggregate latency for the input branches of an aggregator.
- This is useful for dynamic pipelines where branches with a higher
- latency might be added later after the pipeline is already up and
- running and where a change in the latency would be disruptive. This
- only applies to the case where at least one of the input branches is
- live though, it won’t force the aggregator into live mode in the
- absence of any live inputs.
-
-- GstBaseSink gained a "processing-deadline" property and
- setter/getter API to configure a processing deadline for live
- pipelines. The processing deadline is the acceptable amount of time
- 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 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. 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
- whether the field is the top field or bottom field. Top and bottom
- fields are expected to alternate in this mode. Caps for this
- interlace mode must also carry a format:Interlaced caps feature to
- ensure backwards compatibility.
-
-- The video library has gained support for three new raw pixel
- formats:
-
- - Y410: packed 4:4:4 YUV, 10 bits per channel
- - Y210: packed 4:2:2 YUV, 10 bits per channel
- - NV12_10LE40: fully-packed 10-bit variant of NV12_10LE32,
- i.e. without the padding bits
-
-- GstRTPSourceMeta is a new meta that can be used to transport
- information about the origin of depayloaded or decoded RTP buffers,
- e.g. when mixing audio from multiple sources into a single stream. A
- new "source-info" property on the RTP depayloader base class
- determines whether depayloaders should put this meta on outgoing
- buffers. Similarly, the same property on RTP payloaders determines
- whether they should use the information from this meta to construct
- the CSRCs list on outgoing RTP buffers.
-
-- gst_sdp_message_from_text() is a convenience constructor to parse
- SDPs from a string which is particularly useful for language
- bindings.
-
-Support for Planar (Non-Interleaved) Raw Audio
-
-Raw audio samples are usually passed around in interleaved form in
-GStreamer, which means that if there are multiple audio channels the
-samples for each channel are interleaved in memory, e.g.
-|LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A non-interleaved
-or planar arrangement in memory would look like
-|LEFT|LEFT|LEFT|RIGHT|RIGHT|RIGHT| instead, possibly with
-|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 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
-handle audio this way, but also more efficient processing of certain
-operations like interleaving multiple 1-channel streams into a
-multi-channel stream which can be done without memory copies now.
-
-New API to support this has been added to the GStreamer Audio support
-library: There is now a new GstAudioMeta which describes how data is
-laid out inside the buffer, and buffers with non-interleaved audio must
-always carry this meta. To access the non-interleaved audio samples you
-must map such buffers with gst_audio_buffer_map() which works much like
-gst_buffer_map() or gst_video_frame_map() in that it will populate a
-little GstAudioBuffer helper structure passed to it with the number of
-samples, the number of planes and pointers to the start of each plane in
-memory. This function can also be used to map interleaved audio buffers
-in which case there will be only one plane of interleaved samples.
-
-Of course support for this has also been implemented in the various
-audio helper and conversion APIs, base classes, and in elements such as
-audioconvert, audioresample, audiotestsrc, audiorate.
-
-Support for Closed Captions and Other Ancillary Data in Video
-
-The video support library has gained support for detecting and
-extracting Ancillary Data from videos as per the SMPTE S291M
-specification, including:
-
-- 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 (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:
-
-- cccombiner: a closed caption combiner that takes a closed captions
- stream and another stream and adds the closed captions as
- GstVideoCaptionMeta to the buffers of the other stream.
-
-- ccextractor: a closed caption extractor which will take
- GstVideoCaptionMeta from input buffers and output them as a separate
- closed captions stream.
-
-- ccconverter: a closed caption converter that can convert between
- different formats
-
-- line21encoder, line21decoder: inject/extract line21 closed captions
- to/from SD video streams
-
-- cc708overlay: decodes CEA 608/708 captions and overlays them on
- video
-
-Additionally, the following elements have also gained Closed Caption
-support:
-
-- qtdemux and qtmux support CEA 608/708 Closed Caption tracks
-
-- mpegvideoparse, h264parse extracts Closed Captions from MPEG-2/H.264
- video streams
-
-- avviddec, avvidenc, x264enc got support for extracting/injecting
- Closed Captions
-
-- decklinkvideosink can output closed captions and decklinkvideosrc
- can extract closed captions
-
-- 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.
+- FIXME
New Elements
-- overlaycomposition: New element that allows applications to draw
- GstVideoOverlayCompositions on a stream. The element will emit the
- "draw" signal for each video buffer, and the application then
- generates an overlay for that frame (or not). This is much more
- performant than e.g. cairooverlay for many use cases, e.g. because
- pixel format conversions can be avoided or the blitting of the
- overlay can be delegated to downstream elements (such as
- gloverlaycompositor). It’s particularly useful for cases where only
- a small section of the video frame should be drawn on.
-
-- gloverlaycompositor: New OpenGL-based compositor element that
- flattens any overlays from GstVideoOverlayCompositionMetas into the
- 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
- can be dynamically calculated via chroma keying. It is similar to
- the existing alpha element but based on OpenGL. Calculations are
- 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
- cases include multiplexing and bundle. webrtcbin uses it to
- implement BUNDLE support.
-
-- testsrcbin is a source element that provides an audio and/or video
- stream and also announces them using the recently-introduced
- GstStream API. This is useful for testing elements such as playbin3
- or uridecodebin3 etc.
-
-- New closed caption elements: cccombiner, ccextractor, ccconverter,
- line21encoder, line21decoder and cc708overlay (see above)
-
-- wpesrc: new source element acting as a Web Browser based on WebKit
- WPE
-
-- Two new OpenCV-based elements: cameracalibrate and cameraundistort
- 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.
- These elements are used inside webrtcbin for implementing data
- channels.
+- FIXME
New element features and additions
-- playbin3, playbin and playsink have gained a new "text-offset"
- property to adjust the positioning of the selected subtitle stream
- vis-a-vis the audio and video streams. This uses subtitleoverlay’s
- new "subtitle-ts-offset" property. GstPlayer has gained matching API
- for this, namely gst_player_get_text_video_offset().
-
-- playbin3 buffering improvements: in network playback scenarios there
- may be multiple inputs to decodebin3, and buffering will be done
- before decodebin3 using queue2 or downloadbuffer elements inside
- urisourcebin. Since this is before any parsers or demuxers there may
- not be any bitrate information available for the various streams, so
- it was difficult to configure the buffering there smartly within
- global constraints. This was improved now: The queue2 elements
- inside urisourcebin will now use the new bitrate query to figure out
- a bitrate estimate for the stream if no bitrate was provided by
- upstream, and urisourcebin will use the bitrates of the individual
- queues to distribute the globally-set "buffer-size" budget in bytes
- to the various queues. urisourcebin also gained "low-watermark" and
- "high-watermark" properties which will be proxied to the internal
- queues, as well as a read-only "statistics" property which allows
- querying of the minimum/maximum/average byte and time levels of the
- queues inside the urisourcebin in question.
-
-- splitmuxsink has gained a couple of new features:
-
- - new "async-finalize" mode: This mode is useful for muxers or
- outputs that can take a long time to finalize a file. Instead of
- blocking the whole upstream pipeline while the muxer is doing
- its stuff, we can unlink it and spawn a new muxer + sink
- combination to continue running normally. This requires us to
- receive the muxer and sink (if needed) as factories via the new
- "muxer-factory" and "sink-factory" properties, optionally
- accompanied by their respective properties structures (set via
- the new "muxer-properties" and "sink-properties" properties).
- There are also new "muxer-added" and "sink-added" signals in
- case custom code has to be called for them to configure them.
-
- - "split-at-running-time" action signal: When called by the user,
- this action signal ends the current file (and starts a new one)
- as soon as the given running time is reached. If called multiple
- times, running times are queued up and processed in the order
- they were given.
-
- - "split-after" action signal to finish outputting the current GOP
- to the current file and then start a new file as soon as the GOP
- is finished and a new GOP is opened (unlike the existing
- "split-now" which immediately finishes the current file and
- writes the current GOP into the next newly-started file).
-
- - "reset-muxer" property: when unset, the muxer is reset using
- flush events instead of setting its state to NULL and back. This
- means the muxer can keep state across resets, e.g. mpegtsmux
- will keep the continuity counter continuous across segments as
- required by hlssink2.
-
-- qtdemux gained PIFF track encryption box support in addition to the
- already-existing PIFF sample encryption support, and also allows
- applications to select which encryption system to use via a
- "drm-preferred-decryption-system-id" context in case there are
- multiple options.
-
-- qtmux: the "start-gap-threshold" property determines now whether an
- edit list will be created to account for small gaps or offsets at
- the beginning of a stream in case the start timestamps of tracks
- don’t line up perfectly. Previously the threshold was hard-coded to
- 1% of the (video) frame duration, now it is 0 by default (so edit
- list will be created even for small differences), but fully
- configurable.
-
-- rtpjitterbuffer has improved end-of-stream handling
-
-- rtpmp4vpay will be prefered over rtpmp4gpay for MPEG-4 video in
- autoplugging scenarios now
-
-- rtspsrc now allows applications to send RTSP SET_PARAMETER and
- GET_PARAMETER requests using action signals.
-
-- 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
- would increase the read block size too quickly which could lead to
- it not reading any data from the socket for a very long time with
- low bitrate streams that are output live downstream. This could lead
- to servers kicking off the client.
-
-- 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
-
-- input-selector: lets context queries pass through, so that
- e.g. upstream OpenGL elements can use contexts and displays
- advertised by downstream elements
-
-- queue2: avoid ping-pong between 0% and 100% buffering messages if
- upstream is pushing buffers larger than one of its limits, plus
- performance optimisations
-
-- opusdec: new "phase-inversion" property to control phase inversion.
- When enabled, this will slightly increase stereo quality, but
- produces a stream that when downmixed to mono will suffer audio
- distortions.
-
-- The x265enc HEVC encoder also exposes a "key-int-max" property to
- configure the maximum allowed GOP size now.
-
-- decklinkvideosink has seen stability improvements for long-running
- pipelines (potential crash due to overflow of leaked clock refcount)
- and clock-slaving improvements when performing flushing seeks
- (causing stalls in the output timeline), pausing and/or buffering.
-
-- srtpdec, srtpenc: add support for MKIs which allow multiple keys to
- be used with a single SRTP stream
-
-- srtpdec, srtpenc: add support for AES-GCM and also add support for
- it in gst-rtsp-server and rtspsrc.
-
-- The srt Secure Reliable Transport plugin has integrated server and
- client elements srt{client,server}{src,sink} into one (srtsrc and
- srtsink), since SRT connection mode can be changed by uri
- parameters.
-
-- h264parse and h265parse will handle SEI recovery point messages and
- mark recovery points as keyframes as well (in addition to IDR
- frames)
-
-- webrtcbin: "add-turn-server" action signal to pass multiple ICE
- relays (TURN servers).
-
-- The removesilence element has received various new features and
- 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
- acquired support for rate control and profile related configuration.
-
-- The Fraunhofer fdkaac plugin can now be built against the 2.0.0
- version API and has improved multichannel support
-
-- kmssink now supports unpadded 24-bit RGB and can configure mode
- setting from video info, which enables display of multi-planar
- formats such as I420 or NV12 with modesetting. It has also gained a
- number of new properties: The "restore-crtc" property does what it
- says on the tin and is enabled by default. "plane-properties" and
- "connector-properties" can be used to pass custom properties to the
- DRM.
-
-- waylandsink has a "fullscreen" property now and supports the
- XDG-Shell protocol.
-
-- decklinkvideosink, decklinkvideosrc support selecting between
- half/full duplex
-
-- The vulkan plugin gained support for macOS and iOS via MoltenVK in
- addition to the existing support for X11 and Wayland
-
-- imagefreeze has a new num-buffers property to limit the number of
- buffers that are produced and to send an EOS event afterwards
-
-- webrtcbin has a new, introspectable get-transceiver signal in
- addition to the old get-transceivers signal that couldn’t be used
- from bindings
-
-- Support for per-element latency information was added to the latency
- tracer
+- FIXME
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 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. 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.
-Most notably, the "ignore-eos" pad property was renamed to
-"repeat-after-eos" and the conversion code was moved to a
-GstVideoAggregatorConvertPad subclass to avoid code duplication, make
-things less awkward for subclasses like the OpenGL-based video mixer,
-and make the API more consistent with the audio aggregator API.
-
-It is used by the compositor element, which is a replacement for
-‘videomixer’ which did not handle live inputs very well. compositor
-should behave much better in that respect and generally behave as one
-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 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 openglmixers plugin lying about somewhere.
+- FIXME
Plugin removals
The following plugins have been removed from gst-plugins-bad:
-- The experimental daala plugin has been removed, since it’s not so
- useful now that all effort is focused on AV1 instead, and it had to
- be enabled explicitly with --enable-experimental anyway.
-
-- The spc plugin has been removed. It has been replaced by the gme
- plugin.
-
-- The acmmp3dec and acmenc plugins for Windows have been removed. ACM
- 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.
+- FIXME
Miscellaneous API additions
-- GstBitwriter: new generic bit writer API to complement the existing
- bit reader
-
-- gst_buffer_new_wrapped_bytes() creates a wrap buffer from a GBytes
-
-- gst_caps_set_features_simple() sets a caps feature on all the
- structures of a GstCaps
-
-- New GST_QUERY_BITRATE query: This allows determining from downstream
- what the expected bitrate of a stream may be which is useful in
- queue2 for setting time based limits when upstream does not provide
- timing information. tsdemux, qtdemux and matroskademux have basic
- support for this query on their sink pads.
-
-- elements: there is a new “Hardware” class specifier. Elements
- interacting with hardware devices should specify this classifier in
- their element factory class metadata. This is useful to advertise as
- 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,
- 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(),
- gst_buffer_list_take(). Unlike the various _replace() functions
- _take() does not increase the reference count but takes ownership of
- the mini object passed.
-
-- clear functions for various mini object types and GstObject which
- unrefs the object or mini object (if non-NULL) and sets the variable
- pointed to to NULL: gst_clear_structure(), gst_clear_tag_list(),
- gst_clear_query(), gst_clear_message(), gst_clear_event(),
- gst_clear_caps(), gst_clear_buffer_list(), gst_clear_buffer(),
- 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), 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
- signalled via POLLPRI.
-
-- sample: new API to update the contents of a GstSample and make it
- writable: gst_sample_set_buffer(), gst_sample_set_caps(),
- gst_sample_set_segment(), gst_sample_set_info(), plus
- gst_sample_is_writable() and gst_sample_make_writable(). This makes
- it possible to reuse a sample object and avoid unnecessary memory
- allocations, for example in appsink.
-
-- ClockIDs now keep a weak reference to underlying clock to avoid
- crashes in basesink in corner cases where a clock goes away while
- the ClockID is still in use, plus some new API
- (gst_clock_id_get_clock(), gst_clock_id_uses_clock()) to check the
- clock a ClockID is linked to.
-
-- The GstCheck unit test library gained a
- fail_unless_equals_clocktime() convenience macro as well as some new
- GstHarness API for for proposing meta APIs from the allocation
- query: gst_harness_add_propose_allocation_meta(). ASSERT_CRITICAL()
- checks in unit tests are now skipped if GStreamer was compiled with
- GST_DISABLE_GLIB_CHECKS.
-
-- gst_audio_buffer_truncate() convenience function to truncate a raw
- audio buffer
-
-- GstDiscoverer has support for caching the results of discovery in
- the default cache directory. This can be enabled with the use-cache
- property and is disabled by default.
-
-- GstMeta that are attached to GstBuffers are now always stored in the
- order in which they were added.
-
-- Additional support for signalling ONVIF specific features were
- added: the SEEK event can store a trickmode-interval now and support
- for the Rate-Control and Frames RTSP headers was added to the RTSP
- library.
+- FIXME
Miscellaneous performance and memory optimisations
As always there have been many performance and memory usage improvements
-across all components and modules. Some of them (such as dmabuf
-import/export) have already been mentioned elsewhere so won’t be
-repeated here.
+across all components and modules. Some of them have already been
+mentioned elsewhere so won’t be repeated here.
The following list is only a small snapshot of some of the more
interesting optimisations that haven’t been mentioned in other contexts
yet:
-- The GstVideoEncoder and GstVideoDecoder base classes now release the
- STREAM_LOCK when pushing out buffers, which means (multi-threaded)
- encoders and decoders can now receive and continue to process input
- buffers whilst waiting for downstream elements in the pipeline to
- process the buffer that was pushed out. This increases throughput
- and reduces processing latency, also and especially for
- hardware-accelerated encoder/decoder elements.
-
-- GstQueueArray has seen a few API additions
- (gst_queue_array_peek_nth(), gst_queue_array_set_clear_func(),
- gst_queue_array_clear()) so that it can be used in other places like
- GstAdapter instead of a GList, which reduces allocations and
- improves performance.
-
-- appsink now reuses the sample object in pull_sample() if possible
-
-- rtpsession only starts the RTCP thread when it’s actually needed now
-
-- udpsrc uses a buffer pool now and the GstUdpSrc object structure was
- optimised for better cache performance
+- FIXME
GstPlayer
-- API was added to fine-tune the synchronisation offset between
- subtitles and video
+- FIXME
Miscellaneous changes
-- 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
- still reviewing the new properties and aim to minimise breaking
- changes at least for the most commonly-used properties, so please
- report any issues you run into!
+- FIXME
OpenGL integration
-- The OpenGL mixer elements have been moved from -bad to
- gst-plugins-base (see above)
-
-- The Mesa GBM backend now supports headless mode
-
-- gloverlaycompositor: New OpenGL-based compositor element that
- flattens any overlays from GstVideoOverlayCompositionMetas into the
- video stream.
-
-- 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
- can be dynamically calculated via chroma keying. It is similar to
- the existing alpha element but based on OpenGL. Calculations are
- done in floating point so results may not be identical to the output
- of the existing alpha element.
-
-- glupload: Implement direct dmabuf uploader, the idea being that some
- GPUs (like the Vivante series) can actually perform the YUV->RGB
- conversion internally, so no custom conversion shaders are needed.
- To make use of this feature, we need an additional uploader that can
- import DMABUF FDs and also directly pass the pixel format, relying
- on the GPU to do the conversion.
-
-- The OpenGL library no longer restores the OpenGL viewport. This is a
- performance optimization to not require performing multiple
- expensive glGet*() function calls per frame. This affects any
- application or plugin use of the following functions and objects:
- - glcolorconvert library object (not the element)
- - glviewconvert library object (not the element)
- - gst_gl_framebuffer_draw_to_texture()
- - custom GstGLWindow implementations
+- FIXME
Tracing framework and debugging improvements
-- There is now a GDB PRETTY PRINTER FOR VARIOUS GSTREAMER TYPES: For
- GstObject pointers the type and name is added, e.g.
- 0x5555557e4110 [GstDecodeBin|decodebin0]. For GstMiniObject pointers
- the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For
- GstClockTime and GstClockTimeDiff the time is also printed in human
- readable form, e.g. 150116219955 [+0:02:30.116219955].
-
-- GDB EXTENSION WITH TWO CUSTOM GDB COMMANDS gst-dot AND gst-print:
-
- - gst-dot creates dot files that a very close to what
- GST_DEBUG_BIN_TO_DOT_FILE() produces, but object properties and
- buffer contents such as codec-data in caps are not available.
-
- - gst-print produces high-level information about a GStreamer
- object. This is currently limited to pads for GstElements and
- events for the pads. The output may look like this:
-
-- gst_structure_to_string() now serialises the actual value of
- pointers when serialising GstStructures instead of claiming they’re
- NULL. This makes debug logging in various places less confusing,
- because it’s clear now that structure fields actually hold valid
- objects. Such object pointer values will never be deserialised
- however.
+- FIXME
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, 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.
+- FIXME
GStreamer RTSP server
-- Improved backlog handling when using TCP interleaved for data
- transport. Before there was a fixed maximum size for backlog
- messages, which was prone to deadlocks and made it difficult to
- control memory usage with the watch backlog. The RTSP server now
- limits queued TCP data messages to one per stream, moving queuing of
- the data into the pipeline and leaving the RTSP connection
- responsive to RTSP messages in both directions, preventing all those
- problems.
-
-- Initial ULP Forward Error Correction support in rtspclientsink and
- for RECORD mode in the server.
-
-- API to explicitly enable retransmission requests (RTX)
-
-- Lots of multicast-related fixes
-
-- rtsp-auth: Add support for parsing .htdigest files
+- FIXME
GStreamer VAAPI
-- Support Wayland’s display for context sharing, so the application
- can pass its own wl_display in order to be used for the VAAPI
- display creation.
-
-- A lot of work to support new Intel hardware using media-driver as VA
- backend.
-
-- For non-x86 devices, VAAPI display can instantiate, through DRM,
- with no PCI bus. This enables the usage of libva-v4l2-request
- driver.
-
-- Added support for XDG-shell protocol as wl_shell replacement which
- is currently deprecated. This change add as dependency
- wayland-protocol.
-
-- GstVaapiFilter, GstVaapiWindow, and GstVaapiDecoder classes now
- inherit from GstObject, gaining all the GStreamer’s instrumentation
- support.
-
-- The metadata now specifies the plugin as Hardware class.
-
-- H264 decoder is more stable with problematic streams.
-
-- In H265 decoder added support for profiles main-422-10 (P010_10LE),
- main-444 (AYUV) and main-444-10 (Y410)
-
-- JPEG decoder handles dynamic resolution changes.
-
-- More specification adherence in H264 and H265 encoders.
+- FIXME
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.
+- FIXME
GStreamer Editing Services and NLE
-- Added a gesdemux element, it is an auto pluggable element that
- allows decoding edit list like files supported by GES
-
-- Added gessrc which wraps a GESTimeline as a standard source element
- (implementing the ges protocol handler)
-
-- Added basic support for videorate::rate property potentially
- allowing changing playback speed
-
-- Layer priority is now fully automatic and they should be moved with
- the new ges_timeline_move_layer method, ges_layer_set_priority is
- now deprecated.
-
-- Added a ges_timeline_element_get_layer_priority so we can simply get
- all information about GESTimelineElement position in the timeline
-
-- GESVideoSource now auto orientates the images if it is defined in a
- meta (overridable).
-
-- Added some PyGObject overrides to make the API more pythonic
-
-- The threading model has been made more explicit with safe guard to
- make sure not thread safe APIs are not used from the wrong threads.
- It is also now possible to properly handle in what thread the API
- should be used.
-
-- Optimized GESClip and GESTrackElement creation
-
-- Added a way to compile out the old, unused and deprecated
- GESPitiviFormatter
-
-- Re implemented the timeline editing API making it faster and making
- the code much more maintainable
-
-- Simplified usage of nlecomposition outside GES by removing quirks in
- it API usage and removing the need to treat it specially from an
- application perspective.
-
-- ges-launch-1.0:
-
- - Added support to add titles to the timeline
- - Enhance the help auto generating it from the code
-
-- Deprecate ges_timeline_load_from_uri as loading the timeline should
- be done through a project now
-
-- MANY leaks have been plugged and the unit testsuite is now “leak
- free”
+- FIXME
GStreamer validate
-- Added an action type to verify the checksum of the sink last-sample
-
-- Added an include keyword to validate scenarios
-
-- Added the notion of variable in scenarios, with the set-vars keyword
-
-- Started adding support for “performance” like tests by allowing to
- define the number of dropped buffers or the minimum buffer frequency
- on a specific pad
-
-- Added a validateflow plugin which allows defining the data flow to
- be seen on a particular pad and verifying that following runs match
- the expectations
-
-- Added support for appsrc based test definition so we can instrument
- the data pushed into the pipeline from scenarios
-
-- Added a mockdecryptor allowing adding tests with on encrypted files,
- the element will potentially be instrumented with a validate
- scenario
-
-- gst-validate-launcher:
-
- - Cleaned up output
-
- - Changed the default for “muting” tests as user doesn’t expect
- hundreds of windows to show up when running the testsuite
-
- - Fixed the outputted xunit files to be compatible with GitLab
-
- - Added support to run tests on media files in push mode (using
- pushfile://)
-
- - Added support for running inside gst-build
-
- - Added support for running ssim tests on rendered files
-
- - Added a way to simply define tests on pipelines through a simple
- .json file
-
- - Added a python app to easily run python testsuite reusing all
- the launcher features
-
- - Added flatpak knowledge so we can print backtrace even when
- running from within flatpak
-
- - Added a way to automatically generated “known issues”
- suppressions lines
-
- - Added a way to rerun tests to check if they are flaky and added
- a way to tolerate tests known to be flaky
-
- - Add a way to output html log files
+- FIXME
GStreamer Python Bindings
-- add binding for gst_pad_set_caps()
-
-- pygobject dependency requirement was bumped to >= 3.8
-
-- new audiotestsrc, audioplot, and mixer plugin examples, and a
- dynamic pipeline example
+- FIXME
GStreamer C# Bindings
-- bindings for the GstWebRTC library
+- FIXME
GStreamer Rust Bindings
-The GStreamer Rust bindings are now officially part of the GStreamer
-project and are also maintained in the GStreamer GitLab.
-
-The releases will generally not be synchronized with the releases of
-other GStreamer parts due to dependencies on other projects.
-
-Also unlike the other GStreamer libraries, the bindings will not commit
-to full API stability but instead will follow the approach that is
-generally taken by Rust projects, e.g.:
-
-1) 0.12.X will be completely API compatible with all other 0.12.Y
- versions.
-2) 0.12.X+1 will contain bugfixes and compatible new feature additions.
-3) 0.13.0 will _not_ be backwards compatible with 0.12.X but projects
- will be able to stay at 0.12.X without any problems as long as they
- don’t need newer features.
-
-The current stable release is 0.12.2 and the next release series will be
-0.13, probably around March 2019.
-
-At this point the bindings cover most of GStreamer core (except for most
-notably GstAllocator and GstMemory), and most parts of the app, audio,
-base, check, editing-services, gl, net. pbutils, player, rtsp,
-rtsp-server, sdp, video and webrtc libraries.
-
-Also included is support for creating subclasses of the following types
-and writing GStreamer plugins:
-
-- gst::Element
-- gst::Bin and gst::Pipeline
-- gst::URIHandler and gst::ChildProxy
-- gst::Pad, gst::GhostPad
-- gst_base::Aggregator and gst_base::AggregatorPad
-- gst_base::BaseSrc and gst_base::BaseSink
-- gst_base::BaseTransform
-
-Changes to 0.12.X since 0.12.0
-
-Fixed
-
-- PTP clock constructor actually creates a PTP instead of NTP clock
-
-Added
-
-- Bindings for GStreamer Editing Services
-- Bindings for GStreamer Check testing library
-- Bindings for the encoding profile API (encodebin)
-
-- VideoFrame, VideoInfo, AudioInfo, StructureRef implements Send and
- Sync now
-- VideoFrame has a function to get the raw FFI pointer
-- From impls from the Error/Success enums to the combined enums like
- FlowReturn
-- Bin-to-dot file functions were added to the Bin trait
-- gst_base::Adapter implements SendUnique now
-- More complete bindings for the gst_video::VideoOverlay interface,
- especially
- gst_video::is_video_overlay_prepare_window_handle_message()
-
-Changed
-
-- All references were updated from GitHub to freedesktop.org GitLab
-- Fix various links in the README.md
-- Link to the correct location for the documentation
-- Remove GitLab badge as that only works with gitlab.com currently
-
-Changes in git master for 0.13
-
-Fixed
-
-- gst::tag::Album is the album tag now instead of artist sortname
-
-Added
-
-- Subclassing infrastructure was moved directly into the bindings,
- making the gst-plugin crate deprecated. This involves many API
- changes but generally cleans up code and makes it more flexible.
- Take a look at the gst-plugins-rs crate for various examples.
-
-- Bindings for CapsFeatures and Meta
-- Bindings for
- ParentBufferMeta,VideoMetaandVideoOverlayCompositionMeta`
-- Bindings for VideoOverlayComposition and VideoOverlayRectangle
-- Bindings for VideoTimeCode
-
-- UniqueFlowCombiner and UniqueAdapter wrappers that make use of the
- Rust compile-time mutability checks and expose more API in a safe
- way, and as a side-effect implement Sync and Send now
-
-- More complete bindings for Allocation Query
-- pbutils functions for codec descriptions
-- TagList::iter() for iterating over all tags while getting a single
- 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
-
-- serde serialization of Value can also handle Buffer now
-
-- Extensive comments to all examples with explanations
-- Transmuxing example showing how to use typefind, multiqueue and
- dynamic pads
-- basic-tutorial-12 was ported and added
-
-Changed
-
-- Rust 1.31 is the minimum supported Rust version now
-- Update to latest gir code generator and glib bindings
-
-- Functions returning e.g. gst::FlowReturn or other “combined” enums
- were changed to return split enums like
- Result<gst::FlowSuccess, gst::FlowError> to allow usage of the
- standard Rust error handling.
-
-- MiniObject subclasses are now newtype wrappers around the underlying
- GstRc<FooRef> wrapper. This does not change the API in any breaking
- way for the current usages, but allows MiniObjects to also be
- implemented in other crates and makes sure rustdoc places the
- documentation in the right places.
-
-- BinExt extension trait was renamed to GstBinExt to prevent conflicts
- with gtk::Bin if both are imported
-
-- Buffer::from_slice() can’t possible return None
-
-- Various clippy warnings
+- FIXME
GStreamer Rust Plugins
-Like the GStreamer Rust bindings, the Rust plugins are now officially
-part of the GStreamer project and are also maintained in the GStreamer
-GitLab.
-
-In the 0.3.x versions this contained infrastructure for writing
-GStreamer plugins in Rust, and a set of plugins.
-
-In git master that infrastructure was moved to the GLib and GStreamer
-bindings directly, together with many other improvements that were made
-possible by this, so the gst-plugins-rs repository only contains
-GStreamer elements now.
-
-Elements included are:
-
-- Tutorials plugin: identity, rgb2gray and sinesrc with extensive
- comments
-
-- rsaudioecho, a port of the audiofx element
-
-- rsfilesrc, rsfilesink
-
-- rsflvdemux, a FLV demuxer. Not feature-equivalent with flvdemux yet
-
-- threadshare plugin: ts-appsrc, ts-proxysrc/sink, ts-queue, ts-udpsrc
- and ts-tcpclientsrc elements that use a fixed number of threads and
- share them between instances. For more background about these
- elements see Sebastian’s talk “When adding more threads adds more
- problems - Thread-sharing between elements in GStreamer” at the
- GStreamer Conference 2017.
+- FIXME
-- rshttpsrc, a HTTP source around the hyper/reqwest Rust libraries.
- Not feature-equivalent with souphttpsrc yet.
-- togglerecord, an element that allows to start/stop recording at any
- time and keeps all audio/video streams in sync.
-
-- mccparse and mccenc, parsers and encoders for the MCC closed caption
- file format.
-
-Changes to 0.3.X since 0.3.0
-
-- All references were updated from GitHub to freedesktop.org GitLab
-- Fix various links in the README.md
-- Link to the correct location for the documentation
-
-Changes in git master for 0.4
-
-- togglerecord: Switch to parking_lot crate for mutexes/condition
- variables for lower overhead
-- Merge threadshare plugin here
-- New closedcaption plugin with mccparse and mccenc elements
-- New identity element for the tutorials plugin
-
-- Register plugins statically in tests instead of relying on the
- plugin loader to find the shared library in a specific place
-
-- Update to the latest API changes in the GLib and GStreamer bindings
-- Update to the latest versions of all crates
+Build and Dependencies
+- The Autotools build system has finally been removed in favour of the
+ Meson build system. Developers who currently use gst-uninstalled
+ should move to gst-build.
-Build and Dependencies
+- API and plugin documentation are no longer built with gtk_doc. The
+ gtk_doc documentation has been removed in favour of a new unified
+ documentation module built with hotdoc. The intention is to
+ distribute the generated documentation in form of tarballs alongside
+ releases.
-- The MESON BUILD SYSTEM BUILD IS NOW FEATURE-COMPLETE (*) and it is
- now the recommended build system on all platforms and also used by
- Cerbero to build GStreamer on all platforms. The Autotools build is
- scheduled to be removed in the next cycle. Developers who currently
- use gst-uninstalled should move to gst-build. The build option
- naming has been cleaned up and made consistent and there are now
- feature options to enable/disable plugins and various other features
- on a case-by-case basis. (*) with the exception of plugin docs which
- will be handled differently in future
-
-- Symbol export in libraries is now controlled via explicit exports
- using symbol visibility or export defines where supported, to ensure
- consistency across all platforms. This also allows libraries to have
- exports that vary based on detected platform features and configure
- options as is the case with the GStreamer OpenGL integration library
- for example. A few symbols that had been exported by accident in
- earlier versions may no longer be exported. These symbols will not
- have had declarations in any public header files then though and
- would not have been usable.
-
-- The GStreamer FFmpeg wrapper plugin (gst-libav) now depends on
- FFmpeg 4.x and uses the new FFmpeg 4.x API and stopped relying on
- ancient API that was removed with the FFmpeg 4.x release. This means
- that it is no longer possible to build this module against an older
- system-provided FFmpeg 3.x version. Use the internal FFmpeg 4.x copy
- instead if you build using autotools, or use gst-libav 1.14.x
- instead which targets the FFmpeg 3.x API and _should_ work fine in
- combination with a newer GStreamer. It’s difficult for us to support
- both old and new FFmpeg APIs at the same time, apologies for any
- inconvenience caused.
-
-- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and
- nvenc can be built against CUDA Toolkit versions 9 and 10.0 now. The
- dynlink interface has been dropped since it’s deprecated in 10.0.
-
-- The (optional) OpenCV requirement has been bumped to >= 3.0.0 and
- the plugin can also be built against OpenCV 4.x now.
-
-- New sctp plugin based on usrsctp (for WebRTC data channels)
+- FIXME
Cerbero
@@ -1172,221 +175,66 @@ 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
+- FIXME
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
- Android or iOS platforms (or any other setup using static libraries)
- will fail to link looking for the g_io_module_gnutls_load_static()
- function. The new function name is now
- g_io_gnutls_load(gpointer data). data can be NULL for a static
- library. Look at this commit for the necessary change in the
- examples.
-
-- various build issues on Android have been fixed.
+- FIXME
macOS and iOS
-- 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
- that any GStreamer application using gnutls for SSL/TLS on the
- Android or iOS platforms (or any other setup using static libraries)
- will fail to link looking for the g_io_module_gnutls_load_static()
- function. The new function name is now
- g_io_gnutls_load(gpointer data). data can be NULL for a static
- library. Look at this commit for the necessary change in the
- examples.
+- FIXME
Windows
-- The webrtcdsp element is shipped again as part of the Windows binary
- packages, the build system issue has been resolved.
-
-- ‘Inconsistent DLL linkage’ warnings when building with MSVC have
- been fixed
-
-- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and
- nvenc build on Windows now, also with MSVC and using Meson.
-
-- The ksvideosrc camera capture plugin supports 16-bit grayscale video
- now
+- toolchain upgrade
-- The wasapisrc audio capture element implements loopback recording
- from another output device or sink
-
-- wasapisink recover from low buffer levels in shared mode and some
- exclusive mode fixes
-
-- dshowsrc now implements the GstDeviceMonitor interface
+- FIXME
Contributors
-Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț,
-Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni
-Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony
-Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno,
-Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic,
-Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter,
-Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake,
-Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David
-Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey,
-Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel
-Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco
-Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg
-Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume
-Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard
-Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh,
-Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander
-Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson,
-Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John
-Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra,
-Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie,
-Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo
-Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis
-Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang,
-Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño),
-Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts,
-Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle,
-Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake,
-Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike
-Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne,
-Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier
-Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi,
-Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter
-Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel,
-Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov,
-Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio,
-Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir
-Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan
-Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato,
-Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu,
-Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić,
-U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor
-Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang
-Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier
-Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou,
-Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali,
+- FIXME
… and many others who have contributed bug reports, translations, sent
suggestions or helped testing.
-Stable 1.16 branch
+Stable 1.18 branch
-After the 1.16.0 release there will be several 1.16.x bug-fix releases
+After the 1.18.0 release there will be several 1.18.x bug-fix releases
which will contain bug fixes which have been deemed suitable for a
stable branch, but no new features or intrusive changes will be added to
-a bug-fix release usually. The 1.16.x bug-fix releases will be made from
-the git 1.16 branch, which is a stable branch.
+a bug-fix release usually. The 1.18.x bug-fix releases will be made from
+the git 1.18 branch, which will be a stable branch.
-1.16.0
+1.18.0
-1.16.0 was released on 19 April 2019.
+1.18.0 has not been released yet.
Known Issues
-- possibly breaking/incompatible changes to properties of wrapped
- FFmpeg decoders and encoders (see above).
-
-- 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
- Android or iOS platforms (or any other setup using static libraries)
- will fail to link looking for the g_io_module_gnutls_load_static()
- function. The new function name is now
- g_io_gnutls_load(gpointer data). See Android/iOS sections above for
- further details.
+- FIXME
-Schedule for 1.18
+Schedule for 1.20
-Our next major feature release will be 1.18, and 1.17 will be the
-unstable development version leading up to the stable 1.18 release. The
-development of 1.17/1.18 will happen in the git master branch.
+Our next major feature release will be 1.20, and 1.19 will be the
+unstable development version leading up to the stable 1.20 release. The
+development of 1.19/1.20 will happen in the git master branch.
-The plan for the 1.18 development cycle is yet to be confirmed, but it
-is possible that the next cycle will be a short one in which case
-feature freeze would be perhaps around August 2019 with a new 1.18
-stable release in September.
+The plan for the 1.20 development cycle is yet to be confirmed.
-1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10,
-1.8, 1.6, 1.4, 1.2 and 1.0 release series.
+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.
------------------------------------------------------------------------
_These release notes have been prepared by Tim-Philipp Müller with_
-_contributions from Sebastian Dröge, Guillaume Desmottes, Matthew
-Waters, _ _Thibault Saunier, and Víctor Manuel Jáquez Leal._
+_contributions from … (FIXME)_
_License: CC BY-SA 4.0_
diff --git a/RELEASE b/RELEASE
index ff7af00d..bec2e654 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,18 +1,15 @@
-This is GStreamer gstreamer-vaapi 1.17.0.1.
+This is GStreamer gstreamer-vaapi 1.17.1.
-The GStreamer team is thrilled to announce a new major feature release in the
-stable 1.0 API series of your favourite cross-platform multimedia framework!
+GStreamer 1.17 is the development branch leading up to the next major
+stable version which will be 1.18.
-As always, this release is again packed with new features, bug fixes and
-other improvements.
-
-The 1.16 release series adds new features on top of the 1.14 series and is
+The 1.17 development series adds new features on top of the 1.16 series and is
part of the API and ABI-stable 1.x release series of the GStreamer multimedia
framework.
Full release notes will one day be found at:
- https://gstreamer.freedesktop.org/releases/1.16/
+ https://gstreamer.freedesktop.org/releases/1.18/
Binaries for Android, iOS, Mac OS X and Windows will usually be provided
shortly after the release.
@@ -60,7 +57,7 @@ You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at
-https://cgit.freedesktop.org/gstreamer/gstreamer/
+https://gitlab.freedesktop.org/gstreamer/
==== Homepage ====
diff --git a/gstreamer-vaapi.doap b/gstreamer-vaapi.doap
index a4b046f5..7db14451 100644
--- a/gstreamer-vaapi.doap
+++ b/gstreamer-vaapi.doap
@@ -14,7 +14,7 @@
</description>
<homepage rdf:resource="http://gstreamer.freedesktop.org/modules/gstreamer-vaapi.html"/>
<download-page rdf:resource="http://gstreamer.freedesktop.org/download/"/>
- <bug-database rdf:resource="http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&amp;component=gstreamer-vaapi"/>
+ <bug-database rdf:resource="https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/"/>
<programming-language>C</programming-language>
<license rdf:resource="http://usefulinc.com/doap/licenses/lgpl"/>
@@ -27,6 +27,16 @@
<release>
<Version>
+ <revision>1.17.1</revision>
+ <branch>master</branch>
+ <name></name>
+ <created>2020-06-19</created>
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.17.1.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.16.0</revision>
<branch>master</branch>
<name></name>
diff --git a/meson.build b/meson.build
index e9e64a1a..4a5c72f7 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('gstreamer-vaapi', 'c',
- version : '1.17.0.1',
+ version : '1.17.1',
meson_version : '>= 0.48.0',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])