He Junyan
35390de50d
vacompositor: consider the DMA kind input for sink pad
...
Co-authored-by: Víctor Jáquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5160 >
2023-12-16 10:56:09 +00:00
He Junyan
0bbaa00c3f
vacompositor: Override the update_caps() of video aggregator class
...
The input of the vacompositor may be DMA buffers. And in this case, the input
caps has the format=DMA_DRM, which can not be recognized by base video
aggregator class' find_best_format() function. So we need to override the
update_caps() virtual function.
Also we consider the DMA kind caps in negotiated_src_caps() for output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5160 >
2023-12-16 10:56:09 +00:00
He Junyan
e68724c8e0
vacompositor: add helper function to get formats from caps
...
Co-authored-by: Víctor Jáquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5160 >
2023-12-16 10:56:09 +00:00
He Junyan
c76999fe7b
vacompositor: add helper function to choose format
...
The function is based on the most supported formats by Intel/Mesa VA drivers.
Co-authored-by: Víctor Jáquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5160 >
2023-12-16 10:56:09 +00:00
He Junyan
eb4d2dd204
vacompositor: record the input caps for each input pad
...
The caps of each input sink pad wil decide the final output format and
caps of the src pad.
Co-authored-by: Víctor Jáquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5160 >
2023-12-16 10:56:09 +00:00
Seungha Yang
800a83b435
d3d12decoder: Implement threaded decoding
...
To achieve maximum throughput, waiting on command commit thread
is not ideal. And render-delay will introduce unwanted latency.
Best is to split thread and wait finished decoding job in a dedicated
output thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812 >
2023-12-15 22:56:33 +09:00
Seungha Yang
7471db9a30
d3d12decoder: Disable d3d11 interop
...
It does not seem to work with some AMD iGPU
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812 >
2023-12-15 20:40:21 +09:00
Seungha Yang
7afa914054
d3d12fence: Reset fence after waiting done
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812 >
2023-12-15 19:48:40 +09:00
Seungha Yang
a24a155279
d3d12: Enable debug layer
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812 >
2023-12-15 19:48:40 +09:00
Seungha Yang
7443cc00b5
d3d12: Requires ID3D12Device4 interface
...
ID3D12Device4::CreateCommandList1() method is required
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812 >
2023-12-15 19:48:39 +09:00
Seungha Yang
818c95e8c3
d3d12: Update allocation params signalling
...
Sync up with d3d11 implementation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5812 >
2023-12-15 19:48:36 +09:00
Víctor Manuel Jáquez Leal
8210784dab
vabasedec: clean up decide_allocation() vmethod
...
When creating a new VA pool set config size to zero because it's not used.
Also, given the potential different sizes from software buffer pools and VA
buffer pools, this patch handle that potential different values.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805 >
2023-12-14 12:50:32 +00:00
Víctor Manuel Jáquez Leal
4fab6bb45a
vabasetransform: clean up decide_allocation() vmethod
...
When creating a new VA pool set config size to zero because it's not used.
Also, given the potential different sizes from software buffer pools and VA
buffer pools, this patch handle that potential different values.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805 >
2023-12-14 12:50:32 +00:00
Víctor Manuel Jáquez Leal
33e49023ff
vacompositor: clean up decide_allocation() vmethod
...
When creating a new VA pool set config size to zero because it's not used.
Also, given the potential different sizes from software buffer pools and VA
buffer pools, this patch handle that potential different values.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805 >
2023-12-14 12:50:32 +00:00
Víctor Manuel Jáquez Leal
1c7ce208bd
vapluginsutils: add helper gst_va_create_other_pool()
...
This helper function creates a software-based buffer pool, where if size is
zero, its value is retrieved from the canonical size.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805 >
2023-12-14 12:50:32 +00:00
Víctor Manuel Jáquez Leal
4a22cc8fb3
va: no need to provide a buffer size for VA pool
...
VA drivers allocate surfaces given their properties, so there's no need to
provide a buffer size to the VA pool.
Though, the buffer size is provided by the driver, or the canonical size
is used for single planed surfaces.
This patch removes the need to provide a size for the function
gst_va_pool_new_with_config() and adds a helper method to retrieve the surface
size, gst_va_pool_get_buffer_size(). Also change the callers accordingly.
Changes for custom VA pool creation will be addressed in the following commits.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805 >
2023-12-14 12:50:32 +00:00
Seungha Yang
fab1c5f953
d3d12: Use d3dx12.h helper library
...
... and remove manually implemented helper methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5807 >
2023-12-14 18:08:00 +09:00
Seungha Yang
38c04a5f34
d3d12: Use DirectX-Headers and drop MinGW build support
...
There are some conflicts between MinGW toolchan and DirectX-Headers.
And due to ABI differences, more fixes are required.
We will support only MSVC build for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5807 >
2023-12-14 18:08:00 +09:00
Mengkejiergeli Ba
41f13f4373
msdk: Remove dead code
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5796 >
2023-12-14 00:47:28 +00:00
He Junyan
5ae7bbf5fb
va: h265dec: Add support for more -still and -intra profiles
...
They are actually compitable with the main and main-10 profiles.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5797 >
2023-12-12 21:30:16 +08:00
He Junyan
5345652896
va: Add decoder compatible caps string field into profiles' map
...
Some profiles such as main or main-10 in HEVC can support more
compatible profiles such as main-still-picture or main-10-intra.
We should add them into decoder's sink caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5797 >
2023-12-12 21:30:08 +08:00
He Junyan
354aceb9cd
va: Add the entrypoint parameter to gst_va_profile_caps()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5797 >
2023-12-12 20:41:54 +08:00
Mengkejiergeli Ba
484a636841
msdkvpp: Add fix_format for src caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Mengkejiergeli Ba
5536f742e9
msdk: Add a help func to fix the map
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Mengkejiergeli Ba
8081a665f8
msdk: Remove func to export dmabuf to va surface
...
Since we use va allocator and va dma allocator to create surface, the
surface is already exported in the case of dma allocator. So remove
redundant export function in msdk allocator.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Yinhang Liu
61282ebd34
msdkenc: Add modifier support
...
Co-authored-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Yinhang Liu
9ccdfae545
msdkvpp: Add modifier support
...
Co-authored-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Yinhang Liu
63c0fdd29a
msdkdec: Add modifier support
...
Co-authored-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Mengkejiergeli Ba
e65e954e2b
msdk: Config pool with max/min number of buffers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:12 +08:00
Yinhang Liu
e668cf9305
msdk: Add help functions to handle drm caps
...
Co-authored-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 14:56:03 +08:00
Yinhang Liu
bf4703e9a0
msdk: Add modifier when creating dynamic caps
...
Add modifier in gst-inspect for dma features.
Co-authored-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 11:30:07 +08:00
Yinhang Liu
8100b04ea0
msdk: Add a helper function to get supported modifiers
...
The modifiers will be used when creating caps for dma feature.
co-authored-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5208 >
2023-12-12 10:22:11 +08:00
Alexander Slobodeniuk
651dcb4912
d3d11: fix building with address sanitizer
...
When building with address sanitizer it gives next error:
"gstd3d11window_corewindow.cpp : fatal error C1128: number of sections
exceeded object file format limit: compile with /bigobj"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5779 >
2023-12-07 21:36:20 +00:00
Mengkejiergeli Ba
be7e502769
msdk: Let deviceID config the mfx implementation
...
In multi-card scenario, user can set GST_MSDK_DRM_DEVICE env variable to
choose the device. This patch can align vpl's queried results with the
users' choice by passing deviceID when creating mfx implementation.
Co-authored-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5697 >
2023-12-07 11:17:20 +08:00
Seungha Yang
012222bcb3
cudaipcsink: Fix deadlock on stop
...
Manually close connection if client does not hold any shared memory
on stop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5747 >
2023-12-06 16:09:27 +00:00
Seungha Yang
ed5987efd4
d3d11ipcsink: Fix deadlock on stop
...
Manually close connection if client does not hold any shared memory
on stop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5747 >
2023-12-06 16:09:27 +00:00
Seungha Yang
b168647073
nvdec: Fix division by zero when calculating buffer duration
...
Don't try to calculate buffer duration from variable framerate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5764 >
2023-12-06 13:38:09 +00:00
renjun wang
4ff2f07e51
v4l2codecs: av1: Fix typo in debug log message
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5722 >
2023-12-06 10:25:24 +00:00
Seungha Yang
adfa4d459e
qsv: Update plugin doc cache
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:55:24 +09:00
Seungha Yang
865d7a1351
qsvh265dec: Add support for GBR decoding
...
Use GBR equivalent output formats if RGB colorspace is detected
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:50:26 +09:00
Seungha Yang
e4729e5784
qsvh265dec: Add support for HEVC RExt profiles
...
Adding 4:2:0 high bitdepth and 4:2:2/4:4:4 decoding support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:38:04 +09:00
Seungha Yang
0178cc188b
qsv: Add util methods for video format mapping
...
Remove duplicated format mapping code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:38:04 +09:00
Seungha Yang
c432a73e80
msdk: Fix build error after d3d11 API change
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3158
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5723 >
2023-11-28 19:17:20 +09:00
Seungha Yang
461c4bc32c
d3d11: Add support for more packed formats using compute shader
...
Adding below listed formats support, and reorders supported format
list based on preference
<YUV 4:2:2>
UYVY, VYUY, YVYU, v210, v216
<YUV 4:4:4>
v308, IYU2
<RGB 16bits per pixel>
RGB16, RGB15, BGR16, BGR15
<RGB 8bits per channel>
ARGB, xRGB, ABGR, xBGR, RGB, BGR
<RGB 10bits per channel>
r210, BGR10A2
<RGB 16bits per channel>
BGRA64
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5717 >
2023-11-27 15:14:09 +00:00
Seungha Yang
f23d4475b3
d3d11convert: Allow MSAA only for native DXGI formats
...
Enable MSAA only if converter can render directly on texture
without post-processing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5717 >
2023-11-27 15:14:09 +00:00
Seungha Yang
845f5d4856
d3d11: Rework memory allocation params signalling
...
Hide GstD3D11AllocationParams detail from public header and
set setter methods.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5717 >
2023-11-27 15:14:09 +00:00
Seungha Yang
721533d042
d3d11: Use shader model 4
...
Since shader model 4 is sufficient for the current pixel shader
implementations, prebuild HLSL with shader model 4 as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5709 >
2023-11-25 20:27:43 +09:00
Seungha Yang
3ab8d520fb
d3d11: Drop legacy device support
...
Direct3D feature level 10 supported GPUs were released
more than 15 years ago, around the time when Windows
Vista / 7 were released. Also our d3d11 plugin/library
does not support feature level 9.x very well already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5709 >
2023-11-25 20:27:43 +09:00
Link Mauve
4cd9dd3940
v4l2codecs: Query the right buffer before expbuf
...
We were previously always querying index 0, and while the number of planes per
buffer will never change, it seems more proper to query the right buffer rather
than always the first one.
This was found while reading strace logs, and wondering why the
V4L2_BUF_FLAG_MAPPED flag was present on all ¬0 indices even though that
happened before VIDIOC_EXPBUF.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5647 >
2023-11-22 15:50:08 +00:00
Seungha Yang
0004a52866
qsvdecoder: Fix stream format detection
...
Fixing typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5700 >
2023-11-21 21:22:47 +09:00
Seungha Yang
0ad1c07b20
d3d11testsrc: Bind UAV if needed
...
YUV packed formats require UAV
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5691 >
2023-11-20 20:29:13 +09:00
Seungha Yang
ca14eeeeaa
d3d11convert: Add support for YUY2 and Y410 output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5691 >
2023-11-20 20:29:13 +09:00
Seungha Yang
0afeacce92
d3d11screencapturesrc: Fix wrong color with HDR enabled
...
Even if IDXGIOutput6 says current display colorspace is HDR,
captured texture via IDXGIOutputDuplication::AcquireNextFrame()
is converted frame by OS unless we use IDXGIOutput5::DuplicateOutput1()
with DXGI_FORMAT_R16G16B16A16_FLOAT format, in order for captured
frame to be scRGB color space. Then application should perform
tonemap operation based on reported display white level, color primaries, etc.
Since we don't have any tonemapping implementation, ignores colorimetry
reported by IDXGIOutput6.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3128
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5671 >
2023-11-16 19:00:24 +09:00
Seungha Yang
cb3c1390f2
d3d11: Avoid ID3D11DeviceContext::Map if possible
...
Allocate resource with initial date instead of calling Map/Unmap
after allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5660 >
2023-11-15 23:38:59 +09:00
Seungha Yang
ac11ccd4ff
dwrite: Protect entire draw operation with D3D11 lock
...
d2d runtime seems to execute pending GPU command list
when DXGI ID2D1RenderTarget is being released, and it will invoke
d3d11 immediate context APIs. Should protect all rendering operations
and DXGI resources with lock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5659 >
2023-11-15 19:25:46 +09:00
Mengkejiergeli Ba
cef1f179c6
msdk: Add device env in plugin dependencies
...
Add env vars GST_MSDK_DRM_DEVICE in plugin_add_dependencies to register
msdk plugins according to user's choice in a multi-gpu platform.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5615 >
2023-11-15 02:34:27 +00:00
Víctor Manuel Jáquez Leal
9f5b2c4e25
va: use GstVideoInfoDmaDrm when importing buffers
...
In the case of encoders and filters when importing a DMABuf, use
GstVideoInfoDmaDrm to get the drm fourcc and modifier.
In both cases, instead of keeping the original GstVideoInfoDmaDrm from caps, the
GstVideoInfo part of the structure is converted as canonical one, given the
format from the fourcc. It's kept in the way to handle V4L2 linear DMABufs and
to avoid too many changes in the current code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5264 >
2023-11-09 17:36:06 +00:00
Víctor Manuel Jáquez Leal
7c0227145c
vaallocator: use GstVideoInfoDmaDrm for dmabuf setup
...
Instead of guessing the DRM format and modifier, pass a DRM video info to
gst_va_dmabuf_memories_setup().
Still, it checks for the DRM parameters in DRM info, if they are not available,
as in the case of V4L2 buffers, the part of the video info is used.
This is an API breakage, but since the plugin is still in stage, it's still
allowed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5264 >
2023-11-09 17:36:06 +00:00
Víctor Manuel Jáquez Leal
76115528ac
vallocator: remove n_planes argument in dmabuf_memories_setup()
...
Instead of passing the number of planes to process, take that number from the
passed GstVideoInfo.
This is an API breakage, but since the plugin is still in stage, it's still
allowed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5264 >
2023-11-09 17:36:06 +00:00
Tobias Rapp
cd98d12f2e
decklink: Fix typo in element documentation
...
DechLink -> DeckLink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5625 >
2023-11-09 07:53:12 +00:00
Tobias Rapp
7ec3a97a70
decklink: Increase section level of video sink/source element documentation
...
Should fix auto-generated follow-up sections like "Hierarchy" or
"Factory details" to be listed under the element name in the
table-of-contents of the document, instead of a stand-alone
"Duplex-Mode" section.
Also cleanup some spurious colon suffix after section names.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5625 >
2023-11-09 07:53:12 +00:00
Víctor Manuel Jáquez Leal
d7b5b54eda
vadisplay: only register elements of allowed drivers
...
Now that nvidia-vaapi-driver appeared and isn't yet supported by GstVA, we've to
add an allowed list of supported drivers.
This patch implements it adding a environment variable to disable this driver
check: GST_VA_ALL_DRIVERS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5616 >
2023-11-08 13:53:26 +00:00
Seungha Yang
02bf1dbf1f
d3d11window: Fix scale factor setting
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5602 >
2023-11-07 11:19:31 +00:00
Seungha Yang
0bcddfc894
d3d11: Enable DirectXMath SIMD
...
* Enable SIMD except for x86 target
* Use aligned matrix struct
* Remove unnecessary matrix copy operations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5602 >
2023-11-07 11:19:31 +00:00
Seungha Yang
b12d43bd89
wasapi2device: Ignore activation failed device
...
Enumerates all devices even if activation error is detected
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3090
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5599 >
2023-11-06 12:28:50 +00:00
Marek Vasut
5d2d602e4a
v4l2codecs: Avoid QBUF/DQBUF struct timeval .tv_usec wrap-around at frame 1000000
...
When decoding stream using hardware V4L2 decoder element, in any of the
currently supported formats, the decoding will fail once frame number
1000000 is reached. The reported error clearly indicates a wrap-around
occured, instead of receiving decoded frame 1000000, frame 0 is received
from the hardware V4L2 decoder driver.
The problem is actually not in the driver itself, but rather in gstreamer,
which uses `struct v4l2_buffer` member `.timestamp` in a special way. The
timestamp of buffers with encoded data added to the SINK (input) queue of
the driver is copied by the driver into matching buffers with decoded data
added to the SOURCE (output) queue of the driver. In fact, the timestamp
is not a timestamp at all, but rather in this special case, only part of
it is used as an incrementing frame counter.
The `.timestamp` is of type `struct timeval`, which is defined in
`sys/time.h` [1]. Only the `tv_usec` member of this structure is used
for the incrementing frame counter. However, suseconds_t tv_usec [2]
may be limited to range [-1, 1000000]:
"
[XSI] The type suseconds_t shall be a signed integer type capable of
storing values at least in the range [-1, 1000000].
"
Therefore, once frame 1000000 is reached, a rollover occurs and decoding
fails.
Fix this by using both `struct timeval` members, `.tv_sec` and `.tv_usec`
with matching modular arithmetic, this way the failure would occur again
just short of 2^84 frames, which should be plenty.
[1] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_time.h.html
[2] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
A test case using stateless hardware h264 decoder, the WARN/ERROR output
in gstreamer log indicates a failure occurred. With this change, that
error no longer occurs and the WARN/ERROR are not present:
```
pc$ gst-launch-1.0 videotestsrc num-buffers=1001001 pattern=6 ! \
video/x-raw,width=16,height=16,format=I420 ! \
x264enc ! filesink location=/tmp/test.h264
dut$ GST_DEBUG="*:3" gst-launch-1.0 filesrc location=/tmp/test.h264 ! \
h264parse ! v4l2slh264dec ! fakesink
...
0:03:51.393677606 12111 0x370df400 WARN \
v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
Requested frame 1000000, but driver returned frame 0.
0:03:51.394140597 12111 0x370df400 WARN \
v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
Requested frame 1000001, but driver returned frame 1.
0:03:51.394425216 12111 0x370df400 WARN \
v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
Requested frame 1000002, but driver returned frame 2.
0:03:51.394665211 12111 0x370df400 WARN \
v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
Requested frame 1000003, but driver returned frame 3.
0:03:51.394785833 12111 0x370df400 WARN \
v4l2codecs-h264dec gstv4l2codech264dec.c:1059:gst_v4l2_codec_h264_dec_output_picture:<v4l2slh264dec0> \
error: Failed to decode frame 1000000
ERROR: from element /GstPipeline:pipeline0/v4l2slh264dec:v4l2slh264dec0: Failed to decode frame 1000000
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5598 >
2023-11-04 15:51:45 +01:00
Seungha Yang
34d221dad5
wasapi2: Fix build with GST_DISABLE_GST_DEBUG
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585 >
2023-11-03 13:31:03 +00:00
Seungha Yang
8009f5275a
mediafoundation: Fix build with GST_DISABLE_GST_DEBUG
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585 >
2023-11-03 13:31:03 +00:00
Seungha Yang
c3cef6e923
d3d12: Fix build with GST_DISABLE_GST_DEBUG
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585 >
2023-11-03 13:31:03 +00:00
Seungha Yang
033f98ad86
d3d11: Set MaxAnisotropy value for the best quality
...
... and use anisotropic filter without comparison, which is actually
intended one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580 >
2023-11-01 15:41:08 +00:00
Seungha Yang
ac265bc4f9
d3d11overlaycompositor: Avoid heap allocation per upload
...
Don't allocate list per upload
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580 >
2023-11-01 15:41:08 +00:00
Seungha Yang
107edc0c07
d3d11videosink: Add redraw-on-update property
...
If users update geometry related properties very frequently
for a stream to be animated, redrawing on every update
can make rendering choppy or can be a performance bottleneck.
To address the issue, adding a property to control the behavior
of redrawing scene when geometry related properties are updated.
Also, do not resize swapchain on such property update, since
re-allocating backbuffer and multi-sampled render target is
unnecessary in that case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5575 >
2023-10-30 11:15:35 +00:00
Seungha Yang
795e1bac34
d3d11videosink: Fix window switching in case of fullscreen mode
...
Other Windows applications allow window switching even when
an application window is in fullscreen mode. Also fixing
regression introduced in 15248d8b84
which makes restored window is always located at topmost
since we do not call SetWindowPos() anymore when restoring
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5574 >
2023-10-29 22:45:17 +09:00
Seungha Yang
e7069984df
d3d11videosink: Add sampling-method property
...
Identical to "method" property in d3d11convert element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 23:12:30 +09:00
Seungha Yang
b16665dc75
d3d11convert: Add support for sampling with anisotropic filter
...
Anisotropic filtering might produce better quality than linear filtering
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:56:28 +09:00
Seungha Yang
af31b46992
d3d11convert: Add support for transform
...
Adding 3D rotation and scale transform support to d3d11convert element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
1813b4e3d9
d3d11: Move transform matrix related method to utils
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
3a2a31d18b
d3d11overlaycompositor: Set rasterizer state
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
4dfdb6ec68
d3d11screencapturesrc: Set rasterizer state
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
5389cc2cc3
d3d11compositor: Set rasterizer state
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
1a82c9b9ab
d3d11testsrc: Set rasterizer state
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:12:17 +09:00
Seungha Yang
e13612162b
d3d11screencapturesrc: Use DirectXMath struct and C++ mutex
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572 >
2023-10-28 22:11:53 +09:00
Seungha Yang
63bb0b8de7
d3d11videosink: Add support for transform and MSAA
...
Adding properties for 3D rotation with arbitrary angle
and scaling. And adding Multi Sampling Anti-Aliasing rendering
support to smooth borders if arbitrary angle is applied
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532 >
2023-10-28 09:58:16 +00:00
Seungha Yang
0b45548f18
d3d11videosink: Fix typo
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532 >
2023-10-28 09:58:16 +00:00
Seungha Yang
745a73eece
wasapi2: Don't use global volume control object
...
ISimpleAudioVolume controls volume of corresponding audio session
and there would be only single input/output audio session
in case of share-mode, which means that it controls audio volume of the
process. Instead, use IAudioStreamVolume interface which controls
volume of the stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5549 >
2023-10-27 18:11:51 +00:00
Seungha Yang
bdc0f177f0
d3d11screencapturesrc: Fix mouse cursor blending
...
Ignore alpha component of source (mouse cursor texture)
when blending alpha channel, otherwise the background area of source
(which has zeros) will be written to render target. Then it will result
in black rectangle if output texture is converted to premultiplied alpha
texture
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5566 >
2023-10-27 16:33:04 +00:00
Sebastian Dröge
e6ff644bac
aja: Move clang-format configuration from the top-level to the plugin subdirectory
...
This shouldn't have been left at the top-level but was forgotten to be
moved when merging the repository histories.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5558 >
2023-10-27 11:44:36 +00:00
Sebastian Dröge
1b117e666b
aja: Add basic documentation
...
Also remove the `gst-inspect-1.0` output from the README.md. This is
listed in the actual documentation and more up to date there.
2023-10-26 09:36:10 +03:00
Sebastian Dröge
59f4146bdc
aja: Integrate AJA plugin into the build system
...
Co-Authored-By: Nirbheek Chauhan <nirbheek@centricular.com>
2023-10-26 09:36:09 +03:00
Sebastian Dröge
d2d947380e
Merge AJA audio/video source/sink plugin
...
Original location is https://github.com/centricular/gst-aja
2023-10-26 09:35:52 +03:00
Sebastian Dröge
f1a1dadbf3
Prepare for merging into GStreamer
2023-10-26 09:27:46 +03:00
Seungha Yang
2aa841e74b
mfvideoencoder: Fix typo in template caps
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3058
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5554 >
2023-10-25 23:19:51 +09:00
Adrien De Coninck
65365caa21
d3d11videosink: post "have-window-handle" element message on the bus
...
* when window_id is not user-provided and window_type==GST_D3D11_WINDOW_NATIVE_TYPE_HWND
* allows user to retrieve internally created window handle
* for custom positionning
* for custom icons
* ...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5544 >
2023-10-24 16:32:36 +02:00
David Rosca
8aac08506a
va: Use vaMapBuffer2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5467 >
2023-10-23 19:40:16 +00:00
Piotr Brzeziński
e79b308f82
vtdec: Fix deadlock when attempting to negotiate
...
This was wrongly calling the base class method, which unnecessairly took the stream lock, already taken by
handle_frame(). The drain() call in negotiate() would then wait for the output loop to pause, while that loop
is stuck waiting to take the stream lock, thus causing a deadlock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5521 >
2023-10-20 13:50:16 +02:00
Nicolas Dufresne
41f478e97d
v4l2codecs: h265: Fix entry_point_offsets array leak
...
This array was being leaked.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5499 >
2023-10-17 15:06:26 -04:00
Seungha Yang
e2790d635c
d3d11screencapturesrc: Fix HWND capture mode
...
Use per-monitor-aware context to cover different DPI settings per
monitor
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2425
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5485 >
2023-10-16 01:02:36 +09:00
Seungha Yang
c5d60cee01
d3d12decoder: Hide non-default device from docs
...
... and add since marker
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5481 >
2023-10-14 12:32:46 +00:00
Seungha Yang
8a35c8a2a5
d3d11compositor: Fix typo in property description
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5481 >
2023-10-14 12:32:46 +00:00
Seungha Yang
0a05ba3f62
nvencoder: Add support for new preset/tune/multi-pass options
...
Adding new P1 ~ P7 presets and deprecate old preset values.
Also adding tune and multi-pass properties.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5428 >
2023-10-14 11:03:40 +00:00
Rahul T R
6fbe4d55c4
kmssink: Add TIDSS auto-detection
...
Add Texas Instruments TIDSS display controller into list of
auto-detected modules.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5469 >
2023-10-12 18:25:50 +00:00
Seungha Yang
ed29c23e86
d3d12, dwrite, va: Fix various msys2 build error/warning
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5454 >
2023-10-12 10:53:58 +00:00
Mengkejiergeli Ba
c14f4cda0c
msdkvpp: Use filter flag to handle passthrough for tone mapping
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5449 >
2023-10-12 05:02:37 +00:00
Seungha Yang
c2ed8759c8
d3d11videosink: Don't use DXGI_ALPHA_MODE_PREMULTIPLIED for HWND swapchain
...
It's allowed only for a swapchain type which does composition
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5464 >
2023-10-11 22:22:56 +00:00
Seungha Yang
7b564619cf
d3d11videosink: Fix rendering with initial fullscreen state
...
Change fullscreen mode once the swapchain is fully configured
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5462 >
2023-10-11 21:39:11 +00:00
Seungha Yang
15248d8b84
d3d11videosink: Fix toggling between fullscreen and maximized
...
Use GetWindowPlacement() and SetWindowPlacement() APIs
to remember and restore window status, such as maximized, position,
restore position, etc.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3016
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5462 >
2023-10-11 21:39:11 +00:00
Seungha Yang
f52ecb9607
d3d11converter: Add support for HLSL precompile and bytecode caching
...
Precompile pixel shaders for simple conversion path
(without gamma/primaries conversion) in case of MSVC build.
Even if runtime compile is required (cross-compiled or complex conversion
path), do it only once and reuse the compiled bytecode.
This precompile/caching can save about 95% of time taken by
gst_d3d11_converter_new() call.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3004
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
83a576e854
d3d11: Reuse sampler object
...
The linear sampler object can be reused
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
92cc5722c8
d3d11: Pass HLSL source size to compile function
...
The string size is known at build time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
bfdea297d2
d3d11converter: Set alpha-mode using config
...
... and disallow runtime alpha-mode update for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Seungha Yang
8fe26c8a10
d3d11: Simplify HLSL build
...
Unify source/header/entrypoint names
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5457 >
2023-10-11 18:40:46 +00:00
Nicolas Dufresne
88fd9908fe
v4l2codecs: Fix tiled formats stride conversion
...
While adding arbitrary tile support, a round up operation was badly
converter. This caused the Y component of the stride to be 0. This
eventually lead to a crash in glupoad preceded by the following
assertion.
gst_gl_buffer_allocation_params_new: assertion 'alloc_size > 0' failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5458 >
2023-10-11 14:13:53 +00:00
Seungha Yang
3536b7f3a6
decklink: Fix broken COM string conversion
...
WideCharToMultiByte return is the string length without null terminate
character if passed "cchWideChar" does not include the null terminate
character size. Instead of passing the exact string length, pass -1 so that
the API can understand the input string is null terminated already and
returned value from the API includes the character.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3023
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5444 >
2023-10-09 20:10:25 +09:00
Michael Tretter
c020dab393
uvcsink: use the pad's current caps to update caps_changed
...
The caps that were sent by the caps event can be retrieved from the sinkpad
using gst_pad_get_current_caps(). This is more reliable than using cur_caps as
we know exactly which caps upstream selected when the UVC host didn't select a
format, yet.
This further allows to simplify the check, if the uvcsink has to wait for the
caps event before switching to the internal v4l2sink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
733b4d9597
uvcsink: use event function instead of probe
...
The probe passes all events except the EVENT_CAPS. Installing and removing the
probe doesn't provide any additional value.
Install an event function and always handle EVENT_CAPS. Use the caps_changed
field, to decide, if the element has to do anything special on a EVENT_CAPS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
1732f8c728
uvcsink: refactor gst_uvc_sink_update_streaming
...
Move the sanity checks to the beginning of the function. Make the actual effect
of the function more obvious and reset the flags in the end.
This should make it easier to understand what this function is doing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
6637343980
uvcsink: extract helper function for updating the stream state
...
The uvcsink may switch to the v4l2sink after a STREAMON either on a caps event
or on a caps query.
Extract the code that handles the STREAMON into a helper function, as this is
the same code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
24daf9ea3d
uvcsink: extract common code to reset caps_changed
...
The caps_changed flag must be reset for streamon and streamoff. Extract it to a
common path.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
a9eef25717
uvcsink: remove separate function for buffer probe installation
...
The probe that installs the buffer probe is already on the correct pad. There is
no need for a separate function to install the probe.
While at it, change the signature of the probe functions to GstPadProbeCallback
to avoid the cast when installing the probes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
eac9f60608
uvcsink: extract common code in idle_probe
...
The RECONFIGURE event has to be sent in streamon and streamoff. Extract the
common code to a separate branch to make it easier to understand.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Tretter
69c5529011
uvcsink: return caps when reading the host configured caps
...
The uvcsink calculates the caps for the format that the UVC host selected. The
gst_uvc_sink_parse_cur_caps() sets these caps as cur_caps as a side effect. This
behavior is surprising as cur_caps is later updated to reflect the actually used
caps.
Just return the configured caps to avoid side effects. This makes the function
easier to understand. Update the function name to reflect the new behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Grzeschik
17797d1d28
uvcsink: fix event peer probe
...
The only job of the event peer probe is to catch the upcoming caps event
and be able to react with the sink change. All other events that are
passing the pad shall be passed and ignored.
Since the probe is a blocking probe, there is no use in returning
with GST_PAD_PROBE_OK on other events. Otherwise the event would just
be blocked.
Since we are handling the probe removal of the probe already in the
event switch, we can remove the second explicit probe removal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:23 +00:00
Michael Grzeschik
e3a121950b
uvcsink: drop useless debug messages in peer event probe
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4994 >
2023-10-06 15:55:22 +00:00
James Oliver
aeef97d81b
nvh265encoder: fix bounds for auto-select GPU enumeration
...
Fixes the bounds-check for encoder auto-select GPU enumeration to be
between 0-7 instead of 0-6. This should allow 8-GPU machines to work
with nvautogpuh265enc for the last enumerated GPU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5438 >
2023-10-05 13:37:36 +08:00
James Oliver
54074af8ec
nvh264encoder: fix bounds for auto-select GPU enumeration
...
Fixes the bounds-check for encoder auto-select GPU enumeration to be
between 0-7 instead of 0-6. This should allow 8-GPU machines to work
with nvautogpuh264enc for the last enumerated GPU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5438 >
2023-10-05 13:37:32 +08:00
Seungha Yang
cf1286b0e9
d3d11: Add support for HLSL precompile and shader caching
...
Compile HLSL at build time in case of MSVC, and use it if device
supports shader model 5. Also cache/reuse pixel shader and vertex
shader objects.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5426 >
2023-10-03 09:42:03 +00:00
Seungha Yang
6fdcd07e59
d3d11testsrc: Use const buffer in shader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5426 >
2023-10-03 09:42:03 +00:00
Seungha Yang
2cd81eb1ac
nvdecoder: Handle output surface alignment in decoder helper object
...
Output resolution might not be an even number. Set output resolution
without round up but consider the alignment inside of decoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5409 >
2023-09-29 12:36:01 +00:00
Seungha Yang
42560c24df
nvdecoder: Add support for D3D11 output
...
Since DXVA does not support some profiles such as HEVC RExt,
vendor specific decoding API is still required.
When decoder is negotiated with d3d11 caps, decoder will convert
semi-planar frame to planar since semi-planar format (e.g.,
DXGI_FORMAT_NV12) is not supported by CUDA/D3D11 interop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5409 >
2023-09-29 12:36:01 +00:00
Seungha Yang
57e0a0bd61
nvdecoder: Handle GstContext in helper object
...
... and move common code to helper object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5409 >
2023-09-29 12:36:01 +00:00
Seungha Yang
c818906236
cuda: Add support for I420_12LE format
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5409 >
2023-09-29 12:36:01 +00:00
Piotr Brzeziński
85adc2daee
vtdec: Handle output in separate thread
...
Moves outputting frames to a task on the source pad, bringing vtdec in line with vtenc.
This brings possible performance improvements thanks to decoupling queueing new frames from outputting processed ones.
The queue length is limited to `2*DBP` to prevent decoding too far ahead compared to what we're pushing downstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5163 >
2023-09-27 13:01:33 +00:00
Seungha Yang
a7353d8859
d3d11decoder: Fix crash on negotiate() when decoder is not configured
...
The negotiate() can be called by GstVideoDecoder baseclass on GAP event,
and decoder helper object might not be configured at the time
when negotiate() is called.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5394 >
2023-09-27 01:15:26 +09:00
Seungha Yang
c5bd0faee3
nvdecoder: Add support for HEVC GBR output
...
... and use P012 format for 12bits instead of P016
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2991
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5375 >
2023-09-23 13:12:56 +00:00
Seungha Yang
907c507680
nvh265encoder: Add support for RGB encoding
...
Adding GBR format support to nv{autogpu,cuda,d3d11}h265enc.
Note that the only difference between GBR and Y444 encoding
is matrix_coeffs value written in VUI.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5375 >
2023-09-23 13:12:56 +00:00
Seungha Yang
a80f542f66
cuda: Add support for P012_LE and Y444/GBR high bitdepth formats
...
Adding P012, Y444_10, Y444_12, GBR_10, GBR_12 and GBR_16 formats support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5375 >
2023-09-23 13:12:55 +00:00
Tong Wu
57bfbf51b2
msdkvpp: fix an issue which causes dangling pointer
...
Put all the external buffer structures into thiz to avoid being freed
early.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5377 >
2023-09-22 10:04:30 +08:00
Piotr Brzeziński
9cbe9a52fe
vtenc: Fix deadlock after GST_FLOW_ERROR is received on frame push
...
This was easy to trigger when testing with e.g. vtenc ! vtdec ! glimagesink and closing the sink via window button,
causing GST_FLOW_ERROR to be received by the output loop, stopping it with the queue still full. This made the
enqueue_buffer() callback to lock waiting for space in our queue, while handle_frame() was waiting for the internal
VideoToolbox queue to free up, so that VTCompressionSessionEncodeFrame could finish. As the output loop was not
running, both functions waited forever.
Fixed by 1) immediately emptying our queue when GST_FLOW_ERROR is received (like we already did with _FLUSHING)
and 2) unconditionally setting the flushing flag in finish_encoding() when it sees the output loop stopped because
of GST_FLOW_ERROR, so that enqueue_buffer() will immediately discard any new frames coming out of VideoToolbox.
Both of those make sure we never run into the both-queues-full scenario.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5303 >
2023-09-20 13:10:02 +00:00
Seungha Yang
d9a89cce06
d3d12decoder: Add support for D3D11 interop
...
As a short-term solution before full d3d12 rendering feature,
copy decoded d3d12 texture to shared d3d11 texture in order to use
existing various d3d11 implementations such as conversion, resizing,
and videosink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5356 >
2023-09-20 10:34:54 +00:00
Seungha Yang
bb040ce571
d3d12decoder: Move common part to helper object
...
Store device at helper object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5356 >
2023-09-20 10:34:54 +00:00
Seungha Yang
44b02e58fc
d3d12fence: Check completed value before waiting
...
If currently completed fence value is larger than target value,
skip waiting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5356 >
2023-09-20 10:34:54 +00:00
Seungha Yang
39aca8a096
d3d11vp9dec: Fix critical warning
...
Don't query GPU vendor using null device.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5353 >
2023-09-19 13:09:57 +00:00
Seungha Yang
e769ae3dbe
d3d12decoder: Add support for d3d12 output
...
... and enable zero-copy decoding if downstream supports d3d12 memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
ff7bde06f2
d3d12decoder: Use GstD3D12BufferPool
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
884f4122b5
d3d12decoder: Use global copy queue and fence value
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
1a7390c85c
d3d12: Remove unused debug category
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
6c9d023861
d3d12: Add d3d12download element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
8965b1e92f
d3d12: Add GstD3D12BufferPool
...
Adding d3d12 specific bufferpool impl.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
c0572f8749
d3d12memory: Add GstD3D12AllocationParams struct
...
Will be used for buffer pool configuration. And update C++ helper
to reduce the number of required arguments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
73744df6e4
d3d12memory: Make d3d12memory CPU accessible
...
Add support for gst_memory_{map,unmap} without GST_MAP_D3D12 flag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Seungha Yang
68cfb64ae3
d3d12: Fix d3d12sdklayer setup and d3d12device debug category
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5345 >
2023-09-19 08:52:04 +00:00
Víctor Manuel Jáquez Leal
b5de07a8c5
msdk: meson: don't warn deprecated symbols
...
Since it's impossible to not to use any because any possible version mismatch
between the header and the runtime, such in the case of the denoise structure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5283 >
2023-09-18 09:30:33 +00:00
Víctor Manuel Jáquez Leal
b3b2f3016c
msdkdec: fix method declaration signature
...
Thus silencing a compilation warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5283 >
2023-09-18 09:30:33 +00:00
Seungha Yang
d849e238fe
d3d12: Add AV1 decoder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4161 >
2023-09-17 18:53:39 +09:00
Seungha Yang
10bda3a12a
d3d12: Add VP9 decoder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4161 >
2023-09-17 18:53:39 +09:00
Seungha Yang
fb27733dd8
d3d12: Add H.265 decoder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4161 >
2023-09-17 18:53:39 +09:00
Seungha Yang
734dd50879
d3d12: Add H.264 decoder
...
Adding Direct3D12 h264 decoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4161 >
2023-09-17 18:53:24 +09:00
Seungha Yang
2c058b3b99
d3d11decoder: Port to GstDxva
...
Use new DXVA baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4161 >
2023-09-17 18:30:07 +09:00
Seungha Yang
bd25c2738e
nvdecoder: Copy output frame if needed
...
Even if decoder is negotiated with CUDA memory feature, if downstream
proposed no buffer pool, assume that the pool size is unknown.
And disable zero-copy if there's no more free output surface.
Or, in case of reverse playback, always copy frames.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5338 >
2023-09-17 00:15:47 +09:00
Seungha Yang
c5a5dcdf18
nvh265dec: Reconfigure decoder on max-dpb-size change
...
Decoder should create new picture pool for larger DPB size
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5338 >
2023-09-16 23:00:11 +09:00
Seungha Yang
85f01d7709
d3d11h265dec: Reconfigure decoder on max-dpb-size change
...
Decoder should create new picture pool for larger DPB size
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5338 >
2023-09-16 22:56:03 +09:00
Matthew Waters
86f00367fc
androidmedia/enc: handle codec-data before popping GstVideoCodecFrames
...
Issue is that when amc was producing a codec-data buffer, a
GstVideoCodecFrame was being popped off the internal queue. This meant
that the codec-data was being associated with the first input frame and
the second (first encoded buffer) output buffer with the second input
frame. At the end (assuming one input produces one output which seems
to hold in my testing and how the encoder is currently implemented)
there would be an input frame missing and would be pushed without any
timing information. This would lead to e.g. muxers rejecting the buffer
without PTS and failing to mux.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5330 >
2023-09-15 17:47:17 +03:00
Matthew Waters
bec57df2f8
androidmedia/enc: add fixme log about partial frames
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5330 >
2023-09-15 13:46:47 +00:00
Mengkejiergeli Ba
b3e7404312
msdkvpp: Add compute scaling mode
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5128 >
2023-09-14 13:50:48 +08:00
Mengkejiergeli Ba
887b4095ca
msdkvpp: Enable HDR-to-SDR tone mapping
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5277 >
2023-09-13 14:58:59 +08:00
Mengkejiergeli Ba
0ee7ebd17d
msdkvpp: Set color properties for input and output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5277 >
2023-09-13 14:58:59 +08:00
Mengkejiergeli Ba
8ab6559362
msdkh265enc: Use vpl APIs to handle HDR SEIs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5135 >
2023-09-12 07:36:39 +00:00
Thomas Schneider
2f3fea33ca
androidmedia: fix hevc codec profile registration
...
Fix the codec registration logic such that all supported
profiles are available instead of just the first in the
list.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5282 >
2023-09-11 12:00:05 +00:00
Seungha Yang
f9169c5431
nvdecoder: Move common logic to decoder helper object
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
6cf6c73712
d3d11decoder: Move common logic to decoder helper object
...
We can remove duplicated code by using the GstCodecPicture struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
97fc02cfe3
av1decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
a73c6d7fb6
vp9decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
4571fac946
vp8decoder: Port to GstCodecPicture struct
...
... and remove unused "pts" variable from GstVp8Picture struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
a5ddf7af3b
mpeg2decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
6e7cab43be
h265decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
Seungha Yang
ea3dfadbed
h264decoder: Port to GstCodecPicture struct
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5285 >
2023-09-08 11:51:23 +00:00
He Junyan
6b23f2c4be
va: baseenc: use in_info rather than input_state->info
...
The in_info is correct video info which already considers the
DMA kind caps case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5289 >
2023-09-06 15:40:03 +08:00
Víctor Manuel Jáquez Leal
52971faf14
va: refactor caps convertion to va caps
...
To avoid code duplication in code related with buffer importation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5257 >
2023-08-31 12:41:48 +00:00
Víctor Manuel Jáquez Leal
89b0a6fa23
va: refactor buffer import
...
This patch removes the code duplication of input buffer importation, in all the
va elements that import video frames. It defines a synthetic object whose
members are required to create a new input buffer and do the importation of the
upstream buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5257 >
2023-08-31 12:41:48 +00:00
Seungha Yang
9a5f5304f8
dwrite: Add plugin docs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5258 >
2023-08-30 15:45:12 +00:00
Seungha Yang
560faa38c5
d3d11: Update plugin docs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5258 >
2023-08-30 15:45:12 +00:00
He Junyan
e81a40cb72
va: baseenc: Add the DMA buffer input support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5189 >
2023-08-29 15:31:09 +00:00
He Junyan
5e6c91579f
va: encoder: Add in_info field to base encoder
...
When we consider the DMA kind caps as input, the input_state->info
only contains the video format of GST_VIDEO_FORMAT_DMA_DRM, which
is not enough for va plugins. The new info in base encoder contains
the correct video info after the DMA caps parsing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5189 >
2023-08-29 15:31:09 +00:00
Seungha Yang
1e381dc1cc
d3d11convert: Passthrough allocation query on same caps
...
Since d3d11convert and its variant elements does not enable basetransform's
passthrough, passthrough allocation query needs to be handled
manually in order to respect downstream element's min/max buffer
requirement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5255 >
2023-08-29 19:46:00 +09:00
Seungha Yang
ff435c80a2
d3d11videosink: Use premultiplied-alpha swapchain
...
Don't ignore alpha component if it's present
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5242 >
2023-08-25 16:54:29 +00:00
Seungha Yang
6fa405c1e2
cudaipcclient: Protect IPC handle import/close with global lock
...
Protect import/close with signle lock to avoid importing a IPC handle
while it's being closed by another cudaipcsrc from other thread.
Also fixing cuda context leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5230 >
2023-08-25 10:06:58 +00:00
Víctor Manuel Jáquez Leal
c1f99f4005
va: Fix in error logs functions mismatches
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5236 >
2023-08-24 17:54:32 +00:00
Víctor Manuel Jáquez Leal
bcee96020f
vabasedec: Remove assertion for resolution change in input state
...
This is reported from https://bugs.webkit.org/show_bug.cgi?id=259032
Though I couldn't reproduce the issue, it looks to me unneeded to assert for
resolution changes in old frames, since renegotiation is carried out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5237 >
2023-08-24 16:21:14 +00:00
Seungha Yang
315cfaf2d8
nvencoder: Fix negotiation error when interlace-mode is unspecified
...
Use GST_PAD_SET_ACCEPT_INTERSECT() to accept caps without interlace-mode
field
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5229 >
2023-08-24 14:58:25 +00:00
He Junyan
c927159f21
va: compositor: Use va_get_surface_usage_hint() to get the usage hint
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5210 >
2023-08-24 11:03:59 +00:00
He Junyan
1b43baf3c8
va: baseenc: Use va_get_surface_usage_hint() to get the usage hint
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5210 >
2023-08-24 11:03:59 +00:00
He Junyan
696d81f6f8
va: Use va_get_surface_usage_hint() to detect the modifiers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5210 >
2023-08-24 11:03:59 +00:00
He Junyan
8399bc2521
va: basedec: Use va_get_surface_usage_hint() to get the usage hint
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5210 >
2023-08-24 11:03:59 +00:00
He Junyan
bb350138af
va: basetransform: Use va_get_surface_usage_hint() to get the usage hint
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5210 >
2023-08-24 11:03:59 +00:00
Seungha Yang
f058eda798
win32ipc: Fix pipe handle leak
...
Named pipe handle must be closed if it's no longer needed
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2923
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5228 >
2023-08-23 18:33:04 +09:00
L. E. Segovia
07b18a6de5
applemedia: Also fix inconsistent pixel format definition for NV12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5191 >
2023-08-16 14:15:52 +00:00
L. E. Segovia
e52e1db5ab
applemedia: Fix pixel format for I420
...
In Intel Macs, using full range 8-bit 4:2:0 YCbCr results in a failure on
initialization. I've validated this to be the correct pixel format with FFmpeg:
8653dcaf7d/libavutil/hwcontext_videotoolbox.c (L45)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5191 >
2023-08-16 14:15:52 +00:00
L. E. Segovia
b1a5707fcb
windows: Fix mutexes leaking into the exports table
...
Translation unit-local variables must be marked static on Windows,
otherwise they're made available to the whole binary.
See:
https://learn.microsoft.com/en-us/cpp/cpp/program-and-linkage-cpp?view=msvc-170#external-vs-internal-linkage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5185 >
2023-08-16 08:17:05 +00:00
Seungha Yang
ae04702d23
wasapi2: Use C++ atomic instead of GLib
...
Release-Acquire ordering could be faster than MemoryBarrier()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5176 >
2023-08-14 14:20:45 +00:00
Seungha Yang
c992dd2184
wasapi2ringbuffer: Don't use GLib's weak pointer implementation
...
GWeakRef takes global mutex. Use C++ weak_ptr which will perform
atomic operation internally.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5176 >
2023-08-14 14:20:45 +00:00
Seungha Yang
7b6023d9cf
nvcodec: Add support for CUDA IPC
...
Adding cudaipc{src,sink} element for CUDA IPC support.
Implementation note:
* For the communication between end points, Win32 named-pipe
and unix domain socket will be used on Windows and Linux respectively.
* cudaipcsink behaves as a server, and all GPU resources will be owned by
the server process and exported for other processes, then cudaipcsrc
(client) will import each exported handle.
* User can select IPC mode via "ipc-mode" property of cudaipcsink.
There are two IPC mode, one is "legacy" which uses legacy CUDA IPC
method and the other is "mmap" which uses CUDA virtual memory API
with OS's resource handle sharing method such as DuplicateHandle()
on Windows. The "mmap" mode might be better than "legacy" in terms
of stability since it relies on OS's resource management but
it would consume more GPU memory than "legacy" mode.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4510 >
2023-08-14 13:41:01 +00:00
Seungha Yang
d9894da59d
dwritetimeoverlay: Fix debug category name
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5179 >
2023-08-14 10:24:53 +00:00
Seungha Yang
14ef86a66d
dwrite: Re-add background geometry combine
...
If glyphrun unit is changed in a single line, there could be
overlapped background area which result in drawing background
twice. Adding geometry combine so that background geometry objects
with the same color can be merged and rendered at once
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5179 >
2023-08-14 10:24:53 +00:00
Seungha Yang
9d89bad731
va: Update decoder ranks
...
Most software decoders are ranked as primary, so use primary + 1 for
all codecs except for jpeg.
But ranks should be demoted on Windows since it's still experimental
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5169 >
2023-08-11 15:42:44 +00:00
Seungha Yang
cf2cd20ba0
nvdecoder: Add max-display-delay property
...
The same as in old nvdec implementation so that user can control
the number of delayed output frames.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4841 >
2023-08-10 11:58:42 +00:00
Seungha Yang
19ee5f6dc4
nvdecoder: Reduce DPB size
...
Decoder will copy decoded picture to downstream buffer or output CUDA
memory even in case of zero-copy mode. Additional margin should be unnecessary
unless baseclass passed wrong max DPB size.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4841 >
2023-08-10 11:58:42 +00:00
Nirbheek Chauhan
41b3443b95
wasapi: Don't redefine GUIDs when building under newer MinGW
...
Latest MSYS2 MinGW provides these now, so we don't need to define them
if they're already present in the header.
The AudioClient3 GUID requires the Windows 10 SDK, so it's only
available in the latest MinGW, and the MinGW in Cerbero is too old.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5155 >
2023-08-09 14:47:57 +00:00
Nirbheek Chauhan
b7dcca4c98
wasapi: Remove obsolete ifdefs for older MinGW
...
We no longer ship that ancient MinGW toolchain, and it's causing build
errors with MSYS2 now:
https://gitlab.freedesktop.org/slomo/gstreamer/-/jobs/46866129
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5155 >
2023-08-09 14:47:57 +00:00
Víctor Manuel Jáquez Leal
e1765c4ce8
va/vaapi: promote va ranks and demote vaapi ones
...
VA decoders implementation has been verified from 1.18 through 1.22
development cycles and also via the Fluster test framework. Similar
to other cases, we can prefer hardware over software in most cases.
At the same time, GStreamer-VAAPI decoders are demoted to NONE to
avoid collisions. The first step to their deprecation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2312 >
2023-08-09 12:13:12 +02:00
Piotr Brzeziński
510e227996
vtenc: Fix cosmetic issues
...
Removes accidental GST_VIDEO_DECODER macro usage.
Also sets the initial size of the output queue to avoid having to expand when first buffers come through.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5164 >
2023-08-09 07:35:32 +00:00
Nicolas Dufresne
8710911e6b
v4l2codecs: Enable Mediatek 10bit 4:2:0 support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3444 >
2023-08-08 16:08:16 +00:00
Víctor Manuel Jáquez Leal
4583d8c0e8
vajpegdec: simply fixup src caps for iHD
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
He Junyan
64d821af24
va: jpegdec: Do not change the DMA template src caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
He Junyan
72e4bcf4df
va: Delete the usage hint hack when we support DRM modifier
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
He Junyan
d0587cda74
va: Apply the new DMA format:modifier pair negotiation in vpp
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
He Junyan
5df0bfa7cb
va: Apply the new DMA format:modifier pair negotiation in decoder
...
We will consider the DMA modifier for negotiation, setting caps and
memory pool allocation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
He Junyan
b1909949cb
va: Improve the template caps for DMA, use new drm-format kind caps
...
We should add the modifier information for each surface format when
we report the template caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
He Junyan
d7d25de892
va: Use GstVideoInfoDmaDrm in DMA allocator's get/set_format() API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4044 >
2023-08-07 22:49:26 +00:00
Ryan Pavlik
6e5ca29e8f
androidmedia: Add more null checks (of env) to JNI utilities
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5138 >
2023-08-02 16:03:38 -05:00
Ryan Pavlik
f3ce30a55a
androidmedia: Add more null checks to JNI utilities
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5130 >
2023-08-01 23:17:54 +00:00
Ryan Pavlik
794d723871
androidmedia: Fix typo
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5130 >
2023-08-01 23:17:54 +00:00
Ryan Pavlik
ec201c6577
androidmedia: Clear err if we don't have an optional camera field/constant
...
Fixes startup on devices where those fields/constants are not found.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5130 >
2023-08-01 23:17:54 +00:00
Seungha Yang
15f0bd2461
dwrite: Move background-color and color-emoji options to effect object
...
... and simplify background rendering
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:02:32 +09:00
Seungha Yang
a1ad56ed5a
dwrite: Add helper object for blending operation
...
For easy integration with a new text rendering baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:02:28 +09:00
Seungha Yang
f792884ae7
dwritebaseoverlay: Handle only d3d11 allocation query
...
... and passthrough allocation queries of the other types
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:00:44 +09:00
Seungha Yang
8633b29fab
dwritetextoverlay: Remove leading CRLF sequence from CC
...
The CRLF sequence is unnecessary
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:00:44 +09:00
Seungha Yang
f01fc727e3
dwrite: Remove some properties
...
Remove outline color and auto resize related properties
to be consistent with textoverlay elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5121 >
2023-08-02 01:00:44 +09:00
Mengkejiergeli Ba
ebea1219a9
vah265enc: Correct the value of cu_qp_delta flag and depth
...
According to libva API description, cu_qp_delta in VAConfigAttribValEncHEVCFeatures
is supposed to be used as a flag not the value of depth. And if flag enabled,
diff_cu_qp_delta_depth should be decided by log2_diff_max_min_luma_coding_block_size.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5068 >
2023-07-27 16:00:19 +00:00
Matthew Waters
f954d93f27
applemedia: silence some deprecation warnings from ios 12.0
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5111 >
2023-07-27 13:05:37 +00:00
Mengkejiergeli Ba
8846400b83
msdkh264enc: Set profile as unknown when not specified by downstream
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5039 >
2023-07-26 02:01:31 +00:00
Piotr Brzeziński
dc494d9edb
vtenc: Move output loop to a separate thread
...
vtenc has an async output queue, which we only iterate over after another frame is enqueued.
At the very least it means we're always a frame behind the fastest possible output.
In edge cases it's also bug-prone - for example if we only have 1 frame, the downstream caps negotiation
will never happen.
This commit adds a separate task running on the source pad, which only iterates over the output queue
and pushes frames out as soon as they're put there. The queue length is limited to ensure we don't encode
too far ahead compared to what downstream can consume. Any failures that occur when pushing data downstream
will be signalled in self->downstream_ret so that other parts of code can act accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4967 >
2023-07-21 13:05:26 +00:00
Seungha Yang
fdb3cdf1fd
qsv: Remove x86_64 constraint on Linux
...
Updated oneVPL SDK supports 32bit and ARM build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5032 >
2023-07-14 13:12:29 +00:00
Seungha Yang
25d10acaa2
qsv: Re-apply MinGW build workaround
...
Apply the changes of the commits
c80132e4a3
and
23261bccbb
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5032 >
2023-07-14 13:12:29 +00:00
Seungha Yang
1bc5dc778c
qsv: Update oneVPL SDK version to v2023.3.0
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5032 >
2023-07-14 13:12:29 +00:00
Seungha Yang
6429f04692
meson: d3d11: Add d3d11-wgc option for Windows Graphics Capture feature
...
Make the feature requirement explicitly controllable via build option
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939 >
2023-07-06 21:20:50 +00:00
Seungha Yang
1f18ceaf0f
dwritesubtitlemux: Update object name
...
Add missing prefix `DWrite` so that this element can coexist with
subtitlemux proposed in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4938
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4949 >
2023-06-30 23:41:36 +09:00
Seungha Yang
8650c7a42a
dwrite: Add support for non-d3d11/system memory
...
Attach meta if downstream supports it whatever the negotiated memory type is,
or just silently passthrough when meta is not supported
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4945 >
2023-06-30 11:14:17 +00:00
Seungha Yang
1c4de219e4
dwrite: Add dwritesubtitleoverlay element
...
Adding new subtitle overlay element. It's a bin which is wrapping
two internal elements dwritesubtitlemux and dwritetextoverlay.
* dwritesubtitlemux: A new internal element to aggregate subtitle
buffers and to attach the aggregated subtitle buffers on
video buffer as meta.
* dwritetextoverlay: Extracts/renders the subtitle meta and
discard the meta after rendering.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:31 +00:00
Seungha Yang
a1ca42ad66
dwritebaseoverlay: Fix color-font property get/set
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:31 +00:00
Seungha Yang
0091166a38
dwrite: Add dwritesubtitlemux element
...
dwrite plugin internal use and will be removed once it's added to -base
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:31 +00:00
Seungha Yang
fce6edd0f1
dwrite: Add GstDWriteSubtitleMeta
...
dwrite plugin internal use and will be removed once it's added to -base
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4934 >
2023-06-28 20:15:30 +00:00
Seungha Yang
43ee082189
dwritebaseoverlay: Forward downstream wanted min buffer size
...
Upstream element might want to know the min buffer size,
d3d11 decoders for example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
8838a670e0
dwrite: Remove unused values
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
6cb41569e6
dwrite: Add support for closed caption overlay
...
Adding closed caption rendering feature to dwritetextoverlay
element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
713f74f4f9
dwrite: Import libcaption source code
...
Import the code from gst-plugins-rs
(origin is https://github.com/szatmary/libcaption )
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
Seungha Yang
37c7c92c03
dwritetimeoverlay: Fix member variable initialization
...
Use GstBaseTransform::start() instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4929 >
2023-06-27 13:23:07 +00:00
He Junyan
6accb7a1f5
va: Only change video format in gst_va_video_info_from_dma_info()
...
The current way of using gst_video_info_set_format() will change all
fields of the GstVideoInfo. We only need to change its format, stride
and offset fields.
In order to keep the consistency with th common drm API, we rename the
gst_va_video_info_from_dma_info() into gst_va_dma_drm_info_to_video_info().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4883 >
2023-06-26 16:18:23 +00:00
Stéphane Cerveau
53e48ce14d
va: use GstH264Level enum in _va_h264_level_limits
...
The 1B value has been changed to 9 instead of 11 in the list
of level limits.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4737 >
2023-06-26 10:47:36 +00:00
He Junyan
83e307ac96
va: basedec: Select the best format of the whole caps
...
The current way only selects the best video format from the first
structure of the caps. The caps like:
video/x-raw(memory:VAMemory),drm-format=(string)NV12; \
video/x-raw(memory:VAMemory),format=(string){ NV12, Y210 }
Will just choose NV12 as the result, even the bitstream is 10 bits.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4928 >
2023-06-25 10:55:23 +00:00
Mengkejiergeli Ba
b9ecd4e618
msdkenc: Apply update functions when setting property
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4865 >
2023-06-25 02:03:28 +00:00
Mengkejiergeli Ba
1308b2f6e5
msdkenc: Add help functions to check and update property
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4865 >
2023-06-25 02:03:28 +00:00
He Junyan
759857c203
va: basetransform: Copy the interested meta data for importing
...
The current way of using parent's copy_metadata() virtual function will
selectively filter out some meta such as crop meta. That virtual function
should be used when copying input buffer's meta data into output buffer,
not suitable when importing the input buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4887 >
2023-06-21 21:12:23 +00:00
He Junyan
ff2a75a2dd
va: basetransform: Check the crop meta when importing
...
When the input buffer has crop meta, and we need to do copy, we
should consider the uncropped video size and copy the full size
of video memory.
The video meta in this case should contain the full uncropped
resolution info. We can use it to create full size va buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4887 >
2023-06-21 21:12:23 +00:00
He Junyan
703ab45334
va: basetransform: Only need va pool for internal usage
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4887 >
2023-06-21 21:12:23 +00:00
Víctor Manuel Jáquez Leal
9825cd8951
vapostproc: evaluate op_flags validations as boolean
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4910 >
2023-06-21 13:19:46 +02:00
Andoni Morales Alastruey
fc6e6fb547
vtenc: remove duplicated framerate and size variables
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4282 >
2023-06-19 08:37:55 +00:00
Andoni Morales Alastruey
23812bbc92
vtenc: apply DTS offset to ensure DTS <= PTS
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4282 >
2023-06-19 08:37:54 +00:00
Seungha Yang
93db77ea3a
dwrite: Protect ID2D1Factory API with lock
...
ID2D1Factory::CreateDxgiSurfaceRenderTarget is not thread-safe
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4886 >
2023-06-18 19:58:45 +00:00
Seungha Yang
8325623051
d3d11decoder: Reduce DPB size
...
Now all codec baseclasses can inform subclasses of correct max DPB size,
and exception handling (e.g., emergency bumping in h.264) has been
improved as well. Smaller number of additional DPB frame allocation
seems to be safe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4878 >
2023-06-18 18:21:03 +00:00
Seungha Yang
c40f6dac57
d3d11overlaycompositor: Fix resource leak
...
Fixing regression since 94eadc9810
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4885 >
2023-06-19 00:13:00 +09:00
Seungha Yang
3153e7f46d
amfav1enc: Workaround driver bug with bt601 color matrix
...
If bt601 is specified, driver generates sequence header with identity
color matrix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4370 >
2023-06-16 10:10:33 +00:00
Daniel Almeida
ec188eb82e
v4l2codecs: Add AV1 decoder
...
This patch adds AV1 stateless v4l2 decode support using the
new v4l2 request API to communicate with hardware accelerators.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1011 >
2023-06-16 01:30:40 +00:00
James Cowgill
70ff80a873
v4l2codecs: Always chain up to parent decide_allocation function
...
The `gst_video_decoder_negotiate_pool` function expects the
`decide_allocation` function to always provide a pool and will fail to
negotiate if the pool is missing. If we return immediately (even if we
don't need to do anything special) negotiation will fail if the
downstream element does not propose a pool.
Fix by chaining up to the default `decide_allocation` function which
adds a fallback pool if one was not already proposed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4630 >
2023-06-15 17:02:28 +00:00
Nicolas Dufresne
0f5d10f617
v4l2codecs: Enable Verisilicon 10bit 4:2:0 support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447 >
2023-06-15 14:32:32 +00:00
Nicolas Dufresne
aea74db1a2
v4l2: Sync headers to current media_stage
...
commit d78b9d6671decdaedb539635b1d0a34f8f5934f8
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447 >
2023-06-15 14:32:32 +00:00
Seungha Yang
ba6800ce23
dwrite: Add DirectWrite text rendering plugin
...
Adding DirectWrite text rendering elements
* dwriteclockoverlay: Equivalent to clockoverlay
* dwritetimeoverlay: Equivalent to timeoverlay
* dwritetextoverlay: Similar to textoverlay but subtitle is not
supported
Newly added elements support system memory and d3d11 memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4826 >
2023-06-15 12:53:02 +00:00
Seungha Yang
01edbf6c6b
d3d11overlaycompositor: Add support for d3d11 memory
...
If overlay buffer is d3d11 memory, use it directly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4826 >
2023-06-15 12:53:02 +00:00
Seungha Yang
110ec5d4b2
d3dvideosink: Fix navigation event leak
...
Fixing regression introduced in 6c2f6c3bd4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4863 >
2023-06-15 05:09:46 +00:00
Seungha Yang
94eadc9810
d3d11videosink: Fixing unexpected overlay composition meta drops
...
A buffer can hold multiple GstVideoOverlayCompositionMeta objects.
Should scan all metas on a buffer and render all overlay rectangles
if any.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4862 >
2023-06-15 00:35:09 +00:00
Marek Vasut
f18e30cf3b
kmssink: Add ST STM32 LTDC auto-detection
...
Add STM32 LTDC controller into list of auto-detected modules.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4858 >
2023-06-14 22:35:27 +00:00
Marek Vasut
b8b53cafcf
kmssink: Add NXP i.MX8M Plus LCDIFv3 auto-detection
...
Add i.MX8M Plus LCDIFv3 controller into list of auto-detected modules.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4858 >
2023-06-14 22:35:27 +00:00
He Junyan
b59b77a02f
va: Add helper functions to convert GstVideoInfoDmaDrm into va video info
...
The VA has its internal video format mapping(because different drivers may
have different interpretation for the same format), so we should convert the
info in GstVideoInfoDmaDrm into the according video info based on that mapping.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4821 >
2023-06-14 01:08:37 +00:00
He Junyan
c72960b427
va: Replace the tabs into spaces in gstvacaps.h
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4821 >
2023-06-14 01:08:37 +00:00
Nicolas Dufresne
5f2a664415
v4l2codecs: h265: Set num_delta_pocs_of_ref_rps_idx
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4413 >
2023-06-13 14:34:45 +00:00
Nicolas Dufresne
6a7835e106
v4l2codecs: Extend the API with num_delta_pocs_of_ref_rps_idx
...
This value is an alternative to short_term_ref_pic_set_size and can be used
to parse the RPS portion of a slice header, instead of skipping over it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4413 >
2023-06-13 14:34:45 +00:00
Seungha Yang
ebd5ff73be
d3d11convert: Add support for premultiplied alpha conversion
...
Adding "src-alpha-mode" and "dest-alpha-mode" properties
to support alpha mode conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Seungha Yang
80878a6ea4
d3d11testsrc: Add "alpha" and "alpha-mode" properties
...
Adding global alpha and alpha mode options
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Seungha Yang
cb28a16007
d3d11overlaycompositor: Handle premultiplied alpha in pixel shader
...
Do premultiplied -> straight alpha conversion using GPU
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4825 >
2023-06-10 18:12:58 +00:00
Seungha Yang
1aa9e74aaf
cudadownload: Always download CUDA memory if it's bound to decoder
...
Decoder bounded CUDA memory is allocated by driver and the pool size
is fixed. Since we don't know how many buffers would be held by
downstream non-CUDA element, we should download such CUDA memory
and release it back to decoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4810 >
2023-06-08 22:27:06 +00:00
Víctor Manuel Jáquez Leal
94250e8c31
msdk: remove libva check before 1.12
...
Since gstmsdk depends on gstva library it also bumps the required version.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4781 >
2023-06-08 08:50:05 +00:00
Víctor Manuel Jáquez Leal
53860147c6
va: bump libva version to 1.12
...
Remove all checks in gstva for all version lower than 1.12
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4781 >
2023-06-08 08:50:04 +00:00
Seungha Yang
8a4642cad7
win32ipc: Use gst_util_get_timestamp()
...
Instead of duplicating the same code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4794 >
2023-06-08 01:02:45 +00:00
Seungha Yang
3c5684e085
d3d11: Use gst_util_get_timestamp()
...
instead of duplicating the same code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4794 >
2023-06-08 01:02:45 +00:00
Seungha Yang
4d6a2dea89
d3d11ipcsrc: Stop asynchronously in case of io-mode=import
...
In case of import mode, d3d11ipcsrc does not know when outputted
memories will be released.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774 >
2023-06-06 17:54:44 +00:00
Seungha Yang
ef1853aa8d
d3d11ipc: Use unnamed shareable handle
...
Exchanging HANDLE would have smaller overhead than string
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774 >
2023-06-06 17:54:44 +00:00
Seungha Yang
aada49c6a6
d3d11ipcsink: Don't clear prepared sample on render
...
render() can be called multiple times for the same prepared sample
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774 >
2023-06-06 17:54:44 +00:00
Sebastian Dröge
f1e7ac13cd
decklink: Implement Windows string conversion with common API between MinGW and MSVC
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738 >
2023-06-06 06:21:46 +00:00
Sebastian Dröge
ab582a3b7d
decklink: Add some newlines in long defines
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738 >
2023-06-06 06:21:46 +00:00
Maksym Khomenko
72e7ae724f
decklink: Calculate string size before malloc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738 >
2023-06-06 06:21:46 +00:00
Sebastian Dröge
ab946cd41e
decklink: Use the macOS version of the SDK on macOS and not the Linux one
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738 >
2023-06-06 06:21:46 +00:00
Sebastian Dröge
a2850bcb88
decklink: Free SDK strings after usage on Linux
...
While they're const char* they still need to be freed like on Windows
and macOS and would be leaked otherwise.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738 >
2023-06-06 06:21:46 +00:00
Sebastian Dröge
59ca9ef342
decklink: Correctly handle SDK strings on macOS
...
They're CFStringRef* and not plain NUL-terminated char* C strings.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738 >
2023-06-06 06:21:46 +00:00
Seungha Yang
e4c43db5d5
d3d11basefilter: Forward video related metas if needed
...
The same as in GstVideoFilter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4751 >
2023-06-02 00:33:52 +00:00
Michael Grzeschik
ea2764aa69
uvcsink: add probe handling for live pipelines
...
Currently the uvcsink is only capable to run in an application
that is handling the state transitions of the pipeline properly
by checking on streaming event from the uvcsink.
This code is improving the element by adding an fakesink to
consume possible videostream flow in case the pipeline state
is not changing on hosts streamoff.
This is helpfull when using local gst-launch pipelines where
the streaming event is not monitored to change the pipelines
state.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
5d82deb2c5
uvcsink: add new bin element around v4l2sink
...
This patch adds an element to stream video data to an uvc video gadget.
The element handles the uvc events STREAMON, STREAMOFF, SETUP and DATA.
to start, stop and configure the video buffer flow by the use of pad
probes. It works with linux kernels of versions higher than v6.1.
The element makes use of the v4l2sink proxy property v4l2sink::device
to locate the corresponding device to parse the configfs for additional
data.
The code in uvc.c is basically derived from /lib/uvc.c in
https://git.ideasonboard.org/uvc-gadget.git .
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
6ef14df09b
uvcsink: configfs.{c,h}: add helper function to parse by videodev
...
- add helper function video_find_config_name
- add helper function configfs_parse_uvc_videodev
With these helper functions it is possible to parse the
configfs entry corresponding to the used videodev.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
079fc8216c
uvcsink: configfs.c: use G_N_ELEMENTS instead of ARRAY_SIZE
...
We don't have ARRAY_SIZE in glib.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
fd3a6ce642
uvcsink: configfs.c: fix globing in uvc_video_device
...
The gadget in the sysfs can be postfixed with an index.
Fix the globbing by adding a wildcard after /gadget*/.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
38aa1fc414
uvcsink: configfs.c: refactor location of GUID formats
...
- move GUID handling to beginning
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
da61d8f96d
uvcsink: configfs.{c,h}: add parsing of more fields from format
...
- add parsing of dwMaxVideoFrameBufferSize
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
e50dcac517
uvcsink: configfs.c: fix code for local usage
...
- use local header file and remove unused reference to tools.h
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:05 +00:00
Michael Grzeschik
42c53f971c
uvcsink: add configfs.{c,h} from https://git.ideasonboard.org/uvc-gadget.git
...
- imported both files and run gst-indent on them
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304 >
2023-06-01 19:19:04 +00:00
Thibault Saunier
4a4d7821a5
cudabasetransform: Handle video related meta as appropriate
...
This implements the same logic as GstVideoFilter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4731 >
2023-05-31 20:09:42 +00:00
Thibault Saunier
8d3f90eb8d
cuda: memory: Enhance debug when CU_GL_DEVICE_LIST_ALL fails
...
Ensuring error from cuda is logged
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4731 >
2023-05-31 20:09:42 +00:00
Mengkejiergeli Ba
a15a16c99b
msdkenc: Add a property to insert pic timing SEI for avc and hevc
...
User can decide whether to insert pic timing sei with pic_struct
syntax via oneVPL API mfxExtCodingOption.PicTimingSEI.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4673 >
2023-05-29 02:11:20 +00:00
Seungha Yang
8e1677bd6a
d3d11videosink: Fix error on pause and play
...
The show_frame() can be called without prepare() call on paused to
playing state change. Thus the prepared buffer should not be cleared
on show_frame()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4700 >
2023-05-25 13:24:43 +00:00
Ruben Gonzalez
059965fe53
doc: Fix newline char between authors
...
Found running `gst-inspect-1.0 -a |& grep -v ":" | grep @`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4682 >
2023-05-20 05:48:23 +00:00
Seungha Yang
f435d192e1
d3d11videosink: Don't use CS_OWNDC style
...
It's completely unnecessary since we never use
the device context (e.g., BeginPaint() or GetDC() never called).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4684 >
2023-05-20 03:16:47 +00:00
Ma, Mingyang
a2e83a019a
msdkdec: Fix decoding cases with resolution change (VP9)
...
The resolution of VP9 video can be changed without keyframe.
The change detected by MSDK/VPL should be negotiated with downstream.
Only the situation can be fixed here if the changed resolution is less than or equal to the initial surface resolution.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4450 >
2023-05-19 05:51:36 +00:00
Víctor Manuel Jáquez Leal
ce7256e0d3
vulkan: use gst_vulkan_format_get_aspect()
...
In order to use it, without depending in a previous calling of
_create_info_from_args(), VkFormat as input parameter to
gst_vulkan_image_memory_init() was added.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351 >
2023-05-19 04:26:29 +00:00
Yinhang Liu
76fe73806b
msdkenc: Remove unsupported image formats for MSDK path
...
For unsupported encoding formats, please use msdkvpp plugin
to do conversion first.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4000 >
2023-05-19 00:02:09 +00:00
Yinhang Liu
f292b6061c
msdkenc: Remove internal vpp function
...
The internal vpp function and msdkvpp plugin are duplicated,
so remove the internal vpp, please use msdkvpp plugin to do
conversion if necessary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4000 >
2023-05-19 00:02:08 +00:00
Mengkejiergeli Ba
7613e50cbb
bad:docs: Add new properties description for msdkh264enc and msdkh265enc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4589 >
2023-05-18 17:53:44 +00:00
Mengkejiergeli Ba
7d993f930b
msdkenc: Add properties max/min-qp for I/P/B frame separately in avc and hevc
...
max-qp and min-qp will set the same quantizer scale for I/P/B frames,
while max-qp-i/p/b and min-qp-i/p/b enable the max/min quantizer for I,P,B
frame separately. When max/min-qp and max/min-qp-i/p/b are given
simultaneously, the later set one will overide the previous one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4589 >
2023-05-18 17:53:44 +00:00
Seungha Yang
ad70dd64f9
d3d11videosink: Add render-rectangle property
...
... and resize HWND on GstVideoOverlay::set_render_rectangle even when
we are rendering without external HWND
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2563
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4653 >
2023-05-17 23:06:05 +00:00
Seungha Yang
289bc9c91d
wasapi2: fix "device" property description
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4651 >
2023-05-17 04:50:04 +00:00
Tim-Philipp Müller
c80b0a589a
wasapi: fix "device" property description
...
Fixes gstreamer/gst-plugins-bad#1620
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4651 >
2023-05-17 04:50:04 +00:00
Carlos Rafael Giani
5cf384a632
avdtputil: Use int instead of int range for fixed bitpool values
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1698
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4650 >
2023-05-17 03:13:54 +00:00
Seungha Yang
7a3be74b63
cudaconvertscale: Add support for flip/rotation
...
Similar to the d3d11convert element, colorspace conversion, resizing and
flip/rotation operations can be done in a single kernel function call
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4640 >
2023-05-16 19:24:36 +00:00
Seungha Yang
d335eb8c7c
d3d11convert: Fix for runtime property update
...
Every setup happens in set_caps() method but basetransform will not
call the set_caps() if in/out caps were not changed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4646 >
2023-05-16 16:03:35 +00:00
He Junyan
3497bbb8a8
va: No need to sort the device after registered
...
The va devices are already registered by the drm path order, so
there is no need to sort them again after registered.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4643 >
2023-05-16 08:37:48 +00:00
He Junyan
8e52e42444
va: Sort udev path name before register the va plugins
...
The devices list returned by g_udev_client_query_by_subsystem() may
contain udev devices in disorder path name. For example, on some
platform it may contain renderD129 before renderD128 device. This
will cause we register wrong va plugin name. In this case, the
renderD129 will be registered as default plugins such as vah265dec,
while the renderD128 will be registered as varenderD128h265dec.
This conflicts with the non-udev version of gst_va_device_find_devices().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4643 >
2023-05-16 08:37:48 +00:00
Yinhang Liu
c5748c2051
msdkmjpegdec: Fix ColorFormat for BGRx format
...
For msdkmjpegdec, the BGRx format is supported in src caps,
set the ColorFormat to MFX_JPEG_COLORFORMAT_RGB.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4489 >
2023-05-15 05:41:35 +00:00
Yinhang Liu
3883ae8c2a
msdk: Fix initialization of the msdk_session.impl_idx
...
This fixes the issue of msdk_session.impl_idx not being initialized.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4448 >
2023-05-15 01:22:29 +00:00
Seungha Yang
e34397ab09
d3d11: Update element meta
...
Make them consistent, update outdated description and fix some typos
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4619 >
2023-05-12 20:13:58 +00:00
Seungha Yang
ebcebe548d
d3d11videosink: Don't clear prepared buffer on unlock_stop()
...
That can be called between prepare() and render() which results in
unexpected error flow return
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4583 >
2023-05-10 16:20:41 +00:00
Tong Wu
b05659859a
msdk: fix a not referenced build error
...
Error Type: error C4189: ‘dma_caps’: local variable is initialized but not referenced
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4587 >
2023-05-10 07:57:45 +00:00
Yinhang Liu
cb5c0e47c8
msdk: Remove unreachable statement
...
The execution cannot reach the statement: "gst_caps_unref(dma_caps);",
so remove it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4449 >
2023-05-09 05:57:06 +00:00
Seungha Yang
4449881b08
d3d11: Add support for IPC
...
Adding d3d11ipcsrc and d3d11ipcsink elements so that Direct3D11 textures
can be shared between processes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4514 >
2023-05-06 03:19:09 +09:00
Seungha Yang
ddcc5676d3
mfvideoenc: Allow only even resolution numbers
...
Some H/W vendors support odd resolution if D3D11 texture is used
or via IMF2DBuffer, but not all vendors support it.
Also software MFT does not allow odd resolution.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1165
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2537
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4540 >
2023-05-04 18:06:45 +00:00
He Junyan
96e576a818
va: h265enc: map the mbbrc to correct enum value in get_property()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4509 >
2023-04-28 16:46:24 +00:00
He Junyan
5d1c35bd16
va: h264enc: map the mbbrc to correct enum value in get_property()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4509 >
2023-04-28 16:46:24 +00:00
Seungha Yang
c98ad6f249
wasapi2: Allows process loopback capture on Windows 10
...
As per MS documentation[1], it requires Windows 10 Build 20348
but it seems to be supported by old versions too
[1] https://learn.microsoft.com/en-us/windows/win32/api/audioclientactivationparams/
ns-audioclientactivationparams-audioclient_process_loopback_params
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2524
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4505 >
2023-04-28 14:11:16 +00:00
Nirbheek Chauhan
479f0175b5
meson: Add feature options for optional va deps libdrm and gudev
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4428 >
2023-04-28 15:22:31 +05:30
Nirbheek Chauhan
55ee0635d3
meson: Fix libdrm and vaapi configure checks
...
We do not need fallback: for libdrm checks because the wrap file
already has a [provide] section.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4428 >
2023-04-28 15:21:10 +05:30
Seungha Yang
4710f45e65
d3d11videosink: Fix for ignored initial render rectangle
...
Application can set target render rect before internal HWND
configuration
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2518
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4480 >
2023-04-26 19:39:09 +00:00
Yinhang Liu
35177b81b3
msdk: Fix segfault for OneVPL dispatcher + legacy MSDK runtime path
...
From the spec, the OneVPL dispatcher should be able to work with
legacy MSDK runtime:
https://www.intel.com/content/www/us/en/docs/onevpl/upgrade-from-msdk/2023-1/onevpl-hardware-support-details.html
Currently supported capabilities:
OneVPL dispatcher + OneVPL runtime: dynamic capability
MSDK dispatcher + MSDK runtime: static capability
MSDK dispatcher + OneVPL runtime: static capability
OneVPL dispatcher + legacy MSDK runtime: static capability
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2506
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4466 >
2023-04-25 08:09:29 +00:00
Yinhang Liu
e97b5ad355
msdk: Add NumFilters check for VPP description
...
When NumFilters is equal to 0, the function should return
immediately.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4466 >
2023-04-25 08:09:29 +00:00
Yinhang Liu
ca125bd304
msdk: Add return when creating caps fails for VPP
...
When creating caps fails, the function should return immediately
and should not continue to register the plugin.
This patch fixes the issue of "gst_mini_object_ref: assertion
'mini_object != NULL' failed" in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2506
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4466 >
2023-04-25 08:09:29 +00:00
Stéphane Cerveau
cc81e961a0
applemedia: fix missing definition
...
Fix missing kCVPixelFormatType_64RGBALE definition
on Catalina for example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4478 >
2023-04-24 17:05:03 +00:00
Seungha Yang
3811894d9c
d3d11overlay: Enhance documentation and fix typo
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4455 >
2023-04-20 18:05:27 +00:00
Nicolas Dufresne
e709e2d97c
meson: Add a wrap file for libgudev
...
And allow fallback to it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4447 >
2023-04-19 22:47:19 +00:00
Thibault Saunier
03ac969240
d3d11: Fix typo in interlace mode name in enum
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4414 >
2023-04-18 14:56:41 +00:00
Seungha Yang
53dc1b96e2
d3d11compositor: Reconfigure resource only when output caps is changed
...
GstD3D11Converter setup is heavy operation since it requires
shader compile, GPU resource allocation, some math, mutex, etc.
We can avoid it if negotiated caps is not changed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4439 >
2023-04-17 17:30:26 +00:00
Seungha Yang
c883ab593c
d3d11: Add d3d11overlay element
...
Similar to cairooverlay element but this element emits "draw"
signal with Direct3D11 render target view, so that an application
can render/overlay/blend on the given render target view
without any copy operation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4415 >
2023-04-17 23:22:57 +09:00
Seungha Yang
3d6a609590
d3d11compositor: Add "ignore-inactive-pads" property
...
Same as compositor element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4438 >
2023-04-17 13:19:15 +00:00
Seungha Yang
7eefdd1b95
d3d11compositor: Skip zero alpha input
...
Blending such input is a waste of resource since nothing will
be rendered
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4438 >
2023-04-17 13:19:15 +00:00
Yinhang Liu
75af296b82
msdkvpp: Enable dynamic capability support
...
Enable dynamic capability support for msdkvpp. The gstmsdkvpp
element can create the sink caps and src caps dynamically for
different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
b1ebe93eb2
msdkvpp: Add function to dynamically create sink caps and src caps
...
We need to create the sink caps and src caps dynamically for different
platforms. By default, the vpp init function create static pad template
and the compatibility and flexibility of the platform are too poor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
bfbde5ce22
msdkdec: Enable dynamic capability support
...
Enable dynamic capability support for msdkav1dec, msdkh264dec,
msdkh265dec, msdkmjpegdec, msdkmpeg2dec, msdkvc1dec, msdkvp8dec,
msdkvp9dec.
The gstmsdkdec elements can create the sink caps and src caps
dynamically for different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
aa59d9828f
msdkdec: Add function to dynamically create sink caps and src caps
...
We need to create the sink caps and src caps dynamically for different
platforms. By default, the dec init function create static pad template
and the compatibility and flexibility of the platform are too poor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
a4fc1c5031
msdkenc: Add documented capabilities to expose "stable" caps
...
Although msdkenc supports dynamic caps, it still needs to expose
"stable" caps to users.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
da4b6f17cf
msdkenc: Support image formats in low power mode for sink caps
...
There are some special image formats in low power mode, these
image formats should be supported in sink caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
3cb9c34030
msdkenc: Remove static templates in format setting
...
The elements have supported dynamic capability query, and it is not
necessary to refer the static templates.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
30d3ce3a9e
msdkenc: Enable dynamic capability support
...
Enable dynamic capability support for msdkav1enc, msdkh264enc,
msdkh265enc, msdkmjpegenc, msdkvp9enc, msdkmpeg2enc.
The gstmsdkenc elements can create the sink caps and src caps
dynamically for different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
7aa0b29da8
msdk: Add function to specify string array parameters
...
Sometimes it is necessary to manually specify string parameters
of multiple options, such as format, interlace-mode, etc.
Add function to support this requirment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
1f8d939559
msdkenc: Add function to dynamically create sink caps and src caps
...
We need to create the sink caps and src caps dynamically for different
platforms. By default, the enc init function create static pad template
and the compatibility and flexibility of the platform are too poor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
3f47cdaee8
msdk: add function to get the format list
...
This static format list will be used to check the formats
supported by the platform.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
97e081c9d6
msdk: Register elements based on the codecs supported by the platform
...
By default, msdk plugin will register all encoders and decoders
on any platform, even unsupported encoders and decoders will be
registered. Dynamically register encoders and decoders besed on
the supported codecs on different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
f773752bd8
msdk: Add function to get the implementation description
...
Through the implementation description, we can dynamically obtain
the codec capabilities supported by the platform.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
34a812a0c0
msdk: Add functions to get data members from MsdkSession
...
When getting mfxImplDescription, these data members need to
be used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
6242fca526
msdk: Create msdk context without job_type
...
The job_type is not necessary when creating a normal msdk
context. Make the APIs for creating context more flexible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
dafb801a18
msdk: Move all _gst_caps_has_feature to gstmsdkcaps.c
...
_gst_caps_has_feature is used by all msdk elements, so
move it to gstmsdkcaps.c
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Seungha Yang
af86c4b80e
d3d11videosink: Remove pointless GetDC call
...
We don't use the Win32 device context handle at all.
Removing code which was copied from GL code blindly
in early d3d11 implementation stage a long time ago
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4407 >
2023-04-12 19:54:31 +00:00
Mengkejiergeli Ba
471f3b3b93
msdkcontext: Remove unused codes in msdkcontext
...
We don't maintain three list (i.e. avail, locked and used) surfaces
as the old way did to achieve memory management, so remove the
correcponding codes for old memory management.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4276 >
2023-04-11 06:59:33 +00:00
Mengkejiergeli Ba
ec2ef6e2d3
msdk: Remove unused gstmsdkbufferpool and memory
...
GstMsdkBufferPool, GstMsdkVideoMemory and GstMsdkSystemMemory are no
longer used in msdk plugins, instead we use va/d3d11 pool for memory
allocation. So, remove the codes of unused stuffs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4276 >
2023-04-11 06:59:33 +00:00
Mengkejiergeli Ba
ef1397cbe3
msdk: Remove the func gst_msdk_is_msdk_buffer
...
Since we use va/d3d11 pool to allocate memory, the old msdk bufferpool
stuffs are not used anymore, so we don't need to check if an input
buffer is msdk buffer using gst_msdk_is_msdk_buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4276 >
2023-04-11 06:59:33 +00:00
Wang Chuan
d7d0c969df
gstd3d11window: fix memory leak
...
GstStructure may leak when using external HWND
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4373 >
2023-04-10 12:12:27 +00:00
Seungha Yang
ba8f944df7
amfencoder: Set output DTS
...
AMF runtime does not provide correct DTS. Although GetPts() seems to
be returning DTS, it still needs to be adjusted to meet DTS <= PTS
requirement. Do calculate DTS in baseclass instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4092 >
2023-04-08 23:11:32 +09:00
Evgeny Pavlov
6f62128433
amfcodec: Add options for B-frames for amfh264enc plugin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4092 >
2023-04-08 23:11:28 +09:00
Seungha Yang
7117cba831
decklinkaudiosink: Fix playback when video caps is configured before audio
...
Scheduled playback starts on videosink's state change or on caps
but it's possible that audiosink is configure without caps yet.
Try start scheduled playback on audiosink's caps event as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4364 >
2023-04-07 18:59:17 +00:00
Dario Marino Saccavino
07cf7b2a29
wasapi2: Add option to monitor loopback device's mute state
...
When loopback recording from a render device, the wasapi2src element
captures audio even if the device is muted. This change adds the
'loopback-silence-on-device-mute' property that, when set to `true`,
causes wasapi2src to inject silence in the pipeline when
the device is muted.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1306
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4337 >
2023-04-07 17:19:33 +00:00
Wojciech Kapsa
8d4916df84
decklink: fix 10 bit RGB (r210) format auto detection
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2391
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4332 >
2023-04-04 20:37:09 +03:00
Seungha Yang
47fda2c51c
d3d11screencapturesrc: Add "window-capture-mode" property
...
... to support capturing only window's client area
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2425
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4324 >
2023-04-03 15:06:47 +00:00
Aleksandr Slobodeniuk
e683000573
d3d11videosink: fix race conditions in win32 window
...
One race condition is the fact that the window object
can be destroyed while running some routine in the UI
thread (such as resizing). To avoid that situation we make
UI thread hold a reference on the window object while it's
running.
Other probpematic case is when the window handle is reused:
if we stop and start the pipeline very fast,
so the sink creates a new window object that is going to use
the same window handle as the previous one.
And finally the case when the pipeline is stopped immediatelly
right after starting, this one is also handled in this commit.
NOTE: a unit test that reproduces this cases have been added
in the previous commit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4260 >
2023-04-03 11:19:11 +00:00
Seungha Yang
7755cd2f7a
d3d11videosink: Enhancement for initial window size decision
...
Use AdjustWindowRect() method to calculate window size so that
video scene can be rendered on client area without black borders
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4323 >
2023-04-02 00:31:58 +09:00
Tim-Philipp Müller
330836db8e
taglist, plugins: fix compiler warnings with GLib >= 2.76
...
Fix compiler warnings about not using the return value when
freeing the GString segment with g_string_free(.., FALSE):
ignoring return value of ‘g_string_free_and_steal’ declared with attribute ‘warn_unused_result’
which we get with newer GLib versions. These were all harmless.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4273 >
2023-03-27 07:37:11 +00:00
Víctor Manuel Jáquez Leal
292d6cdbed
vaencoder: remove display reference in decode picture
...
Since it's possible to grab the VA display from the GstBuffer and
GstMemory, there's no need to keep a reference to it in
GstVaEncodePicture.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3066 >
2023-03-24 14:05:15 +00:00
Víctor Manuel Jáquez Leal
494169aad4
vadecoder: remove display reference in decode picture
...
Since it's possible to grab the VA display from the GstBuffer and
GstMemory, there's no need to keep a reference to it in
GstVaDecodePicture.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3066 >
2023-03-24 14:05:15 +00:00
Stéphane Cerveau
e88e8527ed
sys: avoid double definition of symbol MEDIASUBTYPE_I420
...
Namespace the symbol MEDIASUBTYPE_I420 to avoid double definition
across dshow and mediafoundation plugins.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4246 >
2023-03-23 00:56:04 +00:00
Seungha Yang
96555c7ee9
nvh264encoder: Fix template caps
...
It should include progressive as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4236 >
2023-03-22 23:40:58 +00:00
Tong Wu
ebc9780c5f
msdkdec: delete use_video_memory
...
Since msdkdec uses video pool as the output buffer pool at all time. The
use_video_memory variable is not useful anymore. Now delete it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
8105d2044d
msdkdec: expand retry times to 1s
...
One-frame sleep time is not enough to wait until there is a surface
unlocked from downstream. Now expand it to 1s and add a return when
fail.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
123c8d14c1
msdkallocator_d3d: add gst_msdk_frame_free callback function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
abe4d0046a
msdkdec: acquire buffer from video pool on Windows
...
Video memory is available on Windows. This patch is to make the buffers
acquired from d3d11 video pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
d2902be9eb
msdkdec: add thiz->ds_has_known_allocator for d3d11
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
245df2778e
msdkallocator_d3d: add alloc callback function for d3d allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
b3e13df8c1
msdkdec: add d3d11 pool during negotiation
...
Enable use_video_memory for Windows and add d3d11 pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
2b9cda928b
msdkdec: add d3d11 caps for srcpad
...
Set decoder srcpad with D3D11Memory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Aleksandr Slobodeniuk
1f834eaacb
d3d11convert: add "method" property
...
It allows to select the sampling method, same
as "method" property of videoconvert.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4205 >
2023-03-21 12:08:54 +00:00
Aleksandr Slobodeniuk
4c9d4d30cb
d3d11convert: protect 'add-borders' with mutex
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4205 >
2023-03-21 12:08:54 +00:00
Mengkejiergeli Ba
9e3faf69f2
msdkvpp: Pass null formats when create va allocator for RGB565
...
Fix https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1780
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4136 >
2023-03-21 05:42:34 +00:00
Víctor Manuel Jáquez Leal
e794fcaa1c
va: add driver description in element metadata
...
In the same spirit of libva-win32 elements this patch shows the driver of each
element in gst-inspect, giving more information to the user. This driver
description is parsed from vaQueryVendorString from mesa and intel drivers,
while copied as is for others. Also appends the render node for multi gpu
systems.
Fixes #2349
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4204 >
2023-03-20 15:27:25 +00:00
Adrien De Coninck
ab69e24d9e
ksdeviceprovider: Fix leak in gst_dshow_device_provider_start
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4224 >
2023-03-20 09:50:37 +00:00
Adrien De Coninck
0aea6a86ac
dshowdeviceprovider: Fix leak in gst_dshow_device_provider_start
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4224 >
2023-03-20 09:50:37 +00:00
Seungha Yang
3bbfab1cf3
va: Return default device from device-path property getter
...
Otherwise application would not be able to know matching element
for wanted device. Typical use case of the read-only device path
(DXGI Adapter LUID, CUDA device index, etc) property is that
application enumerates physical devices and then selects matching
GStreamer element (in null state) via device path property.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4220 >
2023-03-19 17:50:43 +00:00
Sebastian Dröge
ccad9a7338
plugins: Fix various trivial clang compiler warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210 >
2023-03-18 16:16:55 +02:00
Seungha Yang
fed252cabd
nvencoder: Fix CQP option setting
...
... and zero initialize LUID and CUDA device list to address
coverity issue
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4215 >
2023-03-17 18:30:19 +00:00
Tim-Philipp Müller
81716a1097
gst-plugins-bad: re-indent with GNU indent 2.2.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182 >
2023-03-17 03:18:54 +00:00
Seungha Yang
fba06cfc76
wasapi2: Fix potential crash on device activation failure
...
The activation object is live in COM thread already and therefore
self refcount hack is pointless.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4194 >
2023-03-16 19:30:27 +00:00
Seungha Yang
e47f08395f
d3d11videosink: Fix tearing in case of fullscreen mode
...
DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING and DXGI_PRESENT_ALLOW_TEARING should
be used only if required, when user wants Vsync off for example.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2376
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4178 >
2023-03-15 22:56:02 +00:00
Teng, Jin Chung
83364c5729
msdkh264enc: Adding BGRx format DMABuf support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4167 >
2023-03-15 15:06:57 +00:00
Seungha Yang
a1bd4afb8a
d3d11compositor: Fix composition error on release_pad()
...
Composition might be still in progress while it's being released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4169 >
2023-03-15 04:50:49 +00:00
Seungha Yang
fe63034dd4
va: Don't error out on plugin registration
...
Keep enumerate devices and don't return FALSE on plugin_init()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4149 >
2023-03-15 01:37:03 +00:00
Nirbheek Chauhan
2d6da02653
applemedia: Consolidate GstVideoFormat <-> CVPixelFormat conversion
...
In the process we have changed the color value range from video-range
to full-range, which is probably what people want in the first place.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4135 >
2023-03-14 23:35:16 +00:00
Nicolas Dufresne
37f2d2ac42
kmsallocator: Port to the new DRM Dumb Allocator
...
This ports the KMS allocator to use the DRM Dumb allocator from the allocators
library.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3801 >
2023-03-14 21:50:57 +00:00
Sebastian Dröge
fe580cacb8
androidmedia: Add support for AV1
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4156 >
2023-03-14 11:26:30 +00:00
Nirbheek Chauhan
3b9ce6cb54
avfvideosrc: GL texture cache also supports YUY2 on macOS
...
BGRA gives black frames, and everything else fails to negotiate.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4134 >
2023-03-14 00:00:24 +00:00
Nirbheek Chauhan
a8ed817d30
avfvideosrc: Use frame duration instead of frame rate
...
These days you're can use minFrameDuration and maxFrameDuration which
are CMTime with fractional values. That way we don't need to convert
between double and fractions in a really weird way.
This fixes really odd fractional values exposed in caps, like:
2000000/76923, 1000000/37037, 5000000/178571, 10000000/344827, 10000000/333333
Which are actually just 26/1, 27/1, 28/1, 29/1, 30/1
We can also delete a lot of outdated code for iOS versions older than
7.0 by using newer APIs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4134 >
2023-03-14 00:00:24 +00:00
Seungha Yang
7624871b00
va: Update "device-path" property description for Windows
...
DRM does not make sense on Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4114 >
2023-03-10 13:57:47 +00:00
Seungha Yang
7bc6ba63b2
va: Add Windows specific element type/feature naming support
...
Adapter LUID will be changed per boot. Use different naming rule on Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4114 >
2023-03-10 13:57:47 +00:00
Seungha Yang
c1946c0209
va: Add support for Win32 backend
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4114 >
2023-03-10 13:57:47 +00:00
Seungha Yang
bc8db7bc3e
va: Drop all GSlice bits
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4114 >
2023-03-10 13:57:47 +00:00
Seungha Yang
b6e45d0de8
vavp8dec: Fix return type of decode_picture()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4113 >
2023-03-06 13:39:20 +00:00
Seungha Yang
c5ae00f58c
vajpegdec: Hide gst_jpeg_decoder_get_type() symbol
...
It's not a public symbol yet
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4113 >
2023-03-06 13:39:20 +00:00
Seungha Yang
fbf143b0fd
vabaseenc: Fix return type of encode_frame vfunc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4113 >
2023-03-06 13:39:19 +00:00
Seungha Yang
2f98234287
va: Fix struct empty initialization syntax
...
"struct Foo bar; bar = {};" is not a valid syntax. Also remove use
of __typeof__ which is GCC specific
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4113 >
2023-03-06 13:39:19 +00:00
Seungha Yang
b5fb709be7
qsvh265dec: Use gst_h265_parser_parse_decoder_config_record()
...
Stop duplicating code and use newly added parsing method instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2759 >
2023-03-06 12:50:41 +00:00
Yinhang Liu
89a6ce105b
msdkenc: Fix scale ratio for frame duration
...
For the calculation of frame duration, the numerator
should be FrameRateExtD, and the denominator should be
FrameRateExtN.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4119 >
2023-03-06 13:57:01 +08:00
Piotr Brzeziński
3c739b9b76
vtdec: Correctly retrieve reorder queue length from SPS
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4057 >
2023-03-03 19:26:11 +00:00
Yinhang Liu
5c47002d99
msdkvpp: correct the fixated caps for src pad
...
In src pad, fixate othercaps instead of the NULL result caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3999 >
2023-03-02 07:21:10 +00:00
Jan Schmidt
47e97251af
avfvideosrc: Fix description and trailing whitespace
...
Minor fix to mention that the element is also useful on MacOS,
and remove some trailing whitespace
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4083 >
2023-03-01 20:05:32 +00:00
Jan Schmidt
855e86f6a2
avfvideosrc: Don't wait on main thread for permissions request
...
Recursively invoking the NSMainLoop can cause crashes in
applications that don't expect it. Instead of waiting for
permission to be granted, move the wait later - until we
actually need device permissions when starting the capture
session. That moves the wait into the streaming thread
instead of the application thread that's setting the pipeline
state to READY.
Instead of a manual state change implementation to open
and close the device, use the basesrc start/stop methods that
are intended for the purpose.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4083 >
2023-03-01 20:05:32 +00:00
Seungha Yang
95ca40c4ab
d3d11screencapturesrc: Use keyed mutex instead of fence
...
D3D11 runtime might not support ID3D11Fence, and if so GstD3D11Fence
abstraction will use ID3D11Query instead. However, since the ID3D11Query
requires busy waiting, keyed mutex is better approach.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4094 >
2023-03-02 03:03:58 +09:00
Seungha Yang
ac869214ad
d3d11testsrc: Use keyed mutex for rendering patterns
...
D2D operations would not flush D3D commands. Use keyed mutex
to synchronize between them. Note that previous code was wrong
(Flush should be called inside of BeginDraw/EndDraw calls)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4081 >
2023-03-01 14:13:14 +00:00
Mengkejiergeli Ba
28e2eccf55
msdkenc: Set pts at handle_frame
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3998 >
2023-03-01 01:42:50 +00:00
Seungha Yang
8d7cab1f0d
nvcodec: Remove stateful decoders
...
Use H.264, H.265, VP8, and VP9 stateless decoders unconditionally
and don't register its stateful counterpart
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1768
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1621
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1432
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4015 >
2023-02-28 18:42:17 +00:00
Piotr Brzeziński
b3830b08fd
vtenc: Fix checking for certain CPU variants when running in VMs
...
These checks were introduced to prevent exposing ARGB64/RGBA64 in the caps
when running on M1 Pro/Max with macOS <13 because of a bug in VideoToolbox.
Unfortunately, the initial buffer size of 15 is too short when running
in a VM - the CPU brand string there looks like "Apple M1 Pro (Virtual)",
which due to its length causes sysctlbyname to return -1, resulting in
broken formats still showing up in the caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4080 >
2023-02-28 16:00:07 +00:00
Evgeny Pavlov
00988e70ac
amfcodec: Initial support of preanalysis and preencoding for AMF encoders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3847 >
2023-02-28 15:04:45 +00:00
Seungha Yang
025adaff4b
bad: Update indent
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4023 >
2023-02-28 10:12:31 +00:00
Mengkejiergeli Ba
799c6ff860
msdkdec: Check available surfaces when all pre-allocated surfaces are in use
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
3062f1b6b0
msdkdec: Apply the modified memory allocation logic
...
We did several things to enable the new memory logic in msdkdec:
(1) We always use video memory for decoder in linux path;
(2) We give negotiated pool to alloc_pool stored in GstMsdkContext which
will be used in callback mfxFrameAllocator:Alloc to alloc surfaces as
MediaSDK needs, and this pool is also available for decoder itself;
(3) We modify decide_allocation process, that is we make pool negotiaion
before gst_msdk_init_decoder to ensure the pool is decided and ready for
use in mfxFrameAllocator:Alloc callback; then we will consider the case
when we need to do the gpu to cpu copy.
(4) In gst_msdkdec_finish_task, we modify the way for copy following the
logic in (3).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
75efb204e5
msdkdec: Add a function to create va pool
...
Add a pool creation function name as 2 for later use which will create
va pool for video memory in linux and keep system pool for windows.
This gst_msdkdec_create_buffer_pool2 will replace gst_msdkdec_create_buffer_pool
when all the memory allocation modifications are ready in the commits after.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
8459349963
msdkallocator_libva: Rewrite gst_msdk_frame_alloc
...
Rewrite gst_msdk_frame_alloc and name it as xxx_2 before applying it.
It uses negotiated bufferpool stored in GstMsdkContext to allocate buffers
in the callback MfxFrameAllocator:Alloc, then extract VASurface from buffer,
wrap it as mfxMemIDs and pass these IDs to MediaSDK/oneVPL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
4124b8ffd4
msdkdec: Add a function to directly allocate output GstMsdkSurface
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
b2001c1ca5
msdk: Add a bufferpool in GstMsdkContext structure
...
This alloc_pool is the negotiated pool and will be used in
mfxFrameAllocator:Alloc to create surfaces.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
3b0d300759
msdkdec: Enable va caps at srcpad
...
Set caps with VA memory at src pad with a higher priority, then comes
dmabuf caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Seungha Yang
464c51a78a
d3d11testsrc: Add circular, blink and ball patterns
...
Note that circular and ball patterns will be rendered via
Direct2D (and Direct3D11 interop)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4070 >
2023-02-26 22:38:03 +09:00
He Junyan
c24c4e9b3f
jpegdecoder: fail early if no input caps have been provided
...
The jpegdecoder class does not implement the ->parse() virtual function,
and we always need to add the jpegparse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1829
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4064 >
2023-02-25 10:41:53 +08:00
Célestin Marot
81f121f244
d3d11overlaycompositor: fix texture width and height
...
The dimension of the overlay texture directly corresponds to the size of the overlay **buffer** which is given by its video meta.
The dimension at which the overlay should be displayed directly correspond to the overlay `render_width`and `render_height`.
This match the behavior of glimagesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4046 >
2023-02-22 15:18:12 +01:00
He Junyan
cbbfab0f3b
va: jpegdecoder: Do not check SOS state when parsing DRI marker.
...
According to spec, the JPEG_MARKER_DRI(Restart interval definition)
marker can come before the SOS marker. So we should not check the SOS
state when parsing the DRI marker.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3943 >
2023-02-22 11:24:57 +00:00
Seungha Yang
67764a1579
cudaconverter: Rename CUDA kernel function
...
Changing its name (was too generic) to help GPU tracing via Nsight tool
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4029 >
2023-02-21 20:07:31 +00:00
Seungha Yang
fd77f088a1
d3d11mpeg2dec: Promote rank to PRIMARY + 1
...
Make its rank higher than avdec_mpeg2video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4014 >
2023-02-21 17:32:20 +00:00
Seungha Yang
26dd6c5c26
d3d11videosink: Fix rendering on external handle
...
Partial revert of the commit 068a5c1053
.
That introduced size mismatch between internal and external HWND
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4006 >
2023-02-20 22:35:27 +00:00
Seungha Yang
2ffc594d96
qsvenc: Simplify property update helpers
...
Takes lock outside of helper methods, and protect property getter too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
77b3e461db
qsvh264enc: Add more encoding options
...
Adding trellis quantization, frame size, slice size and number of
slices related encoding options
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
e48869e269
qsv: Use std::once_flag
...
GLib's once implementation will take mutex every time
in case of non-GCC build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
5eb4253547
qsvh264enc: Optimization for byte-stream to packetized format conversion
...
Allocate single memory instead of per NAL
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
b1c14b0357
nvencoder: Fix b-frame encoding on Linux
...
On Windows, Win32 event handle is used to wait for encoded output,
but it's not available on Linux. We should delay bitstream locking
if encoder returns "need-more-input"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4004 >
2023-02-20 20:49:01 +00:00
Víctor Manuel Jáquez Leal
573eecac30
vah265enc: Use helper to update properties.
...
This is a continuation of the original patch by
Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3996 >
2023-02-20 18:18:27 +00:00