He Junyan
812c9fdea7
libs: encoder: h265: Add num-tile-cols/rows properties.
...
These properties are used for support of tile encoding. We just
support uniform mode of tile encoding, that is, separating picture
equally by (num-tile-cols X num-tile-rows).
According to HEVC spec A1, the max number of tiles in column is 20
and in rows is 22, so add two constant definitions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294 >
2020-06-05 19:27:36 +08:00
He Junyan
bc1c97c755
libs: encoder: h265: extract slice creation from add_slice_headers
...
extract slice creation details from add_slice_headers, and let the
add_slice_headers just focuses on calculating slice start address
and CTU number.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294 >
2020-06-05 19:27:26 +08:00
He Junyan
6c76e81cb6
libs: encoder: Add a helper function to check the tile support.
...
Encoding by tiles separation now is a very common feature for all
relative new codecs, such as HEVC, AV1, and VP9. Just make this
check as a common helper function of the encoder base class.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/294 >
2020-06-05 19:27:11 +08:00
He Junyan
85bc355019
libs: decoder: H265: Add SCC_MAIN_444_10 profile support.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311 >
2020-06-05 09:51:19 +00:00
He Junyan
5f92699a4b
libs: decoder: update reference list for SCC.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311 >
2020-06-05 09:51:19 +00:00
He Junyan
c956d91807
libs: decoder: H265: Fill picture and slice SCC parameters.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311 >
2020-06-05 09:51:19 +00:00
He Junyan
1d9b2cab42
libs: util: H265: recognize the SCC profiles.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311 >
2020-06-05 09:51:19 +00:00
He Junyan
9067d902e2
libs: profile: Add screen extended main/main10/main444 define.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/311 >
2020-06-05 09:51:19 +00:00
He Junyan
8486f82d98
libs: encoder: h265: Add support for MAIN 4:2:2 10 profile.
...
Using YUY2 as the input of the encoder can generate main 4:2:2 bit
streams and using Y210 as the input of the encoder can generate main
4:2:2 10 bit streams.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/334 >
2020-06-05 08:42:35 +00:00
He Junyan
5c67bdaf63
libs: encoder: h265: Use correct index for SubWidthC and SubHeightC.
...
We need to use the chroma_format_idc as the index for getting the
SubWidthC and SubHeightC values as the spec 6.1(table 6-1) defines.
The wrong SubWidthC or SubHeightC make us calculate a wrong right
or bottom offset for crop size and generate garbage in output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/334 >
2020-06-05 08:42:35 +00:00
He Junyan
a2063083a5
libs: encoder: h265: Fix chrome idc for 444 10 bits
...
GST_VAAPI_CHROMA_TYPE_YUV444_10BPP should also set chroma_format_idc
to 3 as GST_VAAPI_CHROMA_TYPE_YUV444 does.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/334 >
2020-06-05 08:42:35 +00:00
Thibault Saunier
45c2f82746
doc: Require hotdoc >= 0.11.0
2020-06-03 18:50:10 -04:00
Thibault Saunier
8e400a5634
doc: Fix wrong link to GstVideoDirectionMethod
2020-06-03 18:50:10 -04:00
Thibault Saunier
41fee777a6
docs: Update plugin cache with the new format
...
And fix the default URL which should not be inside quotes.
2020-06-03 17:38:10 -04:00
Thibault Saunier
31d85bfb65
Use gst_type_mark_as_plugin_api() for all non-element plugin types
2020-06-03 17:37:48 -04:00
He Junyan
e41c6bd298
libs: delete all gstvaapiobject related files.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/331 >
2020-05-27 15:08:28 +08:00
He Junyan
2515d4dd2f
libs: surface: return fail immediately if can not create subpicture
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/331 >
2020-05-27 15:08:11 +08:00
He Junyan
6333c85316
libs: subpicture: Make subpicture a standard GstMiniObject.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/331 >
2020-05-27 15:08:00 +08:00
He Junyan
3df1018b02
libs: decoder: h264: Add ref flags for splited field.
...
When split one frame into fields, the second field should also
copy the reference flags.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/333 >
2020-05-26 07:40:26 +00:00
Víctor Manuel Jáquez Leal
593f6650ef
libs: decoder: h264: disallow multiple slice group
...
As far as we know there are no VAAPI drivers supporting FMO, which
migth be used in baseline streams.
This commit is a continuation of
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/328
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/332 >
2020-05-25 16:01:44 +02:00
Víctor Manuel Jáquez Leal
e68fece3e6
vaapidecoder: h264: remove baseline as constrained property
...
From now on always the baseline is going to be treated as constrained without
need of setting a property.
Since the property was added along the development cycle (1.17 / commit
866a9f06
) and never released, we assume that it is safe to remove it.
Fixes : #252
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/328 >
2020-05-21 13:10:57 +02:00
Víctor Manuel Jáquez Leal
cab041f994
README: update VP9 decoder and encoder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/330 >
2020-05-21 11:37:36 +02:00
Haihao Xiang
20ce08aa23
vaapiencoder_h264: set direct_spatial_mv_pred_flag to true by default
...
This flag is set to true by default in both MediaSDK and FFmpeg-vaapi,
so let's align this plugin with other libraries / softwares.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/329 >
2020-05-21 13:51:57 +08:00
Víctor Manuel Jáquez Leal
6b2f83522f
vaapivideobufferpool: fix meta overwrite
...
commit 7ac2a207 added a regression by erroneously assumed that
GstVaapiVideoMeta is actually a GstMeta, which is not.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/327 >
2020-05-18 18:35:16 +02:00
Víctor Manuel Jáquez Leal
df06398917
vaapivideopool: Set pooled flag to added metas.
...
So this could hint filters how to use these metas.
Had to change the return value for texutre upload meta in order
to flag it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/326 >
2020-05-17 12:42:54 +02:00
Víctor Manuel Jáquez Leal
ab475c22d5
libs: use array_unref() rather than array_free()
...
It is more convinience and thread-safe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/325 >
2020-05-16 20:29:34 +00:00
He Junyan
3b118e2c45
plugin: use register_type to replace get_type for encode init.
...
xxx_register_type will detect the template sink caps and is needed
to be called at init time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
0b57e6e090
plugins: encode: Modify sink template of vp9 encode.
...
Use gst_vaapi_detect_codec_caps to get more precise template caps.
Also implement gst_vaapiencode_vp9_register_type, which should be
called at plugin register time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
6ffabe2139
plugins: encode: Modify sink template of vp8 encode.
...
Use gst_vaapi_detect_codec_caps to get more precise template caps.
Also implement gst_vaapiencode_vp8_register_type, which should be
called at plugin register time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
7459bee979
plugins: encode: Modify sink template of mpeg2 encode.
...
Use gst_vaapi_detect_codec_caps to get more precise template caps.
Also implement gst_vaapiencode_mpeg2_register_type, which should be
called at plugin register time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
5f5182f9ad
plugins: encode: Modify sink template of h265 encode.
...
Use gst_vaapi_detect_codec_caps to get more precise template caps.
Also implement gst_vaapiencode_h265_register_type, which should be
called at plugin register time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
53a17f9c98
plugins: encode: Modify sink template of h264 encode.
...
Use gst_vaapi_detect_codec_caps to get more precise template caps.
Also implement gst_vaapiencode_h264_register_type, which should be
called at plugin register time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
d674d457ab
plugins: encode: Modify sink template of jpeg encode.
...
Use gst_vaapi_detect_codec_caps to get more precise template caps.
Also implement gst_vaapiencode_jpeg_register_type, which should be
called at plugin register time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
3b3e987237
plugin: encode: add a helper macro to register encode type.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
0e4c750918
plugins: util: Add a helper function to detect supported caps.
...
This helper function iterate all profiles and entrypoints belong
to the specified codec, query the VAConfigAttribRTFormat and list
all possible video formats.
This function is used by each codec to get the template sink caps
(for encode) or src caps(for decode) at register time, when just
all possible formats are listed and no need to be very accurate.
So there is no context created for the performance reason. Most
codecs just use YUV kinds of formats as the input/output, so we do
not include RGB kinds of formats. User can specified more formats
in extra_fmts(For example, jpeg may need BGRA) if needed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
3583a4b86c
plugin: encode: extract the allowed caps maker as a helper function.
...
Extract all logic about making caps for encode's sink as a standalone
helper function. It can be reused.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
He Junyan
2b1809e9d3
libs: video-format: add a helper function of get_formats_by_chroma.
...
The function iterates all supported video formats and returns the
formats belong to the specified chroma type.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/315 >
2020-05-16 19:58:15 +00:00
Víctor Manuel Jáquez Leal
5d56ce6927
libs: texture: remove unused headers include
...
This is continuation of
https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/317
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/324 >
2020-05-16 21:05:20 +02:00
Víctor Manuel Jáquez Leal
e20d06e64d
libs: removed duplicated function declarations
...
Some headers had duplicated inlined function declaration. This was
for gtkdoc, but now GStreamer uses hotdoc and the internal library
documentation is not generated. So let's remove these extra lines.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/323 >
2020-05-16 20:01:59 +02:00
He Junyan
f20bd8bfd1
libs: texture: Make texture a standard GstMiniObject.
...
We store GstVaapiTextureGLX and GstVaapiTextureEGL's private data in
the qdata of miniobject and avoid extending the base texture class.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/317 >
2020-05-16 19:18:46 +02:00
Víctor Manuel Jáquez Leal
808247a963
Update README
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/320 >
2020-04-26 10:59:12 +00:00
Víctor Manuel Jáquez Leal
d195417758
libs: display: drm: use g_strcmp0 to be null safe
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/321 >
2020-04-26 10:40:38 +00:00
Haihao Xiang
336c2b76d1
vaapipluginutil: Use GST_VAAPI_DISPLAY_TYPE_DRM for Mesa3D GBM
...
We may build this plugin with window system support but run it without
window system. Without this patch, the following pipeline will trigger a
segfault when running it without window system.
gst-launch-1.0 filesrc location=input.264 ! h264parse ! vaapih264dec ! fakesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/319 >
2020-04-26 14:55:30 +08:00
Víctor Manuel Jáquez Leal
8b7a5a36f1
build: use join_paths() for driverdir
2020-04-21 11:23:35 +02:00
Veerabadhran G
a53f0834b3
README: Update supported hardware
...
Added the AMD hardware list to the "Hardware Requirements" section.
2020-04-21 09:04:51 +00:00
He Junyan
f1d13d1e08
libs: bufferproxy: remove GstMemory reference
...
Since bufferproxy and surface are not referenced circularly, there's
no need to keep, in the buffer proxy, a reference to the GstMemory
where it is held. This patch removes that handling.
2020-04-04 14:30:44 +02:00
He Junyan
e54671d4b3
libs,plugin: break surface-bufferproxy circular reference
...
The bufferproxy may reference the surface and the surface may also
reference the bufferproxy, producing a circular reference, which might
lead to serious resource leak problems.
Now make the relationship clearer, the bufferproxy's references is
transfered to surface, while bufferproxy just keeps the surface's
address without increasing its reference count.
The surface can be created through a bufferproxy like in
gst_vaapi_surface_new_with_dma_buf_handle(), and the surface might
get its bufferproxy via gst_vaapi_surface_get_dma_buf_handle(). In
both cases the surface holds a bufferproxy's reference.
2020-04-04 14:22:04 +02:00
He Junyan
c80668c337
libs: bufferproxy: rename parent memeber as surface
2020-04-04 14:22:04 +02:00
He Junyan
ce3bf2c2ae
plugin: bufferpool: use hashmap to cache dmabuf mem-surface
...
The old way of refer memory by bufferproxy is not a good one, since it
make the logic error prone.
Now it is established a map between surface-bufferproxy and its GstMemory,
caching the memory bound by a surface looked for the specified surface.
2020-04-04 14:21:57 +02:00
He Junyan
7701844813
plugin: bufferpool: Delete ACQUIRE_FLAG_NO_ALLOC flag.
...
Delete the GST_VAAPI_VIDEO_BUFFER_POOL_ACQUIRE_FLAG_NO_ALLOC flag.
In fact, no one is using that flag, and all vaapi buffers should
have GstVaapiVideoMeta.
2020-04-04 13:47:51 +02:00