Tim-Philipp Müller [Thu, 17 Jan 2019 02:36:52 +0000 (02:36 +0000)]
Release 1.15.1
Tim-Philipp Müller [Thu, 17 Jan 2019 02:36:52 +0000 (02:36 +0000)]
Update docs
Víctor Manuel Jáquez Leal [Mon, 14 Jan 2019 18:35:34 +0000 (19:35 +0100)]
libs: encoder: refactor to avoid code duplication
gst_vaapi_encoder_put_frame() and gst_vaapi_encoder_flush() duplicates
the same code segment where the coded buffer is created, the picture
encoded on it and pushed to the async queue.
The function gst_vaapi_encoder_encode_and_queue() refactor this.
Víctor Manuel Jáquez Leal [Mon, 14 Jan 2019 17:21:30 +0000 (18:21 +0100)]
libs: encoder: h264/h265: flush pending ordered pictures
In order to flush the pending pictures, a new internal encoder vmethod
is used: get_pending_reordered()
This method follows an iterator pattern which will return the next
picture to encode and push.
The base encoder will call this function in a loop when flush() is called.
For now, only H.264 and H.265 encoders implement this flushing mechanism.
Wangfei [Thu, 6 Dec 2018 02:18:53 +0000 (10:18 +0800)]
libs: encoder: h264/h265: fix encode lose frame issue.
Instead of dropping all remain frames in reorder_frame_list during
flush, keep encoding.
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/97
Wangfei [Tue, 15 Jan 2019 06:33:11 +0000 (14:33 +0800)]
vaapipostproc: before set surface proxy, check if it already been created and exist.
Fix the deinterlace black frame when playing with glimagesink:
gst-launch-1.0 filesrc location=test.264 ! h264parse ! vaapih264dec \
! vaapipostproc deinterlace-mode=1 deinterlace-method=1 ! glimagesink
Wangfei [Fri, 11 Jan 2019 05:48:29 +0000 (13:48 +0800)]
vaapipostproc: clean up USE_VA_VPP macro since it already removed from
configure file.
Haihao Xiang [Wed, 26 Dec 2018 06:36:23 +0000 (14:36 +0800)]
meson: build h264 fei encoder if possible
Haihao Xiang [Wed, 26 Dec 2018 06:04:08 +0000 (14:04 +0800)]
configure: bump the minimum wayland version requirement to 1.11.0
Haihao Xiang [Mon, 24 Dec 2018 04:58:53 +0000 (12:58 +0800)]
vaapi: bump the minimum vaapi version requirement to 0.39.0
And reduce unnecessary API version and structures check as well.
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/108
Víctor Manuel Jáquez Leal [Sat, 22 Dec 2018 17:07:35 +0000 (18:07 +0100)]
libs: window: remove custom ref() and unref()
Use gst_object_ref() and gst_object_unref() instead.
Víctor Manuel Jáquez Leal [Sat, 22 Dec 2018 12:25:09 +0000 (13:25 +0100)]
libs: window: use its own debug category
Víctor Manuel Jáquez Leal [Sat, 22 Dec 2018 17:02:38 +0000 (18:02 +0100)]
libs: window: refactor as gobject
This is another step in the gobjectification of the internal library
of gstreamer-vaapi. Now it is the turn of GstVaapiWindow and its
derivates.
The idea is to minimize the changeset keeping the same design as
much as possible.
GstVaapiWindow is defined as an abstract class with two properties:
the GstVaapiDisplay and the native ID. Thus, many of the
GstVaapiObject macros were copied as GstVaapiWindow macros.
The function gst_vaapi_window_new_internal() is kept as a decorator
of for calling gst_vaapi_window_create() and the possibility of
failure.
The descendant classes, such as glx, still use the private
structures, but through the gobject mechanism.
Víctor Manuel Jáquez Leal [Mon, 3 Dec 2018 21:05:29 +0000 (22:05 +0100)]
libs: filter: use its own debug category
He Junyan [Mon, 24 Dec 2018 06:08:42 +0000 (14:08 +0800)]
plugins: Add more check for allowed raw caps.
The gst_vaapi_plugin_base_get_allowed_raw_caps is used for both sink
pad and src pad, which cause some bugs. For sink pad, we need to verify
vaPutImage() while for the src pad we need to verify vaGetImage().
For vaapidecoderXXX kind of plugins, the case is more complex. We need
to verify whether the decoded result(in some surface, NV12 format most
of the time) can be vaGetImage to some raw image format. Add more check
to fix all these problems.
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/123
Signed-off-by: He Junyan <junyan.he@hotmail.com>
Wangfei [Tue, 18 Dec 2018 02:44:21 +0000 (10:44 +0800)]
vaapipostproc: fix csc fail when only change width or height.
Wonchul Lee [Sat, 15 Dec 2018 00:47:15 +0000 (09:47 +0900)]
meson: Add gtk guard
Wangfei [Sat, 15 Dec 2018 06:48:03 +0000 (14:48 +0800)]
libs: enc: h264: set max profile idc with correct profile.
Use the highest rank of available profile as the max profile to
set max idc value.
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/124
Niels De Graef [Mon, 3 Dec 2018 12:56:52 +0000 (13:56 +0100)]
Use G_DEFINE_TYPE_WITH_PRIVATE if applicable
This gets rid of the strange `do_init` macro and makes the intent a bit
more clear.
Thibault Saunier [Wed, 5 Dec 2018 20:24:53 +0000 (17:24 -0300)]
Automatic update of common submodule
From ed78bee to 59cb678
Wangfei [Tue, 27 Nov 2018 14:47:44 +0000 (09:47 -0500)]
libs: dec: h265: support decode for main-444 10bit streams.
Add 444 10bit yuv format Y410, which can be used to decode
main-444 10bit streams. Currently, this feature is only
supported by media-driver in Icelake.
Jordan Petridis [Wed, 28 Nov 2018 03:56:44 +0000 (05:56 +0200)]
Run gst-indent through the files
This is required before we enabled an indent test in the CI.
https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33
He Junyan [Wed, 14 Nov 2018 05:11:56 +0000 (13:11 +0800)]
plugins: modify image check of extract_allowed_surface_formats.
The extract_allowed_surface_formats function just check whether
we can support some kind of surface/image format pair. We just
need to create a surface, create an image with the same video-format
and putImage from image to surface. All these operations success,
that kind of video-format is supported.
The old manner do not work for some kind of video-format. For example,
the RGBA kind of format will create a NV12 surface and RGBA image,
and the putImage will fail because the format is not same. And so
the RGBA format is not supported but actually it is supported.
Michael Olbrich [Wed, 14 Nov 2018 10:34:20 +0000 (11:34 +0100)]
vaapipostproc: add some missing locking
gst_vaapi_plugin_base_close() removed the raw caps that are used indirectly
in gst_vaapipostproc_transform_caps(). The usage is already protected by
the mutex.
This is needed when the pipeline is stopped during startup.
Xiang, Haihao [Tue, 20 Nov 2018 08:07:44 +0000 (16:07 +0800)]
Close dmabuf_fd
Otherwise it will result in resource leak when failed to create
dmabuf memory
Michael Olbrich [Mon, 12 Nov 2018 12:39:51 +0000 (13:39 +0100)]
vaapiencode: don't start src pad task in set_format
Otherwise the task may be restarted during shutdown. Start the task in
gst_vaapiencode_handle_frame() instead.
Wangfei [Wed, 14 Nov 2018 05:52:48 +0000 (13:52 +0800)]
libs: dec: h265: support decode for main-444 8bit streams.
Add 444 8bit yuv format AYUV, which can be used to decode
main-444 8bit streams. Currently, this feature is only
supported by media-driver in Icelake.
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/119
Víctor Manuel Jáquez Leal [Mon, 12 Nov 2018 16:43:54 +0000 (17:43 +0100)]
Add Gitlab CI configuration
This commit adds a .gitlab-ci.yml file, which uses a feature
to fetch the config from a centralized repository. The intent is
to have all the gstreamer modules use the same configuration.
The configuration is currently hosted at the gst-ci repository
under the gitlab/ci_template.yml path.
Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/29
He Junyan [Fri, 9 Nov 2018 14:03:43 +0000 (22:03 +0800)]
libs: Sync the GstVaapiChromaType to VA header file.
Add more kinds of chrometype which will be used to describe
new video formats. Sync it with 1.4.0 version header file.
Alse delete useless GST_VAAPI_CHROMA_TYPE_YUV410 chrome type.
Signed-off-by: He Junyan <junyan.he@hotmail.com>
Tim-Philipp Müller [Fri, 9 Nov 2018 23:55:05 +0000 (23:55 +0000)]
meson: link with -lm
Fixes #117 hopefully.
Tim-Philipp Müller [Fri, 9 Nov 2018 23:46:53 +0000 (23:46 +0000)]
meson: bump meson required to 0.47 for feature options
Junyan He [Tue, 6 Nov 2018 06:38:08 +0000 (14:38 +0800)]
libs: Modify the video format of endianness.
We lack some video format because endianness declare.
The video format should not directly relate to endianness. For example,
ARGB on big endian should not be simplely seen as BGRA on little endian
machine. We should provide endianess convert or format convert help
functions if endianness does not match.
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/112
Signed-off-by: Junyan He <junyan.he@intel.com>
Junyan He [Wed, 17 Oct 2018 10:36:52 +0000 (18:36 +0800)]
plugins: Fix build error when GL is enabled while EGL is disabled.
gl_platform_type in gst_vaapi_get_display_type_from_gl_env generate
unused-variable warning and may block build when Werror enabled.
Several functions like gst_vaapi_display_egl_new_with_native_display
have no prototype warning and link error when GL is enabled but EGL
is disabled. Fix all these warning and link error.
https://bugzilla.gnome.org/show_bug.cgi?id=797358
Signed-off-by: Junyan He <junyan.he@intel.com>
Wangfei [Sat, 3 Nov 2018 07:06:09 +0000 (15:06 +0800)]
libs: encoder: h264/h264fei: remove unuseless code.
The variable are set twice, remove previous one.
https://bugzilla.gnome.org/show_bug.cgi?id=797365
Wangfei [Sat, 3 Nov 2018 07:28:35 +0000 (15:28 +0800)]
tests: check return value when using gst_buffer_map.
https://bugzilla.gnome.org/show_bug.cgi?id=797366
Víctor Manuel Jáquez Leal [Fri, 2 Nov 2018 15:50:47 +0000 (16:50 +0100)]
build: meson: build examples
Víctor Manuel Jáquez Leal [Fri, 2 Nov 2018 15:50:00 +0000 (16:50 +0100)]
build: meson: declare headers for libgstvaapi
Thus handling its recompilation if needed.
Matthew Waters [Mon, 5 Nov 2018 05:41:13 +0000 (05:41 +0000)]
Update common submodule location
Remove the git directory
Haihao Xiang [Mon, 5 Nov 2018 05:00:28 +0000 (13:00 +0800)]
Clone the code from gitlab
This fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/issues/116
Wangfei [Wed, 24 Oct 2018 18:18:37 +0000 (14:18 -0400)]
libs: dec: h265: support decode for main-10-422 10bit streams.
Add 422 10bit yuv format Y210, which can be used to decode
main-10-422 10bit streams. Currently, this feature is only
supported by media-driver in Icelake.
https://bugzilla.gnome.org/show_bug.cgi?id=797264
Wangfei [Sat, 13 Oct 2018 07:00:32 +0000 (15:00 +0800)]
libs: context: roi_rc_qp_delta_support should not be checked when CQP.
VA_ROI_RC_QP_DELTA_SUPPORT return value will be ignored when the
rate control mode is set as CQP. In CQP mode, it shouldn't check
roi_rc_qp_delta_support return value from driver backend.
https://bugzilla.gnome.org/show_bug.cgi?id=797087
Víctor Manuel Jáquez Leal [Mon, 15 Oct 2018 15:55:24 +0000 (17:55 +0200)]
vaapipostproc: fix classification string
The classification string is splitted by '/' and then looks for the
components.
This patch removes the ';' by unifying all the components.
Philippe Normand [Mon, 15 Oct 2018 15:05:02 +0000 (16:05 +0100)]
vaapipostproc: Add Hardware classifier to metadata
Wangfei [Fri, 12 Oct 2018 08:37:34 +0000 (16:37 +0800)]
libs: context: create context first before using it to create surface.
In gst_vaapi_context_reset(), if the context has to be destroyed, make
sure to create it first before allocating its associated surfaces.
This patch fixes a regression introduced in commit 82872f4 because
the formats available in the current context now are ensured before
creating the context's surfaces.
https://bugzilla.gnome.org/show_bug.cgi?id=797277
Philippe Normand [Fri, 12 Oct 2018 14:39:53 +0000 (15:39 +0100)]
gst: Advertise elements interacting with hardware devices
Wangfei [Mon, 1 Oct 2018 01:26:05 +0000 (09:26 +0800)]
libs: context: query surface format before context to create surface.
Before using context to create surface, the supported surface format
should be checked first.
https://bugzilla.gnome.org/show_bug.cgi?id=797222
Víctor Manuel Jáquez Leal [Tue, 9 Oct 2018 15:23:55 +0000 (17:23 +0200)]
libs: replace g_error with GST_ERROR
And handle those errors rather than halting.
Víctor Manuel Jáquez Leal [Tue, 9 Oct 2018 15:23:30 +0000 (17:23 +0200)]
libs: replace g_warning with GST_WARNING
Matteo Valdina [Wed, 26 Sep 2018 19:55:32 +0000 (14:55 -0500)]
libs: Move from g_debug to GST_DEBUG.
https://bugzilla.gnome.org/show_bug.cgi?id=797202
Soon, Thean Siew [Wed, 3 Oct 2018 18:20:10 +0000 (02:20 +0800)]
vaapipostproc: change the way of handling deinterlace
The current vaapipostproc calls driver's video processing
pipeline for deinterlacing only if it is Advance deinterlacing.
Modify in the way that it always tries with driver's video
processing pipeline for deinterlacing, and falls back to software
method of appending picture structure meta data only if it fails
with driver's method.
https://bugzilla.gnome.org/show_bug.cgi?id=797095
Matteo Valdina [Mon, 24 Sep 2018 21:54:29 +0000 (16:54 -0500)]
libs: h264: Update level table to "Recommendation H.264 (04/17)".
Added level 6, 6.1 and 6.2. Reference Table A-1 – Level limits
from T-REC-H.264-201704.
https://bugzilla.gnome.org/show_bug.cgi?id=797202
Wangfei [Thu, 20 Sep 2018 01:57:33 +0000 (09:57 +0800)]
libs: dec: h265: add 422 chroma format support.
Add main-422-10 profile which support 422 chroma format stream.
Currently, this feature is only supported by media-driver in Icelake.
https://bugzilla.gnome.org/show_bug.cgi?id=797143
U. Artie Eoff [Wed, 26 Sep 2018 17:34:06 +0000 (19:34 +0200)]
tests: include sysdeps.h in compilation unit
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=797204
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Víctor Manuel Jáquez Leal [Wed, 26 Sep 2018 16:04:53 +0000 (18:04 +0200)]
tests: fix compilation
https://bugzilla.gnome.org/show_bug.cgi?id=797204
Víctor Manuel Jáquez Leal [Tue, 25 Sep 2018 18:28:02 +0000 (20:28 +0200)]
tests: don's use sysdeps.h in header
Víctor Manuel Jáquez Leal [Fri, 14 Sep 2018 17:30:56 +0000 (19:30 +0200)]
libs: utils: no need of include config.h
Víctor Manuel Jáquez Leal [Thu, 13 Sep 2018 16:12:02 +0000 (18:12 +0200)]
tests: remove already include string.h
Since sysdeps.h includes string.h there's no need to include it again.
Víctor Manuel Jáquez Leal [Thu, 13 Sep 2018 16:11:25 +0000 (18:11 +0200)]
libs: remove already include string.h
Since sysdeps.h includes string.h there's no need to include it again.
Víctor Manuel Jáquez Leal [Thu, 13 Sep 2018 16:26:27 +0000 (18:26 +0200)]
libs: object: separation of internal API and plugins
Removed exposed macros GST_VAAPI_OBJECT_DISPLAY() and
GST_VAAPI_OBJECT_ID() to plugins, keeping them only for internal
library usage.
The purpose is readability.
https://bugzilla.gnome.org/show_bug.cgi?id=797139
Víctor Manuel Jáquez Leal [Thu, 13 Sep 2018 14:34:54 +0000 (16:34 +0200)]
libs: parser_frame: change macros for inlined functions
https://bugzilla.gnome.org/show_bug.cgi?id=797139
Víctor Manuel Jáquez Leal [Thu, 13 Sep 2018 14:10:13 +0000 (16:10 +0200)]
libs: videopool: remove unneeded code
The removed code comes frome the bad practice of copy&paste. Better
move it as internal function.
https://bugzilla.gnome.org/show_bug.cgi?id=797139
Víctor Manuel Jáquez Leal [Thu, 13 Sep 2018 10:22:42 +0000 (12:22 +0200)]
libs: remove dependency on IN_LIBGSTVAAPI_CORE
This conditional code was when libgstvaapi was intended to be library
used outside GStreamer. This not the case anymore, thus removing it.
https://bugzilla.gnome.org/show_bug.cgi?id=797139
Wangfei [Wed, 19 Sep 2018 02:16:36 +0000 (10:16 +0800)]
libs: dec: h265: fix the macros used for IDC profile
profile_idc flag in SPS only indicate the IDC profile, which may
need some other flags together to get the real profile.
https://bugzilla.gnome.org/show_bug.cgi?id=797160
Jimmy Ohn [Wed, 12 Sep 2018 10:06:22 +0000 (19:06 +0900)]
libs: use g_clear_pointer() when possible
https://bugzilla.gnome.org/show_bug.cgi?id=797131
Víctor Manuel Jáquez Leal [Mon, 3 Sep 2018 11:56:52 +0000 (13:56 +0200)]
libs: filter: add gobject's cleanup function
Víctor Manuel Jáquez Leal [Tue, 22 May 2018 12:28:40 +0000 (14:28 +0200)]
libs: filter: remove custom ref() and unref()
Replacing them by gst_object_ref() and gst_object_unref()
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Tue, 22 May 2018 12:26:48 +0000 (14:26 +0200)]
libs: filter: refactor filter as gobject
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:38:00 +0000 (13:38 +0200)]
libs: decoder: remove destoy() and create() callbacks
They were all replaced by reset()
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:26:01 +0000 (13:26 +0200)]
libs: decoder: vp9: implement reset() callback
remove destroy() and create() callback
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:25:37 +0000 (13:25 +0200)]
libs: decoder: vp8: implement reset() callback
remove create() and destroy() callbacks
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:24:39 +0000 (13:24 +0200)]
libs: decoder: vc1: implement reset() callback
remove destroy() and create() callbacks
use g_clear_pointer for rbdu_buffer
no cast for enum
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:24:13 +0000 (13:24 +0200)]
libs: decoder: mpeg4: implement reset() callback
remove destroy() and create() callback
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:22:45 +0000 (13:22 +0200)]
libs: decoder: mpeg2: implement reset() callback
remove create() and destroy() callbacks
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:22:07 +0000 (13:22 +0200)]
libs: decoder: jpeg: implement reset() callback
and remove create() and destroy() callbacks.
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:13:31 +0000 (13:13 +0200)]
libs: decoder: h265: implement reset() callback
and remove create() and destroy()
and use g_clear_pointer for dpb structure
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 11:11:41 +0000 (13:11 +0200)]
libs: decoder: h264: remove create() and destroy() callbacks
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 09:56:11 +0000 (11:56 +0200)]
libs: decoder: remove gst_vaapi_decoder_unref()
Replaced by gst_object_unref() in tests
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 09:51:14 +0000 (11:51 +0200)]
libs: decoder: remove gst_vaapi_decoder_ref()
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Mon, 21 May 2018 09:50:17 +0000 (11:50 +0200)]
libs: decoder: remove gst_vaapi_decoder_new()
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Víctor Manuel Jáquez Leal [Fri, 18 May 2018 14:09:31 +0000 (16:09 +0200)]
libs: decoder: refactor decoders as gobject
https://bugzilla.gnome.org/show_bug.cgi?id=796308
Matteo Valdina [Sat, 1 Sep 2018 01:56:13 +0000 (20:56 -0500)]
vaapidecode: Requests upstream a key unit at parse or decode error.
This is done to resume decoding after a parse error or decode error.
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=797006
Matteo Valdina [Sat, 1 Sep 2018 01:48:13 +0000 (20:48 -0500)]
vaapidecode: sets return value in failure case.
In gst_vaapidecode_handle_frame, when there is a decode error
there is a code path the returns an uninitialized value.
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=797006
Víctor Manuel Jáquez Leal [Thu, 30 Aug 2018 16:56:40 +0000 (18:56 +0200)]
libs: display: lock at extracting available image formates
When running several vaapi elements at the concurrently, at
initialization, there is a race condition when extractin the avaible
formats for images and subpictures.
This patch add a lock when the those arrays are filled.
https://bugzilla.gnome.org/show_bug.cgi?id=797039
Nirbheek Chauhan [Fri, 31 Aug 2018 09:17:55 +0000 (14:47 +0530)]
meson: Sync libversion and osxversion code from other repos
gstreamer-vaapi does not build any libraries, only plugins, so this is
not used, but sync it just in case someone does add it in the future.
Víctor Manuel Jáquez Leal [Wed, 29 Aug 2018 11:44:44 +0000 (13:44 +0200)]
libs: encoder: h265: trivial documentation fix
Wangfei [Thu, 30 Aug 2018 03:08:07 +0000 (11:08 +0800)]
libs: encoder: h265: add low delay B frame support.
Low delay B frame provide the function of transforming
P frame into low delay B frame which frame type is B, but
only reference predictive frames. This can be used when P
frame unsupported. Especially for P and B both unsupported,
in this case, I and low delay B frame can be encoded in a
stream.
https://bugzilla.gnome.org/show_bug.cgi?id=796984
Nicolas Dufresne [Tue, 28 Aug 2018 00:42:15 +0000 (20:42 -0400)]
libs: decoder: h264: Avoid using picture after it has been free
In some cases, the found_picture ended up being evicted and freed, which
would lead to a use after free when accessing picture->base.poc. In this
fix, we take a ref on the picture before calling dpb_evict.
https://bugzilla.gnome.org/show_bug.cgi?id=787124
Nicolas Dufresne [Wed, 25 Jul 2018 21:03:19 +0000 (17:03 -0400)]
h264decoder: Fail decoding slice with missing inter-view reference
Similarly to previous patch, we have no error concealment. As a side
effect, it's better to skip slices with missing references then passing
NULL pointers to the accelerator. Passing NULL pointer would lead to
major visual artifact, a behaviour that is likely undefined.
https://bugzilla.gnome.org/show_bug.cgi?id=787124
Hyunjun Ko [Thu, 14 Sep 2017 05:25:41 +0000 (14:25 +0900)]
libs: decoder: h264: reset context when the number of view is increased
Usually in case of MVC decoding, dpb size is increasedi if subset sps.
That's why it resets context without this patch.
But for some media it doesn't increase dpb size. Even in this case we
should reset context to deal with MVC decoding.
Otherwise, it leads to assert.
https://bugzilla.gnome.org/show_bug.cgi?id=787124
Nicolas Dufresne [Wed, 25 Jul 2018 17:50:23 +0000 (13:50 -0400)]
vaapidecode: Skip unparsable units from adapter
If the unit could not be parsed, just skip this nal and keep parsing
what is left in the adapter. We need to flush the broken unit in the
decoder specific parser because the generic code does not know about
units boundary. This increases error resilliance.
Before this, the broken unit would stay in the adapter and EOS would be
returned. Which stopped the streaming. Just removing the EOS would have
lead to the adapter size growing indefinitely.
https://bugzilla.gnome.org/show_bug.cgi?id=796863
Nicolas Dufresne [Tue, 24 Jul 2018 16:40:00 +0000 (12:40 -0400)]
vaapidecoder: Don't error out on decode errors
This is problematic on live pipeline where loosing network can
cause an important amount of errors.
https://bugzilla.gnome.org/show_bug.cgi?id=796832
Nicolas Dufresne [Wed, 25 Jul 2018 19:47:49 +0000 (15:47 -0400)]
h265decoder: Don't scan empty buffer
Same as what we did for H264 decoder, this is to avoid an assertion
in the adapter.
https://bugzilla.gnome.org/show_bug.cgi?id=796832
Víctor Manuel Jáquez Leal [Wed, 25 Jul 2018 18:21:51 +0000 (20:21 +0200)]
libs: h264: renable the vaapi category for logging
h264 log messages were logged in default category because a regression
in code. This patch renable the usage of vaapi logging category.
This regression was introduced in commit
7c365bdd.
Nicolas Dufresne [Wed, 18 Jul 2018 17:09:42 +0000 (13:09 -0400)]
h264decoder: Fail decoding slice if modification process failed
This patch chains up failure to executing the modification process. The
end result is that we now fail decoding the slice if this process fails.
This avoid sending a corrupted state to the accelerator. In some special
cases, this could lead to unrecoverable errors.
https://bugzilla.gnome.org/show_bug.cgi?id=796832
Nicolas Dufresne [Wed, 18 Jul 2018 17:07:51 +0000 (13:07 -0400)]
h264decoder: Don't scan empty buffer
gst_adapter_masked_scan_uint32_peek() asserts if size is 0. Don't
try and scan in that case. This fixes assertion that would some times
happen when the stream is corrupted.
https://bugzilla.gnome.org/show_bug.cgi?id=796832
Tianhao Liu [Wed, 4 Jul 2018 04:51:10 +0000 (12:51 +0800)]
libs: encoder: jpeg: set component id and Tqi
This change is due a problem encoding JPEGs with Intel's
media-driver: green/black image when playback jpeg
This patch sets component identifier and quantization table
destination selector in frame header to support packing headers
by Intel's media-driver that does not accept packed header
in AP level.
https://bugzilla.gnome.org/show_bug.cgi?id=796705
Mathieu Duponchelle [Mon, 25 Jun 2018 12:20:32 +0000 (14:20 +0200)]
pluginutil: downgrade unsupported driver logging
On systems with an Nvidia card, this error is output each time
the registry is rebuilt, which happens pretty often when
using gst-build as a development environment.
https://bugzilla.gnome.org/show_bug.cgi?id=796663
Tim-Philipp Müller [Sun, 24 Jun 2018 11:07:20 +0000 (13:07 +0200)]
Update for g_type_class_add_private() deprecation in recent GLib
Nicolas Dufresne [Wed, 30 May 2018 20:01:36 +0000 (16:01 -0400)]
h264dec: Remove false assumption about parity order
The decoder was trying to detect earlier that a field was lost base
on guessing the parity order. This breaks in streams were the parity
order changes.
This patch reverts the field order prediction code added by commit
8dd93e9c8.
https://bugzilla.gnome.org/show_bug.cgi?id=796169
Nicolas Dufresne [Fri, 18 May 2018 21:03:57 +0000 (17:03 -0400)]
h264dec: Properly set sentinel in ref frame list
This ensure that we always have sentinels set in the reference
pictures arrays. The code wasn't unsafe, this simply improve the
tracing, so instead of printing 32 lines of zeros, va tracer
prints proper empty lists.
https://bugzilla.gnome.org/show_bug.cgi?id=796169