platform/upstream/gstreamer.git
8 years agoadd doap descriptor
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 12:28:30 +0000 (13:28 +0100)]
add doap descriptor

DOAP (Description of a Project) is an RDF Schema and XML vocabulary to
describe software projects, in particular free and open source software.

The description is used in GStreamer as in many other open source projects.

This patch adds the doap description of this project.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: humongous code style fix
Víctor Manuel Jáquez Leal [Wed, 3 Feb 2016 10:50:13 +0000 (11:50 +0100)]
libs: humongous code style fix

As part of the upstreaming process of gstreamer-vaapi into the GStreamer
umbrella, we need to comply with the project's code style. This meant to
change a lot of code.

It was decided to use a single massive patch to update the code style.

I would like to apologize with the original developers of this code because of
the history breakage.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: small refactors to enhance the code style
Víctor Manuel Jáquez Leal [Wed, 3 Feb 2016 10:04:15 +0000 (11:04 +0100)]
libs: small refactors to enhance the code style

As gst-indent generated ugly code in these cases, this patch changes the used
idiomatic into other one.

No functional changes were introduced.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: small code style fixes
Víctor Manuel Jáquez Leal [Tue, 2 Feb 2016 16:59:57 +0000 (17:59 +0100)]
libs: small code style fixes

This a set of small code style fixes detected as-is by gst-indent.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: trivial comment style fixes
Víctor Manuel Jáquez Leal [Tue, 2 Feb 2016 16:50:19 +0000 (17:50 +0100)]
libs: trivial comment style fixes

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: avoid gst-indent mess up
Víctor Manuel Jáquez Leal [Tue, 2 Feb 2016 16:31:02 +0000 (17:31 +0100)]
libs: avoid gst-indent mess up

Guard pieces of code to avoid gst-ident to mess up the following code.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoplugins: fix code style
Víctor Manuel Jáquez Leal [Wed, 3 Feb 2016 11:17:59 +0000 (12:17 +0100)]
plugins: fix code style

Minor code style changes by executing gst-indent in gst/vaapi directory.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoFix some more compiler warning
Tim-Philipp Müller [Mon, 1 Feb 2016 13:22:10 +0000 (13:22 +0000)]
Fix some more compiler warning

Two (false) compiler warnings about variables potentially
being used uninitialized, and one about a variable being
set but not used.

https://bugzilla.gnome.org/show_bug.cgi?id=759192

8 years agovaapi: fix 'ISO C90 forbids mixed declarations and code' compiler warnings
Tim-Philipp Müller [Mon, 1 Feb 2016 13:02:13 +0000 (13:02 +0000)]
vaapi: fix 'ISO C90 forbids mixed declarations and code' compiler warnings

Declare variables at the beginning of a code block, which
is how it's done in GStreamer.

https://bugzilla.gnome.org/show_bug.cgi?id=759192

8 years agodecoder: vp9: Fix crop rectangle setting
Sreerenj Balachandran [Thu, 28 Jan 2016 12:21:04 +0000 (14:21 +0200)]
decoder: vp9: Fix crop rectangle setting

Align with software vp9dec behaviour: Add crop rectangle
only if display_width/display_height is less than the
frame_hdr->width/frame_hdr->height

8 years agovaapidecode: Fix renegotiation for resolution change
Sreerenj Balachandran [Wed, 27 Jan 2016 06:56:45 +0000 (08:56 +0200)]
vaapidecode: Fix renegotiation for resolution change

Always renegotiate the pool if the immediate frame which going
to be pushed has a different un-cropped resolution than the already
configured one.

8 years agoplugins: use the same pre-processor macro
Víctor Manuel Jáquez Leal [Fri, 29 Jan 2016 14:51:49 +0000 (15:51 +0100)]
plugins: use the same pre-processor macro

In gstvaapipluginbase.c we are using the macro USE_GST_GL_HELPERS to guard the
code related with GstGL. Nonetheless, in gstvaapipluginbase.h we are using
HAVE_GST_GL_GL_H macro in order to include the GstGLContext's header.

We should use only one to be homogeneous. This patch sets USE_GST_GL_HELPERS
in the header file.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agodecoder: update a deprecated function
Víctor Manuel Jáquez Leal [Fri, 29 Jan 2016 17:06:29 +0000 (18:06 +0100)]
decoder: update a deprecated function

Somehow this didn't show up earlier, but gst_adapter_prev_timestamp() got
deprecated since GStreamer 1.0.

This patch replace it with gst_adapter_prev_pts()

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: honor configure's cache
Víctor Manuel Jáquez Leal [Fri, 29 Jan 2016 12:13:56 +0000 (13:13 +0100)]
build: honor configure's cache

The user might enable --config-cache when calling configure script. If so, our
configuration variables will not be correctly calculated.

This patch extracts the value of our variables either from the cache or from
the operation result.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: use common version variables
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 18:12:13 +0000 (19:12 +0100)]
build: use common version variables

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: hard-code an unneeded macro
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 18:01:43 +0000 (19:01 +0100)]
build: hard-code an unneeded macro

That macro is required for EGL's dynamic module loading, but since
gstreamer-vaapi doesn't creates dynamic modules, it is not required anymore.

That code in gst-libs/gst/vaapi/gstvaapidisplay_egl.c should be removed.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: refactorization of dependency tracking
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 16:14:51 +0000 (17:14 +0100)]
build: refactorization of dependency tracking

This patch tries to avoid branching in configure.ac using a more functional
approach in macros usage.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: check for OpenGL either GLX or EGL are requested
Víctor Manuel Jáquez Leal [Fri, 29 Jan 2016 11:34:30 +0000 (12:34 +0100)]
build: check for OpenGL either GLX or EGL are requested

Refactor some code in configure.ac to centralize $enable_opengl definition.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: indent and add square braces
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 15:55:44 +0000 (16:55 +0100)]
build: indent and add square braces

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: upgrade autotools version dependency
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 15:50:39 +0000 (16:50 +0100)]
build: upgrade autotools version dependency

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: enhance string comparisons
Víctor Manuel Jáquez Leal [Fri, 29 Jan 2016 10:14:34 +0000 (11:14 +0100)]
build: enhance string comparisons

Add a 'x' as a prefix in string comparisons to watch out for edge cases where
the string is empty or undefined.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: remove unused variables
Víctor Manuel Jáquez Leal [Thu, 28 Jan 2016 13:29:16 +0000 (14:29 +0100)]
build: remove unused variables

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: remove check for old version of gstreamer
Víctor Manuel Jáquez Leal [Wed, 27 Jan 2016 18:00:51 +0000 (19:00 +0100)]
build: remove check for old version of gstreamer

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: remove GStreamer's parsers checks
Víctor Manuel Jáquez Leal [Wed, 27 Jan 2016 16:55:02 +0000 (17:55 +0100)]
build: remove GStreamer's parsers checks

This patch removes almost all the parsers check since they are already in place,
with the exception of the VP9 parser, since it was merged in Gstreamer 1.7.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: add gstreamer-pbutils dependency
Víctor Manuel Jáquez Leal [Fri, 29 Jan 2016 11:11:17 +0000 (12:11 +0100)]
build: add gstreamer-pbutils dependency

This dependency was added in gstvaapidecodebin with the call
gst_missing_element_message_new().

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: fix variable declaration
Víctor Manuel Jáquez Leal [Wed, 27 Jan 2016 16:53:59 +0000 (17:53 +0100)]
build: fix variable declaration

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: fix when HEVC decoder is disabled
Víctor Manuel Jáquez Leal [Wed, 27 Jan 2016 16:47:32 +0000 (17:47 +0100)]
build: fix when HEVC decoder is disabled

This a very pathological situation: when we have a HEVC encoder but not a HEVC
decoder.

The encoder needs functions that are only available when the decoder is
enabled.

This patch moves the utils functions into the generic sources, such as the
rest of the utils.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: remove unused EGL specific sources
Víctor Manuel Jáquez Leal [Wed, 27 Jan 2016 16:20:31 +0000 (17:20 +0100)]
build: remove unused EGL specific sources

These Makefile variables are not used at all.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agobuild: remove check for GStreamer 1.2
Víctor Manuel Jáquez Leal [Wed, 27 Jan 2016 16:19:32 +0000 (17:19 +0100)]
build: remove check for GStreamer 1.2

Since we are working for current stable GStreamer 1.6

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoRemove more video parser crufts
Víctor Manuel Jáquez Leal [Tue, 26 Jan 2016 10:49:40 +0000 (11:49 +0100)]
Remove more video parser crufts

This header is not used anymore since it declares parsers that are
already in GStreamer 1.6

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agodocs: remove library documentation which is non-public now
Tim-Philipp Müller [Mon, 25 Jan 2016 12:43:15 +0000 (12:43 +0000)]
docs: remove library documentation which is non-public now

https://bugzilla.gnome.org/show_bug.cgi?id=759192

8 years agoRemove debian.upstream packaging
Tim-Philipp Müller [Mon, 25 Jan 2016 12:40:49 +0000 (12:40 +0000)]
Remove debian.upstream packaging

https://bugzilla.gnome.org/show_bug.cgi?id=759192

8 years agoRemove old gst version guards
Víctor Manuel Jáquez Leal [Fri, 22 Jan 2016 18:27:13 +0000 (19:27 +0100)]
Remove old gst version guards

As gstreamer-vaapi now only supports from GStreamer 1.6, this patch removes
all the old GStreamer version guards.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoRemove video parser crufts
Víctor Manuel Jáquez Leal [Fri, 22 Jan 2016 18:23:43 +0000 (19:23 +0100)]
Remove video parser crufts

We forgot to remove gstvaapiparse.c when we removed all the videoparser
machinery.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: remove versioning
Víctor Manuel Jáquez Leal [Wed, 9 Dec 2015 18:52:33 +0000 (19:52 +0100)]
libs: remove versioning

Since we don't install libraries anymore, it makes no sense to keep
versioning them according to the gstreamer's version.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agolibs: make libraries no installables
Víctor Manuel Jáquez Leal [Wed, 9 Dec 2015 15:59:16 +0000 (16:59 +0100)]
libs: make libraries no installables

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoDo not install libgstvaapi headers
Víctor Manuel Jáquez Leal [Wed, 9 Dec 2015 14:37:39 +0000 (15:37 +0100)]
Do not install libgstvaapi headers

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoRemove videoparser patches
Sreerenj Balachandran [Tue, 19 Jan 2016 08:40:54 +0000 (10:40 +0200)]
Remove videoparser patches

8 years agoRemove pkg-config files
Víctor Manuel Jáquez Leal [Wed, 9 Dec 2015 14:18:11 +0000 (15:18 +0100)]
Remove pkg-config files

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoRemove codecparsers submodule
Víctor Manuel Jáquez Leal [Wed, 9 Dec 2015 12:24:30 +0000 (13:24 +0100)]
Remove codecparsers submodule

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agoRemove libvpx submodule
Sreerenj Balachandran [Mon, 7 Dec 2015 22:36:36 +0000 (00:36 +0200)]
Remove libvpx submodule

We will be using upstream codecparsers always.
No more internal libvpx !

8 years agobuild: fix check for GstJpegParser
Víctor Manuel Jáquez Leal [Wed, 9 Dec 2015 13:12:22 +0000 (14:12 +0100)]
build: fix check for GstJpegParser

Right now the local JPEG parser is always compiled because the check for the
upstreamed version is broken: it looks for an non existent symbol:
GstJpegImage.

This patch changes that check for< GstJpegFrameHdr.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agowayland: free the frame in frame_release_callback()
Michael Olbrich [Wed, 28 Oct 2015 08:56:46 +0000 (09:56 +0100)]
wayland: free the frame in frame_release_callback()

This basically reverts 62c3888b76afc69f714a020957e8c5dd9d98f561 (wayland:
decouple wl_buffer from frame).

Otherwise the frame may be overwritten while it is still used by the
compositer:

The frame done callback (frame_done_callback()) is called, when the
compositor is done processing the frame and hands it to the hardware.
The buffer release callback (frame_release_callback()) is called when the
buffer memory is no longer used.

This can be quite some time later: E.g. if weston (with the DRM backend)
puts the buffer on a hardware plane, then then buffer release callback is
called when the kernel is done with the buffer. This is usually when the
next frame is shown, so most likely after the frame done callback for the
next frame!

Since 70eff01d36a2870cbf06ffb91c2a941e8cb6b804 "wayland: sync() when
destroy()" the mentioned possible leak should no longer be a problem, so
reverting this change should cause no leaking buffers.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=758848
Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
8 years agovaapipostproc: check ANY caps at transform_caps()
Víctor Manuel Jáquez Leal [Thu, 14 Jan 2016 16:36:24 +0000 (17:36 +0100)]
vaapipostproc: check ANY caps at transform_caps()

When transforming downstream caps we should check for ANY caps from peer pad,
otherwise we get a segmentation fault.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=759893

8 years agovaapisink: ignore frame if its upload failed
Víctor Manuel Jáquez Leal [Wed, 13 Jan 2016 18:17:02 +0000 (19:17 +0100)]
vaapisink: ignore frame if its upload failed

When gst_vaapi_plugin_base_get_input_buffer() fail to copy the input buffer
into a VAAPI buffer, the return value is GST_FLOW_NOT_SUPPORTED, and it was
ignored by the vaapisink, leading to a segmentation fault.

This patch ignores the frame that generated the GST_FLOW_NOT_SUPPORTED
returned by gst_vaapi_plugin_base_get_input_buffer(), avoiding the
segmentation fault, but doing and effort to continue rendering. This is
the same behavior of ximagesink.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=759332

8 years agobuild: Don't ignore GST_PLUGIN_PATH_1_0 even if the directory doesn't exist yet
Joel Holdsworth [Wed, 9 Dec 2015 16:24:50 +0000 (18:24 +0200)]
build: Don't ignore GST_PLUGIN_PATH_1_0 even if the directory doesn't exist yet

https://bugzilla.gnome.org/show_bug.cgi?id=759184

8 years agoAdd 10 HEVC 10 bit decoding support
Sreerenj Balachandran [Tue, 8 Dec 2015 14:14:11 +0000 (16:14 +0200)]
Add 10 HEVC 10 bit decoding support

Only supporting vaapidecode ! vaapisink combination for now.

Missing dependencies:
1: No support for P010 video format in GStreamer
2: No support for P010 vaGetImage()/vaPutimage() in vaapi-intel-driver
3: As a result of 1&2 , we have no support for Vaapi Video memory mapping
   through GstVideoMeta.

Right now we only set chroma format (YUV420 with more than 8 bits per channel)
for surface pool and keeping GST_VIDEO_FORMAT as ENCODED. The underlying format
of the surfaces is implementation (driver) defined, which is P010.

8 years agogstvaapisurfacepool: Add new API to create surface pool based on chroma type
Sreerenj Balachandran [Mon, 1 Jan 2001 02:59:28 +0000 (04:59 +0200)]
gstvaapisurfacepool: Add new API to create surface pool based on chroma type

This new API gst_vaapi_surface_pool_new_with_chroma_type() is for
creating a new GstVaapiVideoPool of GstVaapiSurfaces with the specified
chroam type and dimensions. The underlying format of the surfaces is
implementation (driver) defined.

8 years agoAdd definitions for YUV420 with more than 8 bits per channel
Sreerenj Balachandran [Mon, 7 Dec 2015 17:06:28 +0000 (19:06 +0200)]
Add definitions for YUV420 with more than 8 bits per channel

8 years agogstvaapiporfile: Fix string representation of HEVCMain10 profile
Sreerenj Balachandran [Mon, 7 Dec 2015 15:26:24 +0000 (17:26 +0200)]
gstvaapiporfile: Fix string representation of HEVCMain10 profile

8 years agoBump version for development
Sreerenj Balachandran [Mon, 7 Dec 2015 14:17:11 +0000 (16:17 +0200)]
Bump version for development

8 years ago0.7.0
Sreerenj Balachandran [Mon, 7 Dec 2015 10:52:10 +0000 (12:52 +0200)]
0.7.0

8 years agoNEWS: Updates
Sreerenj Balachandran [Mon, 7 Dec 2015 10:49:05 +0000 (12:49 +0200)]
NEWS: Updates

8 years agoAUTHORS: Update
Sreerenj Balachandran [Mon, 7 Dec 2015 10:47:04 +0000 (12:47 +0200)]
AUTHORS: Update

8 years agoREADME: Update
Sreerenj Balachandran [Mon, 7 Dec 2015 10:39:23 +0000 (12:39 +0200)]
README: Update

8 years agotexture: detect GL version and use the proper API
Víctor Manuel Jáquez Leal [Thu, 26 Nov 2015 09:34:12 +0000 (10:34 +0100)]
texture: detect GL version and use the proper API

When receiving the texture from the application or the video sink, we must
know it size and border. To query the texture the API has changed according to
the OpenGL version used in the GL context of the application/vsink.

This patch checks the current context API type and queries the texture
according to this detected API.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=753099

8 years agotexture: check for expected target and format
Víctor Manuel Jáquez Leal [Thu, 26 Nov 2015 09:19:32 +0000 (10:19 +0100)]
texture: check for expected target and format

gst_vaapi_texture_glx_new_wrapped() only handles a GL_TEXTURE_2D target and
formats GL_RGBA or GL_BGRA.

This patch adds a debugging verification of those values.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=753099

8 years agolibs: add gl3_bind_texture_2d()
Víctor Manuel Jáquez Leal [Thu, 26 Nov 2015 09:26:10 +0000 (10:26 +0100)]
libs: add gl3_bind_texture_2d()

Since OpenGL3.1 removed the fixed pipelines[1] enabling 2D textures is not
needed. In particular, the Intel's Mesa implementation complains if it is
called.

This patch add a new binding function for 2D textures, without enabling
gl3_bind_texture_2d()[2].

1. https://www.opengl.org/wiki/Fixed_Function_Pipeline
2. https://www.opengl.org/wiki/Common_Mistakes#OOP_and_hidden_binding

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=753099

8 years agolibs: add gl_get_current_api()
Víctor Manuel Jáquez Leal [Thu, 26 Nov 2015 09:14:45 +0000 (10:14 +0100)]
libs: add gl_get_current_api()

In order to know which OpenGL API use, we must detect the API type of current
context. This patch adds the function gl_get_current_api() which returns the
OpenGL API type.

This function is an adaptation of gst_gl_context_get_current_gl_api() from
GstGL.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=753099

8 years agobuild: Add gmodule dependency for libgstvaapi_egl
Sreerenj Balachandran [Fri, 27 Nov 2015 10:29:11 +0000 (12:29 +0200)]
build: Add gmodule dependency for libgstvaapi_egl

https://bugzilla.gnome.org/show_bug.cgi?id=756259

8 years agopatches/videoparsers: h264: Disable passthorugh mode enabling
Sreerenj Balachandran [Fri, 27 Nov 2015 12:24:55 +0000 (14:24 +0200)]
patches/videoparsers: h264: Disable passthorugh mode enabling

This is a quick fix for regression introduced by the upstream
commit e8908f5aeef952566f6bccde743c7735d3f8c6ef in h264 videoparser.

The patch is disabling the passthrough mode, otherwise it will
break multi-layer mvc stream parsing.

https://bugzilla.gnome.org/show_bug.cgi?id=758656

8 years agobuild: add gsth265parse patches conditionally
Víctor Manuel Jáquez Leal [Wed, 25 Nov 2015 13:12:53 +0000 (15:12 +0200)]
build: add gsth265parse patches conditionally

As gsth265parse was added in GStreamer 1.4, and gstreamer-vaapi still support
GStreamer 1.2, the patching of gsth265parse must be conditional to the target
GStreamer version.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=755525

8 years agobuild: declare correctly parse lib built files
Víctor Manuel Jáquez Leal [Wed, 25 Nov 2015 13:11:28 +0000 (15:11 +0200)]
build: declare correctly parse lib built files

This is a continuation of commit fc8a0d12

When declaring BUILT_SOURCES, those files should not be distributed. This
patch avoids the distribution of the generated source code.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=755525

8 years agobuild: libvpx: Add missing source file
Sreerenj Balachandran [Tue, 24 Nov 2015 15:14:20 +0000 (17:14 +0200)]
build: libvpx: Add missing source file

8 years agovaapipostproc: Correctly detect the caps change
Sreerenj Balachandran [Mon, 23 Nov 2015 15:21:23 +0000 (17:21 +0200)]
vaapipostproc: Correctly detect the caps change

This is a quick fix for regression introuduced by the
commit 757833230bc73b8e3b4e31649e4618ba802bea51

With out this, the gst_vaapipostproc_create() will
never get invoked.

https://bugzilla.gnome.org/show_bug.cgi?id=758543

8 years agobuild: libvpx: update the sources lists
Víctor Manuel Jáquez Leal [Wed, 18 Nov 2015 19:48:30 +0000 (20:48 +0100)]
build: libvpx: update the sources lists

`make dist` broke since commit f06798 (libvpx: Update the submodule to
libvpx-1.4.0) because the sources.frag does not contain all the module
sources.

This patch updates thoroughly the sources.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=755525

8 years agovaapipostproc: don't set caps change at first set
Víctor Manuel Jáquez Leal [Mon, 16 Nov 2015 16:49:01 +0000 (17:49 +0100)]
vaapipostproc: don't set caps change at first set

When the source caps change, the filter is destroyed and recreated.
Nonetheless, this happens every time the vaapipostproc starts, since the caps
change detection algorithm does not take in consideration when the caps are
set by first time.

This patch intents to be an optimization, to avoid a useless filter
destroy-creation cycle when the sources caps are set for first time.

The new helper function video_info_update() is a refactorization to avoid
duplicated code.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=758007

8 years agovaapipostproc: params video_info_changed() callers
Víctor Manuel Jáquez Leal [Thu, 12 Nov 2015 15:13:25 +0000 (16:13 +0100)]
vaapipostproc: params video_info_changed() callers

The signature is video_info_changed(old_vip, new_vip). Nonetheless the callers
swapped the the order. This didn't raise problems since the comparison of both
structures were not affected by its semantics.

But still it would be better to fix this to keep the coherence of the code.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=758007

8 years agobuild: declare real built files
Víctor Manuel Jáquez Leal [Thu, 24 Sep 2015 10:35:44 +0000 (10:35 +0000)]
build: declare real built files

When runnig the `make dist` target from a clean tree, it fails because
if could not find the copied files from codecparsers submodule.

They weren't copied because they weren't declared as built sources.

This patch removes the stamp mechanism and use the actual file list to copy
as the built sources. Also it fixes the duplication of the parser files.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=755525

8 years agodecoder: vp9: Fix last/golden/altref frame index setting
Sreerenj Balachandran [Tue, 17 Nov 2015 17:37:07 +0000 (19:37 +0200)]
decoder: vp9: Fix last/golden/altref frame index setting

Always fill VADecPictureParameterBufferVP9 last/golden/altref indices
based on what ever reference frame indices encoded in frame header.

8 years agodebian: remove custom parallel compilation
Víctor Manuel Jáquez Leal [Tue, 25 Aug 2015 16:01:51 +0000 (16:01 +0000)]
debian: remove custom parallel compilation

In order to build a debian package with upstream source, the user should
do

  ./autogen.sh
  cp -a debian.upstream debian
  debuild -eDEB_BUILD_OPTIONS="parallel=8" -us -uc -b

The environment variable DEB_BUILD_OPTIONS="parallel=8" is the canonical
way to make a parallel build (-j8 in this case).

This commit removes the script in debian/rules that detects the number of
cpus, requested by the environment variable DEBIAN_BUILD_NCPUS, which is not
official in debian.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=754087

8 years agodecoder: vp9: Fix PTS calculation of cloned frames
Sreerenj Balachandran [Mon, 16 Nov 2015 16:22:55 +0000 (18:22 +0200)]
decoder: vp9: Fix PTS calculation of cloned frames

8 years agodecoder: vp9: Avoid unnecessary show_frame flag checking while doing picture output
Sreerenj Balachandran [Mon, 16 Nov 2015 16:22:33 +0000 (18:22 +0200)]
decoder: vp9: Avoid unnecessary show_frame flag checking while doing picture output

We always set GST_VAAPI_PICTURE_FLAG_SKIPPED for DECODE_ONLY frames and the
gstvaapidecoder base calss is reponsible for handling those frames later on.
No need for explicit verification of frame header's show_frame in order to
do picture outputing.

8 years agodecoder: vp9: Fix ref picture update while doing repeat frame
Sreerenj Balachandran [Mon, 16 Nov 2015 16:22:14 +0000 (18:22 +0200)]
decoder: vp9: Fix ref picture update while doing repeat frame

Don't try to do frame decoding and reference picture update
while receiving a vp9 frame having show_existing_frame flag
set as TRUE.

8 years agodecoder: vp9: Add repeat-frame display handling
Sreerenj Balachandran [Mon, 16 Nov 2015 16:21:56 +0000 (18:21 +0200)]
decoder: vp9: Add repeat-frame display handling

If vp9 frame header come up with show_existing_frame flag set,
we should duplicate the existing decoded frame as current frame to
be displayed.

8 years agovaapidecodebin: add me as element co-author
Víctor Manuel Jáquez Leal [Thu, 12 Nov 2015 10:07:38 +0000 (11:07 +0100)]
vaapidecodebin: add me as element co-author

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757957

8 years agovaapidecodebin: try to get display from decoder
Víctor Manuel Jáquez Leal [Thu, 12 Nov 2015 11:47:01 +0000 (12:47 +0100)]
vaapidecodebin: try to get display from decoder

Rather than create a dummy display, if none has propagated as a context, we
should try to get the one from vaapidecode.

As the bin is already in READY state, the vaapidecode should be also in that
state. That means that the contexts have been negotiated, and it should have
already a display.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757957

8 years agovaapidecodebin: add postprocessor dynamically
Víctor Manuel Jáquez Leal [Wed, 11 Nov 2015 18:04:25 +0000 (19:04 +0100)]
vaapidecodebin: add postprocessor dynamically

The former approach to left the bin unfinished has some problems: the context
cannot be shared because the vaapidecode is unlinked in many cases, leading to
creating a VADisplay twice.

Initially the bin is fully functional, constructed as

(-----------------------------------)
|            vaapidecodebin         |
|   (-------------)    (-------)    |
|<--| vaapidecode |--->| queue |--->|
|   (-------------)    (-------)    |
(-----------------------------------)

When the context is shared and the VADisplay has VPP capabilities, before
changing to READY state, the bin is reconfigured dynamically, adding the
vaapipostproc element afeter the queue:

(--------------------------------------------------------)
|                       vaapidecodebin                   |
|   (-------------)    (-------)    (---------------)    |
|<--| vaapidecode |--->| queue |--->| vaapipostproc |--->|
|   (-------------)    (-------)    (---------------)    |
(--------------------------------------------------------)

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757957

8 years agovaapidecodebin: delay the bin configuration
Víctor Manuel Jáquez Leal [Wed, 11 Nov 2015 15:33:24 +0000 (16:33 +0100)]
vaapidecodebin: delay the bin configuration

Delay the bin configuration until changing to READY state. This is because we
should add the vaapipostproc element until the vaapidecode has emitted the
HAVE_CONTEXT message, so de gst_bin_add() could set the context set to
vaapipostproc.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757957

8 years agodecoder: vp9: Add crop rectangle support.
Sreerenj Balachandran [Fri, 13 Nov 2015 17:39:56 +0000 (19:39 +0200)]
decoder: vp9: Add crop rectangle support.

Set crop rectange if:
There is display_width and display_height which is different from actual width/height
 or
The changed resolution is less than the actual configured dimension of surfaces

8 years agodecoder: vp9: Fix the context and surface pool reset for multi resolution video
Sreerenj Balachandran [Fri, 13 Nov 2015 17:23:05 +0000 (19:23 +0200)]
decoder: vp9: Fix the context and surface pool reset for multi resolution video

Unlike other decoders, vp9 decoder doesn't need to reset the
whole context and surfaces for each resolution change. Context
reset only needed if resolution of any frame is greater than
what actullay configured. There are streams where a bigger
resolution set in ivf header or webm header but actual resolution
of all frames are less. Also it is possible to have inter-prediction
between these multi resolution frames.

8 years agodecoder: vp9: Fill the VADecPictureParameterBufferVP9 width/height from frame header
Sreerenj Balachandran [Fri, 13 Nov 2015 16:58:33 +0000 (18:58 +0200)]
decoder: vp9: Fill the VADecPictureParameterBufferVP9 width/height from frame header

Always fill width/height of VADecPictureParameterBufferVP9 from frame header.
Preliminary fix for supproting multi resolution video decode.

8 years agovaapidecode: Add comments for corner case fixes and fix couple of indentations.
Sreerenj Balachandran [Fri, 13 Nov 2015 16:51:27 +0000 (18:51 +0200)]
vaapidecode: Add comments for corner case fixes and fix couple of indentations.

8 years agodecoder: vp9: Set lossless flag from frame header
Sreerenj Balachandran [Fri, 13 Nov 2015 16:41:53 +0000 (18:41 +0200)]
decoder: vp9: Set lossless flag from frame header

8 years agocodecparsers: Update to gst-vaapi-branch d9f25
Sreerenj Balachandran [Fri, 13 Nov 2015 16:40:52 +0000 (18:40 +0200)]
codecparsers: Update to gst-vaapi-branch d9f25

d9f2527: codecparsers: vp9: Set lossless flag in frame header

8 years agolibs: vp9: remove unused symbols
Víctor Manuel Jáquez Leal [Wed, 11 Nov 2015 18:16:16 +0000 (19:16 +0100)]
libs: vp9: remove unused symbols

clang complains about a couple variables and one label which were not
used. This patch removes them.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757958

8 years agocodecparsers: Update to gst-vaapi-branch da251bb
Sreerenj Balachandran [Tue, 10 Nov 2015 17:00:22 +0000 (19:00 +0200)]
codecparsers: Update to gst-vaapi-branch da251bb

da251bb: codecparsers: vp9: Optimize the memory allocation
f5759f4: codecparsers: vp9: Fix the wrong memcpy of probability arrays

8 years agoplugin: guard pointers to pad query functions
Víctor Manuel Jáquez Leal [Thu, 5 Nov 2015 11:58:52 +0000 (12:58 +0100)]
plugin: guard pointers to pad query functions

Since gstreamer 1.4 is not required to have pad query functions if the query
vmethods are used.

This patch guards out the pad query functions for gstreamer < 1.4

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757629

8 years agovaapiencode: use pad query vmethods
Víctor Manuel Jáquez Leal [Thu, 5 Nov 2015 11:39:55 +0000 (12:39 +0100)]
vaapiencode: use pad query vmethods

GstVideoEncoder, the base class of vaapiencode, added support for pad queries
as virtual methods since gstreamer 1.4. This patch enables those vmethods,
while keeps support for previous versions of gstreamer.

This patch is relevant since GstVideoEncoder takes care of other queries that
we are currently ignoring.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757629

8 years agovaapidecode: return pad's template caps if no display
Víctor Manuel Jáquez Leal [Wed, 28 Oct 2015 12:01:04 +0000 (13:01 +0100)]
vaapidecode: return pad's template caps if no display

A caps query can occur before the element has a display. In that case, the
element can return its pad's template. But when the element already has a
display, and the caps probe fails, the element shall return an empty caps, so
the auto-plug could try with another decoder.

If the element has a display and the caps probe works, then the computed caps
should be returned.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agoplugins: don't create display at caps query
Víctor Manuel Jáquez Leal [Wed, 28 Oct 2015 11:59:02 +0000 (12:59 +0100)]
plugins: don't create display at caps query

Caps query can happen before the element has a bus. The display creation should
be should occur on the context negotiation, when the bus is already configured.
Then at caps query no display should be created.

Instead of force the display creation, we graciously fail the allowed_caps()
creation.

This change only applies for vaapidecode and vaapisink. The vaapipostroc, as a
basetransform descendant, seems to be not affected by this, nor the encoders.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agoplugins: fix context query handling
Víctor Manuel Jáquez Leal [Wed, 4 Nov 2015 20:38:42 +0000 (21:38 +0100)]
plugins: fix context query handling

The current context query handling design is flawed: the function
gst_vaapi_reply_to_query() returns FALSE either if the query is not a
GST_CONTEXT_QUERY of if the query could not be handled correctly. But the
pad query function should handle differently each case.

This patch changes the gst_vaapi_reply_to_query() for
gst_vaapi_handle_context_query() and changes it usage in all the vaapi plugins
to match the correct context query handling.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agoplugin: don't lose previous context at query
Víctor Manuel Jáquez Leal [Wed, 4 Nov 2015 19:37:05 +0000 (20:37 +0100)]
plugin: don't lose previous context at query

When processing the GST_CONTEXT_QUERY we should not lose the previous
context in the query, we should only add our display structure.

This patch copies the old context, if it is there, and stamp our display on
it. Otherwise, a new context is created.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agovaapivideocontext: add gst_vaapi_video_context_set_display()
Víctor Manuel Jáquez Leal [Wed, 4 Nov 2015 19:29:03 +0000 (20:29 +0100)]
vaapivideocontext: add gst_vaapi_video_context_set_display()

This function set the display to an already created context. This function is
going to be used later.

Also, gst_vaapi_video_context_new_with_display() now uses this function.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agoplugins: check if display is set in sync
Víctor Manuel Jáquez Leal [Fri, 30 Oct 2015 11:27:16 +0000 (12:27 +0100)]
plugins: check if display is set in sync

Since the context messages are sync'ed, the display assignation happens in the
same thread, hence we can know if the display was found or not as soon we call
for it.

In order to take advantage of it, gst_vaapi_video_context_prepare() receives,
as a new parameter, the address of the plugin's display, and reports back if
the display was found and set.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agoplugins: set display through context
Víctor Manuel Jáquez Leal [Fri, 30 Oct 2015 11:33:48 +0000 (12:33 +0100)]
plugins: set display through context

Instead of setting the display to the plugin directly after its creation, do
it through the gstreamer's context mechanism, avoiding double assignations.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agovaapivideocontext: rename context structure
Víctor Manuel Jáquez Leal [Mon, 2 Nov 2015 17:20:07 +0000 (18:20 +0100)]
vaapivideocontext: rename context structure

The context structure is named "display" which is too generic. The contrary
happens, for example, with GstGL, what uses the same name as the context, and
its logs make more sense.

This patch renames the context structure with the same name as the
context, thus GST_PTR_FORMAT can pretty print it.

https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agovaapivideocontext: refactor gst_vaapi_video_context_prepare()
Víctor Manuel Jáquez Leal [Wed, 4 Nov 2015 18:02:34 +0000 (19:02 +0100)]
vaapivideocontext: refactor gst_vaapi_video_context_prepare()

First, refactorized run_context_query() into _gst_context_run_query(), adding
a new parameter: the pad direction, in order to simplify the code.

Second, added a new helper function: _gst_context_query(), which is a generic
context query function.  It isolates the operation of running the query and
sets the context if found, also it enhances the logs.

_gst_context_query() is similar to the one used in GstGL. Perhaps, in the
future this helper function will be merged into the core libraries of
GStreamer.

Finally, gst_vaapi_video_context_prepare() was rewritten to use
_gst_context_query().

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agovaapivideocontext: refactor context category debug
Víctor Manuel Jáquez Leal [Fri, 30 Oct 2015 10:18:47 +0000 (11:18 +0100)]
vaapivideocontext: refactor context category debug

Refactor the extraction GST_CAT_CONTEXT logging using a only once
initializator, so we could get the debug category from different code
paths, safely.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

8 years agogstvaapivideocontext: fix indentation
Víctor Manuel Jáquez Leal [Fri, 23 Oct 2015 09:17:01 +0000 (11:17 +0200)]
gstvaapivideocontext: fix indentation

gst-indent does not handle correctly some expression like function
declaration with attributes, breaking the following expressions.

This patch makes gst-indent to ignore the attributed function
declartion so the followed function definition is not mangled, such
as happened in commit b4154a

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598