platform/upstream/gstreamer-vaapi.git
8 years agoadd buildrequire of gl 03/55103/1 accepted/tizen_3.0_ivi accepted/tizen_ivi accepted/tizen_mobile accepted/tizen_tv accepted/tizen_unified accepted/tizen_wearable tizen tizen_3.0 tizen_3.0.m2 accepted/tizen/3.0/ivi/20161011.044205 accepted/tizen/ivi/20160218.024724 accepted/tizen/mobile/20151222.090854 accepted/tizen/tv/20151222.090913 accepted/tizen/unified/20170309.035655 accepted/tizen/wearable/20151222.090930 submit/tizen/20151222.074453 submit/tizen_3.0.m2/20170104.093752 submit/tizen_3.0_common/20161104.104000 submit/tizen_3.0_ivi/20161010.000002 submit/tizen_common/20151229.144031 submit/tizen_common/20151229.154718 submit/tizen_common/20160104.140200 submit/tizen_ivi/20160217.000000 submit/tizen_ivi/20160217.000005 submit/tizen_unified/20170308.100413 tizen_4.0.m1_release
Eunhae Choi [Tue, 22 Dec 2015 02:33:12 +0000 (11:33 +0900)]
add buildrequire of gl

Change-Id: I0ca24772dda69b10e55a242e5b17e2f352725683

8 years agoto upgrade Gstreamer version to 1.6.1 74/52874/1 accepted/tizen/mobile/20151201.085624 accepted/tizen/tv/20151201.085649 accepted/tizen/wearable/20151201.085714 submit/tizen/20151127.020604 submit/tizen/20151127.065352 submit/tizen/20151201.024149
Eunhae Choi [Fri, 27 Nov 2015 05:21:19 +0000 (14:21 +0900)]
to upgrade Gstreamer version to 1.6.1

Change-Id: Id53742742f196ab8c7b6d5a7c36bfc68213be30d

9 years agoignore bitparser error 72/33872/1 accepted/tizen_common tizen_3.0.2014.q4_common tizen_3.0.2015.q1_common tizen_3.0.2015.q2_common tizen_3.0.m1_mobile tizen_3.0.m1_tv accepted/tizen/3.0/ivi/20150120.103014 accepted/tizen/common/20150119.084354 accepted/tizen/ivi/20150121.052705 accepted/tizen/mobile/20150119.094458 accepted/tizen/tv/20150119.093547 accepted/tizen/wearable/20150119.094016 submit/tizen/20150116.073322 submit/tizen_3.0_ivi/20150120.011540 submit/tizen_3.0_ivi/20150120.070303 tizen_3.0.m1_mobile_release tizen_3.0.m1_tv_release tizen_3.0.m2.a1_mobile_release tizen_3.0.m2.a1_tv_release tizen_3.0_ivi_release
Yan Yin [Wed, 14 Jan 2015 09:19:40 +0000 (17:19 +0800)]
ignore bitparser error

Fixed Bug-Tizen: TC-1958, for some videos containing bad frames,
bitstream parse fails and vaapidecode can't tolerate this error,
this is a workaround fix to ignore the bitparser error and allow
video continue playback.

Change-Id: Id1b2742a21a509fabc9f3282e58d60db32eba881

9 years agoencoder: h264: fix pixel-aspect-ratio in encoded stream. 98/33098/1 sandbox/pcoval/tizen tizen_3.0_ivi accepted/tizen/common/20150107.103226 accepted/tizen/ivi/20150115.063004 accepted/tizen/mobile/20150108.002430 accepted/tizen/tv/20150108.003224 accepted/tizen/wearable/20150108.003811 submit/tizen/20150106.103429 submit/tizen_ivi/20150114.092400
Gwenole Beauchesne [Thu, 27 Nov 2014 09:13:20 +0000 (11:13 +0200)]
encoder: h264: fix pixel-aspect-ratio in encoded stream.

Really report sample aspect ratio (SAR) as present, and make it match
what we have obtained from the user as pixel-aspect-ratio (PAR). i.e.
really make sure VUI parameter aspect_ratio_info_present_flag is set
to TRUE and that the indication from aspect_ratio_idc is Extended_SAR.

This is a leftover from git commit a12662f.

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

Change-Id: I092ef22038c4862dae645d58c59be0cd5b506fc5
Bug-Tizen: TC-2113/part
Origin: upstream

9 years agodecoder: mpeg4: fix uninitialized variables. 97/33097/1
Gwenole Beauchesne [Tue, 25 Nov 2014 10:46:12 +0000 (11:46 +0100)]
decoder: mpeg4: fix uninitialized variables.

Fix gst_vaapi_decoder_mpeg4_parse() to initialize the packet type to
GST_MPEG4_USER_DATA so that a parse error would result in skipping
that packet. Also fix gst_vaapi_decoder_mpeg4_decode_codec_data() to
initialize status to GST_VAAPI_DECODER_STATUS_SUCCESS.

Change-Id: I0a6410b87ebbd686d1ed561b0575b14aae08a78f
Origin: upstream
Bug-Tizen: TC-2113/part

9 years agoencoder: h264: fix profile limits. 96/33096/1
Gwenole Beauchesne [Tue, 25 Nov 2014 10:41:49 +0000 (11:41 +0100)]
encoder: h264: fix profile limits.

Fix ensure_profile_limits() to lower profile to the desired limits,
only if the latter are actually known and the profile needed to be
changed to fit.

Change-Id: Id0a7b26e7cf6e6b5473e7208477a0f00af30a78c
Origin: upstream
Bug-Tizen: TC-2113/part

9 years agopackaging: gitmodules refresh 88/25388/2 accepted/tizen_3.0.2014.q3_common accepted/tizen_3.0.m14.3_ivi tizen_3.0.2014.q3_common tizen_3.0.m14.3_ivi accepted/tizen/common/20140806.102058 accepted/tizen/ivi/20140813.175914 submit/tizen/20140804.150939 submit/tizen/20140804.160000 submit/tizen_mobile/20141120.000000 tizen_3.0.2014.q3_common_release tizen_3.0.m14.3_ivi_release
Philippe Coval [Mon, 4 Aug 2014 13:19:54 +0000 (15:19 +0200)]
packaging: gitmodules refresh

Change-Id: I4db7ebc1e6b97f8a44943860a5113e14658d814c
Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
9 years agopackaging: gitmodules helper script 90/25390/2
Philippe Coval [Mon, 4 Aug 2014 13:21:59 +0000 (15:21 +0200)]
packaging: gitmodules helper script

Change-Id: I5c34850dcc2702a9e89ed4c97e03b60733cb5ac7
Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
9 years agopackaging: Bump to 0.5.9 87/25387/2
Philippe Coval [Mon, 4 Aug 2014 08:38:15 +0000 (10:38 +0200)]
packaging: Bump to 0.5.9

Skip downstream changes

skip 9a6e4b0 Fix issue of mem map
skip pick 341b3a6 add foreign wl_display/wl_surface support
skip 5ecba2a add 'frame-rendered' signal for wayland platform
skip 8b41ff8 wayland: retain additional 3 gst buffer after video rendering
skip 9b936db destroy wl_buffer by register to wl_buffer_listener
skip 8a5ea40 wayland: disable crop support by vpp
skip 36d7453 wayland: update frame sync callback
skip 1c09675 h264 dec: add more checks from pps for hardware profile
skip 0549a7d add gst_vaapi_plugin_base_set_native_display

skip b55a697 spec: update for gst 1.2 build

Change-Id: Ib33e43ac85c32a22a640bbd70209ef9aa0c5895f
Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
9 years agopackaging: uses upstream tags
Philippe Coval [Tue, 29 Apr 2014 13:36:30 +0000 (15:36 +0200)]
packaging: uses upstream tags

Change-Id: Ibf6b15da3519f63c2e5d1b81854552d1fc8fbbf8
Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
9 years agoFix build gstreamer-vaapi into pure Wayland build
Ronan Le Martret [Wed, 19 Feb 2014 07:57:23 +0000 (08:57 +0100)]
Fix build gstreamer-vaapi into pure Wayland build

Replace GL by GLES for Wayland.

Change-Id: Iacefe64e35020ac46c99647f8dede83354d7192d
Signed-off-by: Ronan Le Martret <ronan@fridu.net>
9 years agopackaging: changelog: update to 0.5.8 version
Zhao, Halley [Mon, 17 Feb 2014 17:35:42 +0000 (01:35 +0800)]
packaging: changelog: update to 0.5.8 version

Change-Id: I17d1ea8163fe840e418b298b424a95eebea8c20b

9 years agopackaging: add packaging folder and update submodule pkgs
Zhao, Halley [Sun, 16 Feb 2014 19:07:14 +0000 (03:07 +0800)]
packaging: add packaging folder and update submodule pkgs

Change-Id: Ic9c64afc8769df0d4166c2224e7a69d00fcb0f49

9 years agoAUTHORS: updates. upstream 0.5.9
Gwenole Beauchesne [Tue, 29 Jul 2014 08:31:58 +0000 (10:31 +0200)]
AUTHORS: updates.

9 years agoNEWS: updates.
Gwenole Beauchesne [Tue, 29 Jul 2014 08:31:15 +0000 (10:31 +0200)]
NEWS: updates.

9 years agovaapidecode: properly return from decode loop on downstream errors.
Matthew Waters [Tue, 29 Jul 2014 06:22:01 +0000 (16:22 +1000)]
vaapidecode: properly return from decode loop on downstream errors.

Fixes a hang/race on shutdown where _decode_loop() had already completed
its execution and _finish() was waiting on a GCond for decode_loop()
to complete.  Also fixes the possible race where _finish() is called
but _decode_loop() endlessly returns before signalling completion
iff the decoder instance returns GST_FLOW_OK.

Found with: ... ! vaapidecode ! {glimagesink,cluttersink}

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

[factored out GST_VIDEO_DECODER_STREAM_UNLOCK() call]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years ago0.5.9.
Gwenole Beauchesne [Mon, 28 Jul 2014 16:45:49 +0000 (18:45 +0200)]
0.5.9.

9 years agovaapisink: fix GstVideoOverlay::expose() implementation.
Gwenole Beauchesne [Mon, 28 Jul 2014 16:31:09 +0000 (18:31 +0200)]
vaapisink: fix GstVideoOverlay::expose() implementation.

Now that we always track the currently active video buffer, it is
not necessary to automatically increase its reference since this is
implicitly performed in ::show_frame() through the get_input_buffer()
helper from GstVaapiPluginBase class.

This is a regression from a26df80.

9 years agovaapidecode: simplify bufferpool configuration.
Gwenole Beauchesne [Mon, 28 Jul 2014 16:00:19 +0000 (18:00 +0200)]
vaapidecode: simplify bufferpool configuration.

Rework the logics behind the configuration of an adequate bufferpool,
especially when OpenGL meta or additional capsfeatures are needed.

Besides, for GStreamer >= 1.4, the first capsfeatures that gets matched,
and that is not system memory, is now selected by default.

9 years agovaapidecode: fix auto-plugging of vaapisink element.
Gwenole Beauchesne [Mon, 28 Jul 2014 14:43:47 +0000 (16:43 +0200)]
vaapidecode: fix auto-plugging of vaapisink element.

Make sure to propagate memory:VASurface capsfeature to srcpad caps
only for GStreamer >= 1.5 as the plug-in elements in GStreamer 1.4
core currently miss additional patches available in 1.5-git (1.6).

This is a temporary workaround.

9 years agoconfigure: allow builds against GStreamer git (1.5.x).
Sreerenj Balachandran [Mon, 28 Jul 2014 12:54:46 +0000 (15:54 +0300)]
configure: allow builds against GStreamer git (1.5.x).

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

9 years agoconfigure: fix build with GStreamer 1.4.0 release.
Gwenole Beauchesne [Mon, 28 Jul 2014 12:20:33 +0000 (14:20 +0200)]
configure: fix build with GStreamer 1.4.0 release.

9 years agodebian: fix packaging for new naming scheme.
Gwenole Beauchesne [Tue, 4 Mar 2014 18:40:59 +0000 (19:40 +0100)]
debian: fix packaging for new naming scheme.

9 years agoNEWS: updates.
Gwenole Beauchesne [Mon, 28 Jul 2014 09:52:06 +0000 (11:52 +0200)]
NEWS: updates.

9 years agoconfigure: mark support for GStreamer < 1.2 as deprecated.
Gwenole Beauchesne [Mon, 28 Jul 2014 09:39:11 +0000 (11:39 +0200)]
configure: mark support for GStreamer < 1.2 as deprecated.

Supporting anything thing below GStreamer 1.2 is asking for trouble
for keeping up with the required facilities to make efficient pipelines.
Users are invited to upgrade to the very latest GStreamer 1.2.x release,
at the minimum.

9 years agoconfigure: mark support for GStreamer 0.10 as obsolete.
Gwenole Beauchesne [Mon, 28 Jul 2014 09:35:24 +0000 (11:35 +0200)]
configure: mark support for GStreamer 0.10 as obsolete.

Support for GStreamer 0.10 is obsolete. i.e. it is no longer supported
and may actually be removed altogether for a future release. There is
no real point to maintain a build for such an ancient GStreamer version
that is not even supported upstream.

9 years agovaapisink: allow a specific view component to be displayed.
Gwenole Beauchesne [Mon, 28 Jul 2014 08:25:26 +0000 (10:25 +0200)]
vaapisink: allow a specific view component to be displayed.

If a multiview stream is decoded, multiple view components are submitted
as is downstream. It is the responsibility of the sink element to display
the required view components. By default, always select the frame buffer
that matches the view-id of the very first frame to be displayed.

However, introduce a "view-id" property to allow the selection of a
specific view component of interest to display.

9 years agovaapisink: always keep the last displayed buffer around.
Gwenole Beauchesne [Mon, 28 Jul 2014 08:09:34 +0000 (10:09 +0200)]
vaapisink: always keep the last displayed buffer around.

Always record the VA surface that is currently being rendered, no matter
the fact we are using texturedblit or overlay. That's because in some
occasions, we need to refresh or resize the displayed contents based on
new events. e.g. user-resized window.

Besides, it's simpler to track the last video buffer in GstVaapiSink than
through the base sink "last-sample".

9 years agovaapisink: add support for "display-name" property.
Gwenole Beauchesne [Fri, 25 Jul 2014 09:13:29 +0000 (11:13 +0200)]
vaapisink: add support for "display-name" property.

Add a "display-name" property to vaapisink so that the end user could
select the desired output. Keep "display-name" in-line with the existing
"display" (GstVaapiDisplayXXX type).

So, for X11 or GLX, the "display-name" is the usual display name as we
know for XOpenDisplay(); for Wayland, the "display-name" is the name used
for wl_display_connect(); and for DRM, the "display-name" is actually the
DRI device name.

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

9 years agowindow: make gst_vaapi_window_reconfigure() thread-safe.
Gwenole Beauchesne [Fri, 25 Jul 2014 15:29:40 +0000 (17:29 +0200)]
window: make gst_vaapi_window_reconfigure() thread-safe.

Ensure the X11 implementation for GstVaapiWindow::get_geometry() is
thread-safe by default, so that upper layer users don't need to handle
that explicitly.

9 years agowindow: allow for updating size from current geometry.
Holger Kaelberer [Mon, 29 Jul 2013 07:28:28 +0000 (09:28 +0200)]
window: allow for updating size from current geometry.

Add gst_vaapi_window_reconfigure() interface to force an update of
the GstVaapiWindow "soft" size, based on the current geometry of the
underlying native window.

This can be useful for instance to synchronize the window size when
the user changed it.

Thanks to Fabrice Bellet for rebasing the patch.

[changed interface to gst_vaapi_window_reconfigure()]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agowindow: re-indent all GstVaapiWindow related source code.
Gwenole Beauchesne [Fri, 25 Jul 2014 14:53:41 +0000 (16:53 +0200)]
window: re-indent all GstVaapiWindow related source code.

9 years agodisplay: add interface to retrieve the display name.
Gwenole Beauchesne [Fri, 25 Jul 2014 09:24:39 +0000 (11:24 +0200)]
display: add interface to retrieve the display name.

Add gst_vaapi_display_get_display_name() helper function to determine
the name associated with the underlying native display. Note that for
raw DRM backends, the display name is actually the device path.

9 years agodisplay: fix comparison of X11 display names.
Gwenole Beauchesne [Fri, 25 Jul 2014 08:55:53 +0000 (10:55 +0200)]
display: fix comparison of X11 display names.

Make sure to not only compare display host names, but also the actual
display number. The screen number does not need to be checked at this
time.

9 years agovaapidecode: add support for VideoAlignment bufferpool option.
Gwenole Beauchesne [Fri, 25 Jul 2014 13:52:06 +0000 (15:52 +0200)]
vaapidecode: add support for VideoAlignment bufferpool option.

Always add VideoAlignment bufferpool option if the downstream element
expects its own pool to be used but does not offer it through a proper
propose_allocation() implementation for instance, and that the ALLOCATION
query does not expose the availability of the Video Meta API.

This fixes propagation of video buffer stride information to Firefox.

9 years agovaapivideomemory: always prefer native VA surface formats.
Gwenole Beauchesne [Fri, 25 Jul 2014 13:44:58 +0000 (15:44 +0200)]
vaapivideomemory: always prefer native VA surface formats.

Make sure to always prefer native internal formats for the VA surfaces
that get allocated. Also disable "direct-rendering" mode in this case.

This is needed so that to make sure that anything that gets out of the
decoder, or anything that gets into the encoder, is in native format
for the hardware, and thus the driver doesn't need to perform implicit
conversions in there. Interop with SW elements is still available with
fast implementations of VA imaging APIs.

9 years agovaapivideomemory: disallow memory shares across buffers, use a copy.
Gwenole Beauchesne [Thu, 24 Jul 2014 09:58:29 +0000 (11:58 +0200)]
vaapivideomemory: disallow memory shares across buffers, use a copy.

Forbid shares of GstMemory instances, and rather make copy of it. This
effectively copies the GstMemory structure and enclosed metadata, but
this does not copy the VA surface contents itself. It should though.

This fixes preroll and makes sure to not download garbage for the first
frame when a SW rendering sink is used.

9 years agovaapivideomemory: use an image pool to cache objects.
Gwenole Beauchesne [Thu, 24 Jul 2014 04:46:22 +0000 (06:46 +0200)]
vaapivideomemory: use an image pool to cache objects.

Use an image pool to hold VA images to be used for downloads/uploads
of contents for the associated surface.

This is an optmization for size. So, instead of creating as many VA
images as there are buffers (then VA surfaces) allocated, we only
maintain a minimal set of live VA images, thus preserving memory
resources.

9 years agovaapivideomemory: forbid R/W mappings if non direct-rendering mode.
Gwenole Beauchesne [Wed, 23 Jul 2014 22:14:04 +0000 (00:14 +0200)]
vaapivideomemory: forbid R/W mappings if non direct-rendering mode.

Disable read-write mappings if "direct-rendering" is not supported.
Since the ordering of read and write operations is not specified,
this would require to always download the VA surface on _map(), then
commit the temporary VA image back to the VA surface on _unmap().

Some SW decoding plug-in elements still use R/W mappings though.

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

9 years agovaapivideomemory: minor code clean-ups.
Gwenole Beauchesne [Wed, 23 Jul 2014 21:49:53 +0000 (23:49 +0200)]
vaapivideomemory: minor code clean-ups.

Fix error messages introduced in the previous commit for the _map()
imaplementation. Also use the new get_image_data() helper function
to determine the base pixels data buffer from a GstVaapiImage when
updating the video info structure from it.

9 years agovaapivideomemory: add support for raw pixels mappings.
Gwenole Beauchesne [Wed, 23 Jul 2014 16:54:13 +0000 (18:54 +0200)]
vaapivideomemory: add support for raw pixels mappings.

Allow raw pixels of the whole frame to be mapped read-only. i.e. in
cases where the buffer pool is allocated without VideoMeta API, thus
individual planes cannot be mapped.

This is initial support for Firefox >= 30.

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

9 years agovaapivideomemory: fix determination of the surface pool format.
Sreerenj Balachandran [Thu, 3 Jul 2014 15:41:11 +0000 (18:41 +0300)]
vaapivideomemory: fix determination of the surface pool format.

While creating the vaapi video allocator, make sure the associated
surface pool has correct format instead of defaulting to NV12 video
format even though there is no direct rendering support.

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

9 years agovaapivideomemory: fix association of surface to proxy.
Gwenole Beauchesne [Wed, 23 Jul 2014 16:01:21 +0000 (18:01 +0200)]
vaapivideomemory: fix association of surface to proxy.

Make sure to always update the VA surface pointer whenever the proxy
changes. This used to only work when the VA surface is written to, in
interop with SW element ("upload" feature), and this now fixes cases
when the VA surface is needed for reading, in interop with SW element
("download" feature).

9 years agoplugins: expose I420 format for interop with SW elements.
Gwenole Beauchesne [Wed, 23 Jul 2014 08:23:06 +0000 (10:23 +0200)]
plugins: expose I420 format for interop with SW elements.

Always expose I420 format by default when the VA surface could be
mapped for interoperability with non harware accelerated elements.
However, the default behaviour remains the auto-plugging of vaapi
elements, down to the sink.

Side effect: "direct-rendering" mode is also disabled most of the
times as plain memcpy() from uncached speculative write combining
memory is not going to be efficient enough.

9 years agoplugins: allow download capability to vaapidecode element.
Gwenole Beauchesne [Tue, 22 Jul 2014 16:54:29 +0000 (18:54 +0200)]
plugins: allow download capability to vaapidecode element.

Fix support for VA surface download capability in vaapidecode element
for GStreamer >= 1.2. This is a fix to supporting libva-vdpau-driver,
but also the libva-intel-driver while performing hardware accelerated
conversions from the native VA surface format (NV12) to the desired
output VA image format.

For instance, this fixes pipelines involving vaapidecode ! xvimagesink.

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

9 years agodecoder: mpeg4: fix picture decoder return value for skipped frames.
Fabrice Bellet [Wed, 16 Jul 2014 23:51:36 +0000 (01:51 +0200)]
decoder: mpeg4: fix picture decoder return value for skipped frames.

The picture decoder should return GST_VAAPI_DECODER_STATUS_DROP_FRAME
when a frame should be skipped, so the stream processing is not stalled.

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

9 years agodecoder: mpeg2: respect any input PTS provided for a frame.
Jan Schmidt [Fri, 4 Jul 2014 05:13:32 +0000 (15:13 +1000)]
decoder: mpeg2: respect any input PTS provided for a frame.

The timestamp generator in gstvaapidecoder_mpeg2.c always interpolated
frame timestamps within a GOP, even when it's been fed input PTS for
every frame.

That leads to incorrect output timestamps in some situations - for example
live playback where input timestamps have been scaled based on arrival time
from the network and don't exactly match the framerate.

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

9 years agoGstVaapiObject: make gst_vaapi_object_new() more robust.
Sreerenj Balachandran [Wed, 22 Jan 2014 06:20:59 +0000 (08:20 +0200)]
GstVaapiObject: make gst_vaapi_object_new() more robust.

Forbid GstVaapiObject to be created without an associated klass spec.
It is mandatory that the subclass implements an adequate .finalize()
hook, so it shall provide a valid GstVaapiObjectClass.

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

[made non-NULL klass argument to gst_vaapi_object_new() a requirement]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agoGstVaapiObject: initialize the derived object data with init() hook.
Sreerenj Balachandran [Tue, 21 Jan 2014 13:43:57 +0000 (15:43 +0200)]
GstVaapiObject: initialize the derived object data with init() hook.

Call the subclass .init() function in gst_vaapi_object_new(), if
needed. The default behaviour is to zero initialize the subclass
object data, then the .init() function can be used to initialize
fields to non-default values, e.g. VA object ids to VA_INVALID_ID.

Also fix the gst_vaapi_object_new() description, which was merely
copied from GstVaapiMiniObject.

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

[changed to always zero initialize the subclass]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agovaapidecode: make decoder work with playbin
Lionel Landwerlin [Fri, 13 Jun 2014 20:45:04 +0000 (21:45 +0100)]
vaapidecode: make decoder work with playbin

When playbin/decodebin builds the pipeline, it puts decoders and sinks
into different bins and forwards the queries from bins to bins. So in
the initials steps the pipeline is built iteratively by playbin and
looks like this :

[filesrc]

[filesrc] -> [typefind]

[filesrc] -> [typefind] -> [demuxer]

[filesrc] -> [typefind] -> [demuxer] -> [decoder]

At this point the decoder is asked for its SRC caps and it will make a
choice based on what gst_pad_peer_query_caps() returns. The problem is
that the caps returns at that point includes caps features like ANY,
essentially because playbin can plug in additional elements like
videoscale, videoconv or deinterlace.

This patch adds a another call to
gst_vaapi_find_preferred_caps_feature() when the decoder decides its
allocation, to make sure we asks the downstream elements when the
entire pipeline has been built.

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

9 years agovaapipostproc: don't let tmp_rect go out of scope.
Simon Farnsworth [Fri, 27 Jun 2014 10:57:11 +0000 (11:57 +0100)]
vaapipostproc: don't let tmp_rect go out of scope.

A compiler change showed me that tmp_rect went out of scope before
it was used. Move it to the beginning of the function instead.

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

Signed-off-by: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
[added guards for GStreamer 0.10 builds]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agoAUTHORS: updates.
Gwenole Beauchesne [Thu, 3 Jul 2014 20:44:40 +0000 (22:44 +0200)]
AUTHORS: updates.

9 years agoREADME: updates.
Gwenole Beauchesne [Thu, 3 Jul 2014 20:34:35 +0000 (22:34 +0200)]
README: updates.

Drop references to deprecated plugins (vaapiupload, vaapidownload),
mention that support for GStreamer 0.10 is deprecated, make overview
more descriptive in certain aspects.

9 years agoNEWS: updates.
Gwenole Beauchesne [Thu, 3 Jul 2014 20:21:39 +0000 (22:21 +0200)]
NEWS: updates.

9 years agobuild: mention that support for GStreamer 0.10 is deprecated.
Gwenole Beauchesne [Thu, 3 Jul 2014 17:42:02 +0000 (19:42 +0200)]
build: mention that support for GStreamer 0.10 is deprecated.

9 years agobuild: fix for GStreamer 0.10.
Gwenole Beauchesne [Thu, 3 Jul 2014 15:17:00 +0000 (17:17 +0200)]
build: fix for GStreamer 0.10.

9 years agobuild: fix for GStreamer 1.0.x.
Gwenole Beauchesne [Thu, 3 Jul 2014 16:01:09 +0000 (18:01 +0200)]
build: fix for GStreamer 1.0.x.

9 years agodecoder: h264: detect incorrectly paired fields in frames.
Gwenole Beauchesne [Thu, 3 Jul 2014 11:48:48 +0000 (13:48 +0200)]
decoder: h264: detect incorrectly paired fields in frames.

When a DPB flush is required, e.g. at a natural and of stream or issued
explicitly through an IDR, try to detect any frame left in the DPB that
is interlaced but does not contain two decoded fields. In that case, mark
the picture as having a single field only.

This avoids a hang while decoding tv_cut.mkv.

9 years agodecoder: h264: simplify the DPB output process.
Gwenole Beauchesne [Thu, 3 Jul 2014 09:13:33 +0000 (11:13 +0200)]
decoder: h264: simplify the DPB output process.

Simplify the dpb_output() function to exclusively rely on the frame store
buffer to output, since this is now always provided. Besides, also fix
cases where split fields would not be displayed.

This is a regression from f48b1e0.

9 years agoh264parse: drop patches merged upstream.
Gwenole Beauchesne [Tue, 1 Jul 2014 15:20:44 +0000 (17:20 +0200)]
h264parse: drop patches merged upstream.

0003-h264parse-fix-and-optimize-NAL-collection-function.patch
0005-h264parse-introduce-new-state-tracking-variables.patch
0006-h264parse-improve-conditions-for-skipping-NAL-units.patch
0007-h264parse-fix-collection-of-access-units-to-preserve.patch

9 years agodecoder: h264: fix memory leak in PPS.
Gwenole Beauchesne [Tue, 1 Jul 2014 15:18:08 +0000 (17:18 +0200)]
decoder: h264: fix memory leak in PPS.

Cope with latest changes from codecparsers/h264. It is now required
to explicitly clear the GstH264PPS structure as it could contain
additional allocations (slice_group_ids).

9 years agocodecparsers: update to gst-vaapi-branch commit 2d53b69.
Gwenole Beauchesne [Tue, 1 Jul 2014 15:13:56 +0000 (17:13 +0200)]
codecparsers: update to gst-vaapi-branch commit 2d53b69.

c4ace00 h264parse: fix collection of access units to preserve config headers
0f9f7c9 h264parse: improve conditions for skipping NAL units
9ffb25c h264parse: introduce new state tracking variables
64955d3 h264parse: fix and optimize NAL collection function
13cd2a3 h264: clarifications and documentation fixes
53e7dd1 h264: fix identification of EOSEQ and EOS NALs
18f0de0 h264: fix memory leak in GstH264PPS
fdcb54c h264: fix typo in GstH264VUIParams description
fd4dae9 vp8: move up built-in range decoder private data

9 years agodecoder: propagate MVC metadata ("view-id", head of multiview set).
Gwenole Beauchesne [Mon, 30 Jun 2014 17:01:35 +0000 (19:01 +0200)]
decoder: propagate MVC metadata ("view-id", head of multiview set).

Add new GstVaapiSurfaceProxy flag FFB, which means "first frame in
bundle", and really expresses the first view component of a multi
view coded frame. e.g. in H.264 MVC, the surface proxy has flag FFB
set if VOIdx = 0.

Likewise, new API is exposed to retrieve the associated "view-id".

9 years agodecoder: propagate "one-field" flags.
Gwenole Beauchesne [Mon, 30 Jun 2014 16:46:45 +0000 (18:46 +0200)]
decoder: propagate "one-field" flags.

Allow decoders to set the "one-field" attribute when the decoded frame
genuinely has a single field, or if the second field was mis-decoded but
we still want to display the first field.

9 years agodecoder: output decoded frames only once.
Gwenole Beauchesne [Mon, 30 Jun 2014 16:34:45 +0000 (18:34 +0200)]
decoder: output decoded frames only once.

Make sure to output the decoded picture, and push the associated
GstVideoCodecFrame, only once. The frame fully represents what needs
to be output, included for interlaced streams. Otherwise, the base
GstVideoDecoder class would release the frame twice.

Anyway, the general process is to output decoded frames only when
they are complete. By complete, we mean a full frame was decoded or
both fields of a frame were decoded.

9 years agodecoder: h264: decode current picture earlier.
Gwenole Beauchesne [Mon, 30 Jun 2014 14:12:52 +0000 (16:12 +0200)]
decoder: h264: decode current picture earlier.

Slightly optimize decoding process by submitting the current VA surface
for decoding earlier to the hardware, and perform the reference picture
marking process and DPB update process afterwards.

This is a minor optimization to let the video decode engine kick in work
earlier, thus improving parallel resources utilization.

9 years agodecoder: h264: fix output of second field when first field is not in DPB.
Gwenole Beauchesne [Mon, 30 Jun 2014 14:09:17 +0000 (16:09 +0200)]
decoder: h264: fix output of second field when first field is not in DPB.

Fix decoding of interlaced streams where a first field (e.g. B-slice)
was immediately output and the current decoded field is to be paired
with that former frame, which is no longer in DPB.

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

9 years agodecoder: h264: slightly optimize the process to detect new pictures.
Gwenole Beauchesne [Mon, 30 Jun 2014 09:06:29 +0000 (11:06 +0200)]
decoder: h264: slightly optimize the process to detect new pictures.

Optimize the process to detect new pictures or start of new access
units by checking if the previous NAL unit was the end of a picture,
or the end of the previous access unit.

9 years agodecoder: h264: handle access unit ("au") optimization.
Gwenole Beauchesne [Fri, 13 Jun 2014 13:42:53 +0000 (15:42 +0200)]
decoder: h264: handle access unit ("au") optimization.

Optimize parsing when buffers are supplied with access unit alignment.
This helps determining faster when the end of an access unit is reached.

9 years agodecoder: h264: fix tracking of DPB size changes.
Gwenole Beauchesne [Sat, 28 Jun 2014 05:25:35 +0000 (07:25 +0200)]
decoder: h264: fix tracking of DPB size changes.

Add support for MVC streams with multiple SPS and subset SPS headers
emitted regularly, e.g. at around every I-frame. Track the maximum
number of views in ensure_context() and really reset the DPB size to
the expected value, always. i.e. even if it decreased. dpb_reset()
only cares of ensuring the DPB allocation.

9 years agodecoder: h264: fix the DPB compaction process.
Gwenole Beauchesne [Fri, 27 Jun 2014 18:44:24 +0000 (20:44 +0200)]
decoder: h264: fix the DPB compaction process.

Fix the compaction process when the DPB is cleared for a specific
view, i.e. fix the process of filling in the holes resulting from
removing frame buffers matching the current picture.

9 years agoencoder: h264: generate new SPS only when codec config changed.
Sreerenj Balachandran [Fri, 27 Jun 2014 13:38:03 +0000 (16:38 +0300)]
encoder: h264: generate new SPS only when codec config changed.

It is not necessary to periodically send SPS or subset SPS headers.
This is up to the upper layer (e.g. transport layer) to decide on
if/how to periodically submit those. For now, only generate new SPS
or subset SPS headers when the codec config changed.

Note: the upper layer could readily determine the config headers
(SPS/PPS) through the gst_vaapi_encoder_h264_get_codec_data() function.

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

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agoencoder: h264: track encoder config changes.
Gwenole Beauchesne [Fri, 27 Jun 2014 16:43:27 +0000 (18:43 +0200)]
encoder: h264: track encoder config changes.

Track and report when encoder configuration changed. For now, this covers
resolution, profile/level and bitrate changes.

9 years agoencoder: h264: add pixel-aspect-ratio to VUI parameters.
Gwenole Beauchesne [Fri, 27 Jun 2014 11:15:13 +0000 (13:15 +0200)]
encoder: h264: add pixel-aspect-ratio to VUI parameters.

Report sample aspect ratio (SAR) as present, and make it match what
we have obtained from the user as pixel-aspect-ratio (PAR). i.e. the
VUI parameter aspect_ratio_info_present_flag now defaults to TRUE.

9 years agoencoder: h264: fix number of anchor and non-anchor reference pictures.
Sreerenj Balachandran [Thu, 26 Jun 2014 21:49:34 +0000 (00:49 +0300)]
encoder: h264: fix number of anchor and non-anchor reference pictures.

Set the value of num_anchor_refs_l0, num_anchor_refs_l1, num_non_anchor_refs_l0,
and num_non_anchor_refs_l1 to zero since the inter-view prediction is not yet
supported.

9 years agoencoder: h264: fix timing_info_present_flag value in subset SPS.
Sreerenj Balachandran [Fri, 27 Jun 2014 07:37:38 +0000 (10:37 +0300)]
encoder: h264: fix timing_info_present_flag value in subset SPS.

When the seq_parameter_set_data() syntax structure is present in a subset
sequence parameter set and vui_parameters_present_flag is equal to 1, then
timing_info_present_flag shall be equal to 0 (H.7.4.2.1.1).

9 years agoencoder: h264: add cpbBrNalFactor values for MVC profiles.
Sreerenj Balachandran [Thu, 26 Jun 2014 11:39:52 +0000 (14:39 +0300)]
encoder: h264: add cpbBrNalFactor values for MVC profiles.

9 years agoh264parse: fix detection of access unit boundaries for MVC.
Gwenole Beauchesne [Thu, 26 Jun 2014 12:51:32 +0000 (14:51 +0200)]
h264parse: fix detection of access unit boundaries for MVC.

The gst_h264_parse_collect_nal() function is a misnomer. In reality,
this function is used to determine access unit boundaries, i.e. that
is the key function for alignment=au output format generation.

9 years agoh264parse: fix collection of access units to preserve config headers.
Gwenole Beauchesne [Thu, 26 Jun 2014 12:49:53 +0000 (14:49 +0200)]
h264parse: fix collection of access units to preserve config headers.

Always use a GstAdapter when collecting access units (alignment="au")
in either byte-stream or avcC format. This is required to properly
preserve config headers like SPS and PPS when invalid or broken NAL
units are subsequently parsed.

More precisely, this fixes scenario like:
<SPS> <PPS> <invalid-NAL> <slice>

where we used to reset the output frame buffer when an invalid or
broken NAL is parsed, i.e. SPS and PPS NAL units were lost, thus
preventing the next slice unit to be decoded, should this also
represent any valid data.

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

9 years agoh264parse: improve conditions for skipping NAL units.
Gwenole Beauchesne [Thu, 26 Jun 2014 12:48:08 +0000 (14:48 +0200)]
h264parse: improve conditions for skipping NAL units.

Carefully track cases when skipping broken or invalid NAL units is
necessary. In particular, always allow NAL units to be processed
and let that gst_h264_parse_process_nal() function decide on whether
the current NAL needs to be dropped or not.

This fixes parsing of streams with SEI NAL buffering_period() message
inserted between SPS and PPS, or SPS-Ext NAL following a traditional
SPS NAL unit, among other cases too.

Practical examples from the H.264 AVC conformance suite include
alphaconformanceG, CVSE2_Sony_B, CVSE3_Sony_H, CVSEFDFT3_Sony_E
when parsing in stream-format=byte-stream,alignment=au mode.

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

9 years agoh264parse: introduce new state tracking variables.
Gwenole Beauchesne [Thu, 26 Jun 2014 12:45:34 +0000 (14:45 +0200)]
h264parse: introduce new state tracking variables.

Improve parser state tracking by introducing new flags reflecting
it: "got-sps", "got-pps" and "got-slice". This is an addition for
robustness purposes.

Older have_sps and have_pps variables are kept because they have
a different meaning. i.e. they are used for deciding on when to
submit updated caps or not, and rather mean "have new SPS/PPS to
be submitted?"

9 years agoh264parse: default to byte-stream/nalu format (Annex B).
Gwenole Beauchesne [Thu, 26 Jun 2014 12:39:30 +0000 (14:39 +0200)]
h264parse: default to byte-stream/nalu format (Annex B).

Always default to stream-format=byte-stream,alignment=nalu if avcC
format was not detected. This is the natural stream format specified
in the standard (Annex.B): a series of NAL units prefixed with the
usual start code.

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

9 years agoh264parse: fix and optimize NAL collection function.
Gwenole Beauchesne [Thu, 26 Jun 2014 12:37:58 +0000 (14:37 +0200)]
h264parse: fix and optimize NAL collection function.

Use gst_h264_parser_identify_nalu_unchecked() to identify the next
NAL unit. We don't want to parse the full NAL unit, but only the
header bytes and possibly the first RBSP byte for identifying the
first_mb_in_slice syntax element.

Also fix check for failure when returning from that function. The
only success condition for that is GST_H264_PARSER_OK, so use it.

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

9 years agoencoder: h264: fix NAL unit types in packed headers.
Sreerenj Balachandran [Thu, 26 Jun 2014 08:39:38 +0000 (11:39 +0300)]
encoder: h264: fix NAL unit types in packed headers.

Submit Prefix NAL headers (nal_unit_type = 14) before every packed
slice header (nal_unit_type = 1 or 5) only for the base view. In non
base views, a Coded Slice Extension NAL header (nal_unit_type = 20)
is required, with an appropriate nal_unit_header_mvc_extension() in
the NAL header bytes.

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

9 years agoencoder: h264: add missing field in packed Subset SPS header.
Sreerenj Balachandran [Wed, 25 Jun 2014 19:05:52 +0000 (22:05 +0300)]
encoder: h264: add missing field in packed Subset SPS header.

Write the missing num_level_values_signalled_minus1 syntax element
into the packed header for subset sequence parameter set.

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

9 years agodecoder: h264: fix marking of non-reference picture into DPB.
Gwenole Beauchesne [Wed, 25 Jun 2014 20:26:32 +0000 (22:26 +0200)]
decoder: h264: fix marking of non-reference picture into DPB.

Fix search for a picture in the DPB that has a lower POC value than
the current picture. The dpb_find_lowest_poc() function will return
a picture with the lowest POC in DPB and that is marked as "needed
for output", but an additional check against the actual POC value
of the current picture is needed.

This is a regression from 1c46990.

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

9 years agodecoder: h264: fix DPB clear when no decoding actually started.
Gwenole Beauchesne [Thu, 19 Jun 2014 15:08:47 +0000 (17:08 +0200)]
decoder: h264: fix DPB clear when no decoding actually started.

Fix dpb_clear() to clear previous frame buffers only if they actually
exist to begin with. If the decoder bailed out early, e.g. when it
does not support a specific profile, that array of previous frames
might not be allocated beforehand.

9 years agodecoder: h264: add support for NALU "alignment" optimization.
Sreerenj Balachandran [Thu, 6 Feb 2014 06:30:10 +0000 (08:30 +0200)]
decoder: h264: add support for NALU "alignment" optimization.

We can avoid scanning for start codes again if the bitstream is fed
in NALU chunks. Currently, we always scan for start codes, and keep
track of remaining bits in a GstAdapter, even if, in practice, we
are likely receiving one GstBuffer per NAL unit. i.e. h264parse with
"nal" alignment.

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

[use gst_adapter_available_fast() to determine the top buffer size]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agodecoder: h264: fix caps to report interlace-mode accordingly.
Gwenole Beauchesne [Wed, 18 Jun 2014 16:53:51 +0000 (18:53 +0200)]
decoder: h264: fix caps to report interlace-mode accordingly.

The `vaapipostproc' element could never determine if the H.264 stream
was interlaced, and thus always assumed it to be progressive. Fix the
H.264 decoder to report interlace-mode accordingly, thus allowing the
vaapipostproc element to automatically enable deinterlacing.

9 years agovaapipostproc: don't crash with dynamic framerate (0/1).
Gwenole Beauchesne [Thu, 19 Jun 2014 11:35:23 +0000 (13:35 +0200)]
vaapipostproc: don't crash with dynamic framerate (0/1).

Avoid reaching an assert if dynamic framerates (0/1) are used. One
way to solve this problem is to just stick field_duration to zero.
However, this means that, in presence of interlaced streams, the
very first field will never be displayed if precise presentation
timestamps are honoured.

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

9 years agovaapipostproc: create filter surface pool if it does not exist yet.
Simon Farnsworth [Fri, 7 Feb 2014 12:27:50 +0000 (12:27 +0000)]
vaapipostproc: create filter surface pool if it does not exist yet.

ensure_srcpad_buffer_pool() tries to avoid unnecessarily deleting and
recreating filter_pool. Unfortunately, this also meant it didn't create
it if it did not exist.

Fix it to always create the buffer pool if it does not exist.

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

Signed-off-by: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
9 years agovaapipostproc: reset deinterlacer state when there is a discontinuity.
Zhao, Halley [Thu, 12 Dec 2013 02:01:13 +0000 (10:01 +0800)]
vaapipostproc: reset deinterlacer state when there is a discontinuity.

Reset deinterlacer state, i.e. past reference frames used for advanced
deinterlacing, when there is some discontinuity detected in the course
of processing source buffers.

This fixes support for advanced deinterlacing when a seek occurred.

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

[fixed type of pts_diff variable, fetch previous buffer PTS from the
 history buffer, reduce heuristic for detecting discontinuity]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agovaapipostproc: add support for crop regions in VPP mode.
Gwenole Beauchesne [Wed, 18 Jun 2014 14:16:34 +0000 (16:16 +0200)]
vaapipostproc: add support for crop regions in VPP mode.

Apply video cropping regions stored in GstVideoCropMeta, or in older
GstVaapiSurfaceProxy representation, to VPP pipelines. In non-VPP modes,
the crop meta are already propagated to the output buffers.

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

9 years agovaapipostproc: make deinterlace-mode behave as expected.
Simon Farnsworth [Fri, 14 Mar 2014 17:49:40 +0000 (17:49 +0000)]
vaapipostproc: make deinterlace-mode behave as expected.

deinterlace-mode didn't behave in the way you'd expect if you have
past experience of the deinterlace element. There were two bugs:

 1. "auto" mode wouldn't deinterlace "interleaved" buffers, only "mixed".
 2. "force" mode wouldn't deinterlace "mixed" buffers flagged as progressive.

Fix these up, and add assertions and error messages to detect cases that
aren't handled.

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

Signed-off-by: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agovaapidecode: do not discard video info props when the format changed.
Matthieu Bouron [Wed, 15 Jan 2014 16:36:29 +0000 (16:36 +0000)]
vaapidecode: do not discard video info props when the format changed.

gst_video_info_set_format() does not preserve video info properties. In
order to keep important information in the caps such as interlace mode,
framerate, pixel aspect ratio, ... we need to manually copy back those
properties after setting the new video format.

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

9 years agovaapidecode: plug a memory leak.
Matthew Waters [Sat, 22 Feb 2014 14:43:39 +0000 (01:43 +1100)]
vaapidecode: plug a memory leak.

It can happen that there is a pool provided that does not advertise
the vappivideometa. We should unref that pool before using our own.

Discovered with vaapidecode ! {glimagesink,cluttersink}

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

[fixed compilation by adding the missing semi-colon]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agovaapidecode: parse source data until a frame is obtained.
Gwenole Beauchesne [Wed, 18 Jun 2014 11:47:36 +0000 (13:47 +0200)]
vaapidecode: parse source data until a frame is obtained.

Parse any pending data until a complete frame is obtained. This is a
memory optimization to avoid expansion of video packets stuffed into
the GstAdapter, and a fix to EOS condition to detect there is actually
pending data that needs to be decoded, and subsequently output.

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

9 years agoencoder: h264: fix multiple slices support in packed headers mode.
Sreerenj Balachandran [Thu, 5 Jun 2014 12:32:29 +0000 (15:32 +0300)]
encoder: h264: fix multiple slices support in packed headers mode.

Handle packedi slice headers and packed raw data on a per-slice basis,
which is necessary for multi slice encoding.

9 years agoencoder: add infrastructure for per-slice handling of packed headers.
Sreerenj Balachandran [Thu, 5 Jun 2014 12:30:38 +0000 (15:30 +0300)]
encoder: add infrastructure for per-slice handling of packed headers.

The packed slice header and packed raw data need to be paired with
the submission of VAEncSliceHeaderParameterBuffer. So handle them
on a per-slice basis insted of a per-picture basis.

[removed useless initializer]
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
9 years agovaapisink: fix initialization with "drm" display type. upstream/0.2.6+1235+g5e5d62c
Gwenole Beauchesne [Fri, 7 Mar 2014 16:40:34 +0000 (17:40 +0100)]
vaapisink: fix initialization with "drm" display type.

Force early initializatin of the GstVaapiDisplay so that to make sure
that the sink element display object is presented first to upstream
elements, as it will be correctly featuring the requested display type
by the user.

Otherwise, we might end up in situations where a VA/X11 display is
initialized in vaapidecode, then we try VA/DRM display in vaapisink
(as requested by the "display" property), but this would cause a failure
because we cannot acquire a DRM display that was previously acquired
through another backend (e.g. VA/X11).