Commit graph

1297 commits

Author SHA1 Message Date
Víctor Manuel Jáquez Leal
68b9ab7818 encoder: h264,h265,mpeg2,vp8: use gst_util_uint64_scale() for bitrate
Use gst_util_uint64_scale() to calculate bitrate instead of normal arithmetic
to avoid overflows, underflows and loss of precision.

https://bugzilla.gnome.org/show_bug.cgi?id=768458
2016-08-10 12:20:48 +02:00
Víctor Manuel Jáquez Leal
4259d1aec7 vaapiencode: h264,h265: validate fps numerator
Validate that fps numerator is non-zero so it can be used to calculate
the duration of the B frame.

Also it gst_util_uint64_scale() is used instead of normal arithmetic in
order to aviod overflows, underflows and loss of precision.

https://bugzilla.gnome.org/show_bug.cgi?id=768458
2016-08-10 12:20:48 +02:00
Víctor Manuel Jáquez Leal
27429ce676 libs: egl: remove dynamic library loading code
Since the upstream of gstreamer-vaapi, the library is not a public shared
object anymore. But the EGL support depended on this dynamic library, so the
EGL support was broken.

This patch removes the dynamic library loading code and instantiates the
EGL display using either X11 or Wayland if available.

https://bugzilla.gnome.org/show_bug.cgi?id=767203
2016-07-22 17:23:23 +02:00
Víctor Manuel Jáquez Leal
7472826a36 Revert "gstvaapisurface_drm: release image when done"
This reverts commit 1dbcc8a0e1  and commit
372a03a9e3.

While the dmabuf handle is exported, the derive image must exist, otherwise
the image's VA buffer is invalid, thus the dmabuf handle is never released,
leading into a file descriptors leak.
2016-07-22 17:15:58 +02:00
Víctor Manuel Jáquez Leal
3efc2f70b7 encoder: h265: fix code-style 2016-07-22 17:15:38 +02:00
Hyunjun Ko
cc6df605a1 vaapipostproc: checking and updating filter parameter only when it's set
This patch is to avoid checking filter value at every frame.

https://bugzilla.gnome.org/show_bug.cgi?id=751876
2016-07-22 12:08:20 +02:00
Allen Zhang
d9ef88230f decoder: h265: handle the SEI NAL units included in codec_data
The prefix/suffix SEI nal units can appear in codec_data too
which weren't handled before. Parse these SEI headers to
fix the segfault.

https://bugzilla.gnome.org/show_bug.cgi?id=768544
2016-07-21 11:24:31 +03:00
Sreerenj Balachandran
6c6007ad94 encoder: h264: Fix MVC encode while enabling dct8x8
Pack the transform_8x8_mode_flag and other necessary rbsp data
in packed_pps header for MVC encode.

https://bugzilla.gnome.org/show_bug.cgi?id=768647
2016-07-15 14:41:27 +03:00
Jagyum Koo
0d1d097273 wayland: Error check before using cached wl_display
A planar(or some other) buffer allocation may fail on the driver, then
the wayland connection becomes invalid, not able to send request or
receive any event. So we need to set up a new wayland connection if
there's an error detected on the cached wl_display.

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

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
2016-07-14 12:18:10 +02:00
Víctor Manuel Jáquez Leal
fcc08627e5 decoder: vc1: flush dpb only if opened
Flush the decode picture buffer, if and only if, the decoder is
started. Otherwise the dpb structure might be NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=742922
2016-07-11 10:44:06 +02:00
Hyunjun Ko
e8fabf6a99 vaapisink: add support for GST_TAG_IMAGE_ORIENTATION
https://bugzilla.gnome.org/show_bug.cgi?id=765798
2016-07-05 20:17:12 +02:00
Víctor Manuel Jáquez Leal
22647090be utils: report VP9 profiles
Add VP9Profile0-3 name mapping.
2016-06-28 16:34:30 +02:00
Scott D Phillips
60cd511fad remove unused glibcompat.h
glibcompat.h is no longer doing anything. Remove it.

Signed-off-by: Scott D Phillips <scott.d.phillips@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=767886
2016-06-23 12:47:52 +02:00
Scott D Phillips
4aec5bdd72 encoder: h264: Use high profile by default
Change defaults for max-bframes, cabac, and dct8x8 to be enabled
by default. This will cause the default profile to be high instead
of baseline. In most situations this is the right decision, and
the profile can still be lowered in the case of caps restrictions.

Signed-off-by: Scott D Phillips <scott.d.phillips@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=757941
2016-06-23 12:28:50 +02:00
Hyunjun Ko
05cf583c97 decoder: h265: fix to release all dpb pictures
Without this, all dpb pictures are not released during flush,
because we used the global dpb_count variable for checking the
dpb fullness which get decremented in dpb_remove_index()
routine during each loop iteration.

https://bugzilla.gnome.org/show_bug.cgi?id=767934
2016-06-22 15:11:56 +03:00
Scott D Phillips
57ee937b8c decoder: vp9: Update comment about context resets
Clarify that vaapi context resets are never needed for vp9, but
that ensure_context() needs called when the size increases so that
new surfaces can be allocated.

Signed-off-by: Scott D Phillips <scott.d.phillips@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=767474
2016-06-15 20:50:20 +02:00
Scott D Phillips
ad9fcb9386 gstvaapicontext: control reset_on_resize with option
Signed-off-by: Scott D Phillips <scott.d.phillips@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=767474
2016-06-15 20:50:20 +02:00
Víctor Manuel Jáquez Leal
73d1228896 libs: change gst_vaapi_surface_new_with_dma_buf_handle()
Instead of passing the data already in GstVideoInfo, let's just pass the
GstVideoInfo structure.

https://bugzilla.gnome.org/show_bug.cgi?id=765435
2016-06-08 10:19:01 +02:00
Sreerenj Balachandran
76c2e5fdb5 encoder: vp9: Add simple algorithms for reference picture selection
Added two modes(as properties) for reference picture selection:

ref-mode-0: AltRef and GoldRef pointing to the recent keyframe
and LastRef is pointing to the previous frame.

ref-mode-1: Previous frame (n) as LastRef , n-1 th frame as GoldRef
and n-2 th frame as AltRef

https://bugzilla.gnome.org/show_bug.cgi?id=766048
2016-05-30 12:18:04 +03:00
Sreerenj Balachandran
5dc63dbf5a encoder: vp9: Define Max frame width and height
https://bugzilla.gnome.org/show_bug.cgi?id=766048
2016-05-30 11:25:52 +03:00
Sreerenj Balachandran
1606d4bd77 encoder: vp9: Add more propertis for tuning encode quality
Added three tuning properties:
1: filter_level
2: sharpness_level
3: luma ac quant-table index

https://bugzilla.gnome.org/show_bug.cgi?id=766048
2016-05-30 11:25:03 +03:00
Sreerenj Balachandran
221fb9351a Add vp9 encoder support in libgstvaapi
https://bugzilla.gnome.org/show_bug.cgi?id=766048
2016-05-30 11:23:12 +03:00
Víctor Manuel Jáquez Leal
765a53d4c2 gstvaapisurface_drm: fix internal documentation 2016-05-26 11:44:18 +02:00
Víctor Manuel Jáquez Leal
372a03a9e3 gstvaapisurface_drm: fix code-style 2016-05-26 11:43:51 +02:00
Víctor Manuel Jáquez Leal
d69917ecca remove spurious gst_video_info_init()
gst_video_info_set_format() and gst_video_info_from_caps() call, internally,
gst_video_info_init(), hence it is not required to call it before them. This
patch removes these spurious calls.
2016-05-20 19:33:39 +02:00
Sreerenj Balachandran
c91de2398a encoder : h264: Disable b-frame encode in low-power mode
This is a workaround since vaapi-intel-driver doesn't have
support for B-frame encode when utilizing low-power-enc
hardware block.

Fixme :We should query the VAConfigAttribEncMaxRefFrames
instead of blindly disabling b-frame support and set b/p frame count,
buffer pool size etc based on the query result.

https://bugzilla.gnome.org/show_bug.cgi?id=766050
2016-05-13 11:45:20 +03:00
Sreerenj Balachandran
43af7c362c encoder: h264 : Use "tune=low-power" for enabling lowpower encode
Remove the duplicate property "low-power-enc" and use the
tune property for enabling low power encoding mode.

https://bugzilla.gnome.org/show_bug.cgi?id=766050
2016-05-13 11:44:57 +03:00
Sreerenj Balachandran
d446013ae4 gstvaapiencoder:Use internal api to dervie configured VAEntrypoint
https://bugzilla.gnome.org/show_bug.cgi?id=766050
2016-05-11 12:06:38 +03:00
Sreerenj Balachandran
32ee78bc52 encoder: h264: Add support of low power/high performance encoding mode
Added a new property "low-power-enc" for enabling low power
encoding mode. Certain encoding tools may not be available
with the VAEntrypointEncSliceLP.

https://bugzilla.gnome.org/show_bug.cgi?id=766050
2016-05-11 12:05:36 +03:00
Sreerenj Balachandran
8c1cfbaa1e Add mapping for Macroblock level rate control (VA_RC_MB) 2016-05-11 12:04:46 +03:00
Sreerenj Balachandran
c1abf37d0b gstvaapidisplay: Add VAEntrypointEncSliceLP support
https://bugzilla.gnome.org/show_bug.cgi?id=766050
2016-05-11 12:03:08 +03:00
Sreerenj Balachandran
7e4e597c6d gstvaapiprofile : Add VAEntrypointEncSliceLP definitions
This is for implementations that supports low_power/high_performance
variant for slice level encode.

https://bugzilla.gnome.org/show_bug.cgi?id=766050
2016-05-11 12:02:44 +03:00
Sreerenj Balachandran
018ea8b2fc encoder: h265: Enable cu_qp_delta_enabled_flag for CBR
It seems driver requires enablement of cu_qp_delta_enabled_flag
for modifying QP values to controll the CBR mode bitrate.

https://bugzilla.gnome.org/show_bug.cgi?id=749852
2016-04-27 17:10:26 +03:00
Sreerenj Balachandran
7ddc7ea0bc encoder: h265: Add CBR Encoding support
https://bugzilla.gnome.org/show_bug.cgi?id=749852
2016-04-27 17:06:09 +03:00
Julien Isorce
8e7ebaa505 gstvaapisurface: explicitely clear TILING flag if dmabuf
https://bugzilla.gnome.org/show_bug.cgi?id=755072
2016-04-26 16:10:45 +01:00
Julien Isorce
1dbcc8a0e1 gstvaapisurface_drm: release image when done
Otherwise intel-vaapi-driver will fail to process the exported surface because
it will find it is currently derived, so considered as busy.

https://bugzilla.gnome.org/show_bug.cgi?id=755072
2016-04-26 16:06:12 +01:00
Michael Olbrich
1e32d62c1e libs: fix deleting a GstVaapiCodedBufferPool object
Call gst_vaapi_video_pool_finalize() in coded_buffer_pool_finalize().
Otherwise it is not called when the pool is destroyed and all objects
referenced by the GstVaapiVideoPool are never released.

https://bugzilla.gnome.org/show_bug.cgi?id=764993
2016-04-13 15:45:26 +02:00
Víctor Manuel Jáquez Leal
bb0b8ce7ab surface: destroy derived image
If gst_vaapi_image_new_with_image() fails, the created derived image should be
destroyed, otherwise the surface cannot be processed because is being used.

https://bugzilla.gnome.org/show_bug.cgi?id=764607
2016-04-07 18:25:56 +02:00
Sreerenj Balachandran
80c3bfe448 decoder: vp9: Align with the ABI changes in vp9 codecparser
The subsampling_x, subsampling_y, bit_depth, color_space and color_range
fileds are moved from GstVp9FrameHdr to the global GstVp9Parser structure.
These fields are only present in keyframe or intra-only frame, no need to
duplicate them for inter-frames.

https://bugzilla.gnome.org/show_bug.cgi?id=764082
2016-04-01 14:00:28 +03:00
Sreerenj Balachandran
641e9a47f6 decoder: vp9 : Add 10bit decoding support (Profile2)
https://bugzilla.gnome.org/show_bug.cgi?id=764082
2016-04-01 13:59:59 +03:00
Sreerenj Balachandran
4e5cf53ee0 gstvaapiporfile: Add more VP9 profile definitions
https://bugzilla.gnome.org/show_bug.cgi?id=764082
2016-04-01 13:57:45 +03:00
Sreerenj Balachandran
c009d29c00 decoder: h265: Fix offset calculation when there is more than one vps/sps/pps present in codec_data
The array_completeness, reserved bit and num_nal_units fields
in HEVCDecoderConfigurationRecord will be present for each VPS/SPS/PPS array list,
but not for each occurance of similar headers.

https://bugzilla.gnome.org/show_bug.cgi?id=764274
2016-03-30 14:37:21 +03:00
Sreerenj Balachandran
35fe2abc3e video-format: Keep the HW order preference while mapping to GstVideoFormats 2016-03-29 15:34:38 +03:00
Scott D Phillips
eea3f0cdb2 Add P010 video format support
The P010 video format is the native format used by the vaapi intel driver
for HEVCMain10 decode . Add support for planes and images of this video format.

https://bugzilla.gnome.org/show_bug.cgi?id=759181
2016-03-29 14:34:00 +03:00
Stephen
b64eaaad4d libs: x11: allows 30-bit colour depth
The colour depth is clamped to 24 when it is not equal {15,16,24,32}. But this
fails with the NVIDIA binary driver as it doesn't advertise a TrueColor visual
with a depth of 24 (only 30 and 32). Allowing the depth to be 30, lets everything
work as expected.

https://bugzilla.gnome.org/show_bug.cgi?id=764256
2016-03-29 12:08:55 +02:00
Sreerenj Balachandran
a486942ba2 decoder: h265: Fix offset calculation in codec_data parsing
https://bugzilla.gnome.org/show_bug.cgi?id=762922
2016-03-11 17:44:07 +02:00
Thiago Santos
0a9161ac3a vaapidecoder_h265: plug leak of h265 parsing info
If something goes wrong while parsing, the info object is
being leaked

https://bugzilla.gnome.org/show_bug.cgi?id=763121
2016-03-09 15:39:31 +01:00
Thiago Santos
2b47bf8c74 vaapidecoder_h264: plug leak of h264 parsing info
If something goes wrong while parsing, the info object is
being leaked

https://bugzilla.gnome.org/show_bug.cgi?id=763121
2016-03-09 15:39:31 +01:00
Vineeth TM
805a4733bf vaapidisplay: Fix uninitialized value error for VA attribute
https://bugzilla.gnome.org/show_bug.cgi?id=763362
2016-03-09 15:39:31 +01:00
Sreerenj Balachandran
1eabfad5c3 decoder: vp9: Assign values for profile and bit_depth from frame header
bit_depth field has added only in VA-API 0.39.0, added version check.
2016-03-04 10:51:42 +02:00