Commit graph

3273 commits

Author SHA1 Message Date
Víctor Manuel Jáquez Leal
202110bded plugins: direct render when raw video
Enable the direct rendering with linear surfaces if the negotiated src caps
are video/x-raw without features.

Pass also the caps, since they are needed to know the requested caps features.
2016-11-03 08:38:35 +01:00
Víctor Manuel Jáquez Leal
faebca3383 plugins: move src allocator error to instantiator
Just as we did in ensure_sinkpad_allocator(), let's move the error message
into the ensure_srcpad_allocator() from the caller,
gst_vaapi_plugin_base_decide_allocation()
2016-11-03 08:37:51 +01:00
Víctor Manuel Jáquez Leal
02f16e82e9 plugins: enable direct upload if raw video
Enable the direct upload with linear surfaces if the negotiated sink caps are
video/x-raw without features.
2016-11-03 08:35:29 +01:00
Víctor Manuel Jáquez Leal
1605a2646a pluginutil: add gst_caps_is_video_raw() 2016-11-03 08:35:29 +01:00
Víctor Manuel Jáquez Leal
e0d73d613e plugins: receive caps in ensure_sinkpad_allocator()
Instead of receiving the GstVideoInfo structure as parameter, get the original
GstCaps from ensure_sinkpad_buffer_pool(), in this way we could decide better
which allocator instantiate.
2016-11-03 08:35:29 +01:00
Víctor Manuel Jáquez Leal
2761e472af vaapivideomemory: destroy derived image at unmap
If the allocator was configured to use direct upload or rendering, the
generated derived image created at mapping needs to be destroyed after
unmapping, because, in order to process the surface, it should not be marked
as "busy" by the driver.
2016-11-03 08:35:29 +01:00
Víctor Manuel Jáquez Leal
ce8b14858f vaapivideomemory: enhance logs for direct modes
Print, conditionally, only the enabled direct mode.
2016-11-03 08:35:29 +01:00
Víctor Manuel Jáquez Leal
7c692265d8 vaapivideomemory: add direct upload flag
Adds the direct-upload flag in the GstVaapiVideoAllocator and
GstVaapiVideoMemory.

It still doesn't apply any functional change.
2016-11-03 08:35:28 +01:00
Víctor Manuel Jáquez Leal
e988298782 vaapivideomemory: set direct rendering at run-time
The way to experiment with the direct rendering is through and internal
compiler pre-processor flag.

The current change set enables a way to specified at run-time, as a flag
passed to the allocator at instanciation time.
2016-11-03 08:35:28 +01:00
Víctor Manuel Jáquez Leal
1bc5f00dfe vaapivideomemory: log in perf category when copy
Log in performance category when the derive image handling fails, falling back
to memory copy.
2016-11-03 08:35:28 +01:00
Víctor Manuel Jáquez Leal
7e90ae4c2e vaapivideomemory: error log is derive image fails
Instead of a silently failure of the derive image, this patch log an error
message according to the failure.
2016-11-03 08:35:28 +01:00
Víctor Manuel Jáquez Leal
dcbd411275 vaapivideomemory: store surface alloc flags in qdata
For sake of consistency, we should add the requested surface allocation flags
to the object's qdata structure.
2016-11-03 08:35:28 +01:00
Víctor Manuel Jáquez Leal
4016388565 vaapivideomemory: category init when object define
Move the Gstreamer debug category initialize to the GObject definition.
2016-11-03 08:35:28 +01:00
Víctor Manuel Jáquez Leal
5ff513ec27 libs: vaapitexturemap: trivial code-style fix 2016-11-03 08:31:16 +01:00
Víctor Manuel Jáquez Leal
be65508753 libs: display: egl: avoid recreate native display
Instead of passing the native descriptor of the display, just pass the received
GstVaapiDisplay and reuse it.
2016-11-03 08:27:57 +01:00
Víctor Manuel Jáquez Leal
242e801818 plugins: log the GstVaapiDisplay name
Now that GstVaapiDisplay is descendant of GstObject, it has a human-friendly
name. Log it instead of the memory address.
2016-11-03 08:27:57 +01:00
Hyunjun Ko
313860dea4 libs: window: egl: pass native va display
When creating a GstVaapiWindowEGL, it also creates native window by its own
native display. It should pass the native display, either X11 or Wayland.

https://bugzilla.gnome.org/show_bug.cgi?id=768266
2016-11-03 08:27:40 +01:00
Hyunjun Ko
185da3d1a4 libs: display: GstVaapiDisplay as GstObject descendant
This patch is to change the inheritance of GstVaapiDisplay to GstObject,
instead of GstVaapiMiniObject. In this way we can use all the available
infrastructure for GObject/GstObject such as GstTracer, GIR, etc.

In addition, a new debug category for GstVaapiDisplay is created to make it
easier to trace debug messages. It is named "vaapidisplay" and it transverse
all the VA display backends (DRM, GLX, EGL, Wayland, ...)

This patch is a step forward to expose GstVaapiDisplay for users in a future
library.

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

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
2016-11-03 08:24:59 +01:00
Sebastian Dröge
67d4c09341 Back to development 2016-11-01 18:54:54 +02:00
Sebastian Dröge
eb4c8d7302 Release 1.10.0 2016-11-01 18:19:32 +02:00
Víctor Manuel Jáquez Leal
af0c2fab0d vaapidecodebin: resurrect disable-vpp property
https://bugzilla.gnome.org/show_bug.cgi?id=773589
2016-10-27 17:35:33 +02:00
Víctor Manuel Jáquez Leal
4100e8d5c2 vaapidecodebin: name the internal queue
https://bugzilla.gnome.org/show_bug.cgi?id=773589
2016-10-27 17:35:33 +02:00
Víctor Manuel Jáquez Leal
0db3e14989 vaapidecodebin: remove unused variables
Since vaapipostproc is only registered if the driver supports it, all the
support for dynamic loading were removed. Though some leftovers remained.

https://bugzilla.gnome.org/show_bug.cgi?id=773589
2016-10-27 17:35:33 +02:00
Víctor Manuel Jáquez Leal
2e1f69898b docs: document environment variables
https://bugzilla.gnome.org/show_bug.cgi?id=773544
2016-10-27 13:09:21 +02:00
Víctor Manuel Jáquez Leal
74a9f76d32 docs: replace vaapidecode with each codec
In the spirit of the codec split, this patch removes the documentation of
vaapidecode and adds a page per each possible decoder.

Nonetheless, only those available in the compilation system are going to be
instrospected, because the rest are not registered.
2016-10-27 13:04:37 +02:00
Víctor Manuel Jáquez Leal
0b46da2a8f docs: add missing long descriptions 2016-10-27 11:06:06 +02:00
Víctor Manuel Jáquez Leal
bb0abb1a18 vaapipostproc: use GST_*_OBJECT when possible
Since we can have several vaapipostproc operating in a pipeline, it is useful
to know which one is generating the logging message.

https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:38:26 +02:00
Víctor Manuel Jáquez Leal
c258343243 vaapidecode: rename member to allowed_sinkpad_caps
vaapidecode has a member named allowed_caps, but this name is not enough
explicit. This patch renames allowed_caps to allowed_sinkpad_caps.

No functional changes were included.

https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:38:26 +02:00
Víctor Manuel Jáquez Leal
0f938be7a4 plugins: fix code style for errors
https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:38:26 +02:00
Víctor Manuel Jáquez Leal
34e8579238 vaapivideomemory: comment style
https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:38:26 +02:00
Víctor Manuel Jáquez Leal
289a8e5b87 vaapivideomemory: rename input parameter
In order to clarify the use of flag as input parameter, it is renamed to
surface_alloc_flag, since it is used when creating a VA surface with certain
properties.

https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:38:26 +02:00
Víctor Manuel Jáquez Leal
039e8c0d56 vaapidecode: rename element description
So encoders and decoders have similar descriptions.

https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:36:07 +02:00
Víctor Manuel Jáquez Leal
43dd4b7452 vaapiencode: h264, h265: rename codec name
So encoder and decoders have the same codec name.

https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:24:34 +02:00
Víctor Manuel Jáquez Leal
4f4e0a8f36 plugins: simplify code
Merge two lines of variable declarations.

https://bugzilla.gnome.org/show_bug.cgi?id=773497
2016-10-25 19:04:31 +02:00
Hyunjun Ko
abc2480b10 libs: minor correction for logical consistency
GstVaapiDecode is a descendant of GstVaapiMiniObject, so, thought we should
use its methods, even though it doesn't change functionality.

GstVaapiPixmap, GstVaapiTexture and GstVaapiWindow are descendant of
GstVaapiObject, hence its methods shall be used.

https://bugzilla.gnome.org/show_bug.cgi?id=772554
2016-10-25 11:35:22 +02:00
Julien Isorce
84f7a3ec51 vaapivideomemory: add explanation about the call 'dup (dmabuf_fd)'
In short GstFdMemory is configured to call close when using
GstDmabufMemory.

https://bugzilla.gnome.org/show_bug.cgi?id=755072
2016-10-19 19:45:08 +02:00
Víctor Manuel Jáquez Leal
fb95a79818 build: clean up the dlopen usage 2016-10-19 16:14:34 +02:00
Víctor Manuel Jáquez Leal
ef3ee8b7bb encoder: h264,h265: fix regression in offset count
In commit dc35dafa a bug was introduced because I assumed that
GST_CLOCK_TIME_NONE is zero when is -1. This patch fixes that mistake.

https://bugzilla.gnome.org/show_bug.cgi?id=772259
2016-10-19 16:14:34 +02:00
Víctor Manuel Jáquez Leal
60ada3e76b docs: update README 2016-10-18 18:04:48 +02:00
Víctor Manuel Jáquez Leal
9414815383 libs: display: egl: remove unused header include
The header gmodule.h is not used since the library dynamic loading for EGL
display was removed.

https://bugzilla.gnome.org/show_bug.cgi?id=772599
2016-10-08 13:08:29 +02:00
Sebastian Dröge
80036bd63c Release 1.9.90 2016-09-30 13:05:20 +03:00
Vineeth TM
57313f3f70 vaapi: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763083

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
2016-09-23 12:33:58 +02:00
Hyunjun Ko
5a4540e654 plugins: reset textures at negotiation/shutdown
When caps reconfiguration is called, the new downstream frame size might be
different. Thus, if the downstream caps change,the display's texture map is
reset.

In addition, during pipeline shutdown, textures in texture map have to be
released, since each one have a reference to the GstVaapiDisplay object, which
is a dangerous circular reference.

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

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
2016-09-22 17:01:59 +02:00
Hyunjun Ko
a80e10ac5c libs: display{egl,glx}: cache GstVaapiTextures
instances when created and reuse

This patch improves performance when glimagesink uploads a GL texture.

It caches the GStVaapiTexture instances in GstVaapiDisplay{GLX,EGL}, using an
instance of GstVaapiTextureMap, so our internal texture structure can be found
by matching the GL texture id for each frame upload process, avoiding the
internal texture structure creation and its following destruction.

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

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
2016-09-22 17:01:59 +02:00
Hyunjun Ko
f974c91d73 libs: vaapitexturemap: implement GstVaapiTextureMap
Implement GstVaapiTextureMap object, which caches VAAPI textures, so them can be
reused. Internally it is a hash table.

Note that it is GstObject based rather than GstVaapiObject, as part of the future
converstion to GstObject of most of the code.

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

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
2016-09-22 14:19:05 +02:00
Sreerenj Balachandran
0fae277d34 encoder: vp8: Increase the allocation size for coded buffer
We are not getting enough compression for some streams and
encoded frame end up with more size than allocated.
Assuming a compression ratio of 4, which should be good enough
for holding the frames.

https://bugzilla.gnome.org/show_bug.cgi?id=771528
2016-09-21 09:55:53 +03:00
Sreerenj Balachandran
44a90c196d encoder: vp9: Fix refresh frame flag setting
While doing the mode-1 referece picture selection,
the circular buffer logic was not correctly setting the
refresh frame flags as per VP9 spec.
Make sure refresh_flag[0] get updated correclty after
each cycle of GST_VP9_REF_FRAMES.

https://bugzilla.gnome.org/show_bug.cgi?id=771507
2016-09-21 09:52:21 +03:00
Víctor Manuel Jáquez Leal
9afa0ce471 vaapidecode: codec_data minimal size is 7
When the format of a H.264 stream is AVC3, the SPS and PPS are inside the
stream, not in the codec_data, so the size of codec_data might be 7.

This patch reduces the minimal size of the codec_data buffer from 8 to 7.

https://bugzilla.gnome.org/show_bug.cgi?id=771441
2016-09-15 10:38:08 +02:00
Víctor Manuel Jáquez Leal
99d404f1df vaapidecode: reset decoder hard when set_format()
set_format() is called by upstream when the stream capabilites has changed.
Before, if the new stream is compatible with the old one the VA decoder was
not destroyed. Nonetheless, with this behavoir, the VA decoder ignores
when the upstreamer parsers gets more details of the stream, such as the
framerate. Hence, when the src caps are negotiates, the further sink caps
updates are ignored.

This patch forces the VA decoder destroying and recreation when set_format()
is called.

https://bugzilla.gnome.org/show_bug.cgi?id=770921
2016-09-15 10:38:08 +02:00
Sebastian Dröge
c18a6c97e1 configure: Depend on gstreamer 1.9.2.1 2016-09-14 11:31:39 +02:00