diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2020-06-19 19:27:11 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2020-06-19 19:27:13 +0100 |
commit | 41bf465196836158b8eb797c055093315f1bf9bd (patch) | |
tree | 7f893bd02d96df8280eb8273dc075d93fa2cc8c0 | |
parent | bf7d4bda494dd51cd22ffadcd9dcfda3cdb77305 (diff) |
Release 1.17.11.17.1
-rw-r--r-- | ChangeLog | 3869 | ||||
-rw-r--r-- | NEWS | 1302 | ||||
-rw-r--r-- | RELEASE | 15 | ||||
-rw-r--r-- | gstreamer-vaapi.doap | 12 | ||||
-rw-r--r-- | meson.build | 2 |
5 files changed, 3910 insertions, 1290 deletions
@@ -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: @@ -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_ @@ -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&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' ]) |