diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2017-01-12 16:27:12 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2017-01-12 16:27:12 +0200 |
commit | 0fbcc0597011c48e9445fa4f26f1f7663b60214d (patch) | |
tree | de06337601eccd1ee10841c6e59d3a607d6090c6 | |
parent | da7500de3fb8ec4ae0f07ad57b8150d76b807aea (diff) |
Release 1.11.11.11.1
-rw-r--r-- | ChangeLog | 940 | ||||
-rw-r--r-- | NEWS | 1115 | ||||
-rw-r--r-- | configure.ac | 14 | ||||
-rw-r--r-- | gstreamer-vaapi.doap | 10 |
4 files changed, 956 insertions, 1123 deletions
@@ -1,9 +1,945 @@ +=== release 1.11.1 === + +2017-01-12 Sebastian Dröge <slomo@coaxion.net> + + * configure.ac: + releasing 1.11.1 + +2017-01-12 12:49:55 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapiutils.c: + vaapi: bump ifdef to API 0.40.0 for log redirect + vaSetInfoCallback() is not released yet. It is going to appear in + VA-API 0.40.0 + +2017-01-12 13:45:29 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst-libs/gst/vaapi/gstvaapiutils.c: + vaapiutils: Fix compilation with latest and previous libva releases + vaSetInfoCallback() was defined after 0.39.4 / 1.7.3, so check for + 0.39.5 instead. + +2017-01-11 16:04:24 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapidisplay.c: + * gst-libs/gst/vaapi/gstvaapidisplay_drm.c: + * gst-libs/gst/vaapi/gstvaapiutils.c: + * gst-libs/gst/vaapi/gstvaapiutils.h: + libs: display: redirect logging at initialize + Redirect libva's logs to GStreamer logging mechanism. This is + particularly useful when VA is initialized, because it always logs + out the drivers details. + In order to achieve this a new helper function was added as a wrapper + for the vaInitialize() function. + https://bugzilla.gnome.org/show_bug.cgi?id=777115 + +2017-01-10 15:15:31 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: provide at least two buffers in sink pool + Adds two buffers as the default value of minimum buffer. + This would be used when creating and proposing vaapi bufferpool for + sink pad, hence the upstream element will keep, at least, these two + buffers. + https://bugzilla.gnome.org/show_bug.cgi?id=775203 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2017-01-10 13:49:27 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapidecoder_h264.c: + libs: decoder: h264: don't update cloned attributes + If the frame is a cloned picture, its PTS comes from its parent + picture. In addition, the base decoder doesn't set a valid PTS to + the frame corresponding to the cloned picture. + https://bugzilla.gnome.org/show_bug.cgi?id=774254 + +2017-01-09 19:25:24 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: check for display + This patch fixes the check of display, rather than check for the + meta, which it is known it exists. + +2017-01-09 16:23:56 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: rename dmabuf allocator parameters + Rename the parameters 'vip' and 'flags' to 'alloc_info' and + 'surface_alloc_flags' respectively. The purpose of this change is + to auto-document those parameters. + Also, aligned to this patch, the local 'alloc_info' variable was + renamed as 'surface_info', because it stores the possible surface's + video info, not the allocate one. + +2017-01-09 16:18:32 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: rename vip to alloc_info parameter + In order to auto-document the code, this patch renames the 'vip' + parameter in the functions related to gst_vaapi_video_allocator_new () + to 'alloc_info', since it declares the allocation video info from + the vaapi buffer pool. + +2017-01-09 16:08:17 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: use GST_VIDEO_INFO_FORMAT_STRING() + Use the existing local macro GST_VIDEO_INFO_FORMAT_STRING() to get + the video format string. + +2017-01-09 12:51:11 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: unroll gst_vaapi_surface_new_with_format() + gst_vaapi_surface_new_with_format() is a wrapper for + gst_vaapi_surface_new_full (). In this case, the former is simpler + than the first. This patch changes that. + +2017-01-04 19:23:06 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: notify if src pad caps changed + If src pad caps have changed, it needs to notify it downstream. In + addition, do not set passthrough if they have changed. + Otherwise, transform sometimes starts processing before caps change. + The passthrough value will be set in fixate later in this case. + https://bugzilla.gnome.org/show_bug.cgi?id=775204 + +2016-12-14 15:51:01 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecodebin.c: + vaapidecodebin: capsfilter to optimize negotiation + Add a capsfilter forcing the caps + "video/x-raw(memory:VASurface), format=(string)NV12" between the + queue and the vaapipostproc so no renegotiation is required. + https://bugzilla.gnome.org/show_bug.cgi?id=776175 + +2016-12-21 17:38:07 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: fail surface/image configuration + To detect and handle errors during allocator_configure_surface_info() + and allocator_conigure_image_info(). + https://bugzilla.gnome.org/show_bug.cgi?id=776084 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-12-21 17:50:41 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapisink.c: + vaapisink: ensures raw caps at start() + Calls gst_vaapi_plugin_base_get_allowed_raw_caps() at start() to avoid + race conditions at get_caps(), especially with multiple src elements. + https://bugzilla.gnome.org/show_bug.cgi?id=776303 + +2016-12-09 14:51:52 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapisurface_drm.c: + libs: surface: fix error handling code style + +2016-12-09 16:14:14 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: add gst_video_info_update_from_surface() + With this function is possible to refactor and remove duplicated code + between dmabuf configuration and direct rendering/uploading + configuration. + +2016-12-09 15:51:32 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: no log object at initialization + When an instance of GstVaapiVideoAllocator fails at initializing, the + log message should not include the allocator's object, because it is + going to be unrefed. + +2016-12-09 17:56:02 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: lock stream when setting caps + +2016-12-09 17:42:42 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + Revert "vaapidecode: implement negotiate() vmethod" + This reverts commit 3285121181295c544480fc6ba756845b16285d30. + videodecode's negotiate() vmethod is also called when events arrive, + but this would mean that the proper configuration of sink pad might + not be complete, thus we should not update the src pad. + Let's keep the old non-vmethod negotitate(). + +2016-12-07 16:52:35 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapi.c: + Revert "encoders: demote to RANK_NONE since not fit for autoplugging yet" + This reverts commit f182b8be2ba05965e6d31a4d380d6563b9b53a77. + +2016-12-01 18:57:10 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapiencode.c: + * gst/vaapi/gstvaapiencode.h: + vaapiencode: get surface formats in get_caps() + Query for the supported surface formats in config at get_caps() vmethod. + https://bugzilla.gnome.org/show_bug.cgi?id=769266 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-12-07 11:26:37 +0100 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapiencoder.c: + * gst-libs/gst/vaapi/gstvaapiencoder.h: + libs: encoder: add gst_vaapi_encoder_get_surface_formats() + This method will return the valid surface formats in the current + config. If the are no VAConfig it is created with the information + available. + https://bugzilla.gnome.org/show_bug.cgi?id=769266 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-12-07 11:10:42 +0100 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapiencoder.c: + libs: encoder: split set_context_info() + Split set_context_info() adding init_context_info() which only + initialises the GstVaapiContextInfo structure inside GstVaapiEncoder + required for VAConfig. + https://bugzilla.gnome.org/show_bug.cgi?id=769266 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-12-02 09:30:52 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapicontext.c: + libs: context: skip VAContext if no frame size + If GstVaapiContextInfo has just initial information, without frame's + width and height, skip the creation of the VAContext, just keep the + VAConfig. + https://bugzilla.gnome.org/show_bug.cgi?id=769266 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-12-02 09:28:07 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapicontext.c: + libs: context: split context_create() + Split the funcion context_create() into context_create() and + config_create(). + Decoupling VAConfig and VAContext during context creation, we could + query the VAConfig for the supported surface's formats without creating + a VAContext. + https://bugzilla.gnome.org/show_bug.cgi?id=769266 + +2016-12-06 17:33:42 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapidisplay_drm.c: + libs: drm: find render node in hybrid system + Originally the drm backend only tried to open the first render node + found. But in hybrid system this first render node might not support + VA-API (propietary Nvidia driver, for example). + This patch tries all the available nodes until a finding one with a + VA-API supported driver. + https://bugzilla.gnome.org/show_bug.cgi?id=774811 + Original-patch-by: Stirling Westrup <swestrup@gmail.com> and + Reza Razavi <reza@userful.com> + +2016-11-14 17:45:55 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: refactor code for readability + Added the inlined function allocator_configure_pools() moving out code + from gst_vaapi_video_allocator_new() to make clear that it is a + post-initalization of the object. + +2016-11-14 17:40:37 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: log error if not VA image + Log an error message if the test image for surface downloading + cannot be allocated or mapped. + +2016-11-14 17:33:41 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: remove unused macros + These macros are not used. Let us remove them. + +2016-11-11 19:45:45 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: rename video for allocation_info + Since video_info stores the GstVideoInfo of the allocation caps, + it is clear if we rename it as allocation_info, to distinguish it + later from negotiation_info. + +2016-10-19 15:27:03 +0100 Julien Isorce <j.isorce@samsung.com> + + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: add real GstVaapiDmaBufAllocator + Instead of defining GstVaapiDmaBufAllocator as a hackish decorator of + GstDmaBufAllocator, now, since the expose of the GstDmaBufAllocator's + GType, GstVaapiDmaBufAllocator is a full feature GstAllocator inherited + from GstDmaBufAllocator. + https://bugzilla.gnome.org/show_bug.cgi?id=755072 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-10-19 15:30:09 +0100 Julien Isorce <j.isorce@samsung.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: errors in gst_vaapi_dmabuf_allocator_new() + Add a helper function to initialize the gst_debug_vaapivideomemory, + to use it either by the GstVaapiVideoAllocatorClass or + GstVaapiDmabufAllocator (which is a decorator of GstDmaBufAllocator). + Later, log possible errors when calling gst_vaapi_dmabuf_allocator_new () + https://bugzilla.gnome.org/show_bug.cgi?id=755072 + +2016-11-29 15:14:32 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapiencode.c: + vaapiencode: release internal encoder at stop() + As the internal encoder is created at start(), let's release it at + stop() vmethod, to be consistent. + gst_vaapiencode_destroy() is called since it also resets the input and + output states, which is something that the base class does internally + after calling stop() vmethod. + https://bugzilla.gnome.org/show_bug.cgi?id=769266 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +2016-12-03 08:20:56 +0100 Edward Hervey <bilboed@bilboed.com> + + * common: + Automatic update of common submodule + From f49c55e to 39ac2f5 + +2016-11-29 14:59:02 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapiencode.c: + vaapiencode: call ensure_encoder() at start() + Currently, specific encoder is created during set_format(). This might + lead to race condition when creating profiles with multiple encoders. + This patch moves ensure_encoder() call to start() vmethod to ensure + avoiding the race condition. + https://bugzilla.gnome.org/show_bug.cgi?id=773546 + +2016-11-21 19:29:22 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecodebin.c: + vaapidecodebin: bring back dynamic configuration + In commit ca0c3fd6 we remove the dynamic configuration if the bin + because we assumed that the bin will be always static as it is + registered. + Nonetheless we were wrong, because it is possible to request, with a + property, to avoid the use of the post-processor. + Since we want to add a way to disable the post-processor through + environment variables, this remove feature is required again. + If the environment variable GST_VAAPI_DISABLE_VPP is defined the + postprocessor inside of the vaapidecodebin is disabled, then + vaapidecodebin is an alias of the old vaapidecode. + https://bugzilla.gnome.org/show_bug.cgi?id=775041 + +2016-11-21 18:25:18 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: implement negotiate() vmethod + Instead of decorating the negotiate() method, let us override it, + so the stream is locked while called. + https://bugzilla.gnome.org/show_bug.cgi?id=775040 + +2016-11-26 11:27:26 +0000 Tim-Philipp Müller <tim@centricular.com> + + * .gitmodules: + common: use https protocol for common submodule + https://bugzilla.gnome.org/show_bug.cgi?id=775110 + +2016-11-24 21:17:54 +0100 Dominique Leuenberger <dimstar@opensuse.org> + + * gst-libs/gst/vaapi/Makefile.am: + build: add LIBVA_WAYLAND_CFLAGS to libgstvaapiegl + In case libva-wayland has its headers not installed in default + locations (like /usr/include), the build fails to include "wayland-client.h": + CC libgstvaapi_egl_la-gstvaapiutils_egl.lo + In file included from gstvaapidisplay_wayland.h:27:0, + from gstvaapidisplay_egl.c:35: + /usr/include/va/va_wayland.h:31:28: fatal error: wayland-client.h: No such file or directory + #include <wayland-client.h> + As we already passed VA_CLAGS, /usr/include/va/va_wayland.h could be found, but it is + our fault not to instruct the system that we ALSO care for va_wayland. We correctly query + for libva-wayland.pc in configure and use this in other places as well. It is thus only + correct and consequent, to do it also at this spot. + https://bugzilla.gnome.org/show_bug.cgi?id=773946 + +2015-10-28 12:55:18 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideocontext.c: + vaapivideocontext: log a message if no bus + Raise a warning if there is no bus when the element tries to post a + message. + +2015-10-28 12:57:14 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapisink.c: + vaapisink: create display at open() + Instead of creating the VA display before setting the bus to the + element, it is created when the element is opened. + Basically, this commit is a revert of + 5e5d62cac79754ba60057fc2516135aad8d7de35 + That was done when the GStreamer's context sharing was not mature + enough as now. There is no reason to keep this hack. + +2016-11-04 18:04:36 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: don't add video crop meta + Since the differentiation of negotiation caps and allocation caps, + there is no need to add a video crop meta with the negotiation caps. + Hence, removing it. + https://bugzilla.gnome.org/show_bug.cgi?id=773948 + +2015-03-19 21:20:26 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * gst/vaapi/gstvaapivideobuffer.c: + * gst/vaapi/gstvaapivideometa.c: + * gst/vaapi/gstvaapivideometa.h: + remove the video converter from vaapi buffer meta + Since all the video converter were deprecated in gstreamer-1.2, we don't need + to handle them anymore in the vaapi's buffer meta. + This patch removes its usage and the buffer meta's API for that. + https://bugzilla.gnome.org/show_bug.cgi?id=745728 + +2016-11-21 18:28:18 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: destroy source pad allocator and pool + First, deactivate source pad pool when the out caps change, and if so, + destroy texture map, the source pad allocator and pool only if the + new caps are different from the ones already set. + +2016-11-21 19:17:07 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: don't destroy sink pad allocator + Don't destroy sink pad allocator at _set_caps() because it will be done at + ensure_sinkpad_buffer_pool() if it is required. + +2016-11-21 18:27:00 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: first validate the out caps + When calling _set_caps() first validate the out caps before doing + anything else. + +2016-11-21 18:42:02 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: negotiate after destroying allocator + This is related with bug 758907 when no vaapipostproc is used (no + vaapidecodebin). In order to negotiate downstream we need to destroy + the source pad allocator, otherwise the same allocated buffers are + used, failing the mapping. + +2016-11-21 16:35:34 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: remove GST_VAAPI_TYPE_VIDEO_INFO + Remove redundant GST_VAAPI_TYPE_VIDEO_INFO, since it is a duplicate of + GST_TYPE_VIDEO_INFO created before gstreamer 1.6, where the boxed type + was created. + https://bugzilla.gnome.org/show_bug.cgi?id=774782 + +2016-11-21 12:51:25 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: update the src pad allocator video info + Update the size, stride and offset of the source pad allocator video + info, so the pool could set the correct GstVideoMeta + https://bugzilla.gnome.org/show_bug.cgi?id=774782 + +2016-11-21 12:36:27 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: add missing documentation + https://bugzilla.gnome.org/show_bug.cgi?id=774782 + +2016-11-21 12:29:26 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: use early return without goto + https://bugzilla.gnome.org/show_bug.cgi?id=774782 + +2016-11-21 11:25:21 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + plugins: add allocator to allocation query + This patch adds the created allocator to the allocation query either + in decide_allocation() and propose_allocation() vmehtods. + With it, there's no need to set the modified allocator's size in the + pool configuration. + https://bugzilla.gnome.org/show_bug.cgi?id=774782 + +2016-10-19 15:15:01 +0100 Julien Isorce <j.isorce@samsung.com> + + * gst/vaapi/gstvaapivideobufferpool.c: + vaapivideobufferpool: set correct buffer size + We should set the correct buffer size when we are configuring the pool, + otherwise the buffer will be discarded when it returns to the pool. + Indeed when the ref-count of a buffer reaches zero, its pool will queue + it back (and ref it) if, and only if, the buffer size matches the + configured buffer size on the pool. + This issue can be debugged with GST_DEBUG=*PERF*:6, see gstbufferpool.c + https://bugzilla.gnome.org/show_bug.cgi?id=774782 + +2016-11-10 13:26:31 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: check for memory allocator + When calling gst_vaapi_video_memory_copy() the allocator of the memory + to copy should be allocated by the vaapi allocator. + This patch does this verification. + +2016-11-10 13:25:30 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: code style fixes + A cosmetic commit for enhance readability of the casts and method + preconditions. + +2016-11-09 19:49:22 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: unroll gst_vaapi_video_allocator_free() + Instead of having a gst_vaapi_video_memory_free() that is only going to + be called by gst_vaapi_video_allocator_free(), let's just remove the first + and merged into the second. + +2016-11-09 19:29:12 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: avoid virtual methods casting + Use the expected virtual method signatures for readability. + +2016-11-09 18:58:20 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: remove unimplemented methods + Remove unimplemented method for allocator mem_share() and mem_is_span(). + +2016-11-09 18:54:47 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: fail if frame map can't get plane + If map() vmethod in GstVideMeta cannot get the plane data, return false, + thus the caller will not try to read invalid memory. + https://bugzilla.gnome.org/show_bug.cgi?id=774213 + +2016-11-09 18:39:06 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: lock map and unmap operations + In order to avoid race condition when two threads call map/unmap the same + VA surface, this patch mutex these operations. + https://bugzilla.gnome.org/show_bug.cgi?id=774213 + +2016-11-09 17:37:06 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: refactor vaapi memory unmapping + There were duplicated code in gst_video_meta_unmap_vaapi_memory() and + gst_vaapi_video_memory_unmap() when unmapping. + This patch refactors both methods adding the common function + unmap_vaapi_memory(). This also ensures, if direct rendering is enabled, it + is correctly reset. + Additionally, only when mapping flag has the WRITE bit, it set the image as + current, which was done in gst_video_meta_map_vaapi_memory() but no in + gst_vaapi_video_memory_map(). + In order to make this, the mapping flags were required, so instead of + overloading mem_unmap() virtual function, mem_unmap_full() is overloaded. + https://bugzilla.gnome.org/show_bug.cgi?id=774213 + +2016-11-09 13:54:23 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: refactor vaapi memory mapping + There were duplicated code in gst_video_meta_map_vaapi_memory() and + gst_vaapi_video_memory_map() when doing the READ and WRITE mapping. + This patch refactors both methods adding the common function + map_vaapi_memory(). + Additionally, only when flag has the READ bit it calls + ensure_images_is_current(), which was done in + gst_video_meta_map_vaapi_memory() but no in + gst_vaapi_video_memory_map(). + https://bugzilla.gnome.org/show_bug.cgi?id=772151 + +2016-10-27 18:22:18 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: unref allowed_sinkpad_caps at close() + The variable member allowed_sinkpad_caps is constructed querying the + current VA display. Bearing that in mind, the variable shall be freed + when the VA display changes or is removed. + This patch moves the freeing of allowed_sinkpad_caps to close(), when + the VA display is freed. + +2016-11-11 11:40:09 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapisink.c: + vaapisink: finish event thread at stop() + The thread that handles window's events should be finished during + pipeline's shutdown, otherwise it will remain alive during pipeline + re-activation, leading to unexpected problems. + This patch fixes failures of intensive_state_change scenario of + gst-validate + https://bugzilla.gnome.org/show_bug.cgi?id=774241 + +2016-11-08 09:35:00 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: enhance debug message + "gst_pad_push" is not a good description of the event. + +2016-11-08 10:05:32 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst/vaapi/gstvaapipostproc.c: + postproc: honor gst_pad_push() return value + Returning GST_FLOW_ERROR always when gst_pad_push fails might lead to + deadlock during seek. + This patch returns the same error of gst_pad_push() and log out the + return value. + https://bugzilla.gnome.org/show_bug.cgi?id=774030 + +2016-11-04 16:26:18 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: guard GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS + In commit 6d11a00 were introduced a regression when gstreamer-vaapi is + compiled with out EGL/GLX support: it shall not support + GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS. + This patch guards the inclusion of GST_VAAPI_MAKE_GLTEXUPLOAD_CAPS in the + allowed src caps for vaapedecode if EGL/GLX. + +2016-11-04 12:55:23 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: increment map counter only if succeeded + Previously the frame map counter increased independently if the map succeeded + or not. This leaded to critical messages and crashes if the frame was unable + to be mapped, but the counter increased. + This patch increases the map counter only if the map operation occurred. + https://bugzilla.gnome.org/show_bug.cgi?id=773939 + +2016-11-03 17:30:46 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: set negotiation caps in src allocator + When the allocator is created, it stores the allocation caps. But sometimes + the "allocation caps" may be different from the "negotiation caps". + In this case, the allocator should store the negotiation caps since they + are the ones used for frame mapping with GstVideoMeta. + When vaapispostproc is used, this is not a problem since the element is assume + to resize. But when using a vaapi decoder only, with a software renderer, it + fails in this case. + https://bugzilla.gnome.org/show_bug.cgi?id=773323 + +2016-07-19 16:40:10 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapidecode.h: + vaapidecode: generate source pad caps + Just as vaapipostproc, VA decoder's context can be queried to get the possible + raw formats, so, the src caps can negotiate the exact caps that the context + supports. + +2016-02-25 18:57:30 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapidecoder.c: + * gst-libs/gst/vaapi/gstvaapidecoder.h: + libs: decoder: add _get_surface_formats() + This function exposes the available formats of the surfaces in the the current + context to the plugins. + +2016-02-18 19:32:58 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapicontext.c: + * gst-libs/gst/vaapi/gstvaapicontext.h: + libs: context: ensure context formats + This patch ensures to get the formats, as filter does, available in the + decoder / encoder context. + The context fills up the array as soon it is created, otherwise the pipeline + could get stalled (perhaps this is a bug in my HSW backend). + https://bugzilla.gnome.org/show_bug.cgi?id=752958 + +2016-02-18 19:20:10 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapifilter.c: + * gst-libs/gst/vaapi/gstvaapiutils_core.c: + * gst-libs/gst/vaapi/gstvaapiutils_core.h: + libs: move get_surface_formats to utils_core + The query of all the supported formats for a VA config were only used by the + postprocessor (vaapifilter). But, in order to enable the vaapidecoder to + negotiate a suitable raw format with downstream, we need to query these + formats against the decoder's config. + This patch is the first step: moves the code in filter's ensure_image() to a + generic gst_vaapi_get_surface_formats() in vaapiutils_core, so it can be + shared later by the decoder. + https://bugzilla.gnome.org/show_bug.cgi?id=752958 + +2016-07-19 18:56:15 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: remove set_sinkpad_dmabuf_allocator() + Since when the sink pad allocator is created, it is decided if the required + one is vaapi allocator or dmabuf allocator, there is no need to force its set + again. + +2016-10-27 11:25:55 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: ensure display when getting raw caps + When running gst-discoverer-1.0, in certain media, vaapipostroc is stopped + meanwhile it is transforming caps. The problem is that stop() calls + gst_vaapi_plugin_base_close(), which nullifies the element's va display, but + the va display is used in tranform_caps() when it is extracting the possible + format conversions. This display disappearing generates warning messages. + This patch holds a local reference of va display at ensure_allowed_raw_caps() + hence it doesn't go away meanwhile it is used, even if the + gst_vaapi_plugin_base_close() is called in other thread. + https://bugzilla.gnome.org/show_bug.cgi?id=773593 + +2016-11-03 12:54:23 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapiencode_h264.c: + * gst/vaapi/gstvaapiencode_h265.c: + plugins: fix code style for errors + +2016-10-19 19:04:20 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapibufferproxy.c: + * gst-libs/gst/vaapi/gstvaapicodedbuffer.c: + * gst-libs/gst/vaapi/gstvaapicodedbufferproxy.c: + * gst-libs/gst/vaapi/gstvaapicontext.c: + * gst-libs/gst/vaapi/gstvaapicontext_overlay.c: + * gst-libs/gst/vaapi/gstvaapidecoder.c: + * gst-libs/gst/vaapi/gstvaapidecoder_dpb.c: + * 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_vc1.c: + * gst-libs/gst/vaapi/gstvaapidecoder_vp8.c: + * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c: + * gst-libs/gst/vaapi/gstvaapidisplay.c: + * gst-libs/gst/vaapi/gstvaapidisplaycache.c: + * 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: + * gst-libs/gst/vaapi/gstvaapifilter.c: + * gst-libs/gst/vaapi/gstvaapiimage.c: + * gst-libs/gst/vaapi/gstvaapiimagepool.c: + * gst-libs/gst/vaapi/gstvaapiparser_frame.c: + * gst-libs/gst/vaapi/gstvaapipixmap.c: + * gst-libs/gst/vaapi/gstvaapisubpicture.c: + * gst-libs/gst/vaapi/gstvaapisurface.c: + * gst-libs/gst/vaapi/gstvaapisurfacepool.c: + * gst-libs/gst/vaapi/gstvaapisurfaceproxy.c: + * gst-libs/gst/vaapi/gstvaapitexture.c: + * gst-libs/gst/vaapi/gstvaapiutils.c: + * gst-libs/gst/vaapi/gstvaapiutils_egl.c: + * gst-libs/gst/vaapi/gstvaapiutils_glx.c: + * gst-libs/gst/vaapi/gstvaapiwindow.c: + * gst-libs/gst/vaapi/gstvaapiwindow_glx.c: + * gst-libs/gst/vaapi/gstvaapiwindow_wayland.c: + libs: fix code style for errors + +2016-11-03 09:31:17 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapivideocontext.c: + plugins: update GstGL deprecated symbol + GST_GL_TYPE_CONTEXT was deprecated. Now it is GST_TYPE_GL_CONTEXT. + +2016-10-21 11:48:54 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: direct render when raw video + Enable the direct rendering with linear surfaces if the negotiated src caps + are video/x-raw without features. + Pass also the caps, since they are needed to know the requested caps features. + +2016-10-24 20:09:59 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: move src allocator error to instantiator + Just as we did in ensure_sinkpad_allocator(), let's move the error message + into the ensure_srcpad_allocator() from the caller, + gst_vaapi_plugin_base_decide_allocation() + +2016-10-20 19:37:01 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: enable direct upload if raw video + Enable the direct upload with linear surfaces if the negotiated sink caps are + video/x-raw without features. + +2016-10-21 11:21:04 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapipluginutil.h: + pluginutil: add gst_caps_is_video_raw() + +2016-10-24 19:25:27 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: receive caps in ensure_sinkpad_allocator() + Instead of receiving the GstVideoInfo structure as parameter, get the original + GstCaps from ensure_sinkpad_buffer_pool(), in this way we could decide better + which allocator instantiate. + +2016-10-20 19:31:58 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: destroy derived image at unmap + If the allocator was configured to use direct upload or rendering, the + generated derived image created at mapping needs to be destroyed after + unmapping, because, in order to process the surface, it should not be marked + as "busy" by the driver. + +2016-10-21 11:57:55 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: enhance logs for direct modes + Print, conditionally, only the enabled direct mode. + +2016-10-20 17:02:49 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: add direct upload flag + Adds the direct-upload flag in the GstVaapiVideoAllocator and + GstVaapiVideoMemory. + It still doesn't apply any functional change. + +2016-10-20 16:49:22 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapivideomemory.c: + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: set direct rendering at run-time + The way to experiment with the direct rendering is through and internal + compiler pre-processor flag. + The current change set enables a way to specified at run-time, as a flag + passed to the allocator at instanciation time. + +2016-10-20 18:09:59 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: log in perf category when copy + Log in performance category when the derive image handling fails, falling back + to memory copy. + +2016-10-20 16:31:21 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: error log is derive image fails + Instead of a silently failure of the derive image, this patch log an error + message according to the failure. + +2016-10-20 12:52:18 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: store surface alloc flags in qdata + For sake of consistency, we should add the requested surface allocation flags + to the object's qdata structure. + +2016-10-20 12:22:06 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: category init when object define + Move the Gstreamer debug category initialize to the GObject definition. + +2016-11-03 08:31:16 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapitexturemap.c: + libs: vaapitexturemap: trivial code-style fix + +2016-11-02 20:01:09 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst-libs/gst/vaapi/gstvaapidisplay_egl.c: + libs: display: egl: avoid recreate native display + Instead of passing the native descriptor of the display, just pass the received + GstVaapiDisplay and reuse it. + +2016-11-02 15:38:52 +0100 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + + * gst/vaapi/gstvaapipluginbase.c: + plugins: log the GstVaapiDisplay name + Now that GstVaapiDisplay is descendant of GstObject, it has a human-friendly + name. Log it instead of the memory address. + +2016-11-02 18:37:00 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapiwindow_egl.c: + libs: window: egl: pass native va display + When creating a GstVaapiWindowEGL, it also creates native window by its own + native display. It should pass the native display, either X11 or Wayland. + https://bugzilla.gnome.org/show_bug.cgi?id=768266 + +2016-10-13 12:53:17 +0900 Hyunjun Ko <zzoon@igalia.com> + + * gst-libs/gst/vaapi/gstvaapidebug.h: + * gst-libs/gst/vaapi/gstvaapidisplay.c: + * gst-libs/gst/vaapi/gstvaapidisplay.h: + * gst-libs/gst/vaapi/gstvaapidisplay_drm.c: + * gst-libs/gst/vaapi/gstvaapidisplay_drm.h: + * gst-libs/gst/vaapi/gstvaapidisplay_drm_priv.h: + * gst-libs/gst/vaapi/gstvaapidisplay_egl.c: + * gst-libs/gst/vaapi/gstvaapidisplay_egl.h: + * gst-libs/gst/vaapi/gstvaapidisplay_egl_priv.h: + * gst-libs/gst/vaapi/gstvaapidisplay_glx.c: + * gst-libs/gst/vaapi/gstvaapidisplay_glx.h: + * gst-libs/gst/vaapi/gstvaapidisplay_glx_priv.h: + * gst-libs/gst/vaapi/gstvaapidisplay_priv.h: + * gst-libs/gst/vaapi/gstvaapidisplay_wayland.c: + * gst-libs/gst/vaapi/gstvaapidisplay_wayland.h: + * gst-libs/gst/vaapi/gstvaapidisplay_wayland_priv.h: + * gst-libs/gst/vaapi/gstvaapidisplay_x11.c: + * gst-libs/gst/vaapi/gstvaapidisplay_x11.h: + * gst-libs/gst/vaapi/gstvaapidisplay_x11_priv.h: + * gst-libs/gst/vaapi/gstvaapitexture_egl.c: + * gst-libs/gst/vaapi/gstvaapiutils_egl.c: + * gst-libs/gst/vaapi/gstvaapiutils_egl.h: + * gst/vaapi/gstvaapivideocontext.c: + libs: display: GstVaapiDisplay as GstObject descendant + This patch is to change the inheritance of GstVaapiDisplay to GstObject, + instead of GstVaapiMiniObject. In this way we can use all the available + infrastructure for GObject/GstObject such as GstTracer, GIR, etc. + In addition, a new debug category for GstVaapiDisplay is created to make it + easier to trace debug messages. It is named "vaapidisplay" and it transverse + all the VA display backends (DRM, GLX, EGL, Wayland, ...) + This patch is a step forward to expose GstVaapiDisplay for users in a future + library. + https://bugzilla.gnome.org/show_bug.cgi?id=768266 + Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> + +=== release 1.11.0 === + +2016-11-01 18:54:54 +0200 Sebastian Dröge <sebastian@centricular.com> + + * configure.ac: + Back to development + === release 1.10.0 === -2016-11-01 Sebastian Dröge <slomo@coaxion.net> +2016-11-01 18:19:32 +0200 Sebastian Dröge <sebastian@centricular.com> + * ChangeLog: + * NEWS: * configure.ac: - releasing 1.10.0 + * gstreamer-vaapi.doap: + Release 1.10.0 2016-10-27 17:13:48 +0200 Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com> @@ -1,1114 +1 @@ -# GStreamer 1.10 Release Notes - -**GStreamer 1.10.0 was released on 1st November 2016.** - -The GStreamer team is proud to announce a new major feature release in the -stable 1.x API series of your favourite cross-platform multimedia framework! - -As always, this release is again packed with new features, bug fixes and other -improvements. - -See [https://gstreamer.freedesktop.org/releases/1.10/][latest] for the latest -version of this document. - -*Last updated: Tuesday 1 Nov 2016, 15:00 UTC [(log)][gitlog]* - -[latest]: https://gstreamer.freedesktop.org/releases/1.10/ -[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.10/release-notes-1.10.md - -## Introduction - -The GStreamer team is proud to announce a new major feature release in the -stable 1.x API series of your favourite cross-platform multimedia framework! - -As always, this release is again packed with new features, bug fixes and other -improvements. - -## Highlights - -- Several convenience APIs have been added to make developers' lives easier -- A new `GstStream` API provides applications a more meaningful view of the - structure of streams, simplifying the process of dealing with media in - complex container formats -- Experimental `decodebin3` and `playbin3` elements which bring a number of - improvements which were hard to implement within `decodebin` and `playbin` -- A new `parsebin` element to automatically unpack and parse a stream, stopping - just short of decoding -- Experimental new `meson`-based build system, bringing faster build and much - better Windows support (including for building with Visual Studio) -- A new `gst-docs` module has been created, and we are in the process of moving - our documentation to a markdown-based format for easier maintenance and - updates -- A new `gst-examples` module has been create, which contains example - GStreamer applications and is expected to grow with many more examples in - the future -- Various OpenGL and OpenGL|ES-related fixes and improvements for greater - efficiency on desktop and mobile platforms, and Vulkan support on Wayland was - also added -- Extensive improvements to the VAAPI plugins for improved robustness and - efficiency -- Lots of fixes and improvements across the board, spanning RTP/RTSP, V4L2, - Bluetooth, audio conversion, echo cancellation, and more! - -## Major new features and changes - -### Noteworthy new API, features and other changes - -#### Core API additions - -##### Receive property change notifications via bus messages - -New API was added to receive element property change notifications via -bus messages. So far, applications had to connect a callback to an element's -`notify::property-name` signal via the GObject API, which was inconvenient for -at least two reasons: one had to implement a signal callback function, and that -callback function would usually be called from one of the streaming threads, so -one had to marshal (send) any information gathered or pending requests to the -main application thread which was tedious and error-prone. - -Enter [`gst_element_add_property_notify_watch()`][notify-watch] and -[`gst_element_add_property_deep_notify_watch()`][deep-notify-watch] which will -watch for changes of a property on the specified element, either only for this -element or recursively for a whole bin or pipeline. Whenever such a -property change happens, a `GST_MESSAGE_PROPERTY_NOTIFY` message will be posted -on the pipeline bus with details of the element, the property and the new -property value, all of which can be retrieved later from the message in the -application via [`gst_message_parse_property_notify()`][parse-notify]. Unlike -the GstBus watch functions, this API does not rely on a running GLib main loop. - -The above can be used to be notified asynchronously of caps changes in the -pipeline, or volume changes on an audio sink element, for example. - -[notify-watch]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-add-property-notify-watch -[deep-notify-watch]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-add-property-deep-notify-watch -[parse-notify]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-parse-property-notify - -##### GstBin "deep" element-added and element-removed signals - -GstBin has gained `"deep-element-added"` and `"deep-element-removed"` signals -which makes it easier for applications and higher-level plugins to track when -elements are added or removed from a complex pipeline with multiple sub-bins. - -`playbin` makes use of this to implement the new `"element-setup"` signal which -can be used to configure elements as they are added to `playbin`, just like the -existing `"source-setup"` signal which can be used to configure the source -element created. - -##### Error messages can contain additional structured details - -It is often useful to provide additional, structured information in error, -warning or info messages for applications (or higher-level elements) to make -intelligent decisions based on them. To allow this, error, warning and info -messages now have API for adding arbitrary additional information to them -using a `GstStructure`: -[`GST_ELEMENT_ERROR_WITH_DETAILS`][element-error-with-details] and -corresponding API for the other message types. - -This is now used e.g. by the new [`GST_ELEMENT_FLOW_ERROR`][element-flow-error] -API to include the actual flow error in the error message, and the -[souphttpsrc element][souphttpsrc-detailed-errors] to provide the HTTP -status code, and the URL (if any) to which a redirection has happened. - -[element-error-with-details]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-ERROR-WITH-DETAILS:CAPS -[element-flow-error]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#GST-ELEMENT-FLOW-ERROR:CAPS -[souphttpsrc-detailed-errors]: https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/ext/soup/gstsouphttpsrc.c?id=60d30db912a1aedd743e66b9dcd2e21d71fbb24f#n1318 - -##### Redirect messages have official API now - -Sometimes, elements need to redirect the current stream URL and tell the -application to proceed with this new URL, possibly using a different -protocol too (thus changing the pipeline configuration). Until now, this was -informally implemented using `ELEMENT` messages on the bus. - -Now this has been formalized in the form of a new `GST_MESSAGE_REDIRECT` message. -A new redirect message can be created using [`gst_message_new_redirect()`][new-redirect]. -If needed, multiple redirect locations can be specified by calling -[`gst_message_add_redirect_entry()`][add-redirect] to add further redirect -entries, all with metadata, so the application can decide which is -most suitable (e.g. depending on the bitrate tags). - -[new-redirect]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-new-redirect -[add-redirect]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-add-redirect-entry - -##### New pad linking convenience functions that automatically create ghost pads - -New pad linking convenience functions were added: -[`gst_pad_link_maybe_ghosting()`][pad-maybe-ghost] and -[`gst_pad_link_maybe_ghosting_full()`][pad-maybe-ghost-full] which were -previously internal to GStreamer have now been exposed for general use. - -The existing pad link functions will refuse to link pads or elements at -different levels in the pipeline hierarchy, requiring the developer to -create ghost pads where necessary. These new utility functions will -automatically create ghostpads as needed when linking pads at different -levels of the hierarchy (e.g. from an element inside a bin to one that's at -the same level in the hierarchy as the bin, or in another bin). - -[pad-maybe-ghost]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-link-maybe-ghosting -[pad-maybe-ghost-full]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-link-maybe-ghosting-full - -##### Miscellaneous - -Pad probes: IDLE and BLOCK probes now work slightly differently in pull mode, -so that push and pull mode have opposite scenarios for idle and blocking probes. -In push mode, it will block with some data type and IDLE won't have any data. -In pull mode, it will block _before_ getting a buffer and will be IDLE once some -data has been obtained. ([commit][commit-pad-probes], [bug][bug-pad-probes]) - -[commit-pad-probes]: https://cgit.freedesktop.org/gstreamer/gstreamer/commit/gst/gstpad.c?id=368ee8a336d0c868d81fdace54b24431a8b48cbf -[bug-pad-probes]: https://bugzilla.gnome.org/show_bug.cgi?id=761211 - -[`gst_parse_launch_full()`][parse-launch-full] can now be made to return a -`GstBin` instead of a top-level pipeline by passing the new -`GST_PARSE_FLAG_PLACE_IN_BIN` flag. - -[parse-launch-full]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstParse.html#gst-parse-launch-full - -The default GStreamer debug log handler can now be removed before -calling `gst_init()`, so that it will never get installed and won't be active -during initialization. - -A new [`STREAM_GROUP_DONE` event][stream-group-done-event] was added. In some -ways it works similar to the `EOS` event in that it can be used to unblock -downstream elements which may be waiting for further data, such as for example -`input-selector`. Unlike `EOS`, further data flow may happen after the -`STREAM_GROUP_DONE` event though (and without the need to flush the pipeline). -This is used to unblock input-selector when switching between streams in -adaptive streaming scenarios (e.g. HLS). - -[stream-group-done-event]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-group-done - -The `gst-launch-1.0` command line tool will now print unescaped caps in verbose -mode (enabled by the -v switch). - -[`gst_element_call_async()`][call-async] has been added as convenience API for -plugin developers. It is useful for one-shot operations that need to be done -from a thread other than the current streaming thread. It is backed by a -thread-pool that is shared by all elements. - -[call-async]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-call-async - -Various race conditions have been fixed around the `GstPoll` API used by e.g. -`GstBus` and `GstBufferPool`. Some of these manifested themselves primarily -on Windows. - -`GstAdapter` can now keep track of discontinuities signalled via the `DISCONT` -buffer flag, and has gained [new API][new-adapter-api] to track PTS, DTS and -offset at the last discont. This is useful for plugins implementing advanced -trick mode scenarios. - -[new-adapter-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstAdapter.html#gst-adapter-pts-at-discont - -`GstTestClock` gained a new [`"clock-type"` property][clock-type-prop]. - -[clock-type-prop]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstTestClock.html#GstTestClock--clock-type - -#### GstStream API for stream announcement and stream selection - -New stream listing and stream selection API: new API has been added to -provide high-level abstractions for streams ([`GstStream`][stream-api]) -and collections of streams ([`GstStreamCollections`][stream-collection-api]). - -##### Stream listing - -A [`GstStream`][stream-api] contains all the information pertinent to a stream, -such as stream id, caps, tags, flags and stream type(s); it can represent a -single elementary stream (e.g. audio, video, subtitles, etc.) or a container -stream. This will depend on the context. In a decodebin3/playbin3 one -it will typically be elementary streams that can be selected and unselected. - -A [`GstStreamCollection`][stream-collection-api] represents a group of streams -and is used to announce or publish all available streams. A GstStreamCollection -is immutable - once created it won't change. If the available streams change, -e.g. because a new stream appeared or some streams disappeared, a new stream -collection will be published. This new stream collection may contain streams -from the previous collection if those streams persist, or completely new ones. -Stream collections do not yet list all theoretically available streams, -e.g. other available DVD angles or alternative resolutions/bitrate of the same -stream in case of adaptive streaming. - -New events and messages have been added to notify or update other elements and -the application about which streams are currently available and/or selected. -This way, we can easily and seamlessly let the application know whenever the -available streams change, as happens frequently with digital television streams -for example. The new system is also more flexible. For example, it is now also -possible for the application to select multiple streams of the same type -(e.g. in a transcoding/transmuxing scenario). - -A [`STREAM_COLLECTION` message][stream-collection-msg] is posted on the bus -to inform the parent bin (e.g. `playbin3`, `decodebin3`) and/or the application -about what streams are available, so you no longer have to hunt for this -information at different places. The available information includes number of -streams of each type, caps, tags etc. Bins and/or the application can intercept -the message synchronously to select and deselect streams before any data is -produced - for the case where elements such as the demuxers support the new -stream API, not necessarily in the parsebin compatibility fallback case. - -Similarly, there is also a [`STREAM_COLLECTION` event][stream-collection-event] -to inform downstream elements of the available streams. This event can be used -by elements to aggregate streams from multiple inputs into one single collection. - -The `STREAM_START` event was extended so that it can also contain a GstStream -object with all information about the current stream, see -[`gst_event_set_stream()`][event-set-stream] and -[`gst_event_parse_stream()`][event-parse-stream]. -[`gst_pad_get_stream()`][pad-get-stream] is a new utility function that can be -used to look up the GstStream from the `STREAM_START` sticky event on a pad. - -[stream-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStream.html -[stream-collection-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstStreamCollection.html -[stream-collection-msg]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-new-stream-collection -[stream-collection-event]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-stream-collection -[event-set-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-set-stream -[event-parse-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-parse-stream -[pad-get-stream]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-get-stream - -##### Stream selection - -Once the available streams have been published, streams can be selected via -their stream ID using the new `SELECT_STREAMS` event, which can be created -with [`gst_event_new_select_streams()`][event-select-streams]. The new API -supports selecting multiple streams per stream type. In the future, we may also -implement explicit deselection of streams that will never be used, so -elements can skip these and never expose them or output data for them in the -first place. - -The application is then notified of the currently selected streams via the -new `STREAMS_SELECTED` message on the pipeline bus, containing both the current -stream collection as well as the selected streams. This might be posted in -response to the application sending a `SELECT_STREAMS` event or when -`decodebin3` or `playbin3` decide on the streams to be initially selected without -application input. - -[event-select-streams]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html#gst-event-new-select-streams - -##### Further reading - -See further below for some notes on the new elements supporting this new -stream API, namely: `decodebin3`, `playbin3` and `parsebin`. - -More information about the new API and the new elements can also be found here: - -- GStreamer [stream selection design docs][streams-design] -- Edward Hervey's talk ["The new streams API: Design and usage"][streams-talk] ([slides][streams-slides]) -- Edward Hervey's talk ["Decodebin3: Dealing with modern playback use cases"][db3-talk] ([slides][db3-slides]) - -[streams-design]: https://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-stream-selection.txt -[streams-talk]: https://gstconf.ubicast.tv/videos/the-new-gststream-api-design-and-usage/ -[streams-slides]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2016/Edward%20Hervey%20-%20The%20New%20Streams%20API%20Design%20and%20Usage.pdf -[db3-talk]: https://gstconf.ubicast.tv/videos/decodebin3-or-dealing-with-modern-playback-use-cases/ -[db3-slides]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2015/Edward%20Hervey%20-%20decodebin3.pdf - -#### Audio conversion and resampling API - -The audio conversion library received a completely new and rewritten audio -resampler, complementing the audio conversion routines moved into the audio -library in the [previous release][release-notes-1.8]. Integrating the resampler -with the other audio conversion library allows us to implement generic -conversion much more efficiently, as format conversion and resampling can now -be done in the same processing loop instead of having to do it in separate -steps (our element implementations do not make use of this yet though). - -The new audio resampler library is a combination of some of the best features -of other samplers such as ffmpeg, speex and SRC. It natively supports S16, S32, -F32 and F64 formats and uses optimized x86 and neon assembly for most of its -processing. It also has support for dynamically changing sample rates by incrementally -updating the filter tables using linear or cubic interpolation. According to -some benchmarks, it's one of the fastest and most accurate resamplers around. - -The `audioresample` plugin has been ported to the new audio library functions -to make use of the new resampler. - -[release-notes-1.8]: https://gstreamer.freedesktop.org/releases/1.8/ - -#### Support for SMPTE timecodes - -Support for SMPTE timecodes was added to the GStreamer video library. This -comes with an abstraction for timecodes, [`GstVideoTimeCode`][video-timecode] -and a [`GstMeta`][video-timecode-meta] that can be placed on video buffers for -carrying the timecode information for each frame. Additionally there is -various API for making handling of timecodes easy and to do various -calculations with them. - -A new plugin called [`timecode`][timecode-plugin] was added, that contains an -element called `timecodestamper` for putting the timecode meta on video frames -based on counting the frames and another element called `timecodewait` that -drops all video (and audio) until a specific timecode is reached. - -Additionally support was added to the Decklink plugin for including the -timecode information when sending video out or capturing it via SDI, the -`qtmux` element is able to write timecode information into the MOV container, -and the `timeoverlay` element can overlay timecodes on top of the video. - -More information can be found in the [talk about timecodes][timecode-talk] at -the GStreamer Conference 2016. - -[video-timecode]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#GstVideoTimeCode -[video-timecode-meta]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideometa.html#gst-buffer-add-video-time-code-meta -[timecode-plugin]: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst/timecode -[timecode-talk]: https://gstconf.ubicast.tv/videos/smpte-timecodes-in-gstreamer/ - -#### GStreamer OpenMAX IL plugin - -The last gst-omx release, 1.2.0, was in July 2014. It was about time to get -a new one out with all the improvements that have happened in the meantime. -From now on, we will try to release gst-omx together with all other modules. - -This release features a lot of bugfixes, improved support for the Raspberry Pi -and in general improved support for zerocopy rendering via EGL and a few minor -new features. - -At this point, gst-omx is known to work best on the Raspberry Pi platform but -it is also known to work on various other platforms. Unfortunately, we are -not including configurations for any other platforms, so if you happen to use -gst-omx: please send us patches with your configuration and code changes! - -### New Elements - -#### decodebin3, playbin3, parsebin (experimental) - -This release features new decoding and playback elements as experimental -technology previews: `decodebin3` and `playbin3` will soon supersede the -existing `decodebin` and `playbin` elements. We skipped the number 2 because -it was already used back in the 0.10 days, which might cause confusion. -Experimental technology preview means that everything should work fine already, -but we can't guarantee there won't be minor behavioural changes in the -next cycle. In any case, please test and report any problems back. - -Before we go into detail about what these new elements improve, let's look at -the new [`parsebin`][parsebin] element. It works similarly to `decodebin` and -`decodebin3`, only that it stops one step short and does not plug any actual -decoder elements. It will only plug parsers, tag readers, demuxers and -depayloaders. Also note that parsebin does not contain any queueing element. - -[`decodebin3`'s][decodebin3] internal architecture is slightly different from -the existing `decodebin` element and fixes many long-standing issues with our -decoding engine. For one, data is now fed into the internal `multiqueue` element -*after* it has been parsed and timestamped, which means that the `multiqueue` -element now has more knowledge and is able to calculate the interleaving of the -various streams, thus minimizing memory requirements and doing away with magic -values for buffering limits that were conceived when videos were 240p or 360p. -Anyone who has tried to play back 4k video streams with decodebin2 -will have noticed the limitations of that approach. The improved timestamp -tracking also enables `multiqueue` to keep streams of the same type (audio, -video) aligned better, making sure switching between streams of the same type -is very fast. - -Another major improvement in `decodebin3` is that it will no longer decode -streams that are not being used. With the old `decodebin` and `playbin`, when -there were 8 audio streams we would always decode all 8 streams even -if 7 were not actually used. This caused a lot of CPU overhead, which was -particularly problematic on embedded devices. When switching between streams -`decodebin3` will try hard to re-use existing decoders. This is useful when -switching between multiple streams of the same type if they are encoded in the -same format. - -Re-using decoders is also useful when the available streams change on the fly, -as might happen with radio streams (chained Oggs), digital television -broadcasts, when adaptive streaming streams change bitrate, or when switching -gaplessly to the next title. In order to guarantee a seamless transition, the -old `decodebin2` would plug a second decoder for the new stream while finishing -up the old stream. With `decodebin3`, this is no longer needed - at least not -when the new and old format are the same. This will be particularly useful -on embedded systems where it is often not possible to run multiple decoders -at the same time, or when tearing down and setting up decoders is fairly -expensive. - -`decodebin3` also allows for multiple input streams, not just a single one. -This will be useful, in the future, for gapless playback, or for feeding -multiple external subtitle streams to decodebin/playbin. - -`playbin3` uses `decodebin3` internally, and will supercede `playbin`. -It was decided that it would be too risky to make the old `playbin` use the -new `decodebin3` in a backwards-compatible way. The new architecture -makes it awkward, if not impossible, to maintain perfect backwards compatibility -in some aspects, hence `playbin3` was born, and developers can migrate to the -new element and new API at their own pace. - -All of these new elements make use of the new `GstStream` API for listing and -selecting streams, as described above. `parsebin` provides backwards -compatibility for demuxers and parsers which do not advertise their streams -using the new API yet (which is most). - -The new elements are not entirely feature-complete yet: `playbin3` does not -support so-called decodersinks yet where the data is not decoded inside -GStreamer but passed directly for decoding to the sink. `decodebin3` is missing -the various `autoplug-*` signals to influence which decoders get autoplugged -in which order. We're looking to add back this functionality, but it will probably -be in a different way, with a single unified signal and using GstStream perhaps. - -For more information on these new elements, check out Edward Hervey's talk -[*decodebin3 - dealing with modern playback use cases*][db3-talk] - -[parsebin]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-parsebin.html -[decodebin3]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-decodebin3.html -[db3-talk]: https://gstconf.ubicast.tv/videos/decodebin3-or-dealing-with-modern-playback-use-cases/ - -#### LV2 ported from 0.10 and switched from slv2 to lilv2 - -The LV2 wrapper plugin has been ported to 1.0 and moved from using the -deprecated slv2 library to its replacement liblv2. We support sources and -filter elements. lv2 is short for *Linux Audio Developer's Simple Plugin API -(LADSPA) version 2* and is an open standard for audio plugins which includes -support for audio synthesis (generation), digital signal processing of digital -audio, and MIDI. The new lv2 plugin supersedes the existing LADSPA plugin. - -#### WebRTC DSP Plugin for echo-cancellation, gain control and noise suppression - -A set of new elements ([webrtcdsp][webrtcdsp], [webrtcechoprobe][webrtcechoprobe]) -based on the WebRTC DSP software stack can now be used to improve your audio -voice communication pipelines. They support echo cancellation, gain control, -noise suppression and more. For more details you may read -[Nicolas' blog post][webrtc-blog-post]. - -[webrtcdsp]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-webrtcdsp.html -[webrtcechoprobe]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html -[webrtc-blog-post]: https://ndufresne.ca/2016/06/gstreamer-echo-canceller/ - -#### Fraunhofer FDK AAC encoder and decoder - -New encoder and decoder elements wrapping the Fraunhofer FDK AAC library have -been added (`fdkaacdec`, `fdkaacdec`). The Fraunhofer FDK AAC encoder is -generally considered to be a very high-quality AAC encoder, but unfortunately -it comes under a non-free license with the option to obtain a paid, commercial -license. - -### Noteworthy element features and additions - -#### Major RTP and RTSP improvements - -- The RTSP server and source element, as well as the RTP jitterbuffer now support - remote clock synchronization according to [RFC7273][https://tools.ietf.org/html/rfc7273]. -- Support for application and profile specific RTCP packets was added. -- The H265/HEVC payloader/depayloader is again in sync with the final RFC. -- Seeking stability of the RTSP source and server was improved a lot and - runs stably now, even when doing scrub-seeking. -- The RTSP server received various major bugfixes, including for regressions that - caused the IP/port address pool to not be considered, or NAT hole punching - to not work anymore. [Bugzilla #766612][https://bugzilla.gnome.org/show_bug.cgi?id=766612] -- Various other bugfixes that improve the stability of RTP and RTSP, including - many new unit / integration tests. - -#### Improvements to splitmuxsrc and splitmuxsink - -- The splitmux element received reliability and error handling improvements, - removing at least one deadlock case. `splitmuxsrc` now stops cleanly at the end - of the segment when handling seeks with a stop time. We fixed a bug with large - amounts of downstream buffering causing incorrect out-of-sequence playback. - -- `splitmuxsrc` now has a `"format-location"` signal to directly specify the list - of files to play from. - -- `splitmuxsink` can now optionally send force-keyunit events to upstream - elements to allow splitting files more accurately instead of having to wait - for upstream to provide a new keyframe by itself. - -#### OpenGL/GLES improvements - -##### iOS and macOS (OS/X) - -- We now create OpenGL|ES 3.x contexts on iOS by default with a fallback to - OpenGL|ES 2.x if that fails. -- Various zerocopy decoding fixes and enhancements with the - encoding/decoding/capturing elements. -- libdispatch is now used on all Apple platforms instead of GMainLoop, removing - the expensive poll()/pthread_*() overhead. - -##### New API - -- `GstGLFramebuffer` - for wrapping OpenGL frame buffer objects. It provides - facilities for attaching `GstGLMemory` objects to the necessary attachment - points, binding and unbinding and running a user-supplied function with the - framebuffer bound. -- `GstGLRenderbuffer` (a `GstGLBaseMemory` subclass) - for wrapping OpenGL - render buffer objects that are typically used for depth/stencil buffers or - for color buffers where we don't care about the output. -- `GstGLMemoryEGL` (a `GstGLMemory` subclass) - for combining `EGLImage`s with a GL - texture that replaces `GstEGLImageMemory` bringing the improvements made to the - other `GstGLMemory` implementations. This fixes a performance regression in - zerocopy decoding on the Raspberry Pi when used with an updated gst-omx. - -##### Miscellaneous improvements - -- `gltestsrc` is now usable on devices/platforms with OpenGL 3.x and OpenGL|ES - and has completed or gained support for new patterns in line with the - existing ones in `videotestsrc`. -- `gldeinterlace` is now available on devices/platforms with OpenGL|ES - implementations. -- The dispmanx backend (used on the Raspberry Pi) now supports the - `gst_video_overlay_set_window_handle()` and - `gst_video_overlay_set_render_rectangle()` functions. -- The `gltransformation` element now correctly transforms mouse coordinates (in - window space) to stream coordinates for both perspective and orthographic - projections. -- The `gltransformation` element now detects if the - `GstVideoAffineTransformationMeta` is supported downstream and will efficiently - pass its transformation downstream. This is a performance improvement as it - results in less processing being required. -- The wayland implementation now uses the multi-threaded safe event-loop API - allowing correct usage in applications that call wayland functions from - multiple threads. -- Support for native 90 degree rotations and horizontal/vertical flips - in `glimagesink`. - -#### Vulkan - -- The Vulkan elements now work under Wayland and have received numerous - bugfixes. - -#### QML elements - -- `qmlglsink` video sink now works on more platforms, notably, Windows, Wayland, - and Qt's eglfs (for embedded devices with an OpenGL implementation) including - the Raspberry Pi. -- New element `qmlglsrc` to record a QML scene into a GStreamer pipeline. - -#### KMS video sink - -- New element `kmssink` to render video using Direct Rendering Manager - (DRM) and Kernel Mode Setting (KMS) subsystems in the Linux - kernel. It is oriented to be used mostly in embedded systems. - -#### Wayland video sink - -- `waylandsink` now supports the wl_viewporter extension allowing - video scaling and cropping to be delegated to the Wayland - compositor. This extension is also been made optional, so that it can - also work on current compositors that don't support it. It also now has - support for the video meta, allowing zero-copy operations in more - cases. - -#### DVB improvements - -- `dvbsrc` now has better delivery-system autodetection and several - new parameter sanity-checks to improve its resilience to configuration - omissions and errors. Superfluous polling continues to be trimmed down, - and the debugging output has been made more consistent and precise. - Additionally, the channel-configuration parser now supports the new dvbv5 - format, enabling `dvbbasebin` to automatically playback content transmitted - on delivery systems that previously required manual description, like ISDB-T. - -#### DASH, HLS and adaptivedemux - -- HLS now has support for Alternate Rendition audio and video tracks. Full - support for Alternate Rendition subtitle tracks will be in an upcoming release. -- DASH received support for keyframe-only trick modes if the - `GST_SEEK_FLAG_TRICKMODE_KEY_UNITS` flag is given when seeking. It will - only download keyframes then, which should help with high-speed playback. - Changes to skip over multiple frames based on bandwidth and other metrics - will be added in the near future. -- Lots of reliability fixes around seek handling and bitrate switching. - -#### Bluetooth improvements - -- The `avdtpsrc` element now supports metadata such as track title, artist - name, and more, which devices can send via AVRCP. These are published as - tags on the pipeline. -- The `a2dpsink` element received some love and was cleaned up so that it - actually works after the initial GStreamer 1.0 port. - -#### GStreamer VAAPI - -- All the decoders have been split, one plugin feature per codec. So - far, the available ones, depending on the driver, are: - `vaapimpeg2dec`, `vaapih264dec`, `vaapih265dec`, `vaapivc1dec`, `vaapivp8dec`, - `vaapivp9dec` and `vaapijpegdec` (which already was split). -- Improvements when mapping VA surfaces into memory. It now differentiates - between negotiation caps and allocations caps, since the allocation - memory for surfaces may be bigger than one that is going to be - mapped. -- `vaapih265enc` now supports constant bitrate mode (CBR). -- Since several VA drivers are unmaintained, we decide to keep a whitelist - with the va drivers we actually test, which is mostly the i915 and to a lesser - degree gallium from the mesa project. Exporting the environment variable - `GST_VAAPI_ALL_DRIVERS` disables the whitelist. -- Plugin features are registered at run-time, according to their support by - the loaded VA driver. So only the decoders and encoder supported by the - system are registered. Since the driver can change, some dependencies are - tracked to invalidate the GStreamer registry and reload the plugin. -- `dmabuf` importation from upstream has been improved, gaining performance. -- `vaapipostproc` now can negotiate buffer transformations via caps. -- Decoders now can do I-frame only reverse playback. This decodes I-frames - only because the surface pool is smaller than the required by the GOP to show all the - frames. -- The upload of frames onto native GL textures has been optimized too, keeping - a cache of the internal structures for the offered textures by the sink. - -#### V4L2 changes - -- More pixels formats are now supported -- Decoder is now using `G_SELECTION` instead of the deprecated `G_CROP` -- Decoder now uses the `STOP` command to handle EOS -- Transform element can now scale the pixel aspect ratio -- Colorimetry support has been improved even more -- We now support the `OUTPUT_OVERLAY` type of video node in v4l2sink - -#### Miscellaneous - -- `multiqueue`'s input pads gained a new `"group-id"` property which - can be used to group input streams. Typically one will assign - different id numbers to audio, video and subtitle streams for - example. This way `multiqueue` can make sure streams of the same - type advance in lockstep if some of the streams are unlinked and the - `"sync-by-running-time"` property is set. This is used in - decodebin3/playbin3 to implement almost-instantaneous stream - switching. The grouping is required because different downstream - paths (audio, video, etc.) may have different buffering/latency - etc. so might be consuming data from multiqueue with a slightly - different phase, and if we track different stream groups separately - we minimize stream switching delays and buffering inside the - `multiqueue`. -- `alsasrc` now supports ALSA drivers without a position for each - channel, this is common in some professional or industrial hardware. -- `libvpx` based decoders (`vp8dec` and `vp9dec`) now create multiple threads on - computers with multiple CPUs automatically. -- `rfbsrc` - used for capturing from a VNC server - has seen a lot of - debugging. It now supports the latest version of the RFB - protocol and uses GIO everywhere. -- `tsdemux` can now read ATSC E-AC-3 streams. -- New `GstVideoDirection` video orientation interface for rotating, flipping - and mirroring video in 90° steps. It is implemented by the `videoflip` and - `glvideoflip` elements currently. -- It is now possible to give `appsrc` a duration in time, and there is now a - non-blocking try-pull API for `appsink` that returns NULL if nothing is - available right now. -- `x264enc` has support now for chroma-site and colorimetry settings -- A new JPEG2000 parser element was added, and the JPEG2000 caps were cleaned - up and gained more information needed in combination with RTP and various - container formats. -- Reverse playback support for `videorate` and `deinterlace` was implemented -- Various improvements everywhere for reverse playback and `KEY_UNITS` trick mode -- New cleaned up `rawaudioparse` and `rawvideoparse` elements that replace the - old `audioparse` and `videoparse` elements. There are compatibility element - factories registered with the old names to allow existing code to continue - to work. -- The Decklink plugin gained support for 10 bit video SMPTE timecodes, and - generally got many bugfixes for various issues. -- New API in `GstPlayer` for setting the multiview mode for stereoscopic - video, setting an HTTP/RTSP user agent and a time offset between audio and - video. In addition to that, there were various bugfixes and the new - gst-examples module contains Android, iOS, GTK+ and Qt example applications. -- `GstBin` has new API for suppressing various `GstElement` or `GstObject` - flags that would otherwise be affected by added/removed child elements. This - new API allows `GstBin` subclasses to handle for themselves if they - should be considered a sink or source element, for example. -- The `subparse` element can handle WebVTT streams now. -- A new `sdpsrc` element was added that can read an SDP from a file, or get it - as a string as property and then sets up an RTP pipeline accordingly. - -### Plugin moves - -No plugins were moved this cycle. We'll make up for it next cycle, promise! - -### Rewritten memory leak tracer - -GStreamer has had basic functionality to trace allocation and freeing of -both mini-objects (buffers, events, caps, etc.) and objects in the form of the -internal `GstAllocTrace` tracing system. This API was never exposed in the -1.x API series though. When requested, this would dump a list of objects and -mini-objects at exit time which had still not been freed at that point, -enabled with an environment variable. This subsystem has now been removed -in favour of a new implementation based on the recently-added tracing framework. - -Tracing hooks have been added to trace the creation and destruction of -GstObjects and mini-objects, and a new tracer plugin has been written using -those new hooks to track which objects are still live and which are not. If -GStreamer has been compiled against the libunwind library, the new leaks tracer -will remember where objects were allocated from as well. By default the leaks -tracer will simply output a warning if leaks have been detected on `gst_deinit()`. - -If the `GST_LEAKS_TRACER_SIG` environment variable is set, the leaks tracer -will also handle the following UNIX signals: - - - `SIGUSR1`: log alive objects - - `SIGUSR2`: create a checkpoint and print a list of objects created and - destroyed since the previous checkpoint. - -Unfortunately this will not work on Windows due to no signals, however. - -If the `GST_LEAKS_TRACER_STACK_TRACE` environment variable is set, the leaks -tracer will also log the creation stack trace of leaked objects. This may -significantly increase memory consumption however. - -New `MAY_BE_LEAKED` flags have been added to GstObject and GstMiniObject, so -that objects and mini-objects that are likely to stay around forever can be -flagged and blacklisted from the leak output. - -To give the new leak tracer a spin, simply call any GStreamer application such -as `gst-launch-1.0` or `gst-play-1.0` like this: - - GST_TRACERS=leaks gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink - -If there are any leaks, a warning will be raised at the end. - -It is also possible to trace only certain types of objects or mini-objects: - - GST_TRACERS="leaks(GstEvent,GstMessage)" gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink - -This dedicated leaks tracer is much much faster than valgrind since all code is -executed natively instead of being instrumented. This makes it very suitable -for use on slow machines or embedded devices. It is however limited to certain -types of leaks and won't catch memory leaks when the allocation has been made -via plain old `malloc()` or `g_malloc()` or other means. It will also not trace -non-GstObject GObjects. - -The goal is to enable leak tracing on GStreamer's Continuous-Integration and -testing system, both for the regular unit tests (make check) and media tests -(gst-validate), so that accidental leaks in common code paths can be detected -and fixed quickly. - -For more information about the new tracer, check out Guillaume Desmottes's -["Tracking Memory Leaks"][leaks-talk] talk or his [blog post][leaks-blog] about -the topic. - -[leaks-talk]: https://gstconf.ubicast.tv/videos/tracking-memory-leaks/ -[leaks-blog]: https://blog.desmottes.be/?post/2016/06/20/GStreamer-leaks-tracer - -### GES and NLE changes - -- Clip priorities are now handled by the layers, and the GESTimelineElement - priority property is now deprecated and unused -- Enhanced (de)interlacing support to always use the `deinterlace` element - and expose needed properties to users -- Allow reusing clips children after removing the clip from a layer -- We are now testing many more rendering formats in the gst-validate - test suite, and failures have been fixed. -- Also many bugs have been fixed in this cycle! - -### GStreamer validate changes - -This cycle has been focused on making GstValidate more than just a validating -tool, but also a tool to help developers debug their GStreamer issues. When -reporting issues, we try to gather as much information as possible and expose -it to end users in a useful way. For an example of such enhancements, check out -Thibault Saunier's [blog post](improving-debugging-gstreamer-validate) about -the new Not Negotiated Error reporting mechanism. - -Playbin3 support has been added so we can run validate tests with `playbin3` -instead of playbin. - -We are now able to properly communicate between `gst-validate-launcher` and -launched subprocesses with actual IPC between them. That has enabled the test -launcher to handle failing tests specifying the exact expected issue(s). - -[improving-debugging-gstreamer-validate]: https://blogs.s-osg.org/improving-debugging-gstreamer-validate/ - -### gst-libav changes - -gst-libav uses the recently released ffmpeg 3.2 now, which brings a lot of -improvements and bugfixes from the ffmpeg team in addition to various new -codec mappings on the GStreamer side and quite a few bugfixes to the GStreamer -integration to make it more robust. - -## Build and Dependencies - -### Experimental support for Meson as build system - -#### Overview - -We have have added support for building GStreamer using the -[Meson build system][meson]. This is currently experimental, but should work -fine at least on Linux using the gcc or clang toolchains and on Windows using -the MingW or MSVC toolchains. - -Autotools remains the primary build system for the time being, but we hope to -someday replace it and will steadily work towards that goal. - -More information about the background and implications of all this and where -we're hoping to go in future with this can be found in [Tim's mail][meson-mail] -to the gstreamer-devel mailing list. - -For more information on Meson check out [these videos][meson-videos] and also -the [Meson talk][meson-gstconf] at the GStreamer Conference. - -Immediate benefits for Linux users are faster builds and rebuilds. At the time -of writing the Meson build of GStreamer is used by default in GNOME's jhbuild -system. - -The Meson build currently still lacks many of the fine-grained configuration -options to enable/disable specific plugins. These will be added back in due -course. - -Note: The meson build files are not distributed in the source tarballs, you will -need to get GStreamer from git if you want try it out. - -[meson]: http://mesonbuild.com/ -[meson-mail]: https://lists.freedesktop.org/archives/gstreamer-devel/2016-September/060231.html -[meson-videos]: http://mesonbuild.com/videos.html -[meson-gstconf]: https://gstconf.ubicast.tv/videos/gstreamer-development-on-windows-ans-faster-builds-everywhere-with-meson/ - -#### Windows Visual Studio toolchain support - -Windows users might appreciate being able to build GStreamer using the MSVC -toolchain, which is not possible using autotools. This means that it will be -possible to debug GStreamer and applications in Visual Studio, for example. -We require VS2015 or newer for this at the moment. - -There are two ways to build GStreamer using the MSVC toolchain: - -1. Using the MSVC command-line tools (`cl.exe` etc.) via Meson's "ninja" backend. -2. Letting Meson's "vs2015" backend generate Visual Studio project files that - can be opened in Visual Studio and compiled from there. - -This is currently only for adventurous souls though. All the bits are in place, -but support for all of this has not been merged into GStreamer's cerbero build -tool yet at the time of writing. This will hopefully happen in the next cycle, -but for now this means that those wishing to compile GStreamer with MSVC will -have to get their hands dirty. - -There are also no binary SDK builds using the MSVC toolchain yet. - -For more information on GStreamer builds using Meson and the Windows toolchain -check out Nirbheek Chauhan's blog post ["Building and developing GStreamer using Visual Studio"][msvc-blog]. - -[msvc-blog]: http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html - -### Dependencies - -#### gstreamer - -libunwind was added as an optional dependency. It is used only for debugging -and tracing purposes. - -The `opencv` plugin in gst-plugins-bad can now be built against OpenCV -version 3.1, previously only 2.3-2.5 were supported. - -#### gst-plugins-ugly - -- `mpeg2dec` now requires at least libmpeg2 0.5.1 (from 2008). - -#### gst-plugins-bad - -- `gltransformation` now requires at least graphene 1.4.0. - -- `lv2` now plugin requires at least lilv 0.16 instead of slv2. - -### Packaging notes - -Packagers please note that the `gst/gstconfig.h` public header file in the -GStreamer core library moved back from being an architecture dependent include -to being architecture independent, and thus it is no longer installed into -`$(libdir)/gstreamer-1.0/include/gst` but into the normal include directory -where it lives happily ever after with all the other public header files. The -reason for this is that we now check whether the target supports unaligned -memory access based on predefined compiler macros at compile time instead of -checking it at configure time. - -## Platform-specific improvements - -### Android - -#### New universal binaries for all supported ABIs - -We now provide a "universal" tarball to allow building apps against all the -architectures currently supported (x86, x86-64, armeabi, armeabi-v7a, -armeabi-v8a). This is needed for building with recent versions of the Android -NDK which defaults to building against all supported ABIs. Use [the Android -player example][android-player-example-build] as a reference for the required -changes. - -[android-player-example-build]: https://cgit.freedesktop.org/gstreamer/gst-examples/commit/playback/player/android?id=a5cdde9119f038a1eb365aca20faa9741a38e788 - -#### Miscellaneous - -- New `ahssrc` element that allows reading the hardware sensors, e.g. compass - or accelerometer. - -### macOS (OS/X) and iOS - -- Support for querying available devices on OS/X via the GstDeviceProvider - API was added. -- It is now possible to create OpenGL|ES 3.x contexts on iOS and use them in - combination with the VideoToolbox based decoder element. -- many OpenGL/GLES improvements, see OpenGL section above - -### Windows - -- gstconfig.h: Always use dllexport/import on Windows with MSVC -- Miscellaneous fixes to make libs and plugins compile with the MVSC toolchain -- MSVC toolchain support (see Meson section above for more details) - -## New Modules for Documentation, Examples, Meson Build - -Three new git modules have been added recently: - -### gst-docs - -This is a new module where we will maintain documentation in the markdown -format. - -It contains the former gstreamer.com SDK tutorials which have kindly been made -available by Fluendo under a Creative Commons license. The tutorials have been -reviewed and updated for GStreamer 1.x and will be available as part of the -[official GStreamer documentation][doc] going forward. The old gstreamer.com -site will then be shut down with redirects pointing to the updated tutorials. - -Some of the existing docbook XML-formatted documentation from the GStreamer -core module such as the *Application Development Manual* and the *Plugin -Writer's Guide* have been converted to markdown as well and will be maintained -in the gst-docs module in future. They will be removed from the GStreamer core -module in the next cycle. - -This is just the beginning. Our goal is to provide a more cohesive documentation -experience for our users going forward, and easier to create and maintain -documentation for developers. There is a lot more work to do, get in touch if -you want to help out. - -If you encounter any problems or spot any omissions or outdated content in the -new documentation, please [file a bug in bugzilla][doc-bug] to let us know. - -We will probably release gst-docs as a separate tarball for distributions to -package in the next cycle. - -[doc]: http://gstreamer.freedesktop.org/documentation/ -[doc-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=documentation - -### gst-examples - -A new [module][examples-git] has been added for examples. It does not contain -much yet, currently it only contains a small [http-launch][http-launch] utility -that serves a pipeline over http as well as various [GstPlayer playback frontends][puis] -for Android, iOS, Gtk+ and Qt. - -More examples will be added over time. The examples in this repository should -be more useful and more substantial than most of the examples we ship as part -of our other modules, and also written in a way that makes them good example -code. If you have ideas for examples, let us know. - -No decision has been made yet if this module will be released and/or packaged. -It probably makes sense to do so though. - -[examples-git]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/ -[http-launch]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/network/http-launch/ -[puis]: https://cgit.freedesktop.org/gstreamer/gst-examples/tree/playback/player - -### gst-build - -[gst-build][gst-build-git] is a new meta module to build GStreamer using the -new Meson build system. This module is not required to build GStreamer with -Meson, it is merely for convenience and aims to provide a development setup -similar to the existing `gst-uninstalled` setup. - -gst-build makes use of Meson's [subproject feature][meson-subprojects] and sets -up the various GStreamer modules as subprojects, so they can all be updated and -built in parallel. - -This module is still very new and highly experimental. It should work at least -on Linux and Windows (OS/X needs some build fixes). Let us know of any issues -you encounter by popping into the `#gstreamer` IRC channel or by -[filing a bug][gst-build-bug]. - -This module will probably not be released or packaged (does not really make sense). - -[gst-build-git]: https://cgit.freedesktop.org/gstreamer/gst-build/tree/ -[gst-build-bug]: https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=gst-build -[meson-subprojects]: https://github.com/mesonbuild/meson/wiki/Subprojects - -## Contributors - -Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, Alex -Ashley, Alex-P. Natsios, Alistair Buxton, Allen Zhang, Andreas Naumann, Andrew -Eikum, Andy Devar, Anthony G. Basile, Arjen Veenhuizen, Arnaud Vrac, Artem -Martynovich, Arun Raghavan, Aurélien Zanelli, Barun Kumar Singh, Bernhard -Miller, Brad Lackey, Branko Subasic, Carlos Garcia Campos, Carlos Rafael -Giani, Christoffer Stengren, Daiki Ueno, Damian Ziobro, Danilo Cesar Lemes de -Paula, David Buchmann, Dimitrios Katsaros, Duncan Palmer, Edward Hervey, -Emmanuel Poitier, Enrico Jorns, Enrique Ocaña González, Fabrice Bellet, -Florian Zwoch, Florin Apostol, Francisco Velazquez, Frédéric Bertolus, Fredrik -Fornwall, Gaurav Gupta, George Kiagiadakis, Georg Lippitsch, Göran Jönsson, -Graham Leggett, Gregoire Gentil, Guillaume Desmottes, Gwang Yoon Hwang, Haakon -Sporsheim, Haihua Hu, Havard Graff, Heinrich Fink, Hoonhee Lee, Hyunjun Ko, -Iain Lane, Ian, Ian Jamison, Jagyum Koo, Jake Foytik, Jakub Adam, Jan -Alexander Steffens (heftig), Jan Schmidt, Javier Martinez Canillas, Jerome -Laheurte, Jesper Larsen, Jie Jiang, Jihae Yi, Jimmy Ohn, Jinwoo Ahn, Joakim -Johansson, Joan Pau Beltran, Jonas Holmberg, Jonathan Matthew, Jonathan Roy, -Josep Torra, Julien Isorce, Jun Ji, Jürgen Slowack, Justin Kim, Kazunori -Kobayashi, Kieran Bingham, Kipp Cannon, Koop Mast, Kouhei Sutou, Kseniia, Kyle -Schwarz, Kyungyong Kim, Linus Svensson, Luis de Bethencourt, Marcin Kolny, -Marcin Lewandowski, Marianna Smidth Buschle, Mario Sanchez Prada, Mark -Combellack, Mark Nauwelaerts, Martin Kelly, Matej Knopp, Mathieu Duponchelle, -Mats Lindestam, Matthew Gruenke, Matthew Waters, Michael Olbrich, Michal Lazo, -Miguel París Díaz, Mikhail Fludkov, Minjae Kim, Mohan R, Munez, Nicola Murino, -Nicolas Dufresne, Nicolas Huet, Nikita Bobkov, Nirbheek Chauhan, Olivier -Crête, Paolo Pettinato, Patricia Muscalu, Paulo Neves, Peng Liu, Peter -Seiderer, Philippe Normand, Philippe Renon, Philipp Zabel, Pierre Lamot, Piotr -Drąg, Prashant Gotarne, Raffaele Rossi, Ray Strode, Reynaldo H. Verdejo -Pinochet, Santiago Carot-Nemesio, Scott D Phillips, Sebastian Dröge, Sebastian -Rasmussen, Sergei Saveliev, Sergey Borovkov, Sergey Mamonov, Sergio Torres -Soldado, Seungha Yang, sezero, Song Bing, Sreerenj Balachandran, Stefan Sauer, -Stephen, Steven Hoving, Stian Selnes, Thiago Santos, Thibault Saunier, Thijs -Vermeir, Thomas Bluemel, Thomas Jones, Thomas Klausner, Thomas Scheuermann, -Tim-Philipp Müller, Ting-Wei Lan, Tom Schoonjans, Ursula Maplehurst, Vanessa -Chipirras Navalon, Víctor Manuel Jáquez Leal, Vincent Penquerc'h, Vineeth TM, -Vivia Nikolaidou, Vootele Vesterblom, Wang Xin-yu (王昕宇), William Manley, -Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier Claessens, xlazom00, -Yann Jouanin, Zaheer Abbas Merali - -... and many others who have contributed bug reports, translations, sent -suggestions or helped testing. - -## Bugs fixed in 1.10 - -More than [750 bugs][bugs-fixed-in-1.10] have been fixed during -the development of 1.10. - -This list does not include issues that have been cherry-picked into the -stable 1.8 branch and fixed there as well, all fixes that ended up in the -1.8 branch are also included in 1.10. - -This list also does not include issues that have been fixed without a bug -report in bugzilla, so the actual number of fixes is much higher. - -[bugs-fixed-in-1.10]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=164074&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.1&target_milestone=1.8.2&target_milestone=1.8.3&target_milestone=1.8.4&target_milestone=1.9.1&target_milestone=1.9.2&target_milestone=1.9.90&target_milestone=1.10.0 - -## Stable 1.10 branch - -After the 1.10.0 release there will be several 1.10.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.10.x bug-fix releases will be made from the git 1.10 branch, -which is a stable branch. - -### 1.10.0 - -1.10.0 was released on 1st November 2016. - -## Known Issues - -- iOS builds with iOS 6 SDK and old C++ STL. You need to select iOS 6 instead - of 7 or 8 in your projects settings to be able to link applications. - [Bug #766366](https://bugzilla.gnome.org/show_bug.cgi?id=766366) -- Code signing for Apple platforms has some problems currently, requiring - manual work to get your application signed. [Bug #771860](https://bugzilla.gnome.org/show_bug.cgi?id=771860) -- Building applications with Android NDK r13 on Windows does not work. Other - platforms and earlier/later versions of the NDK are not affected. - [Bug #772842](https://bugzilla.gnome.org/show_bug.cgi?id=772842) -- The new leaks tracer may deadlock the application (or exhibit other undefined - behaviour) when `SIGUSR` handling is enabled via the `GST_LEAKS_TRACER_SIG` - environment variable. [Bug #770373](https://bugzilla.gnome.org/show_bug.cgi?id=770373) -- vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit Windows is unaffected. - [Bug #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663) - -## Schedule for 1.12 - -Our next major feature release will be 1.12, and 1.11 will be the unstable -development version leading up to the stable 1.12 release. The development -of 1.11/1.12 will happen in the git master branch. - -The plan for the 1.12 development cycle is yet to be confirmed, but it is -expected that feature freeze will be around early/mid-January, -followed by several 1.11 pre-releases and the new 1.12 stable release -in March. - -1.12 will be backwards-compatible to the stable 1.10, 1.8, 1.6, 1.4, 1.2 and -1.0 release series. - -- - - - -*These release notes have been prepared by Olivier Crête, Sebastian Dröge, -Nicolas Dufresne, Edward Hervey, Víctor Manuel Jáquez Leal, Tim-Philipp -Müller, Reynaldo H. Verdejo Pinochet, Arun Raghavan, Thibault Saunier, -Jan Schmidt, Wim Taymans, Matthew Waters* - -*License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)* - +This is GStreamer 1.11.1. diff --git a/configure.ac b/configure.ac index b8124a6d..ce1424a9 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ # gstreamer-vaapi package version number m4_define([gst_vaapi_major_version], [1]) m4_define([gst_vaapi_minor_version], [11]) -m4_define([gst_vaapi_micro_version], [0]) -m4_define([gst_vaapi_nano_version], [1]) +m4_define([gst_vaapi_micro_version], [1]) +m4_define([gst_vaapi_nano_version], [0]) m4_define([gst_vaapi_version], [gst_vaapi_major_version.gst_vaapi_minor_version.gst_vaapi_micro_version]) m4_if(gst_vaapi_nano_version, [0], [], @@ -16,17 +16,17 @@ dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0 dnl - interfaces added -> increment AGE dnl - interfaces removed -> AGE = 0 # gstreamer-vaapi library (libtool) version number -m4_define([gst_vaapi_lt_current], [1100]) +m4_define([gst_vaapi_lt_current], [1101]) m4_define([gst_vaapi_lt_revision], [0]) -m4_define([gst_vaapi_lt_age], [1100]) +m4_define([gst_vaapi_lt_age], [1101]) # glib version number m4_define([glib_version], [2.40]) # gstreamer version number -m4_define([gst_version], [1.11.0.1]) -m4_define([gst_plugins_base_version], [1.11.0.1]) -m4_define([gst_plugins_bad_version], [1.11.0.1]) +m4_define([gst_version], [1.11.1]) +m4_define([gst_plugins_base_version], [1.11.1]) +m4_define([gst_plugins_bad_version], [1.11.1]) # Wayland minimum version number m4_define([wayland_api_version], [1.0.2]) diff --git a/gstreamer-vaapi.doap b/gstreamer-vaapi.doap index 2592dd06..d51583bc 100644 --- a/gstreamer-vaapi.doap +++ b/gstreamer-vaapi.doap @@ -27,6 +27,16 @@ <release> <Version> + <revision>1.11.1</revision> + <branch>master</branch> + <name></name> + <created>2017-01-12</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.11.1.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.10.0</revision> <branch>master</branch> <created>2016-11-01</created> |