Gwenole Beauchesne [Thu, 20 Sep 2012 15:58:21 +0000 (17:58 +0200)]
h264: exclusively use GstAdapter, drop sub-buffer hack.
Maintaining the sub-buffer is rather suboptimal especially since we
were also maintaining a GstAdapter. Now, we only use the GstAdapter
thus requiring minor extra parsing when receiving avcC buffers.
Gwenole Beauchesne [Thu, 20 Sep 2012 14:18:27 +0000 (16:18 +0200)]
README: updates.
Gwenole Beauchesne [Thu, 20 Sep 2012 14:02:39 +0000 (16:02 +0200)]
NEWS: updates.
Gwenole Beauchesne [Thu, 20 Sep 2012 12:38:15 +0000 (14:38 +0200)]
debian: fix packaging on recent Ubuntu platforms.
Use explicit GStreamer plugins path.
Gwenole Beauchesne [Mon, 17 Sep 2012 15:55:43 +0000 (17:55 +0200)]
docs: fix build for make dist.
Kristian Høgsberg [Fri, 14 Sep 2012 14:30:35 +0000 (10:30 -0400)]
wayland: set opaque region for YUV surface.
This allows the compositor to optimize redraws and cull away changes
obscured by the video surface.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 14 Sep 2012 15:30:19 +0000 (17:30 +0200)]
configure: fix check for libva-glx and libva-drm.
Gwenole Beauchesne [Wed, 12 Sep 2012 11:42:49 +0000 (13:42 +0200)]
glibcompat: add replacement for g_cond_wait_until().
Gwenole Beauchesne [Wed, 12 Sep 2012 11:41:47 +0000 (13:41 +0200)]
plugins: include "sysdeps.h" instead of "config.h".
Gwenole Beauchesne [Wed, 12 Sep 2012 08:40:06 +0000 (10:40 +0200)]
codecparsers: jpeg: add missing includes.
Gwenole Beauchesne [Tue, 11 Sep 2012 15:03:33 +0000 (17:03 +0200)]
vaapidecode: don't reset decoder if codec type is the same.
Reset, i.e. destroy then create, the decoder in _setcaps() handler only
if the underlying codec type actually changed. This makes it possible
to be more tolerant with certain MPEG-2 streams that get parsed to
form caps that are compatible with the previous state but minor changes
to "codec-data".
Gwenole Beauchesne [Tue, 11 Sep 2012 14:41:32 +0000 (16:41 +0200)]
vaapidecode: simplify codec lookup from caps.
Add new gst_vaapi_codec_from_caps() helper to determine codec type from
the specified caps. Don't globally expose this function since this is
really trivial and only used in the vaapidecode element.
Gwenole Beauchesne [Tue, 11 Sep 2012 13:54:20 +0000 (15:54 +0200)]
vaapidecode: improve "no free surface" conditions.
Previously, vaapidecode would wait up to one second until a free surface
is available, or it aborts decoding. Now, vaapidecode waits until the
last decoded surface was to be presented, plus one second. Besides, end
times are now expressed relative to the monotonic clock.
Gwenole Beauchesne [Tue, 11 Sep 2012 08:59:33 +0000 (10:59 +0200)]
decoder: propagate buffer duration downstream.
Gwenole Beauchesne [Tue, 11 Sep 2012 08:59:10 +0000 (10:59 +0200)]
surfaceproxy: add "duration" property.
Gwenole Beauchesne [Mon, 10 Sep 2012 16:26:51 +0000 (18:26 +0200)]
decoder: cope with new GstVaapiContextInfo based API.
Update decoders to report the maximum number of reference frames to use.
Gwenole Beauchesne [Mon, 10 Sep 2012 16:17:10 +0000 (18:17 +0200)]
context: JPEG codec does not need any reference frame.
Gwenole Beauchesne [Mon, 10 Sep 2012 16:15:02 +0000 (18:15 +0200)]
context: allow number of reference frames to be set.
Make it possible to specify the maximum number of references to use within
a single VA context. This helps reducing GPU memory allocations to the useful
number of references to be used.
Gwenole Beauchesne [Fri, 7 Sep 2012 14:41:16 +0000 (16:41 +0200)]
vaapipostproc: fix deinterlace-{mode,method} types definition.
Gwenole Beauchesne [Fri, 7 Sep 2012 14:15:40 +0000 (16:15 +0200)]
mpeg4: fix debug info for unsupported profile.
Gwenole Beauchesne [Fri, 7 Sep 2012 14:14:11 +0000 (16:14 +0200)]
libs: fix build in strict ISO C mode.
Gwenole Beauchesne [Fri, 7 Sep 2012 14:11:12 +0000 (16:11 +0200)]
plugins: fix build in strict ISO C mode.
Gwenole Beauchesne [Fri, 7 Sep 2012 13:31:09 +0000 (15:31 +0200)]
pkgconfig: fix dependencies and slightly improve description.
Drop @LIBVA_EXTRA_{CFLAGS,LIBS}@ substitutions and slightly improve
descriptions with clearer renderer names.
Philip Lorenz [Tue, 4 Sep 2012 11:54:19 +0000 (13:54 +0200)]
vaapidecode: acquire lock only if the mutex exists.
When playback stops the GstVaapiDecode object is reset into a clean
state. However, surfaces may still be referenced by library users and
unreferencing them after the reset triggers an access to an unset mutex.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 7 Sep 2012 09:58:53 +0000 (11:58 +0200)]
decoder: drop extraneous return for void function.
Gwenole Beauchesne [Fri, 7 Sep 2012 09:57:59 +0000 (11:57 +0200)]
image: don't use (void *) pointer arithmetic.
Philip Lorenz [Tue, 4 Sep 2012 11:40:04 +0000 (13:40 +0200)]
Do not forward declare enums.
Forward declaring enums is not allowed by the C standard and aborts
compilation if the header file is included in a C++ project.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 7 Sep 2012 09:44:44 +0000 (11:44 +0200)]
configure: fix check for VA/DRM API.
Gwenole Beauchesne [Tue, 4 Sep 2012 09:53:18 +0000 (11:53 +0200)]
vaapisink: fix calculation of window size.
If either dimension is out-of-bounds, then scale window to fit the
display size, even if the output is to be rotated. Use the standard
gst_video_sink_center_rect() function to center and scale the window
wrt. the outer (display) bounds.
Wind Yuan [Tue, 28 Aug 2012 06:45:22 +0000 (02:45 -0400)]
vaapisink: add video rotation support.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Thu, 6 Sep 2012 09:47:40 +0000 (11:47 +0200)]
pluginutils: add G_PRIMITIVE_SWAP() helper macro.
This macro helps swapping variables while maintaining the correct underlying
and primitive type.
Gwenole Beauchesne [Thu, 6 Sep 2012 09:51:41 +0000 (11:51 +0200)]
display: fix display aspect ratio when display is rotated.
Gwenole Beauchesne [Thu, 6 Sep 2012 09:50:21 +0000 (11:50 +0200)]
display: fix physical display size when display is rotated.
Gwenole Beauchesne [Thu, 30 Aug 2012 14:27:56 +0000 (16:27 +0200)]
display: fix GstVaapiRotation enumeration of values.
Gwenole Beauchesne [Wed, 29 Aug 2012 11:18:05 +0000 (13:18 +0200)]
vaapisink: drop obsolete GstVaapiVideoSink interface.
This interface was deprecated since 0.3.x series when the GstVideoContext
interface was added to the main GStreamer APIs.
Gwenole Beauchesne [Mon, 27 Aug 2012 15:34:27 +0000 (18:34 +0300)]
vaapisink: automatically detect overlay rendering mode.
Retain the VA surface until another surface is to be displayed only
if VA display rendering mode is determined to be "overlay" mode.
Gwenole Beauchesne [Fri, 24 Aug 2012 13:30:33 +0000 (16:30 +0300)]
vaapisink: retain VA surface until another one is displayed.
Keep VA surface proxy associated with the surface that is currently
being displayed. This makes sure that surface is not released back
to the pool of surfaces free to use for decoding. This is necessary
with VA driver implementations that support rendering to an overlay
pipe. Otherwise, there could be cases where we are decoding into a
surface that is being displayed, hence some flickering.
Gwenole Beauchesne [Fri, 24 Aug 2012 11:54:16 +0000 (14:54 +0300)]
vaapisink: fix build with older toolchains.
Don't re-declare GstVaapiTexture if USE_GLX mode is set.
Gwenole Beauchesne [Wed, 29 Aug 2012 08:13:58 +0000 (10:13 +0200)]
display: partially revert 8ebe4d6.
Don't try to fix up the initial values, this could make things worse.
Simply assume the driver does not support the capability in this case.
Gwenole Beauchesne [Tue, 28 Aug 2012 14:08:34 +0000 (16:08 +0200)]
tests: dump VA display properties.
Gwenole Beauchesne [Tue, 28 Aug 2012 15:11:32 +0000 (18:11 +0300)]
display: fix validation process of properties during discovery.
Some VA drivers (e.g. EMGD) can have completely random values for initial
display attributes. So, try to improve the discovery process to check the
initial display attribute values actually fall within valid bounds. If not,
try to reset those to some sensible values like the default value reported
through vaQueryDisplayAttributes().
Gwenole Beauchesne [Tue, 28 Aug 2012 11:59:50 +0000 (13:59 +0200)]
display: add color balance properties.
Add support for hue, saturation, brightness and contrast attributes.
Gwenole Beauchesne [Tue, 28 Aug 2012 12:05:16 +0000 (14:05 +0200)]
display: initialize default attribute values.
Ensure the display attribute is actually supported by trying to retrieve
its current value during GstVaapiDisplay creation.
Gwenole Beauchesne [Tue, 28 Aug 2012 09:09:56 +0000 (11:09 +0200)]
display: raise "notify" for property changes.
Gwenole Beauchesne [Tue, 28 Aug 2012 08:55:59 +0000 (10:55 +0200)]
display: expose display attributes as GObject properties.
Expose VA display "render-mode" and "rotation" attributes as standard
GObject properties.
Gwenole Beauchesne [Tue, 28 Aug 2012 14:24:15 +0000 (16:24 +0200)]
display: install properties in batch.
Use g_object_class_install_properties() to install GstVaapiDisplay properties.
It is useful to maintain properties as GParamSpec so that to be able to raise
"notify" signals by id instead of by name in the future.
Gwenole Beauchesne [Mon, 27 Aug 2012 17:00:37 +0000 (19:00 +0200)]
display: fix gst_vaapi_display_has_property().
Append the "render-mode" and "rotation" properties, should they be supported
by the underlying VA driver.
Wind Yuan [Wed, 22 Aug 2012 06:18:11 +0000 (02:18 -0400)]
display: add support for rotation modes.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Mon, 27 Aug 2012 15:11:37 +0000 (18:11 +0300)]
display: add support for rendering modes.
A rendering mode can be "overlay" or "texture"'ed blit.
The former mode implies that a VA surface used for rendering can't be
re-used right away for decoding, so the sink shall make provisions to
retain the associated surface proxy until the next surface is to be
displayed.
The latter mode implies that the VA surface is implicitly copied to an
intermediate backing store, or back buffer of a frame buffer, so the
associated surface proxy can be disposed right away.
Gwenole Beauchesne [Mon, 27 Aug 2012 14:02:49 +0000 (17:02 +0300)]
display: add initial support for display attributes.
The VA display attributes are mapped to properties so that to maintain the
GStreamer terminology. Properties are to be identified by name, but internal
functions are available to lookup the property by the actual VA display
attribute type.
Sreerenj Balachandran [Fri, 24 Aug 2012 08:36:16 +0000 (11:36 +0300)]
jpeg: fix end-of-image (EOI) handler.
decode_current_picture() was converted to return a gboolean instead
of a GstVaapiDecoderStatus, so we were not getting out of the decode
loop as expected, or could cause an error instead.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Fri, 24 Aug 2012 16:41:47 +0000 (18:41 +0200)]
mpeg2: include start code into VA slice data buffer.
Integrate the start code prefix in the slice data buffer that is submitted
to the hardware. VA-API specifies that slice_data_offset is the offset to
the first byte of slice data. And, for MPEG-2, slice() data begins with
the slice_start_code. Some VA driver implementations (EMGD) expect this.
Javier Jardón [Wed, 27 Jun 2012 16:08:03 +0000 (01:08 +0900)]
autogen: fix configure script generation when srcdir != builddir.
This patch allows for regenerating the configure script from a build
directory that is not the actual source directory.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Javier Jardón [Wed, 27 Jun 2012 15:22:03 +0000 (00:22 +0900)]
configure: use new libtool syntax.
This now requires libtool >= 2.2 to regenerate the configure script.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Javier Jardón [Wed, 8 Aug 2012 03:50:41 +0000 (12:50 +0900)]
decoder: use g_object_notify_by_pspec().
Use g_object_notify_by_pspec() instead of g_object_notify() so that to
avoid a property name lookup. i.e. this makes notifications faster to
the `vaapidecode' element.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Mon, 6 Aug 2012 17:21:03 +0000 (19:21 +0200)]
wayland: handle de-interlacing flags.
VA/Wayland API was updated to allow flags for bob deinterlacing.
More elaborated filters will require a complete VA/VPP pipeline.
Gwenole Beauchesne [Thu, 2 Aug 2012 16:27:48 +0000 (18:27 +0200)]
jpeg: fix default quantization tables.
Two elements in the luminance quantization table were wrong. So,
gst_jpeg_get_default_quantization_tables() now reconstructs tables
in zig-zag order from the standard ones (Tables K.1 and K.2).
Gwenole Beauchesne [Thu, 2 Aug 2012 13:17:57 +0000 (15:17 +0200)]
jpeg: compute default Huffman tables.
... instead of having them pre-calculated. This saves around 1.5 KB
of data in the DSO but requires gst_jpeg_get_default_huffman_tables()
to do more work. Though, the client application may have to call that
function at most once, only.
Gwenole Beauchesne [Wed, 1 Aug 2012 16:30:27 +0000 (18:30 +0200)]
display: drop VAProfileNone entries from debug messages.
Yan Yin [Tue, 31 Jul 2012 10:24:14 +0000 (18:24 +0800)]
display: query for supported display attributes.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Yan Yin [Tue, 31 Jul 2012 10:22:48 +0000 (18:22 +0800)]
utils: add string_of_VADisplayAttributeType() helper.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Wed, 1 Aug 2012 13:46:35 +0000 (15:46 +0200)]
vaapisink: handle VA/DRM API.
This is not useful in practice but for raw performance evaluation when
the sink is invoked with display=drm sync=false. fakesink could also be
used though.
Gwenole Beauchesne [Wed, 1 Aug 2012 13:46:19 +0000 (15:46 +0200)]
plugins: add support for headless pipelines.
Gwenole Beauchesne [Wed, 1 Aug 2012 13:44:49 +0000 (15:44 +0200)]
tests: add support for headless decoding.
Gwenole Beauchesne [Wed, 1 Aug 2012 13:44:02 +0000 (15:44 +0200)]
Add initial support for VA/DRM.
Gwenole Beauchesne [Tue, 31 Jul 2012 15:58:43 +0000 (17:58 +0200)]
Fix build without X11 (again).
Don't try to build libgstvaapi-x11.so.* if X11 was disabled. Also shuffle
files list wrt. x11, glx and wayland backends.
Gwenole Beauchesne [Tue, 31 Jul 2012 09:51:57 +0000 (11:51 +0200)]
jpeg: update to the latest VA-API changes (0.32.1+).
Gwenole Beauchesne [Fri, 27 Jul 2012 12:27:05 +0000 (14:27 +0200)]
wayland: implement display ::get_size*() hooks.
Gwenole Beauchesne [Fri, 27 Jul 2012 08:45:41 +0000 (10:45 +0200)]
plugins: prefer X11 rendering over GLX.
Prefer X11 display over GLX so that "vaapisink" uses X11, i.e. vaPutSurface(),
for rendering instead of texturing.
Kristian Høgsberg [Thu, 26 Jul 2012 13:28:51 +0000 (09:28 -0400)]
wayland: use scale fullscreen method.
This makes the compositor scale the surface to fit and preserves aspect
ratio.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Kristian Høgsberg [Thu, 26 Jul 2012 13:27:47 +0000 (09:27 -0400)]
wayland: respond to ping/pong protocol so we're not deemed unresponsive.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Wed, 25 Jul 2012 08:39:04 +0000 (10:39 +0200)]
wayland: fix double disconnect of display.
Gwenole Beauchesne [Tue, 24 Jul 2012 17:58:55 +0000 (19:58 +0200)]
wayland: mangle display name for cache lookups.
Gwenole Beauchesne [Tue, 24 Jul 2012 13:43:44 +0000 (15:43 +0200)]
wayland: add packaging files.
Gwenole Beauchesne [Tue, 24 Jul 2012 13:07:48 +0000 (15:07 +0200)]
Fix build without X11.
Gwenole Beauchesne [Tue, 24 Jul 2012 07:45:25 +0000 (09:45 +0200)]
plugins: add support for Wayland.
Gwenole Beauchesne [Mon, 23 Jul 2012 10:56:33 +0000 (12:56 +0200)]
tests: add support for Wayland.
Sreerenj Balachandran [Thu, 19 Jul 2012 08:27:23 +0000 (10:27 +0200)]
Add initial support for VA/Wayland.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
Gwenole Beauchesne [Wed, 25 Jul 2012 13:11:51 +0000 (15:11 +0200)]
plugins: fix creation of video buffer from surface proxy.
Fix a regression introduced with commit 8ef490a.
Gwenole Beauchesne [Wed, 25 Jul 2012 12:51:28 +0000 (14:51 +0200)]
plugins: use new display types more.
In particular, simplify gst_vaapi_reply_to_query() with display types.
Likewise for creating new video buffers.
Gwenole Beauchesne [Wed, 25 Jul 2012 08:02:29 +0000 (10:02 +0200)]
plugins: fix display type selection and propagation.
If vaapisink is in the GStreamer pipeline, then we shall allocate a
unique GstVaapiDisplay and propagate it upstream. i.e. subsequent
queries from vaapidecode shall get a valid answer from vaapisink.
Gwenole Beauchesne [Wed, 25 Jul 2012 09:37:26 +0000 (11:37 +0200)]
display: fix destruction of mutex.
Gwenole Beauchesne [Wed, 25 Jul 2012 07:16:02 +0000 (09:16 +0200)]
display: add display types.
Move display types from gstvaapipluginutil.* to gstvaapidisplay.* so that
we could simplify characterization of a GstVaapiDisplay. Also rename "auto"
type to "any", and add a "display-type" attribute.
Gwenole Beauchesne [Tue, 24 Jul 2012 17:43:40 +0000 (19:43 +0200)]
display: use prefixed display names for cache lookups.
This improves display name comparisons by always allocating a valid display
name. This also helps to disambiguate lookups by name in the global display
cache, should a new backend be implemented.
Gwenole Beauchesne [Tue, 24 Jul 2012 14:14:51 +0000 (16:14 +0200)]
plugins: declare helper functions as internal.
Gwenole Beauchesne [Tue, 24 Jul 2012 12:31:25 +0000 (14:31 +0200)]
videobuffer: drop deprecated functions.
Move video buffer creation routines to plugin elements. That exclusively
uses *_typed_new*() variants.
Gwenole Beauchesne [Tue, 24 Jul 2012 12:09:09 +0000 (14:09 +0200)]
videobuffer: mark video buffer creation routines as deprecated.
The vdeo buffer creation routines shall actually be internal to gstreamer-vaapi
plugin elements. So deprecate any explicit creation routines that are not the
new *_typed_new*() variants.
Gwenole Beauchesne [Tue, 24 Jul 2012 11:52:06 +0000 (13:52 +0200)]
videobuffer: factor out base and GLX implementations.
Introduce new typed constructors internal to gstreamer-vaapi plugin elements.
This avoids duplication of code, and makes it possible to further implement
generic video buffer creation routines that automatically map to base or GLX
variants.
Gwenole Beauchesne [Tue, 24 Jul 2012 08:58:32 +0000 (10:58 +0200)]
utils: fix gl_create_context() with parent context set.
If GLX window was created from a foreign Display, then that same Display shall
be used for subsequent glXMakeCurrent(). This means that gl_create_context()
will now use the same Display that the parent, if available.
This fixes cluttersink with the Intel GenX VA driver.
Gwenole Beauchesne [Mon, 23 Jul 2012 16:37:38 +0000 (18:37 +0200)]
pluginutils: improve automatic display type selection.
Gwenole Beauchesne [Mon, 23 Jul 2012 16:01:26 +0000 (18:01 +0200)]
pluginutils: cosmetics (indentation fixes).
Gwenole Beauchesne [Mon, 23 Jul 2012 15:54:58 +0000 (17:54 +0200)]
configure: simplify video outputs summary.
Gwenole Beauchesne [Mon, 23 Jul 2012 15:49:08 +0000 (17:49 +0200)]
configure: drop check for --enable-vaapisink-glx.
vaapisink is now built with support for multiple display types, whenever
they are enabled. The new "display" attribute is used to select a particular
renderer.
Gwenole Beauchesne [Mon, 23 Jul 2012 14:15:38 +0000 (16:15 +0200)]
configure: drop check for --enable-vaapi-glx.
This flag is obsolete. It was meant to explicitly enable/disable VA/GLX API
support, or fallback to TFP+FBO if this API is not found. Now, we check for
the VA/GLX API by default if --enable-glx is set. If this API is not found,
we now default to use TFP+FBO.
Note: TFP+FBO, i.e. using vaPutSurface() is now also a deprecated usage and
will be removed in the future. If GLX rendering is requested, then the VA/GLX
API shall be used as it covers most usages. e.g. AMD driver can't render to
an X pixmap yet.
Gwenole Beauchesne [Mon, 23 Jul 2012 13:20:23 +0000 (15:20 +0200)]
tests: allow GLX output, if available and selected.
Gwenole Beauchesne [Mon, 23 Jul 2012 13:17:03 +0000 (15:17 +0200)]
tests: use common display and window creation routines.
Add new --output option to select the renderer. Use --list-outputs to
print a list of supported renderers.
Gwenole Beauchesne [Mon, 23 Jul 2012 12:15:42 +0000 (14:15 +0200)]
tests: move encoded bitstreams to libutils.la.
Gwenole Beauchesne [Mon, 23 Jul 2012 12:11:16 +0000 (14:11 +0200)]
tests: build convenience library for common utilities.
Gwenole Beauchesne [Fri, 20 Jul 2012 14:37:01 +0000 (16:37 +0200)]
tests: simplify build with various display options.
Gwenole Beauchesne [Mon, 23 Jul 2012 11:28:42 +0000 (13:28 +0200)]
configure: improve checks for X11.