Seungha Yang
c4ac657364
qsv: Add H.264 decoder
...
Initial decoder implementation with baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1786 >
2022-03-01 21:24:07 +00:00
He Junyan
1f2f135cdb
va: enable the H264 encoder.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
He Junyan
f17357f759
va: Add H264 encoder.
...
This a new VA-API implementation of a H264 encoder.
It can control the GOP and parameter settings, while the MV searching,
VCL and the rate control algorithm are implemented by VA drivers and HW.
It supports most of the common usage options in H264, but still lacks
of look ahead, field, B frame weighted prediction, etc.
Co-authored-by: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
He Junyan
736a0ac9b0
va: Add a common encoder object.
...
As the counterpart of the va decoder, this class handles all the
common logic for the encoding routine and miscellaneous queries about
encoding.
Co-authored-by: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
He Junyan
fb644e84fa
va: Add vacompat.h to wrap glib functions.
...
The g_queue_clear_full() and g_array_copy() functions in the glib
may not be available for the current glib version check, so we add
helper functions to wrap it.
This should be deleted after the glib version bumps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
He Junyan
57d50a941f
va: Add the profile string name into the profile_map.
...
We also add a helper function of gst_va_profile_from_name to get
the VA profile value by its profile string name.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
He Junyan
e0b6c6678b
va: Change the H264 profile string order in the profile_map.
...
The first one should be the one that matches the VA profile's name
most precisely.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
He Junyan
83408cfdc8
va: caps: Expose gst_va_create_coded_caps as helper function.
...
And allow free indentation for array declaration.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1051 >
2022-03-01 10:53:50 +01:00
jinsl00000
ef4cc9e637
ipcpipeline: fix crash and error on windows with SOCKET or _pipe()
...
The fd was in different meanings on windows:
POSIX read and write use the fd as a file descriptor.
The gst_poll use the fd as a WSASocket.
This patch use WSASocket as default on windows. This is a temporary measure, because IPC has many different implement. There may be a better way in the future.
See #1044
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1791 >
2022-03-01 06:31:51 +00:00
Wu Tong
c60ac7a04b
MSDK: Add _context_query() and avoid compile error on Windows
...
To avoid compile error on Windows, macro definitions are added to suppress va
variables. In the meantime, add function _context_query() to query
context on Windows.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1693 >
2022-02-28 12:54:23 +00:00
Mengkejiergeli Ba
b41c70aed5
msdkdec: Fix uninitialized variables
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1731 >
2022-02-25 03:11:29 +00:00
Mengkejiergeli Ba
e1090c152c
msdk: Fix unchecked return values
...
There are several calls of gst_video_info_from_caps and gst_video_frame_copy
without checks for the returned values. This patch adds all necessary
function return checks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1738 >
2022-02-25 02:04:20 +00:00
Seungha Yang
ad73f73356
qsvencoder: Fix caps leak in Linux build
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1769 >
2022-02-22 12:55:26 +00:00
Seungha Yang
20328914dc
qsv: Fix debug category name of qsvallocator
...
Remove gst prefix to make $env:GST_DEBUG="qsv*:6" work for qsvallocator
as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1769 >
2022-02-22 12:55:26 +00:00
Dmitry Osipenko
248f143fa3
v4l2codecs: Support YUV420M format
...
YUV420M format of V4L essentially is I420 with separate memory planes.
It's used by NVIDIA Tegra V4L decoder. Support this format by v4l2codecs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1727 >
2022-02-21 21:58:19 +03:00
Seungha Yang
8ff5f10a40
d3d11screencapturesrc: Use staging buffer pool for performance
...
By using staging pool/buffer, we can avoid per frame
staging texture -> system memory copy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1756 >
2022-02-20 23:43:18 +00:00
Nicolas Dufresne
8883809ef9
v4l2codecs: Enable MediaTek MM21 (NV12_16L32S)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567 >
2022-02-20 22:32:55 +00:00
Nicolas Dufresne
3005dbc55a
v4l2codecs: Add support for multi planar buffers
...
V4L2 have some pixel formats that produces 2 dmabuf, this add
support for these format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567 >
2022-02-20 22:32:55 +00:00
Nicolas Dufresne
bab9041c4b
Port plugins to gst_video_format_info_extrapolate_stride()
...
This reduces code duplication and simplify addition of new
pixel formats into related plugins.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1567 >
2022-02-20 22:32:55 +00:00
Seungha Yang
d49454123e
winscreencap: Remove dxgiscreencapsrc element
...
We have the d3d11screencapturesrc element in d3d11 plugin
which is obviously better than this element in terms of performance
and design, so we don't need to make people be confused by two separate elements.
Let's pick the better implementation and remove unnecessary one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1750 >
2022-02-20 20:04:05 +00:00
Seungha Yang
c19d0db454
directshow: Fix build warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1744 >
2022-02-19 19:54:52 +00:00
Seungha Yang
7eedd52510
directshow: Merge plugins into single directshow plugin
...
... and lower rank of dshowvideosink and dshowdeviceprovider
to GST_RANK_MARGINAL since we don't prefer this plugin
by default
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1744 >
2022-02-19 19:54:52 +00:00
Seungha Yang
d94d338bd5
directshow: Remove white spaces
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1744 >
2022-02-19 19:54:52 +00:00
Nicolas Dufresne
cf3d64129b
v4l2codecs: vp9: Fix reset_frame_context parameter
...
It was assumed that the kernel parameters would match with the bitstream value
but instead the author when with another set of value. Surprisingly, this
makes no difference with the resulting fluster score.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1748 >
2022-02-18 23:55:59 +00:00
Nicolas Dufresne
5a9df9e850
v4l2codecs: vp9: Only fill compressed headers if needed
...
Fixes: 13944cf3ee
("v4l2codecs: vp9: Make compressed hdr control optional")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1748 >
2022-02-18 23:55:59 +00:00
Tim Mooney
54a1f60077
v4l2: include <sys/ioccom.h> on Illumos
...
Needed for _IOR/_IORW
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1524 >
2022-02-18 21:34:49 +00:00
Loic Le Page
e1c0628bb9
Add build files and fix build for gst-plugins-bad dshowsinkwrapper plugin
...
dshowsinkwrapper plugin is the old dshowvideosink plugin that has been
renamed to be compliant with the actuel plugin name in the source code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1577 >
2022-02-18 14:59:25 +01:00
Loic Le Page
b355345ef5
Add build files and fix build for gst-plugins-bad dshowsrcwrapper plugin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1577 >
2022-02-18 14:59:25 +01:00
Loic Le Page
587b2e6bcb
Add build files and fix build for gst-plugins-bad dshowdecwrapper plugin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1577 >
2022-02-18 14:59:25 +01:00
Loic Le Page
42bdeaf52c
Add directshow strmbase library source code from Microsoft repo
...
Original repo is here:
https://github.com/microsoft/Windows-classic-samples
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1577 >
2022-02-18 14:59:25 +01:00
Loïc Le Page
42c6a26aea
Move all directshow plugins to the same sub-folder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1577 >
2022-02-18 14:59:24 +01:00
Tim Mooney
97720dabe0
meson: check for libsocket and libnsl
...
If present, add '-lsocket' and '-lnsl' to network_deps.
ext/curl/meson.build: add network_deps to dependencies
gst/festival/meson.build: same
sys/shm/meson.build: same
Fixes linking issues on Illumos distros.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1525 >
2022-02-17 18:44:49 +00:00
Seungha Yang
04b8dfa391
d3d11: Add support for AYUV, AYUV64, and RGBA64_LE formats
...
Note that AYUV and AYUV64 formats will be used to expand format
support, especially some packed YUV formats (e.g., Y410, YUY2)
are common DXGI formats used for hardware decoder/encoder on Windows
but those formats cannot be used as a render target. We need to handle
them differently without pixel shader help, using compute shader
for example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1699 >
2022-02-16 18:41:05 +00:00
Seungha Yang
dd906f9610
d3d11: Store device format in struct
...
Holding pointer to struct was unsafe approach because
the pointer to d3d11 format will be invalidated once d3d11 device
object is released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1699 >
2022-02-16 18:41:05 +00:00
Seungha Yang
e1f0687b09
meson: Do hard build error for some MSVC warnings
...
Handle various MSVC warnings as errors for development version.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1006 >
2022-02-16 17:03:29 +00:00
Dmitry Osipenko
b757d12cff
v4l2codecs: h264: Correct scaling matrix ABI check
...
Scaling matrix V4L UAPI control not presents on NVIDIA Tegra, the default
matrix should be used in this case. Mark scaling matrix presence optional.
Fixes: 47bfa71530
("v4l2codecs: h264: Improve ABI check ")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1726 >
2022-02-16 13:16:17 +00:00
Mengkejiergeli Ba
586dfab9bd
msdkdec: Enable SFC scaling for AVC and HEVC
...
Decoder SFC only supports down-scaling at most to 1/8.
For example, given a 4K bistream, SFC can scale it to 1080p via:
"msdkh265dec ! video/x-raw,width=1920,height=1080 ! glimagesink"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1444 >
2022-02-16 08:26:46 +00:00
Mengkejiergeli Ba
c5f0e075e2
msdkdec: Enable SFC csc for AVC and HEVC
...
Decoder SFC will be triggered when default output format is not accept at
downstream. One use case below can work without using msdkvpp:
"! msdkh265dec ! "video/x-raw,format=BGRA" ! glimagesink",
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1444 >
2022-02-16 08:26:46 +00:00
Mengkejiergeli Ba
eb742c8ed0
msdkdec: Add SFC codes
...
SFC refers to Scaler Format Converter, more details here:
https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol15-sfc.pdf
By attaching mfxExtDecVideoProcessing buffer to mfxVideoParam, decoder
can do SFC for csc and scaling.
MSDK will check if surface bitdepth equals to input when no SFC is
triggered, which means in the case of SFC, there is no need to update
surface bitdepth via gst_msdk_update_mfx_frame_info_from_mfx_video_param.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1444 >
2022-02-16 08:26:46 +00:00
Seungha Yang
dbda4cf409
d3d11converter: Fix for missing GRAY conversion
...
Add missing Y410 -> GRAY and GRAY -> semi-planar conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1724 >
2022-02-16 02:30:01 +09:00
Seungha Yang
98345a141a
d3d11converter: Don't use FIXME_OBJECT for non-GstObject
...
... and print ERROR messages for unexpected input/output formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1724 >
2022-02-16 02:27:53 +09:00
He Junyan
24c3e0fcfa
va: Delete the display lock/unlock when we call VA-API.
...
According to the VA-API's description, they are MT-safe, we do not
need to care about that in our middleware layer. The lock/unlock
operations have overhead and make the performance lower.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1333 >
2022-02-15 10:02:08 +00:00
Seungha Yang
e3e23a2c84
d3d11converter: Fix RGB to GRAY conversion
...
Fix typo in shader code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1697 >
2022-02-14 17:49:54 +00:00
Seungha Yang
27246ebeb0
d3d11download: Fix decide_allocation
...
Caps should be parsed in any cases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1691 >
2022-02-14 10:48:31 +00:00
He Junyan
fa4dc3470f
meson: va: Add va option check into plugin's build.
...
Because the liblibgstva is built unconditionally, we now move the
va option check into va plugin's build.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1685 >
2022-02-14 06:30:56 +00:00
He Junyan
1eed9de0bb
vavpp: Fix the caps leak in the transform_caps() function.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1689 >
2022-02-12 20:11:46 +08:00
Seungha Yang
e96687d88d
d3d11: Update build-time dependency
...
Remove all the d3d11 and dxgi header version dependent ifdef
and bump the minimum requirement to d3d11_4.h and dxgi1_6.h.
We are already failing support old Visual Studio (Windows SDK actually)
such as Visual Studio 2015. Note that our MinGW toolchain satisfies
the requirement.
From runtime point of view, this change should be fine since
we are checking OS version with IUnknown::QueryInterface()
everywhere in order to check API availability
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1684 >
2022-02-11 20:01:52 +00:00
He Junyan
248baef400
MSDK: Import VA surface as encoder's input.
...
We make all MSDK encoders declare "memory:VAMemory" feature. Then
the pipeline such as:
gst-launch-1.0 -vf filesrc location=xxx.h264 ! h264parse ! \
vah264dec ! msdkh265enc ! fakesink
will choose VA memory caps between the VA decoder and MSDK encoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1087 >
2022-02-11 07:13:45 +00:00
He Junyan
ef5f6ab5d9
MSDK: Add helper function to peek VA surface of VA kind gstbuffer.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1087 >
2022-02-11 07:13:45 +00:00
He Junyan
26172123e5
MSDK: Handle context query into the encoder's query function.
...
The MSDK encoder's query function is not set and it just forwards
all query to its base class. We now need to answer the context
query correctly. Other VA plugins need to query the VA display.
By the way, the current query of "gst.msdk.Context" is also missing.
The other MSDK elements must depend on the bin's context message(
sent in context_propagate()) to set their MsdkContext correctly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1087 >
2022-02-11 07:13:45 +00:00