Jakub Adam
90eadae350
d3d11: Fix some typos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1985 >
2022-03-19 00:19:41 +00:00
Jakub Adam
df55700f44
d3d11screencapturesrc: Allow capturing screen sub-area
...
Adds crop-x, crop-y, crop-width, crop-height properties specifying the
screen area to capture.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1932 >
2022-03-18 13:56:51 +01:00
Seungha Yang
c08ce58753
nvcodec: Move CUDA <-> GL, D3D11, NVMM copy function to utils
...
This method can be used in other elements as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1945 >
2022-03-15 21:51:50 +00:00
Seungha Yang
b3df58add1
nvh265sldec: Add support for delayed output
...
Delay 4 frames in case of non-live to improve throughput
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1937 >
2022-03-15 21:08:06 +00:00
Seungha Yang
e270e2967f
nvenc: Fix deadlock because of too strict buffer pool size
...
The pool size might need to be larger than encoding surface pool size.
Also, because we always copy input frame into internal CUDA memory,
there's no reason to restrict max size of buffer pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1939 >
2022-03-12 16:44:44 +00:00
He Junyan
50a481939d
va: Fix a regression because of "Invert video codec frame dependency".
...
1. Always set the according GstVaH264EncFrame pointer when GstVideoCodecFrame
pointer is assigned, which can make the logic safe.
2. Fix the forgotten change in _sort_by_frame_num. Its input pointer now is
GstVideoCodecFrame type.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1935 >
2022-03-12 15:20:19 +00:00
Seungha Yang
aa476452fb
codecs: Rename picture clear functions
...
Our convention for clear method is gst_clear_foo_bar().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1897 >
2022-03-11 20:20:17 +00:00
Seungha Yang
423111480c
nvh265sldec: Always fill SPS/PPS related parameters
...
Address compare was not a valid approach since it works
only if SPS/PPS id are changed. Otherwise it will always point to
the same address of member variables of h265parser.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1931 >
2022-03-11 16:14:14 +00:00
Corentin Damman
1fb3e35708
cudamemorycopy: add D3D11 resource support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1807 >
2022-03-10 18:08:10 +00:00
Corentin Damman
1568db2c3e
cudacontext: find associated DXGI Adapter LUID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1807 >
2022-03-10 18:08:10 +00:00
Corentin Damman
895f11401d
cudautils: add support of D3D11 resource as Cuda graphics resource type
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1807 >
2022-03-10 18:08:10 +00:00
Corentin Damman
f76ecf1e63
cudaloader: add D3D11 API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1807 >
2022-03-10 18:08:10 +00:00
Seungha Yang
5d298b98da
nvh264dec,nvh265dec: Fix broken key-unit trick and reverse playback
...
On GstVideoDecoder::{drain,flush}, we send null packet with
CUVID_PKT_ENDOFSTREAM flag to drain out decoder. Which will
reset CUVID parser as well.
To continue decoding after the drain, the next input buffer
should include sequence headers otherwise CUVID parser will
not report any decodeable frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1911 >
2022-03-10 12:40:05 +00:00
Víctor Manuel Jáquez Leal
838fe24e78
vah264enc: Invert video codec frame dependency.
...
Instead of using GstMiniObject to hold H264 frame, now it uses a plain
structure. Besides, instead of holding a reference to
GstVideoCodecFrame, the H264 frame structure is set as a
GstVideoCodecFrame user data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1856 >
2022-03-09 12:57:30 +00:00
Seungha Yang
496b77e6aa
cudamemorycopy: Fix GL resource leak
...
Clear GL resources on stop()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1896 >
2022-03-08 18:02:25 +00:00
Seungha Yang
34c6063769
decklink: Update SDK version to 12.2.2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1883 >
2022-03-08 10:16:29 +00:00
Seungha Yang
4aa516f305
cudamemorycopy: Remove texture-target caps field
...
It's GL specific field, and we can remove it unconditionally
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1865 >
2022-03-07 19:05:29 +00:00
Seungha Yang
e5132a8508
cudaupload,cudadownload: Add support for dGPU NVMM
...
Implement NVMM <-> CUDA, GL, SYSTEM memory conversion. Jetson is
not supported yet. Note that NVMM <-> GL interop on Jetson platform
is supported by GstGL
Some example pipelines are:
- Convert NVMM to GstGL memory
nvv4l2decoder ! "video/x-raw(memory:NVMM)" ! cudadownload ! "video/x-raw(memory:GLMemory)" ! glimagesink
- Upload system memory to NVMM and encode
video/x-raw,format=NV12 ! cudaupload ! "video/x-raw(memory:NVMM)" ! nvv4l2h264enc
- Convert NVMM to GstCUDA memory and encode
nvvideoconvert ! "video/x-raw(memory:NVMM)" ! cudaupload ! "video/x-raw(memory:CUDAMemory)" ! nvh264enc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1865 >
2022-03-07 19:05:29 +00:00
Víctor Manuel Jáquez Leal
0c7fe80387
va: encoder: Don't preallocate reconstruct buffers.
...
It's not required by VA to register the reconstruct buffers at context
creation, just as in decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1857 >
2022-03-07 16:31:41 +00:00
Seungha Yang
a63d1cf4c4
cudamemorycopy: Fix build when gl is disabled
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1707
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1868 >
2022-03-07 10:22:21 +00:00
Mengkejiergeli Ba
c9aa529484
msdkdec: Fix to not trigger SFC scaling when vpp at downstream
...
When there is vpp scaling downstream, we need to make sure SFC is not
triggered because vpp may fall into passthrough mode which causes
the decoder negotiation to create src caps with vpp scaled width/height.
This patch includes bitstream's original size in first query with
downstream in gst_msdkdec_src_caps, which is the same for what we do for
color format in this query. This is to ensure SFC scaling starts to
work only when downstream directly asks for a different size instead of
through vpp.
Note that here SFC scaling follows the same behavior as msdkvpp:
if user only changes width or height, e.g. dec ! video/x-raw,width=xx !,
the height will be modified to the value which fits the original DAR.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1838 >
2022-03-07 07:26:40 +00:00
Seungha Yang
30ddb0cd97
nvcodec: Add missing null check in context sharing code
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
c31bf2db4d
nvcodec: Refactor cudaupload/download and add support for GL memory
...
* Implement new baseclass GstCudaMemoryCopy to remove duplicated
cudaupload/download code
* Add support for CUDA <-> GL memory conversion via cudaupload/download
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
111b2c3f53
nvcodec: Refactor GstCudaMemory abstraction
...
* Hide GstCudaMemory member variables
* Make GstCudaAllocator object GstCudaContext independent
* Set offset/stride of memory correctly via video meta
* Drop GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT support.
This implementation actually does not support custom alignment
because we allocate device memory via cuMemAllocPitch
of which alignment is almost uncontrollable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
ad0e7fca14
nvcodec: Refactor basetransform subclasses
...
* cudaupload/download
- Specify only formats actually we can deal with
nvcodec elements, not all video formats
- Supports CUDA output for download and input for upload in order
to make passthrough possible, like other upload/download elements.
* cudabasetransform
- Reset conversion element if upstream CUDA memory
holds different CUDA context and the element can accept it.
This is the same behavior as corresponding d3d11 filter elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
89bbcf0061
cudabufferpool: Move GstCudaContext object to public member
...
... so that plugins can understand assosicated cuda context with the
pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
c8a1c953d8
cudacontext: Require explicit gpu id instead of auto (-1)
...
Sync up with GstD3D11Device implementation. The auto stuff should
be handled in context sharing step, not device creation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
1b9274307a
nvcodec: Indent update
...
... to prevent gnu indent version dependent diffs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Seungha Yang
cec7ac2a1b
cudacontext: Remove unnecessary cuInit() call
...
It's already called at plugin init time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1834 >
2022-03-06 15:39:04 +00:00
Víctor Manuel Jáquez Leal
e42d10431d
va: basetransform: Add device-path read-only property.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1844 >
2022-03-04 14:34:32 +00:00
Víctor Manuel Jáquez Leal
47a95dfd65
va: basedec: Add device-path read-only property.
...
And elements will notify the used device-path if display is DRM.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1844 >
2022-03-04 14:34:32 +00:00
Víctor Manuel Jáquez Leal
72c6a3b95a
vah264enc: Remove GST_PARAM_CONDITIONALLY_AVAILABLE.
...
Since it's used only when the property is conditionally installed, and
these parameters are always installed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
He Junyan
be24cdb150
va: encoder: Clean dead code.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
Víctor Manuel Jáquez Leal
7aa597d6df
va: encoder: Fix error code path when open.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
Víctor Manuel Jáquez Leal
81c00664a2
vah264enc: Remove preferred_output_delay.
...
In the current state of the encoder it's just dead code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
Víctor Manuel Jáquez Leal
1a19a835a9
vah264enc: Avoid mapping coded buffer twice.
...
Currently for copying the coded buffer onto a GStreamer buffer, the
coded buffer is mapped two times: one for getting the size, and later
for do the actual copy. We can avoid this by doing directly in the
element rather than in the general encoder object.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
Víctor Manuel Jáquez Leal
81b99c37d8
vah264enc: Single parameter array per picture.
...
There's no need, at least in H.264, to hold a global parameter array,
since there's no need to submit SPS, trellis, hdr or quality in every
buffer, but only on IDR ones.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
Víctor Manuel Jáquez Leal
72b0f8ab17
va: Fix log message
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1845 >
2022-03-04 12:41:37 +00:00
Mengkejiergeli Ba
8a598deef2
msdkenc: Change default ref frames number as 0
...
When user does not set ref-frames in pipeline, we should let MediaSDK
decide the reference frame number via setting default value as 0 at
gstreamer side.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1839 >
2022-03-04 01:05:30 +00:00
Seungha Yang
8e0ce6b125
meson: wic: Fix typo
...
Should check WIC build option, not MediaFoundation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1847 >
2022-03-04 04:18:06 +09:00
Seungha Yang
00f773bd10
qsv: Remove strcpy for DRM device path
...
Simplify code. It's just one-time allocation, so don't need to worry
about leaking.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1835 >
2022-03-03 11:29:33 +00:00
Seungha Yang
799616aea9
msdk: Don't print error log for missing DRM device path
...
It's expected in case that such DRM device is unavailable for some reasons,
specifically non-Intel platform or so
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1836 >
2022-03-03 06:29:11 +00:00
Seungha Yang
f8016687a4
wic: Add support for JPEG and PNG decoding
...
Adding Windows Imaging Component (WIC) plugin with JPEG/PNG decoding
support.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1605 >
2022-03-03 00:00:54 +00:00
Seungha Yang
df6624bf1c
directshow: Fix for division by zero
...
The AvgTimePerFrame value may be unknown. Use arbitrary
value (30 fps) instead of crashing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1828 >
2022-03-02 19:35:49 +00:00
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