From 27c55d34eda1cda721704c1e09a8e07c35155bf6 Mon Sep 17 00:00:00 2001 From: Sebastian Dröge Date: Wed, 6 Jul 2016 13:48:07 +0300 Subject: Release 1.9.1 --- ChangeLog | 1261 +++++++++++++++++++++++++++++++++++++++++++++++++- NEWS | 787 +------------------------------ common | 2 +- configure.ac | 14 +- gstreamer-vaapi.doap | 9 + 5 files changed, 1277 insertions(+), 796 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0804da38..eb543a01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,1266 @@ +=== release 1.9.1 === + +2016-07-06 Sebastian Dröge + + * configure.ac: + releasing 1.9.1 + +2016-07-05 20:59:49 +0200 Víctor Manuel Jáquez Leal + + * tests/elements/test-vaapisink.c: + tests: elements: rotate orientation event + +2016-07-01 16:01:54 +0900 Hyunjun Ko + + * configure.ac: + * tests/Makefile.am: + * tests/elements/Makefile.am: + * tests/elements/test-vaapisink.c: + tests: elements: Add testsuite for vaapisink + https://bugzilla.gnome.org/show_bug.cgi?id=765798 + +2016-07-01 16:00:46 +0900 Hyunjun Ko + + * gst-libs/gst/vaapi/gstvaapitypes.h: + * gst-libs/gst/vaapi/gstvaapivalue.c: + * gst/vaapi/gstvaapisink.c: + * gst/vaapi/gstvaapisink.h: + vaapisink: add support for GST_TAG_IMAGE_ORIENTATION + https://bugzilla.gnome.org/show_bug.cgi?id=765798 + +2016-06-29 13:57:02 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: return caps template if no display + This patch is a fix for my bad review of commit 6d73ca8d. The element should + be able to return the available raw caps handled by the VA display, but that + only should happen when there a VA display. If there's none, the element + should use the caps template. + https://bugzilla.gnome.org/show_bug.cgi?id=768161 + +2016-06-29 16:42:18 +1000 Matthew Waters + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: don't require a vaapi display for all caps queries + This delays the requirement of having a GstVaapiDisplay until later + https://bugzilla.gnome.org/show_bug.cgi?id=768161 + +2016-06-28 15:48:39 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapiutils.c: + utils: report VP9 profiles + Add VP9Profile0-3 name mapping. + +2016-06-28 14:05:51 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapi.c: + vaapi: nest includes under USE_ENCODER macro + This is a missed changeset from commit 1c05c53, since also header includes + should be nested. + +2016-06-28 11:54:33 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapi.c: + vaapi: nest encoders under USE_ENCODER macro + Though USE_{JPEG,VP8,VP9,H265}_ENCODER macros definition depend on USE_ENCODER + macro, it is clearer to nest them, showing explicitly the dependency relation. + +2016-06-24 12:05:24 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideocontext.c: + vaapivideocontext: check if query context is NULL + Under certain conditions the element might receive a positive context query + but without a context instance. This situation will lead to a segmentation + fault when traversing the context list in the pipeline. + https://bugzilla.gnome.org/show_bug.cgi?id=767946 + +2016-06-20 13:22:36 -0700 Scott D Phillips + + * gst-libs/gst/vaapi/Makefile.am: + * gst-libs/gst/vaapi/glibcompat.h: + * gst-libs/gst/vaapi/sysdeps.h: + remove unused glibcompat.h + glibcompat.h is no longer doing anything. Remove it. + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=767886 + +2016-06-22 14:28:44 -0700 Scott D Phillips + + * gst-libs/gst/vaapi/gstvaapiencoder_h264.c: + encoder: h264: Use high profile by default + Change defaults for max-bframes, cabac, and dct8x8 to be enabled + by default. This will cause the default profile to be high instead + of baseline. In most situations this is the right decision, and + the profile can still be lowered in the case of caps restrictions. + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=757941 + +2016-06-22 12:15:29 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecodebin.c: + vaapidecodebin: element warning if missing element + Raise an element warning if a required element is not available, thus the + pipeline will post a warning message and the application will be informed. + +2016-06-22 15:11:56 +0300 Hyunjun Ko + + * gst-libs/gst/vaapi/gstvaapidecoder_h265.c: + decoder: h265: fix to release all dpb pictures + Without this, all dpb pictures are not released during flush, + because we used the global dpb_count variable for checking the + dpb fullness which get decremented in dpb_remove_index() + routine during each loop iteration. + https://bugzilla.gnome.org/show_bug.cgi?id=767934 + +2016-06-21 11:48:54 -0400 Nicolas Dufresne + + * common: + Automatic update of common submodule + From ac2f647 to f363b32 + +2016-06-20 19:53:26 +0900 Hyunjun Ko + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipostproc.c: + vaapi: fix minor leaks + https://bugzilla.gnome.org/show_bug.cgi?id=767868 + +2016-06-17 17:00:03 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapi.c: + vaapi: remove an already included header + gst/gst.h is already included in gstcompat.h + +2016-06-17 16:53:26 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecodebin.c: + vaapidecodebin: add vp9 in sink pad template + +2016-06-15 20:19:27 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapisink.c: + vaapisink: return caps template if no display + If vaapisink received a caps query before getting a VA display, it returned + only the surfaces related caps. This behavior broke the autovideosink + negotiation. + This patch returns the pad's template caps if no VA display, otherwise the + caps are crafted as before. + https://bugzilla.gnome.org/show_bug.cgi?id=767699 + +2016-06-15 11:25:23 -0700 Scott D Phillips + + * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c: + decoder: vp9: Update comment about context resets + Clarify that vaapi context resets are never needed for vp9, but + that ensure_context() needs called when the size increases so that + new surfaces can be allocated. + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=767474 + +2016-05-17 15:34:23 -0700 Scott D Phillips + + * gst-libs/gst/vaapi/gstvaapicontext.c: + * gst-libs/gst/vaapi/gstvaapicontext.h: + * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c: + gstvaapicontext: control reset_on_resize with option + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=767474 + +2016-06-14 09:45:22 -0700 Scott D Phillips + + * gst/vaapi/gstvaapivideobufferpool.c: + vaapivideobufferpool: add video meta to config when needed + In cases where we know the video meta must be present, add it to + the pool configuration. + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=766184 + +2016-06-13 10:48:41 -0700 Scott D Phillips + + * gst/vaapi/gstvaapipluginbase.c: + plugins: retry pool config + if gst_buffer_pool_set_config returns FALSE, check the modified + config and retry set_config if the config is still acceptable. + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=766184 + +2016-06-08 18:42:43 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideomemory.h: + vaapivideomemory: internal attributes to methods + Mark as internal the functions used by VA-API dmabuf allocator. + +2016-06-02 15:41:22 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: remove precondition for decide_allocation() + There's no need to check for the display in the plugin object when + decide_allocation() vmethod is called, because the display will created or + re-created along the method execution. + +2016-06-08 18:44:34 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: avoid possible memory leaks + Get the pool config just before use it, to avoid a memory leak if the + allocator cannot be instantiated. Similarly, return FALSE if the configuration + cannot be set, avoid keep a not used allocator in the pool. + +2016-05-31 11:52:57 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: use GstParentBufferMeta + Instead of using the VASurface proxy's notify, which is internal gstvaapi API, + use the GStreamer's GstParentBufferMeta. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-31 08:26:33 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: cache VASurfaces from dmabufs + This patch avoids the creation of a VASurface each time a new input buffer is + processed, caching them in the input buffer itself. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-30 23:55:43 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapisurface_drm.c: + * gst-libs/gst/vaapi/gstvaapisurface_drm.h: + * gst/vaapi/gstvaapipluginbase.c: + libs: change gst_vaapi_surface_new_with_dma_buf_handle() + Instead of passing the data already in GstVideoInfo, let's just pass the + GstVideoInfo structure. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-25 12:31:15 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + plugins: use an unique allocator per pad + Instead of instantiating an allocator per vaapivideobufferpool, only one + allocator is instantiated per element's pad and shared among future pools. + If the pad's caps changes, the allocator is reset. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-25 10:58:01 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapivideobufferpool.c: + * gst/vaapi/gstvaapivideobufferpool.h: + vaapivideobufferpool: share options flag with pluginbase + Originally, vaapivideobufferpool has a set of boolean variables for the + buffer configuration options. + This pach changes these boolean variables for a single bitwise, just as + it is used in pluginbase. Hence, the internal enum was moved to + vaapivideobufferpool header. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-10 15:57:06 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: add gst_vaapi_plugin_base_create_pool() + This patch refactors the code in pluginbase in order to centralize the buffer + pool instantiation. As the buffer pool config may have different options, these + are gathered using a bitwise flag. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-20 18:46:14 +0200 Víctor Manuel Jáquez Leal + + pluginbase negotiates allocator with bufferpool + Originally vaapivideobufferpool instantiates its own allocator regardless the + received configuration, and it relies in custom configuration options to + choose which kind of allocator instantiate. + This patch transfers the responsibility of the allocator instantiate to + vaapipluginbase and pass it to the vaapivideobufferpool through its + configuration. + * gst/vaapi/gstvaapipluginbase.c + + set_dmabuf_allocator(): inserts a dmabuf allocator in the bufferpool + + ensure_sinkpad_buffer_pool(): set a normal vaapi video allocator in + bufferpool configuration + + gst_vaapi_plugin_base_propose_allocation(): call set_dmabuf_allocator() if + needed. + + gst_vaapi_plugin_base_decide_allocation(): set a normal vaapi video + allocator in bufferpool configuration + * gst/vaapi/gstvaapivideobufferpool.c + + gst_vaapi_video_buffer_pool_set_config(): instead of instantiate the + allocator, process the received one through its configuration. + * gst/vaapi/gstvaapivideobufferpool.h: removed + GST_BUFFER_POOL_OPTION_DMABUF_MEMORY since it is not used anymore. + * gst/vaapi/gstvaapivideomemory.c + + gst_vaapi_is_dmabuf_allocator(): new helper function to identify a dmabuf + allocator with the vaapi qdata. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-20 14:39:23 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideobufferpool.c: + vaapivideobufferpool: keep only current video info + Instead of keeping old and new GstVideoInfo video structure, we only keep one, + the current one, the negotiated. The old one is not needed at all. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-23 15:38:07 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapivideomemory.c: + pluginutil: add gst_video_info_force_nv12_if_encoded() + This lines repeat a couple times in the code, so it would be better to put it + a helper function. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-05-20 14:15:53 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapipostproc.c: + * gst/vaapi/gstvaapivideobufferpool.c: + pluginutil: add gst_video_info_changed() helper + This function is shared among different elements, so let factorized it. + https://bugzilla.gnome.org/show_bug.cgi?id=765435 + +2016-06-08 10:14:16 +0900 Hyunjun Ko + + * gst/vaapi/gstvaapipostprocutil.c: + vaapipostproc: Add colorimetry attributes to src caps + https://bugzilla.gnome.org/show_bug.cgi?id=766596 + +2016-06-08 10:17:46 +0900 Hyunjun Ko + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: remove chroma-site and colorimetry from src caps + https://bugzilla.gnome.org/show_bug.cgi?id=766596 + +2016-06-07 14:19:50 -0700 Scott D Phillips + + * gst/vaapi/gstvaapipostproc.c: + * gst/vaapi/gstvaapipostproc.h: + vaapipostproc: add postproc_lock to protect data members + Add a mutex to postproc to protect concurrent access to data members. + Previously set_caps() could release the allowed_srcpad_caps while + transform_caps was in the middle of using it. + Signed-off-by: Scott D Phillips + https://bugzilla.gnome.org/show_bug.cgi?id=766940 + +2016-05-30 11:30:40 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c: + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h: + encoder: vp9: Add simple algorithms for reference picture selection + Added two modes(as properties) for reference picture selection: + ref-mode-0: AltRef and GoldRef pointing to the recent keyframe + and LastRef is pointing to the previous frame. + ref-mode-1: Previous frame (n) as LastRef , n-1 th frame as GoldRef + and n-2 th frame as AltRef + https://bugzilla.gnome.org/show_bug.cgi?id=766048 + +2016-05-30 11:25:52 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c: + encoder: vp9: Define Max frame width and height + https://bugzilla.gnome.org/show_bug.cgi?id=766048 + +2016-05-30 11:25:03 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c: + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h: + encoder: vp9: Add more propertis for tuning encode quality + Added three tuning properties: + 1: filter_level + 2: sharpness_level + 3: luma ac quant-table index + https://bugzilla.gnome.org/show_bug.cgi?id=766048 + +2016-05-30 11:24:14 +0300 Sreerenj Balachandran + + * gst/vaapi/Makefile.am: + * gst/vaapi/gstvaapi.c: + * gst/vaapi/gstvaapiencode_vp9.c: + * gst/vaapi/gstvaapiencode_vp9.h: + Add vp9 encode element to "vaapi" plugin + https://bugzilla.gnome.org/show_bug.cgi?id=766048 + +2016-05-30 11:23:12 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/Makefile.am: + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.c: + * gst-libs/gst/vaapi/gstvaapiencoder_vp9.h: + Add vp9 encoder support in libgstvaapi + https://bugzilla.gnome.org/show_bug.cgi?id=766048 + +2016-05-30 11:22:35 +0300 Sreerenj Balachandran + + * configure.ac: + build: Add check for VP9 encode API support in libva + https://bugzilla.gnome.org/show_bug.cgi?id=766048 + +2016-05-26 11:42:32 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapisurface_drm.c: + gstvaapisurface_drm: fix internal documentation + +2016-05-26 11:41:25 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapisurface_drm.c: + gstvaapisurface_drm: fix code-style + +2016-05-25 12:28:48 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: remove unused header + Remove the include of gst/allocators/allocators.h since it is not used. + +2016-05-25 10:36:33 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideobufferpool.h: + vaapivideobufferpool: remove GL_TEXTURE_UPLOAD_META + Since gstreamer-vaapi is coupled with gstreamer releases, there is no need to + keep compatibility definition. + This patch removes the definition of + GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META since it is in + gst-plugins-base version 1.2.2 + +2016-05-23 22:49:11 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: add gst_vaapi_buffer_pool_caps_is_equal() + This is a helper function to improve the readability of + ensure_sinkpad_buffer_pool(). It makes clearer when the buffer pool needs to be + re-instantiated. + +2016-05-24 16:29:33 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: deactivate buffer pool before unref + This buffer pool may still be processing buffers when a caps renegotiation is + done. This one-liner patch deactivates the pool to drain it before it + de-allocation. + +2016-05-24 16:22:24 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: no sinkpad bufferpool when decoder + Right now, the decoders create a buffer pool for their sink pad which is not + used at all, because the decoders have never proposed it to upstream. + This patch avoids the buffer pool instantiating when the element inherits from + the GstVideoDecoder class. + +2016-05-24 13:39:25 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: avoid to get/set pool config twice + This patch is a bit of optimization, since the bufferpool configuration is get + when the pool is created. Hence, we only need to request it when the pool from + the allocation query is reused. + +2016-05-13 13:14:23 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: destroy pool earlier if non-vaapi + If the offered pool in decide_allocation() vmethod doesn't have the + VAAPI_VIDEO_META option, it is destroyed immediatly and the pointer cleared, + so it could be created later. + +2016-05-23 22:30:04 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideobufferpool.c: + vaapivideobufferpool: split caps validation + When validating the caps from bufferpool config, this patch distinguishes the + error from no caps received (NULL) from the invalid caps (cannot be converted + into GstVideoInfo structure). + +2016-05-23 22:21:15 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + plugins: check for caps in query earlier + Check for caps as soon gst_query_parse_allocation() returns. + +2016-05-23 23:13:55 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + plugins: remove unused variables + This variables stopped to be used since commit 001a5c63, which removed the + gstvaapiuploader. + +2016-05-23 18:47:46 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: fix potential memleak from commit 9159328 + If gst_video_info_from_caps() fails it is required to unref the instantiated + pool. + +2016-05-23 18:04:47 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: handle if gst_video_info_from_caps() fails + Return FALSE is the received caps cannot be transformed into a GstVideoInfo + structure. + +2016-05-23 17:55:35 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: handle if gst_video_info_from_caps() fails + Let's play safe and return error if, somehow, the received caps are wrong. + +2016-05-23 17:47:36 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: relate errors to instance + Use GST_{ERROR,WARNING}_OBJECT instead of GST_{ERROR,WARNING}, thus the logs + will show the name of the vaapipluginbase instance that failed. + Also, the code-style is fixed, where some error labels need to be surrounded + by braces. + +2016-05-20 21:01:02 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapisink.c: + plugins: use GstVideoInfo accessors + Instead of access to GstVideInfo members directly, use their accessors + macros. This patch makes more resistance to future changes in GStreamer core. + +2016-05-20 19:33:39 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapisurface_drm.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipostproc.c: + * tests/simple-encoder.c: + remove spurious gst_video_info_init() + gst_video_info_set_format() and gst_video_info_from_caps() call, internally, + gst_video_info_init(), hence it is not required to call it before them. This + patch removes these spurious calls. + +2016-05-20 19:15:11 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + vaapipluginbase: code-style: rename goto label + The error labels have error_ prefix, but this one. + +2016-05-19 16:34:50 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideomemory.c: + vaapivideomemory: use allocator custom alloc flag + Instead of a dummy alloc() vmethod, the allocator instance set the flag + GST_ALLOCATOR_FLAG_CUSTOM_ALLOC, which is used by the framework to avoid call + gst_allocator_alloc() on the allocator. + +2016-05-06 13:17:47 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideobufferpool.c: + vaapivideobufferpool: relate errors to instance + Use GST_ERROR_OBJECT instead of GST_ERROR, thus the logs will show the name of + the vaapivideobufferpool instance that failed. + +2016-05-10 16:14:48 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.c: + plugins: remove gst_vaapi_plugin_base_set_pool_config() + This function helper make sense for GStreamer 1.2, but it is not helpful for + greater version since the validation is already done in the API implementation. + Thus, it is removed. + +2016-05-18 17:05:03 +0300 Sreerenj Balachandran + + * gst/vaapi/gstvaapipluginbase.c: + gstvaapipluginbase: Fix typo in doc + +2016-05-13 11:45:20 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_h264.c: + encoder : h264: Disable b-frame encode in low-power mode + This is a workaround since vaapi-intel-driver doesn't have + support for B-frame encode when utilizing low-power-enc + hardware block. + Fixme :We should query the VAConfigAttribEncMaxRefFrames + instead of blindly disabling b-frame support and set b/p frame count, + buffer pool size etc based on the query result. + https://bugzilla.gnome.org/show_bug.cgi?id=766050 + +2016-05-13 11:44:57 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_h264.c: + * gst-libs/gst/vaapi/gstvaapiencoder_h264.h: + encoder: h264 : Use "tune=low-power" for enabling lowpower encode + Remove the duplicate property "low-power-enc" and use the + tune property for enabling low power encoding mode. + https://bugzilla.gnome.org/show_bug.cgi?id=766050 + +2016-05-11 12:06:38 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder.c: + gstvaapiencoder:Use internal api to dervie configured VAEntrypoint + https://bugzilla.gnome.org/show_bug.cgi?id=766050 + +2016-05-11 12:05:36 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder.c: + * gst-libs/gst/vaapi/gstvaapiencoder_h264.c: + * gst-libs/gst/vaapi/gstvaapiencoder_h264.h: + encoder: h264: Add support of low power/high performance encoding mode + Added a new property "low-power-enc" for enabling low power + encoding mode. Certain encoding tools may not be available + with the VAEntrypointEncSliceLP. + https://bugzilla.gnome.org/show_bug.cgi?id=766050 + +2016-05-11 12:04:46 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapitypes.h: + * gst-libs/gst/vaapi/gstvaapiutils.c: + * gst-libs/gst/vaapi/gstvaapivalue.c: + Add mapping for Macroblock level rate control (VA_RC_MB) + +2016-05-11 12:03:08 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapidisplay.c: + gstvaapidisplay: Add VAEntrypointEncSliceLP support + https://bugzilla.gnome.org/show_bug.cgi?id=766050 + +2016-05-11 11:59:59 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiprofile.c: + * gst-libs/gst/vaapi/gstvaapiprofile.h: + gstvaapiprofile : Add VAEntrypointEncSliceLP definitions + This is for implementations that supports low_power/high_performance + variant for slice level encode. + https://bugzilla.gnome.org/show_bug.cgi?id=766050 + +2016-05-05 18:23:10 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostprocutil.c: + vaapipostproc: negotiate frame size fixation + Refactor _fixate_frame_size(). Now, instead of fixating the frame size only + using the sink caps, also it use the next capsfilter. + This code is a shameless copy of gst_video_scale_fixate_caps() from + https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst/videoscale/gstvideoscale.c?id=1.8.1#n634 + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-05-06 10:50:10 +0200 Scott D Phillips + + * gst/vaapi/gstvaapipostprocutil.c: + vaapipostproc: don't use GstVideoInfo for src caps + Instead of using gst_video_info_to_caps () to generated the fixed src caps, + this patch enables the first step for caps negotiation with a possible + following caps filter. + _get_preferred_caps() will traverse the possible src caps looking for the one + wit the preferred feature and the preferred color format. Then the color + format, the frame size and the frame rate are fixated. + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-05-05 15:32:36 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + * gst/vaapi/gstvaapipostprocutil.c: + * gst/vaapi/gstvaapipostprocutil.h: + vaapipostproc: move gst_vaapipostproc_fixate_srccaps() + Move gst_vaapipostproc_fixate_srccaps() to gstvaapiposptprocutil. + No functional changes. + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-05-05 15:19:02 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: simplify code + Change a convoluted snippet to find the preferred color format in the peer + caps. + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-05-05 15:16:02 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: use othercaps for preferred caps + Instead of the allowed_srcpad_caps variable, this patch uses the othercaps + from fixate_caps() vmethod to find the preferred caps feature and color + format. + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-05-05 13:46:11 +0200 Scott D Phillips + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: add fixate_caps() vmethod + Instead of fixating the srcpad caps in transform_caps() vmethod, this patch + implements the fixate_caps() vmethod and moves code around. + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-05-05 12:07:59 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/Makefile.am: + * gst/vaapi/gstvaapipostproc.c: + * gst/vaapi/gstvaapipostprocutil.c: + * gst/vaapi/gstvaapipostprocutil.h: + vaapipostproc: set early properties restrictions + When running transform_caps() vmethod, returning the srcpad caps, the caps are + early restricted to the element properties set: width, height, format and + force keep aspect. + A new file was added gstvaapipostprocutil.{c,h} where the utilities functions + are stored. + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-04-25 13:45:04 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: log the caps transformation + https://bugzilla.gnome.org/show_bug.cgi?id=758548 + +2016-04-27 21:20:32 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: no GLTextureUpload in sinkpad + As the vaapipostproc does not process frames with the VideoGLTextureUpload + meta, the feature is removed from the sink pad template. + https://bugzilla.gnome.org/show_bug.cgi?id=765931 + +2015-09-28 08:49:39 +0100 Julien Isorce + + * gst/vaapi/gstvaapivideobufferpool.c: + vaapibufferpool: do not create texture upload meta if dmabuf + https://bugzilla.gnome.org/show_bug.cgi?id=755072 + +2016-05-06 12:16:26 +0200 Víctor Manuel Jáquez Leal + + * git.mk: + build: update git.mk + +2016-04-29 13:11:48 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginbase.h: + plugin: fix macro processor check + Instead of #ifdef it should be used #if becasuse USE_GST_GL_HELPERS is always + defined in config.h, but it would be 0 or 1 depending on the configure output. + https://bugzilla.gnome.org/show_bug.cgi?id=765702 + +2016-04-29 12:53:06 +0200 Víctor Manuel Jáquez Leal + + * tests/test-display.c: + tests: display: guard possible unused variables + https://bugzilla.gnome.org/show_bug.cgi?id=765702 + +2016-04-29 12:48:44 +0200 Víctor Manuel Jáquez Leal + + * tests/codec.c: + * tests/decoder.c: + * tests/image.c: + * tests/output.c: + * tests/simple-decoder.c: + * tests/test-decode.c: + * tests/test-display.c: + * tests/test-filter.c: + * tests/test-h264.c: + * tests/test-jpeg.c: + * tests/test-mpeg2.c: + * tests/test-mpeg4.c: + * tests/test-subpicture-data.c: + * tests/test-subpicture.c: + * tests/test-surfaces.c: + * tests/test-textures.c: + * tests/test-vc1.c: + * tests/test-windows.c: + tests: inforce gstreamer code-style + +2016-04-27 17:10:26 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_h265.c: + encoder: h265: Enable cu_qp_delta_enabled_flag for CBR + It seems driver requires enablement of cu_qp_delta_enabled_flag + for modifying QP values to controll the CBR mode bitrate. + https://bugzilla.gnome.org/show_bug.cgi?id=749852 + +2016-04-27 17:06:09 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiencoder_h265.c: + encoder: h265: Add CBR Encoding support + https://bugzilla.gnome.org/show_bug.cgi?id=749852 + +2015-11-27 05:09:10 +0000 Julien Isorce + + * gst-libs/gst/vaapi/gstvaapisurface.c: + gstvaapisurface: explicitely clear TILING flag if dmabuf + https://bugzilla.gnome.org/show_bug.cgi?id=755072 + +2015-10-04 23:44:16 +0100 Julien Isorce + + * gst-libs/gst/vaapi/gstvaapisurface_drm.c: + gstvaapisurface_drm: release image when done + Otherwise intel-vaapi-driver will fail to process the exported surface because + it will find it is currently derived, so considered as busy. + https://bugzilla.gnome.org/show_bug.cgi?id=755072 + +2015-09-26 06:25:12 +0100 Julien Isorce + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: already have a surface proxy if dmabuf + https://bugzilla.gnome.org/show_bug.cgi?id=755072 + +2016-03-11 08:58:51 +0000 Julien Isorce + + * gst/vaapi/gstvaapipostproc.c: + various gst-indent + +2016-04-21 15:14:47 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + vaapidecode: search driver in whitelist + If the backend driver vendor string is not in a white-list, and the + environment variable GST_VAAPI_ALL_DRIVERS is not set either, the decoder will + change it state from NULL to READY, hence the auto-plug mechanism will look + for another decoder. + This patch assumes the GstContext has already being shared along the pipeline + and the element has a valid GstVaapiDisplay instance. + https://bugzilla.gnome.org/show_bug.cgi?id=764673 + +2016-04-21 12:57:30 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapiencode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + * gst/vaapi/gstvaapipostproc.c: + * gst/vaapi/gstvaapisink.c: + plugins: rework set_context() vmethod definition + In bug 757598 was added the set_context() vmethod chain up in + GstVaapiPluginBase. But it is buggy, since the parent_class address is + assigned to the last element which called gst_vaapi_plugin_base_class_init(). + No error has shown up since none of the element's base classes redefined + set_context() vmethod from GstElement, so always the correct function was + called. Still this code is wrong and this patch make it right. + Since set_context() is the same code, a macro is used to implement that code + in all the gst-vaapi elements. + https://bugzilla.gnome.org/show_bug.cgi?id=765368 + +2016-04-15 17:57:25 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipostproc.c: + vaapipostproc: resize if negotiated and allocation caps are different + Since commit 859a2b2, in vaapidecode, allocation query can be different from + the negotiated caps. + When connecting the vaapidecoder to the vaapipostprocessor, the last one will + resize the frame to the negotiated, if and only if, some other parameter is + activated to avoid the passthrough. If it is not, the surface won't be mapped + into a image. If not, the image won't be resized and the output buffer would be + mapped. + This patch will break the passthrough if the allocation query is different + from the negotiation caps, forcing the resizing. + https://bugzilla.gnome.org/show_bug.cgi?id=765095 + +2016-04-05 13:09:37 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: improve code readability + No functional changes. + +2016-04-05 13:37:40 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: move GstCapsFeatures near to its use + Move the handling of the GstCapsFeatures just after it is used, in order to + avoid handling its memory. + +2016-04-05 13:07:14 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: caps negotiation checks + Check that GLUploadTexture is not negotatiated if gstreamer-vaapi is not + compiled with GL support. + +2016-03-10 16:43:16 +0100 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + * gst/vaapi/gstvaapipostproc.c: + plugins: remove param in gst_vaapi_plugin_base_decide_allocation() + +2016-03-10 16:42:04 +0100 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: bail early if not caps in decide_allocation() + +2016-03-29 14:17:54 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapipostproc.c: + plugin: use allowed caps filter from element + Instead of using the srcpad template caps for filtering the peer caps, the + function gst_vaapi_find_preferred_caps_feature(), now receives a new parameter + for the element's allowed caps. + With this modification, the vaapipostproc element simplifies a bit its code. + https://bugzilla.gnome.org/show_bug.cgi?id=765223 + +2016-04-18 17:28:51 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapipostproc.c: + plugin: remove function parameter + The native format parameter in gst_vaapi_find_preferred_caps_feature() can be + saved if the out format is used for both: in and out. Thus the code is more + readable. + https://bugzilla.gnome.org/show_bug.cgi?id=765223 + +2016-04-18 17:17:58 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: warns if driver will do color conversions + If the downstream feature is system memory, the surface has to be mapped, + hence a warning message is logged saying that the driver has to do color + conversions. This might be troublesome because not all the color conversion + combinations are supported by the VA-API drivers, and there is not a reliable + way to know them before hand. + https://bugzilla.gnome.org/show_bug.cgi?id=765223 + +2016-03-29 13:28:27 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginutil.c: + plugin: honour negotiated format + Instead of setting the requested format by the caller, the function + gst_vaapi_find_preferred_caps_feature() now returns, in the output parameter, + the negotiated format. + A new helper function was added: gst_vaapi_find_preferred_format(), which, + given the format list from the negotiated caps, will choose the best one, if + possible, given the native format. + https://bugzilla.gnome.org/show_bug.cgi?id=765223 + +2016-03-28 19:26:02 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginutil.c: + plugin: simplify caps feature selection + This patch simplifies the function gst_vaapi_find_preferred_caps_feature(). + Instead of intersecting custom caps to find the preferred feature, the peer + caps are traversed in order to find the preferred feature, according to an + ordered feature priority list. + In the case of GLTextureUploadMeta, the colour format is computed using + GstVideoInfo of the selected fixed caps. + https://bugzilla.gnome.org/show_bug.cgi?id=765223 + +2016-03-31 16:39:08 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: use macros for GstVideoInfo + Instead of accessing directly to the members of the structure, use the macros. + +2016-04-14 17:02:23 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: refactor is_display_resolution_changed() + Make the comparisons more readable and simple. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-04-14 16:43:07 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapidecode.h: + vaapidecode: keep only display_{width,height} + Instead of keeping the structure GstVideoInfo when we are using its width and + height, we only keep these two guints. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-04-14 16:31:34 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: decoded_info is valid at src caps update + As decoded_info is assured to be valid when gst_vaapidecode_update_src_caps() + is called, then we don't need to verify or replace it with the sinkpad info + (reference state). + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-04-14 16:22:25 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: always a valid format in decoded_info + Always set a valid format in decoded_info class variable. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-03-25 15:31:28 +0100 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: code style fixes + No functional changes. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-04-14 16:10:02 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: init {decoded,display}_info at open() + It is required to initialize {decoded,display}_info variables when the decoder + is open, not only at instance initialization. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-03-28 15:30:28 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapidecode.h: + vaapidecode: remove spurious class variables + active, do_pool_renego and do_outstate_renego class variables were used to + indicate when negotiate downstream once, but now that each time a new surface + resolution is pop out a renegotation verified, these variable are not required + anymore. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-04-14 15:46:32 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + * gst/vaapi/gstvaapipostproc.c: + remove custom allocation query + When resolving bug 753914, a custom allocation query was added, overlapping + the responsibilities of GstVideoDecoder. + But with the merge of the patches from bug 764421 this overlapping was not + required anymore. This patch restores this situation setting the + allocation_caps in the GstVideoCodecState when needed. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-04-14 10:04:47 +0100 Julien Isorce + + * common: + Automatic update of common submodule + From 6f2d209 to ac2f647 + +2016-04-13 15:44:20 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapidecodebin.c: + * gst/vaapi/gstvaapipostproc.c: + plugins: disable GL_TEXTURE_UPLOAD if no EGL/GLX + The plugins should not expose the feature meta:GstVideoGLTextureUploadMeta in + their caps templates if they were not compiled either with GLX or EGL support. + +2016-04-13 20:33:32 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapipluginutil.c: + plugins: fix compilation when EGL/GLX is disabled + The compiler might complain of gst_vaapi_create_display_from_handle() being + unused if both EGL and GLX are disabled. This patch avoid that compilation + error. + +2016-04-13 14:09:00 +0200 Michael Olbrich + + * gst-libs/gst/vaapi/gstvaapicodedbufferpool.c: + libs: fix deleting a GstVaapiCodedBufferPool object + Call gst_vaapi_video_pool_finalize() in coded_buffer_pool_finalize(). + Otherwise it is not called when the pool is destroyed and all objects + referenced by the GstVaapiVideoPool are never released. + https://bugzilla.gnome.org/show_bug.cgi?id=764993 + +2016-04-07 18:03:42 +0200 Víctor Manuel Jáquez Leal + + * gst-libs/gst/vaapi/gstvaapisurface.c: + surface: destroy derived image + If gst_vaapi_image_new_with_image() fails, the created derived image should be + destroyed, otherwise the surface cannot be processed because is being used. + https://bugzilla.gnome.org/show_bug.cgi?id=764607 + +2016-03-18 20:00:52 -0300 Thiago Santos + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: add stop function + Clear any status on the current stream: + stored frames, caps and decoder configuration + https://bugzilla.gnome.org/show_bug.cgi?id=763460 + +2016-04-01 14:00:28 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c: + decoder: vp9: Align with the ABI changes in vp9 codecparser + The subsampling_x, subsampling_y, bit_depth, color_space and color_range + fileds are moved from GstVp9FrameHdr to the global GstVp9Parser structure. + These fields are only present in keyframe or intra-only frame, no need to + duplicate them for inter-frames. + https://bugzilla.gnome.org/show_bug.cgi?id=764082 + +2016-04-01 13:59:59 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapidecoder_vp9.c: + decoder: vp9 : Add 10bit decoding support (Profile2) + https://bugzilla.gnome.org/show_bug.cgi?id=764082 + +2016-04-01 13:57:45 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapiprofile.c: + * gst-libs/gst/vaapi/gstvaapiprofile.h: + gstvaapiporfile: Add more VP9 profile definitions + https://bugzilla.gnome.org/show_bug.cgi?id=764082 + +2016-02-03 20:34:49 +0100 Víctor Manuel Jáquez Leal + + * Makefile.am: + * configure.ac: + build: possibility to disable tests + The configuration option --disable-examples will disable the compilation of + the sample apps in tests/ directory. + +2016-03-29 14:25:55 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapiencode_h264.c: + * gst/vaapi/gstvaapiencode_h265.c: + * gst/vaapi/gstvaapiencode_jpeg.c: + * gst/vaapi/gstvaapiencode_mpeg2.c: + * gst/vaapi/gstvaapiencode_vp8.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapisink.c: + unify caps template for VAAPI encoders and decoders + There is no difference in VAAPI surface caps between encoders and decoders. + Thus, the patch makes a simplification by removing encoders specific caps and + shares the same definition of VAAPI surfaces caps for all the elements. + +2016-03-10 17:42:55 +0100 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: move gst_vaapidecode_negotiate() code + With it we can remove a function declaration, making the code a bit + more readable. + https://bugzilla.gnome.org/show_bug.cgi?id=764316 + +2016-03-29 13:50:00 +0200 Víctor Manuel Jáquez Leal + + * docs/plugins/gstreamer-vaapi-plugins-docs.xml.in: + * docs/plugins/gstreamer-vaapi-plugins-sections.txt: + * gst/vaapi/gstvaapidecode.c: + docs: generate vaapijpegdec documentation + https://bugzilla.gnome.org/show_bug.cgi?id=764314 + +2016-03-30 14:37:21 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/gstvaapidecoder_h265.c: + decoder: h265: Fix offset calculation when there is more than one vps/sps/pps present in codec_data + The array_completeness, reserved bit and num_nal_units fields + in HEVCDecoderConfigurationRecord will be present for each VPS/SPS/PPS array list, + but not for each occurance of similar headers. + https://bugzilla.gnome.org/show_bug.cgi?id=764274 + +2016-03-29 15:34:38 +0300 Sreerenj Balachandran + + * gst-libs/gst/vaapi/video-format.c: + video-format: Keep the HW order preference while mapping to GstVideoFormats + +2016-03-29 15:02:46 +0300 Sreerenj Balachandran + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginutil.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapivideomemory.c: + gst/vaapi: keep precedence for NV12 over I420 + Use NV12 as default "assumption" format all over. + NV12 is the default high priority format used my most of the + vaapi-drivers. + +2016-03-29 14:34:37 +0300 Sreerenj Balachandran + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: Use video format derived from decoded surface as default src pad format + Use the surface format derived from first decoded surface + to negotiate the downstream video format capabilities. + https://bugzilla.gnome.org/show_bug.cgi?id=759181 + +2016-03-29 14:34:00 +0300 Scott D Phillips + + * gst-libs/gst/vaapi/gstvaapiimage.c: + * gst-libs/gst/vaapi/video-format.c: + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginutil.h: + * gst/vaapi/gstvaapisink.c: + Add P010 video format support + The P010 video format is the native format used by the vaapi intel driver + for HEVCMain10 decode . Add support for planes and images of this video format. + https://bugzilla.gnome.org/show_bug.cgi?id=759181 + +2016-03-27 09:11:00 +0000 Stephen + + * gst-libs/gst/vaapi/gstvaapiutils_x11.c: + libs: x11: allows 30-bit colour depth + The colour depth is clamped to 24 when it is not equal {15,16,24,32}. But this + fails with the NVIDIA binary driver as it doesn't advertise a TrueColor visual + with a depth of 24 (only 30 and 32). Allowing the depth to be 30, lets everything + work as expected. + https://bugzilla.gnome.org/show_bug.cgi?id=764256 + +2016-03-28 13:13:56 +0200 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapivideometa_texture.c: + gltextureupload: use an array for texture type + Instead of using a single value for the texture type, use an array with 4 + elements, just as the GstVideoGLTextureUploadMeta, avoiding a buffer + overflow. + https://bugzilla.gnome.org/show_bug.cgi?id=764231 + +2016-03-24 15:09:43 +0200 Sreerenj Balachandran + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapipluginbase.c: + vaapidecode: Fix decide_allocation handling + Set the already configured pool in decide_allocation query + in cases where pool renegotiation is not required. + https://bugzilla.gnome.org/show_bug.cgi?id=753914 + +2016-03-24 15:09:15 +0200 Sreerenj Balachandran + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: Derive and save the decoded surface format + After the decoding of first frame, try to extract the exact + decoded surface format using vaDeriveImage and keep this + as the format in decoded_info. + https://bugzilla.gnome.org/show_bug.cgi?id=753914 + +2016-03-24 15:08:50 +0200 Sreerenj Balachandran + + * gst/vaapi/gstvaapidecode.c: + * gst/vaapi/gstvaapidecode.h: + * gst/vaapi/gstvaapipluginbase.c: + * gst/vaapi/gstvaapipluginbase.h: + * gst/vaapi/gstvaapipostproc.c: + Make vaapidecode to advertise the cropped values in srcpad, but negotiate pool only if needed + -- Maintaing decoded surface resoluton and actual display resoultion separately + -- Before pushing every frames downstream, check for the requirement of pool negoation and + output_state negotiation: This is needed to avoid multiple issuses with cropping, + multi-resoluton video handling, more complex multi resolution decode scenarios for vp9decode, + possible wrong behaviour from upstream element to report uncropped values etc. Due to these reasons, + We can't just reliably use the resolution change notification from libgstvaapi for pool renegotiation too. + This is slight overhead, but safe enough. Optimization could be possible though. + https://bugzilla.gnome.org/show_bug.cgi?id=753914 + +2016-03-24 15:08:27 +0200 Sreerenj Balachandran + + * gst/vaapi/gstvaapidecode.c: + vaapidecode: Delay the output format setting until we have a decoded surface + This will help to consoidate the out caps negotiation to a single place, + which will make the code simpler, allows to get the exact decoded format + if needed and the selected chroma type too. + https://bugzilla.gnome.org/show_bug.cgi?id=753914 + +2016-03-24 13:36:24 +0100 Víctor Manuel Jáquez Leal + + * gst/vaapi/gstvaapidecode.h: + vaapidecode: GST_VAAPIDECODE macro is a cast + This patch is the continuation of commit 1e1d3b1d because the function + gst_vaapidecode_get_type() got undefined since then. + Now, the macro GST_VAAPIDECODE is a simple cast to the GstVaapiDecode + structure. The rest of the GObject handling macros were deleted too. + +2016-03-24 13:34:18 +0200 Sebastian Dröge + + * configure.ac: + Back to development + === release 1.8.0 === -2016-03-24 Sebastian Dröge +2016-03-24 13:11:05 +0200 Sebastian Dröge + * ChangeLog: + * NEWS: * configure.ac: - releasing 1.8.0 + * gstreamer-vaapi.doap: + Release 1.8.0 === release 1.7.91 === diff --git a/NEWS b/NEWS index ee7f213e..4c3baabd 100644 --- a/NEWS +++ b/NEWS @@ -1,786 +1 @@ -# GStreamer 1.8 Release Notes - -**GStreamer 1.8.0 was released on 24 March 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.8/][latest] for the latest -version of this document. - -*Last updated: Thursday 24 March 2016, 10:00 UTC [(log)][gitlog]* - -[latest]: https://gstreamer.freedesktop.org/releases/1.8/ -[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.8/release-notes-1.8.md - -## Highlights - -- **Hardware-accelerated zero-copy video decoding on Android** - -- **New video capture source for Android using the android.hardware.Camera API** - -- **Windows Media reverse playback** support (ASF/WMV/WMA) - -- **New tracing system** provides support for more sophisticated debugging tools - -- **New high-level GstPlayer playback convenience API** - -- **Initial support for the new [Vulkan][vulkan] API**, see - [Matthew Waters' blog post][vulkan-in-gstreamer] for more details - -- **Improved Opus audio codec support**: Support for more than two channels; MPEG-TS demuxer/muxer can now handle Opus; - [sample-accurate][opus-sample-accurate] encoding/decoding/transmuxing with - Ogg, Matroska, ISOBMFF (Quicktime/MP4), and MPEG-TS as container; - [new codec utility functions for Opus header and caps handling][opus-codec-utils] - in pbutils library. The Opus encoder/decoder elements were also moved to - gst-plugins-base (from -bad), and the opus RTP depayloader/payloader to -good. - - [opus-sample-accurate]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiometa.html#GstAudioClippingMeta - [opus-codec-utils]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpbutilscodecutils.html - -- **GStreamer VAAPI module now released and maintained as part of the GStreamer project** - - [vulkan]: https://www.khronos.org/vulkan - [vulkan-in-gstreamer]: http://ystreet00.blogspot.co.uk/2016/02/vulkan-in-gstreamer.html - -## Major new features and changes - -### Noteworthy new API, features and other changes - -- New GstVideoAffineTransformationMeta meta for adding a simple 4x4 affine - transformation matrix to video buffers - -- [g\_autoptr()](https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autoptr) - support for all types is exposed in GStreamer headers now, in combination - with a sufficiently-new GLib version (i.e. 2.44 or later). This is primarily - for the benefit of application developers who would like to make use of - this, the GStreamer codebase itself will not be using g_autoptr() for - the time being due to portability issues. - -- GstContexts are now automatically propagated to elements added to a bin - or pipeline, and elements now maintain a list of contexts set on them. - The list of contexts set on an element can now be queried using the new functions - [gst\_element\_get\_context()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-context) - and [gst\_element\_get\_contexts()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-contexts). GstContexts are used to share context-specific configuration objects - between elements and can also be used by applications to set context-specific - configuration objects on elements, e.g. for OpenGL or Hardware-accelerated - video decoding. - -- New [GST\_BUFFER\_DTS\_OR\_PTS()](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-DTS-OR-PTS:CAPS) - convenience macro that returns the decode timestamp if one is set and - otherwise returns the presentation timestamp - -- New GstPadEventFullFunc that returns a GstFlowReturn instead of a gboolean. - This new API is mostly for internal use and was added to fix a race condition - where occasionally internal flow error messages were posted on the bus when - sticky events were propagated at just the wrong moment whilst the pipeline - was shutting down. This happened primarily when the pipeline was shut down - immediately after starting it up. GStreamer would not know that the reason - the events could not be propagated was because the pipeline was shutting down - and not some other problem, and now the flow error allows GStreamer to know - the reason for the failure (and that there's no reason to post an error - message). This is particularly useful for queue-like elements which may need - to asynchronously propagate a previous flow return from downstream. - -- Pipeline dumps in form of "dot files" now also show pad properties that - differ from their default value, the same as it does for elements. This is - useful for elements with pad subclasses that provide additional properties, - e.g. videomixer or compositor. - -- Pad probes are now guaranteed to be called in the order they were added - (before they were called in reverse order, but no particular order was - documented or guaranteed) - -- Plugins can now have dependencies on device nodes (not just regular files) - and also have a prefix filter. This is useful for plugins that expose - features (elements) based on available devices, such as the video4linux - plugin does with video decoders on certain embedded systems. - -- gst\_segment\_to\_position() has been deprecated and been replaced by the - better-named gst\_segment\_position\_from\_running\_time(). At the same time - gst\_segment\_position\_from\_stream\_time() was added, as well as \_full() - variants of both to deal with negative stream time. - -- GstController: the interpolation control source gained a new monotonic cubic - interpolation mode that, unlike the existing cubic mode, will never overshoot - the min/max y values set. - -- GstNetAddressMeta: can now be read from buffers in language bindings as well, - via the new gst\_buffer\_get\_net\_address\_meta() function - -- ID3 tag PRIV frames are now extraced into a new GST\_TAG\_PRIVATE\_DATA tag - -- gst-launch-1.0 and gst\_parse\_launch() now warn in the most common case if - a dynamic pad link could not be resolved, instead of just silently - waiting to see if a suitable pad appears later, which is often perceived - by users as hanging -- they are now notified when this happens and can check - their pipeline. - -- GstRTSPConnection now also parses custom RTSP message headers and retains - them for the application instead of just ignoring them - -- rtspsrc handling of authentication over tunneled connections (e.g. RTSP over HTTP) - was fixed - -- gst\_video\_convert\_sample() now crops if there is a crop meta on the input buffer - -- The debugging system printf functions are now exposed for general use, which - supports special printf format specifiers such as GST\_PTR\_FORMAT and - GST\_SEGMENT\_FORMAT to print GStreamer-related objects. This is handy for - systems that want to prepare some debug log information to be output at a - later point in time. The GStreamer-OpenGL subsystem is making use of these - new functions, which are [gst\_info\_vasprintf()][gst_info_vasprintf], - [gst\_info\_strdup\_vprintf()][gst_info_strdup_vprintf] and - [gst\_info\_strdup\_printf()][gst_info_strdup_printf]. - -- videoparse: "strides", "offsets" and "framesize" properties have been added to - allow parsing raw data with strides and padding that do not match GStreamer - defaults. - -- GstPreset reads presets from the directories given in GST\_PRESET\_PATH now. - Presets are read from there after presets in the system path, but before - application and user paths. - -[gst_info_vasprintf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-vasprintf -[gst_info_strdup_vprintf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-strdup-vprintf -[gst_info_strdup_printf]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#gst-info-strdup-printf - -### New Elements - -- [netsim](): a new (resurrected) element to simulate network jitter and - packet dropping / duplication. - -- New VP9 RTP payloader/depayloader elements: rtpvp9pay/rtpvp9depay - -- New [videoframe_audiolevel]() element, a video frame synchronized audio level element - -- New spandsp-based tone generator source - -- New NVIDIA NVENC-based H.264 encoder for GPU-accelerated video encoding on - suitable NVIDIA hardware - -- [rtspclientsink](), a new RTSP RECORD sink element, was added to gst-rtsp-server - -- [alsamidisrc](), a new ALSA MIDI sequencer source element - -### Noteworthy element features and additions - -- *identity*: new ["drop-buffer-flags"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-identity.html#GstIdentity--drop-buffer-flags) - property to drop buffers based on buffer flags. This can be used to drop all - non-keyframe buffers, for example. - -- *multiqueue*: various fixes and improvements, in particular special handling - for sparse streams such as substitle streams, to make sure we don't overread - them any more. For sparse streams it can be normal that there's no buffer for - a long period of time, so having no buffer queued is perfectly normal. Before - we would often unnecessarily try to fill the subtitle stream queue, which - could lead to much more data being queued in multiqueue than necessary. - -- *multiqueue*/*queue*: When dealing with time limits, these elements now use the - new ["GST_BUFFER_DTS_OR_PTS"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html#GST-BUFFER-DTS-OR-PTS:CAPS) - and ["gst_segment_to_running_time_full()"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstSegment.html#gst-segment-to-running-time-full) - API, resulting in more accurate levels, especially when dealing with non-raw - streams (where reordering happens, and we want to use the increasing DTS as - opposed to the non-continuously increasing PTS) and out-of-segment input/output. - Previously all encoded buffers before the segment start, which can happen when - doing ACCURATE seeks, were not taken into account in the queue level calculation. - -- *multiqueue*: New ["use-interleave"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave) - property which allows the size of the queues to be optimized based on the input - streams interleave. This should only be used with input streams which are properly - timestamped. It will be used in the future decodebin3 element. - -- *queue2*: new ["avg-in-rate"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-queue2.html#GstQueue2--avg-in-rate) - property that returns the average input rate in bytes per second - -- audiotestsrc now supports all audio formats and is no longer artificially - limited with regard to the number of channels or sample rate - -- gst-libav (ffmpeg codec wrapper): map and enable JPEG2000 decoder - -- multisocketsink can, on request, send a custom GstNetworkMessage event - upstream whenever data is received from a client on a socket. Similarly, - socketsrc will, on request, pick up GstNetworkMessage events from downstream - and send any data contained within them via the socket. This allows for - simple bidirectional communication. - -- matroska muxer and demuxer now support the ProRes video format - -- Improved VP8/VP9 decoding performance on multi-core systems by enabling - multi-threaded decoding in the libvpx-based decoders on such systems - -- appsink has a new ["wait-on-eos"](https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-appsink.html#GstAppSink--wait-on-eos) - property, so in cases where it is uncertain if an appsink will have a consumer for - its buffers when it receives an EOS this can be set to FALSE to ensure that the - appsink will not hang. - -- rtph264pay and rtph265pay have a new "config-interval" mode -1 that will - re-send the setup data (SPS/PPS/VPS) before every keyframe to ensure - optimal coverage and the shortest possibly start-up time for a new client - -- mpegtsmux can now mux H.265/HEVC video as well - -- The MXF muxer was ported to 1.x and produces more standard conformant files now - that can be handled by more other software; The MXF demuxer got improved - support for seek tables (IndexTableSegments). - -### Plugin moves - -- The rtph265pay/depay RTP payloader/depayloader elements for H.265/HEVC video - from the rtph265 plugin in -bad have been moved into the existing rtp plugin - in gst-plugins-good. - -- The mpg123 plugin containing a libmpg123 based audio decoder element has - been moved from -bad to -ugly. - -- The Opus encoder/decoder elements have been moved to gst-plugins-base and - the RTP payloader to gst-plugins-good, both coming from gst-plugins-bad. - -### New tracing tools for developers - -A new tracing subsystem API has been added to GStreamer, which provides -external tracers with the possibility to strategically hook into GStreamer -internals and collect data that can be evaluated later. These tracers are a -new type of plugin features, and GStreamer core ships with a few example -tracers (latency, stats, rusage, log) to start with. Tracers can be loaded -and configured at start-up via an environment variable (GST\_TRACER\_PLUGINS). - -Background: While GStreamer provides plenty of data on what's going on in a -pipeline via its debug log, that data is not necessarily structured enough to -be generally useful, and the overhead to enable logging output for all data -required might be too high in many cases. The new tracing system allows tracers -to just obtain the data needed at the right spot with as little overhead as -possible, which will be particularly useful on embedded systems. - -Of course it has always been possible to do performance benchmarks and debug -memory leaks, memory consumption and invalid memory access using standard -operating system tools, but there are some things that are difficult to track -with the standard tools, and the new tracing system helps with that. Examples -are things such as latency handling, buffer flow, ownership transfer of -events and buffers from element to element, caps negotiation, etc. - -For some background on the new tracing system, watch Stefan Sauer's -GStreamer Conference talk ["A new tracing subsystem for GStreamer"][tracer-0] -and for a more specific example how it can be useful have a look at -Thiago Santos's lightning talk ["Analyzing caps negotiation using GstTracer"][tracer-1] -and his ["GstTracer experiments"][tracer-2] blog post. There was also a Google -Summer of Code project in 2015 that used tracing system for a graphical -GStreamer debugging tool ["gst-debugger"][tracer-3]. - -This is all still very much work in progress, but we hope this will provide the -foundation for a whole suite of new debugging tools for GStreamer pipelines. - -[tracer-0]: https://gstconf.ubicast.tv/videos/a-new-tracing-subsystem-for-gstreamer/ -[tracer-1]: https://gstconf.ubicast.tv/videos/analyzing-caps-negotiation-using-gsttracer/ -[tracer-2]: http://blog.thiagoss.com/2015/07/23/gsttracer-experiments/ -[tracer-3]: https://git.gnome.org/browse/gst-debugger - -### GstPlayer: a new high-level API for cross-platform multimedia playback - -GStreamer has had reasonably high-level API for multimedia playback -in the form of the playbin element for a long time. This allowed application -developers to just configure a URI to play, and playbin would take care of -everything else. This works well, but there is still way too much to do on -the application-side to implement a fully-featured playback application, and -too much general GStreamer pipeline API exposed, making it less accessible -to application developers. - -Enter GstPlayer. GstPlayer's aim is to provide an even higher-level abstraction -of a fully-featured playback API but specialised for its specific use case. It -also provides easy integration with and examples for Gtk+, Qt, Android, OS/X, -iOS and Windows. Watch Sebastian's [GstPlayer talk at the GStreamer Conference][gstplayer-talk] -for more information, or check out the [GstPlayer API reference][gstplayer-api] -and [GstPlayer examples][gstplayer-examples]. - -[gstplayer-api]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/player.html -[gstplayer-talk]: https://gstconf.ubicast.tv/videos/gstplayer-a-simple-cross-platform-api-for-all-your-media-playback-needs-part-1/ -[gstplayer-examples]: https://github.com/sdroege/gst-player/ - -### Adaptive streaming: DASH, HLS and MSS improvements - -- dashdemux now supports loading external xml nodes pointed from its MPD. - -- Content protection nodes parsing support for PlayReady WRM in mssdemux. - -- Reverse playback was improved to respect seek start and stop positions. - -- Adaptive demuxers (hlsdemux, dashdemux, mssdemux) now support the SNAP_AFTER - and SNAP_BEFORE seek flags which will jump to the nearest fragment boundary - when executing a seek, which means playback resumes more quickly after a seek. - -### Audio library improvements - -- audio conversion, quantization and channel up/downmixing functionality - has been moved from the audioconvert element into the audio library and - is now available as public API in form of [GstAudioConverter][audio-0], - [GstAudioQuantize][audio-1] and [GstAudioChannelMixer][audio-2]. - Audio resampling will follow in future releases. - -- [gst\_audio\_channel\_get\_fallback\_mask()][audio-3] can be used - to retrieve a default channel mask for a given number of channels as last - resort if the layout is unknown - -- A new [GstAudioClippingMeta][audio-4] meta was added for specifying clipping - on encoded audio buffers - -- A new GstAudioVisualizer base class for audio visualisation elements; - most of the existing visualisers have been ported over to the new base class. - This new base class lives in the pbutils library rather than the audio library, - since we'd have had to make libgstaudio depend on libgstvideo otherwise, - which was deemed undesirable. - -[audio-0]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstAudioConverter.html -[audio-1]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-GstAudioQuantize.html -[audio-2]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiochannels.html#gst-audio-channel-mix-new -[audio-3]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiochannels.html#gst-audio-channel-get-fallback-mask -[audio-4]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiometa.html#GstAudioClippingMeta - -### GStreamer OpenGL support improvements - -#### Better OpenGL Shader support - -[GstGLShader][shader] has been revamped to allow more OpenGL shader types -by utilizing a new GstGLSLStage object. Each stage holds an OpenGL pipeline -stage such as a vertex, fragment or a geometry shader that are all compiled -separately into a program that is executed. - -The glshader element has also received a revamp as a result of the changes in -the library. It does not take file locations for the vertex and fragment -shaders anymore. Instead it takes the strings directly leaving the file -management to the application. - -A new [example][liveshader-example] was added utilizing the new shader -infrastructure showcasing live shader edits. - -[shader]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglshader.html -[liveshader-example]: https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gtk/glliveshader.c - -#### OpenGL GLMemory rework - -[GstGLMemory] was extensively reworked to support the addition of multiple -texture targets required for zero-copy integration with the Android -MediaCodec elements. This work was also used to provide IOSurface based -GLMemory on OS X for zero-copy with OS X's VideoToolbox decoder (vtdec) and -AV Foundation video source (avfvideosrc). There are also patches in bugzilla -for GstGLMemoryEGL specifically aimed at improving the decoding performance on -the Raspberry Pi. - -[GstGLMemory]: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglmemory.html - -A texture-target field was added to video/x-raw(memory:GLMemory) caps to signal -the texture target contained in the GLMemory. Its values can be 2D, rectangle -or external-oes. glcolorconvert can convert between the different formats as -required and different elements will accept or produce different targets. e.g. -glimagesink can take and render external-oes textures directly as required for -effecient zero-copy on android. - -A generic GL allocation framework was also implemented to support the generic -allocation of OpenGL buffers and textures which is used extensively by -GstGLBufferPool. - -#### OpenGL DMABuf import uploader - -There is now a DMABuf uploader available for automatic selection that will -attempt to import the upstream provided DMABuf. The uploader will import into -2D textures with the necesarry format. YUV to RGB conversion is still provided -by glcolorconvert to avoid the laxer restrictions with external-oes textures. - -#### OpenGL queries - -Queries of various aspects of the OpenGL runtime such as timers, number of -samples or the current timestamp are not possible. The GstGLQuery object uses a -delayed debug system to delay the debug output to later to avoid expensive calls -to the glGet\* family of functions directly after finishing a query. It is -currently used to output the time taken to perform various operations of texture -uploads and downloads in GstGLMemory. - -#### New OpenGL elements - -glcolorbalance has been created mirroring the videobalance elements. -glcolorbalance provides the exact same interface as videobalance so can be used -as a GPU accelerated replacement. glcolorbalance has been added to glsinkbin so -usage with playsink/playbin will use it automatically instead of videobalance -where possible. - -glvideoflip, which is the OpenGL equiavalant of videoflip, implements the exact -same interface and functionality as videoflip. - -#### EGL implementation now selects OpenGL 3.x - -The EGL implementation can now select OpenGL 3.x contexts. - -#### OpenGL API removal - -The GstGLDownload library object was removed as it was not used by anything. -Everything is performed by GstGLMemory or in the gldownloadelement. - -The GstGLUploadMeta library object was removed as it was not being used and we -don't want to promote the use of GstVideoGLTextureUploadMeta. - -#### OpenGL: Other miscellaneous changes - -- The EGL implementation can now select OpenGL 3.x contexts. This brings - OpenGL 3.x to e.g. wayland and other EGL systems. - -- glstereomix/glstereosplit are now built and are usable on OpenGL ES systems - -- The UYVY/YUY2 to RGBA and RGBA to UYVY/YUY2 shaders were fixed removing the - sawtooth pattern and luma bleeding. - -- We now utilize the GL\_APPLE\_sync extension on iOS devices which improves - performance of OpenGL applications, especially with multiple OpenGL - contexts. - -- glcolorconvert now uses a bufferpool to avoid costly - glGenTextures/glDeleteTextures for every frame. - -- glvideomixer now has full glBlendFunc and glBlendEquation support per input. - -- gltransformation now support navigation events so your weird transformations - also work with DVD menus. - -- qmlglsink can now run on iOS, OS X and Android in addition to the already - supported Linux platform. - -- glimagesink now posts unhandled keyboard and mouse events (on backends that - support user input, current only X11) on the bus for the application. - -### Initial GStreamer Vulkan support - -Some new elements, vulkansink and vulkanupload have been implemented utilizing -the new Vulkan API. The implementation is currently limited to X11 platforms -(via xcb) and does not perform any scaling of the stream's contents to the size -of the available output. - -A lot of infrasctructure work has been undertaken to support using Vulkan in -GStreamer in the future. A number of GstMemory subclasses have been created for -integrating Vulkan's GPU memory handling along with VkBuffer's and VkImage's -that can be passed between elements. Some GStreamer refcounted wrappers for -global objects such as VkInstance, VkDevice, VkQueue, etc have also been -implemented along with GstContext integration for sharing these objects with the -application. - -### GStreamer VAAPI support for hardware-accelerated video decoding and encoding on Intel (and other) platforms - -#### GStreamer VAAPI is now part of upstream GStreamer - -The GStreamer-VAAPI module which provides support for hardware-accelerated -video decoding, encoding and post-processing on Intel graphics hardware -on Linux has moved from its previous home at the [Intel Open Source Technology Center][iostc] -to the upstream GStreamer repositories, where it will in future be maintained -as part of the upstream GStreamer project and released in lockstep with the -other GStreamer modules. The current maintainers will continue to spearhead -the development at the new location: - -[http://cgit.freedesktop.org/gstreamer/gstreamer-vaapi/][gst-vaapi-git] - -[gst-vaapi-git]: http://cgit.freedesktop.org/gstreamer/gstreamer-vaapi/ - -GStreamer-VAAPI relies heavily on certain GStreamer infrastructure API that -is still in flux such as the OpenGL integration API or the codec parser -libraries, and one of the goals of the move was to be able to leverage -new developments early and provide tighter integration with the latest -developments of those APIs and other graphics-related APIs provided by -GStreamer, which should hopefully improve performance even further and in -some cases might also provide better stability. - -Thanks to everyone involved in making this move happen! - -#### GStreamer VAAPI: Bug tracking - -Bugs had already been tracked on [GNOME bugzilla](bgo) but will be moved -from the gstreamer-vaapi product into a new gstreamer-vaapi component of -the GStreamer product in bugzilla. Please file new bugs against the new -component in the GStreamer product from now on. - -#### GStreamer VAAPI: Pending patches - -The code base has been re-indented to the GStreamer code style, which -affected some files more than others. This means that some of the patches -in bugzilla might not apply any longer, so if you have any unmerged patches -sitting in bugzilla please consider checking if they still apply cleany and -refresh them if not. Sorry for any inconvenience this may cause. - -#### GStreamer VAAPI: New versioning scheme and supported GStreamer versions - -The version numbering has been changed to match the GStreamer version -numbering to avoid confusion: there is a new gstreamer-vaapi 1.6.0 release -and a 1.6 branch that is roughly equivalent to the previous 0.7.0 version. -Future releases 1.7.x and 1.8.x will be made alongside GStreamer releases. - -While it was possible and supported by previous releases to build against -a whole range of different GStreamer versions (such as 1.2, 1.4, 1.6 or 1.7/1.8), -in the future there will only be one target branch, so that git master will -track GStreamer git master, 1.8.x will target GStreamer 1.8, and -1.6.x will target the 1.6 series. - -[iostc]: http://01.org -[bgo]: http://bugzilla.gnome.og - -#### GStreamer VAAPI: Miscellaneous changes - -All GStreamer-VAAPI functionality is now provided solely by its GStreamer -elements. There is no more public library exposing GstVaapi API, this API -was only ever meant for private use by the elements. Parts of it may be -resurrected again in future if needed, but for now it has all been made -private. - -GStreamer-VAAPI now unconditionally uses the codecparser library in -gst-plugins-bad instead of shipping its own internal copy. Similarly, -it no longer ships its own codec parsers but relies on the upstream -codec parser elements. - -The GStreamer-VAAPI encoder elements have been renamed from vaapiencode_foo -to vaapifooenc, so encoders are now called vaapih264enc, vaapih265enc, -vaapimpeg2enc, vaapijpegenc, and vaapivp8enc. With this change we now follow -the standard names in GStreamer, and the plugin documentation is generated -correctly. - -In the case of the decoders, only the jpeg decoder has been split from the -general decoding element vaapidecode: vaapijpegdec. This is the first step to -split per codec each decoding element. The vaapijpegdec has also been given -marginal rank for the time being. - -#### GStreamer VAAPI: New features in 1.8: 10-bit H.265/HEVC decoding support - -Support for decoding 10-bit H.265/HEVC has been added. For the time being -this only works in combination with vaapisink though, until support for the -P010 video format used internally is added to GStreamer and to the -vaGetImage()/vaPutimage() API in the vaapi-intel-driver. - -Several fixes for memory leaks, build errors, and in the internal -video parsing. - -Finally, vaapisink now posts the unhandled keyboard and mouse events to the -application. - -### GStreamer Video 4 Linux Support - -Colorimetry support has been enhanced even more. It will now properly select -default values when not specified by the driver. The range of color formats -supported by GStreamer has been greatly improved. Notably, support for -multi-planar I420 has been added along with all the new and non-ambiguous RGB -formats that got added in recent kernels. - -The device provider now exposes a variety of properties as found in the udev -database. - -The video decoder is now able to negotiate the downstream format. - -Elements that are dynamically created from /dev/video\* now track changes on -these devices to ensure the registry stay up to date. - -All this and various bug fixes that improve both stability and correctness. - -### GStreamer Editing Services - -Added APIs to handle asset proxying support. Proxy creation is not the -responsibility of GES itself, but GES provides all the needed features -for it to be cleanly handled at a higher level. - -Added support for changing playback rate. This means that now, whenever a -user adds a 'pitch' element (as it is the only known element to change playback -rate through properties), GES will handle everything internally. This change -introduced a new media-duration-factor property in NleObject which will -lead to tweaking of seek events so they have the proper playback range to be -requested upstream. - -Construction of NLE objects has been reworked making copy/pasting fully -functional and allowing users to set properties on effects right after -creating them. - -Rework of the title source to add more flexibility in text positioning, -and letting the user get feedback about rendered text positioning. - -Report nlecomposition structural issues (coming from user programing mistakes) -into ERROR messages on the bus. - -Add GI/pythyon testsuite in GES itself, making sure the API is working as expected -in python, and allowing writing tests faster. - -### GstValidate - -Added support to run tests inside gdb. - -Added a 'smart' reporting mode where we give as much information as possible about -critical errors. - -Uses GstTracer now instead of a LD\_PRELOAD library. - -## Miscellaneous - -- encodebin now works with "encoder-muxers" such as wavenc - -- gst-play-1.0 acquired a new keyboard shortcut: '0' seeks back to the start - -- gst-play-1.0 supports two new command line switches: -v for verbose output - and --flags to configure the playbin flags to use. - -## Build and Dependencies - -- The GLib dependency requirement was bumped to 2.40 - -- The -Bsymbolic configure check now works with clang as well - -- ffmpeg is now required as libav provider, incompatible changes were - introduced that make it no longer viable to support both FFmpeg and Libav - as libav providers. Most major distros have switched to FFmpeg or are in - the process of switching to it anyway, so we don't expect this to be a - problem, and there is still an internal copy of ffmpeg that can be used - as fallback if needed. - -- The internal ffmpeg snapshot is now FFMpeg 3.0, but it should be possible - to build against 2.8 as well for the time being. - -## Platform-specific improvements - -### Android - -- Zero-copy video decoding on Android using the hardware-accelerated decoders - has been implemented, and is fully integrated with the GStreamer OpenGL stack - -- ahcsrc, a new camera source element, has been merged and can be used to - capture video on android devices. It uses the android.hardware.Camera Java - API to capture from the system's cameras. - -- The OpenGL-based QML video sink can now also be used on Android - -- New tinyalsasink element, which is mainly useful for Android but can also - be used on other platforms. - -### OS/X and iOS - -- The system clock now uses mach\_absolute\_time() on OSX/iOS, which is - the preferred high-resolution monotonic clock to be used on Apple platforms - -- The OpenGL-based QML video sink can now also be used on OS X and iOS (with - some Qt build system massaging) - -- New IOSurface based memory implementation in avfvideosrc and vtdec on OS X - for zerocopy with OpenGL. The previously used OpenGL extension - GL_APPLE_ycbcr_422 is not compatible with GL 3.x core contexts. - -- New GstAppleCoreVideoMemory wrapping CVPixelBuffer's - -- avfvideosrc now supports renegotiation. - -### Windows - -- Various bugs with UDP and multicast were fixed on Windows, mostly related to - gst-rtsp-server. - -- A few bugs in directsoundsrc and directsoundsink were fixed that could cause - the element to lock up. Also the "mute" property on the sink was fixed, and - a new "device" property for device selection was added to the source. - -## Known Issues - -- Building GStreamer applications with the Android NDK r11 is currently not - supported due to incompatible changes in the NDK. This is expected to be - fixed for 1.8.1. - [Bugzilla #763999](https://bugzilla.gnome.org/show_bug.cgi?id=763999) - -- vp8enc crashes on 32 bit Windows, but was working fine in 1.6. 64 bit - Windows is unaffected. - [Bugzilla #763663](https://bugzilla.gnome.org/show_bug.cgi?id=763663) - -## Contributors - -Adam Miartus, Alban Bedel, Aleix Conchillo Flaqué, Aleksander Wabik, -Alessandro Decina, Alex Ashley, Alex Dizengof, Alex Henrie, Alistair Buxton, -Andreas Cadhalpun, Andreas Frisch, André Draszik, Anthony G. Basile, -Antoine Jacoutot, Anton Bondarenko, Antonio Ospite, Arjen Veenhuizen, -Arnaud Vrac, Arun Raghavan, Athanasios Oikonomou, Aurélien Zanelli, Ben Iofel, -Bob Holcomb, Branko Subasic, Carlos Rafael Giani, Chris Bass, Csaba Toth, -Daniel Kamil Kozar, Danilo Cesar Lemes de Paula, Dave Craig, David Fernandez, -David Schleef, David Svensson Fors, David Waring, David Wu, Duncan Palmer, -Edward Hervey, Egor Zaharov, Etienne Peron, Eunhae Choi, Evan Callaway, -Evan Nemerson, Fabian Orccon, Florent Thiéry, Florin Apostol, Frédéric Wang, -George Kiagiadakis, George Yunaev, Göran Jönsson, Graham Leggett, -Guillaume Desmottes, Guillaume Marquebielle, Haihua Hu, Havard Graff, -Heinrich Fink, Holger Kaelberer, HoonHee Lee, Hugues Fruchet, Hyunil Park, -Hyunjun Ko, Ilya Konstantinov, James Stevenson, Jan Alexander Steffens (heftig), -Jan Schmidt, Jason Litzinger, Jens Georg, Jimmy Ohn, Joan Pau Beltran, -Joe Gorse, John Chang, John Slade, Jose Antonio Santos Cadenas, Josep Torra, -Julian Bouzas, Julien Isorce, Julien Moutte, Justin Kim, Kazunori Kobayashi, -Koop Mast, Lim Siew Hoon, Linus Svensson, Lubosz Sarnecki, Luis de Bethencourt, -Lukasz Forynski, Manasa Athreya, Marcel Holtmann, Marcin Kolny, Marcus Prebble, -Mark Nauwelaerts, Maroš Ondrášek, Martin Kelly, Matej Knopp, Mathias Hasselmann, -Mathieu Duponchelle, Matt Crane, Matthew Marsh, Matthew Waters, Matthieu Bouron, -Mersad Jelacic, Michael Olbrich, Miguel París Díaz, Mikhail Fludkov, -Mischa Spiegelmock, Nicola Murino, Nicolas Dufresne, Nicolas Huet, -Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Pablo Anton, Pankaj Darak, -Paolo Pettinato, Patricia Muscalu, Paul Arzelier, Pavel Bludov, Perry Hung, -Peter Korsgaard, Peter Seiderer, Petr Viktorin, Philippe Normand, -Philippe Renon, Philipp Zabel, Philip Van Hoof, Philip Withnall, Piotr Drąg, -plamot, Polochon\_street, Prashant Gotarne, Rajat Verma, Ramiro Polla, -Ravi Kiran K N, Reynaldo H. Verdejo Pinochet, Robert Swain, Romain Picard, -Roman Nowicki, Ross Burton, Ryan Hendrickson, Santiago Carot-Nemesio, -Scott D Phillips, Sebastian Dröge, Sebastian Rasmussen, Sergey Borovkov, -Seungha Yang, Sjors Gielen, Song Bing, Sreerenj Balachandran, Srimanta Panda, -Stavros Vagionitis, Stefan Sauer, Steven Hoving, Stian Selnes, Suhwang Kim, -Thiago Santos, Thibault Saunier, Thijs Vermeir, Thomas Bluemel, Thomas Roos, -Thomas Vander Stichele, Tim-Philipp Müller, Tim Sheridan, Ting-Wei Lan, -Tom Deseyn, Vanessa Chipirrás Navalón, Víctor Manuel Jáquez Leal, -Vincent Dehors, Vincent Penquerc'h, Vineeth T M, Vivia Nikolaidou, -Wang Xin-yu (王昕宇), William Manley, Wim Taymans, Wonchul Lee, Xavi Artigas, -Xavier Claessens, Youness Alaoui, - -... and many others who have contributed bug reports, translations, sent -suggestions or helped testing. - -## Bugs fixed in 1.8 - -More than [~700 bugs][bugs-fixed-in-1.8] have been fixed during -the development of 1.8. - -This list does not include issues that have been cherry-picked into the -stable 1.6 branch and fixed there as well, all fixes that ended up in the -1.6 branch are also included in 1.8. - -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.8]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=107311&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.6.1&target_milestone=1.6.2&target_milestone=1.6.3&target_milestone=1.7.0&target_milestone=1.7.1&target_milestone=1.7.2&target_milestone=1.7.3&target_milestone=1.7.4&target_milestone=1.7.90&target_milestone=1.7.91&target_milestone=1.7.92&target_milestone=1.7.x&target_milestone=1.8.0 - -## Stable 1.8 branch - -After the 1.8.0 release there will be several 1.8.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.8.x bug-fix releases will be made from the git 1.8 branch, which -is a stable branch. - -### 1.8.0 - -1.8.0 was released on 24 March 2016. - -### 1.8.1 - -The first 1.8 bug-fix release (1.8.1) is planned for April 2016. - -## Schedule for 1.10 - -Our next major feature release will be 1.10, and 1.9 will be the unstable -development version leading up to the stable 1.10 release. The development -of 1.9/1.10 will happen in the git master branch. - -The plan for the 1.10 development cycle is yet to be confirmed, but it is -expected that feature freeze will be around late July or early August, -followed by several 1.9 pre-releases and the new 1.10 stable release -in September. - -1.10 will be backwards-compatible to the stable 1.8, 1.6, 1.4, 1.2 and 1.0 -release series. - -- - - - -*These release notes have been prepared by Tim-Philipp Müller with -contributions from Sebastian Dröge, Nicolas Dufresne, Edward Hervey, Víctor -Manuel Jáquez Leal, Arun Raghavan, Thiago Santos, Thibault Saunier, Jan -Schmidt and Matthew Waters.* - -*License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)* +This is GStreamer 1.9.1 diff --git a/common b/common index f363b320..ac2f6476 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit f363b3205658a38e84fa77f19dee218cd4445275 +Subproject commit ac2f647695e7bd4b433ea108ee1d0e23901797d4 diff --git a/configure.ac b/configure.ac index 7b1d632f..3513ad1d 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], [9]) -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], [900]) +m4_define([gst_vaapi_lt_current], [901]) m4_define([gst_vaapi_lt_revision], [0]) -m4_define([gst_vaapi_lt_age], [900]) +m4_define([gst_vaapi_lt_age], [901]) # glib version number m4_define([glib_version], [2.32]) # gstreamer version number -m4_define([gst_version], [1.9.0.1]) -m4_define([gst_plugins_base_version], [1.9.0.1]) -m4_define([gst_plugins_bad_version], [1.9.0.1]) +m4_define([gst_version], [1.9.1]) +m4_define([gst_plugins_base_version], [1.9.1]) +m4_define([gst_plugins_bad_version], [1.9.1]) # Wayland minimum version number m4_define([wayland_api_version], [1.0.2]) diff --git a/gstreamer-vaapi.doap b/gstreamer-vaapi.doap index 2b928a33..6f915579 100644 --- a/gstreamer-vaapi.doap +++ b/gstreamer-vaapi.doap @@ -25,6 +25,15 @@ + + + 1.9.1 + master + 2016-06-06 + + + + 1.8.0 -- cgit v1.2.3