Nirbheek Chauhan
6b7d819c25
vtenc: Signal ignored alpha component with ProRes
...
When the image is opaque but the output ProRes format has an alpha
component (4 component, 32 bits per pixel), Apple requires that we
signal that it should be ignored by setting the depth to 24 bits per
pixel. Not doing so causes the encoded files to fail validation.
So we set that in the caps and qtmux sets the depth value in the
container, which will be read by demuxers so that decoders can skip
those bytes entirely. qtdemux does this, but vtdec does not use this
information at present.
The sister change was made in qtmux and qtdemux in:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1061
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1489 >
2022-01-04 18:01:54 +00:00
Seungha Yang
5fefc689a0
d3d11decoder: Negotiate again on the first output buffer
...
... unconditionally. There may be updated field in sinkpad caps
after the new_sequence() call (HDR related ones for example),
then we should signal the information to downstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1474 >
2021-12-30 11:09:45 +00:00
He Junyan
85d2118a53
va: av1dec: Use named profiles to replace the numeric ones.
...
Use named AV1 profiles (i.e., main, high, and professional) to replace
the old 0, 1, 2 profiles.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1456 >
2021-12-21 22:20:34 +09:00
Seungha Yang
91484ce2ac
d3d11av1dec: Update sinkpad template for profile
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1456 >
2021-12-21 22:20:34 +09:00
Seungha Yang
1564567c3e
d3d11av1dec: Fix for Cdef param
...
av1parser will increase the sec_strength values by 1 if parsed
values were equal to 3 as defined in spec. But DXVA wants unmodified
ones.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1455 >
2021-12-17 23:28:29 +09:00
Seungha Yang
146815bbb6
d3d11av1dec: Sync DXVA AV1 data structure with released header
...
Update AV1 data structure based on Windows 11 SDK header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1455 >
2021-12-17 23:27:24 +09:00
Seungha Yang
f10867dfb5
d3d11videosink: Use only tested color space for swapchain
...
We are querying supported swapchain colorspace via
CheckColorSpaceSupport() but it doesn't seem to be reliable.
Use only tested full-range RGB formats which are:
- sRGB
- BT709 primaries with linear RGB
- BT2020 primaries with PQ gamma
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1433 >
2021-12-12 11:00:24 +00:00
Nicolas Dufresne
e0f8ce501b
v4l2codecs: vp9: Add alpha decodebin wrapper
...
This will allow HW accelerated decoding of WebM alpha videos.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1439 >
2021-12-10 21:37:14 +00:00
Nicolas Dufresne
31d49da237
v4l2codecs: plugin: Minor style fix
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1439 >
2021-12-10 21:37:14 +00:00
Nicolas Dufresne
3f02515380
v4l2codecs: decoder: Improve logging of timed out request
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1439 >
2021-12-10 21:37:14 +00:00
Nicolas Dufresne
c4216a693c
v4l2codecs: mpeg2: Check that the decoder output formats
...
This is to avoid exposing a decoder for which we don't support any
output format. This happens on platform using vendor formats or
not yet supported tiles formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1439 >
2021-12-10 21:37:14 +00:00
Seungha Yang
e8c923ebde
d3d11window: Remove hack related to color space selection
...
Use input GstVideoColorPrimaries without any special case handling
otherwise rendered image color would be very wrong.
The hack was added to work around an issue that some Intel driver
couldn't handle wide color gamut image without HDR10 metadata, specifically PQ image.
But device capability can be checked via a method added in
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1723
so there's no issue now.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1175
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1430 >
2021-12-09 20:12:12 +09:00
Seungha Yang
1a12883993
d3d11window: Fix typo in debug message
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1430 >
2021-12-09 19:51:20 +09:00
Nicolas Dufresne
7e875ddb2c
v4l2codecs: mpeg2: Fix selected sizeimage
...
Due to a copy paste bug, the bitdepth was never set and that was leading
to requesting sizeimage of 0. Previously that worked since the driver
would in that case pick a size for us. But now the we bumped the minimum
to 4KB, the driver happily allocate 4KB of bitstream which lead to
decoding error.
As MPEG2 have a fixed bitdeph of 8, use a define instead of the run-time
variable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1415 >
2021-12-03 07:55:30 -05:00
Nicolas Dufresne
05458f05e0
v4l2codecs: vp9: Drop frames on non-keyframe format change
...
V4L2 does not yet support this feature, this will skip over the
transition portion up to the next keyframe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1404 >
2021-12-02 15:52:03 -05:00
Nicolas Dufresne
a6eb1e7782
v4l2codecs: Fix renegotiation
...
If we hold the last reference to the allocator, leaving the device
streaming will cause an EBUSY error when trying to free the allocate
buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1404 >
2021-12-02 15:45:26 -05:00
Seungha Yang
e87791592e
d3d11vp9dec: Drop frames on non-keyframe format change
...
... in case of NVIDIA GPU
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1407 >
2021-12-02 19:19:59 +00:00
Seungha Yang
2c834b5fc7
nvvp9sldec: Drop frames on non-keyframe format change
...
NVDEC doesn't seem to be able to handle the case
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1407 >
2021-12-02 19:19:59 +00:00
Nicolas Dufresne
d04fba93f8
v4l2codecs: vp9: Remove uneeded picture data
...
The GstV4l2Request now holds a reference on the picture buffer and is
recounted already. This effectively removes usage of GRefCount which is only
available in GLib 2.58, while we support 2.56.
Fixes #910
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1402 >
2021-11-30 17:11:59 -05:00
Nicolas Dufresne
19d99dbcae
v4l2codecs: decoder: Add method to get the pic_buf
...
This helper will be needed for VP9 frame duplication.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1402 >
2021-11-30 17:11:59 -05:00
Nicolas Dufresne
8a1440b3f1
v4l2codecs: vp9: Add missing error checks in decide_allocation
...
This could otherwise lead to crash.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1402 >
2021-11-30 17:11:56 -05:00
Nicolas Dufresne
4ca7f1e014
v4l2codecs: h264: Fix typo in comment
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1387 >
2021-11-30 00:28:34 +00:00
Nicolas Dufresne
83933b7772
v4l2codecs: h264: Properly set pic_num/frame_num
...
The V4L2 uAPI uses pic_num for both PicNum and ShortTermPicNum. It also
doe the same for both FrameNum and LongTermFrameIdx. This change does
not change the fluster score, but fixed a visual corruption noticed
with some third party streams.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1387 >
2021-11-30 00:28:34 +00:00
He Junyan
b5c07e11ca
va: Use a lock to protect the surface copy by using vpp.
...
If we use vpp to do the surface copy, its operation is not atomic.
We need to maintain the filter's context unchanged during the whole
copy progress.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1373 >
2021-11-29 19:25:31 +00:00
He Junyan
954f7cf88c
va: Use the GstVaSurfaceCopy of the allocator atomically.
...
The mem_copy() of the allocator can be called simultaneously from
different threads. We should use atomic pointer operations to create
and use the GstVaSurfaceCopy of the allocator.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1373 >
2021-11-29 19:25:31 +00:00
He Junyan
7f31dcf084
va: DMA allocator: Set the copied memory properly when popped from pool.
...
The current code does not set the copied memory correctly when it is popped
from the surface cache pool.
1. We forget to ref the allocator, which causes the allocator to be freed
unexpected, and we get a crash later because of the memory violation.
2. We forget to add ref_mems_count, which causes the surface leak because
the surface can not be pushed back to the cache pool again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1373 >
2021-11-29 19:25:31 +00:00
Daniel Almeida
285695ee52
v4l2codecs: gstv4l2decoder: set minimum sizeimage
...
Set minimum sizeimage such that there is enough space for any overhead
introduced by the codec.
Notably fix a vp9 issue in which a small image would not have a
bitstream buffer large enough to accomodate it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1012 >
2021-11-29 17:41:19 +00:00
Daniel Almeida
120b96a974
v4l2codecs: gstv4l2codecsvp9dec: implement a render delay
...
The v4l2 backend support delayed output for performance reasons.
It is then possible to use render delays to queue multiple requests
simultaneously, thus increasing performance.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1012 >
2021-11-29 17:41:19 +00:00
Daniel Almeida
ccab90773f
v4l2codecs: vp9dec: Implement VP9 v4l2 decoder
...
Implement a v4l2 based vp9 decoder element based on the preexisting vp8
v4l2 decoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1012 >
2021-11-29 17:41:19 +00:00
Daniel Almeida
c51d74ae3a
v4l2codecs: update to the new uAPI
...
The new VP9 stateless API is in its way to be destaged. Update our
headers to match.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1012 >
2021-11-29 17:41:19 +00:00
Víctor Manuel Jáquez Leal
5e3bf0fff7
vapostproc, vadeinterlace: don't transform caps if no intersection.
...
If caps to transform don't intersect with those supported by the VA
filter (VAEntrypointVideoProc) then return them as is, because only
pass-through mode is the only possibility.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1369 >
2021-11-22 15:27:10 +00:00
Víctor Manuel Jáquez Leal
68379649db
vapostproc: Append featured caps rather than merge.
...
So it would be possible to honor upstream preference.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1369 >
2021-11-22 15:27:10 +00:00
Víctor Manuel Jáquez Leal
718e83ed4c
vapostproc: Remove dead code.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1369 >
2021-11-22 15:27:10 +00:00
Víctor Manuel Jáquez Leal
26040bd932
va: filter: Validate input parameter in internal function.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1369 >
2021-11-22 15:27:10 +00:00
Víctor Manuel Jáquez Leal
8377463128
va: allocator: log drm modifier
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1369 >
2021-11-22 15:27:10 +00:00
He Junyan
a14f0da324
va: vpp: Fix the memory leak in fixate_caps().
...
For the BaseTransform class, the function of fixate_caps(), takes
the ownership of "othercaps". So we should clear it in our subclass.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1372 >
2021-11-22 10:54:23 +00:00
He Junyan
c2bffe22f3
va: decoder: Also ref the display when duplicating pictures.
...
The _destroy_buffers() will check the display handle using the
g_return_val_if_fail. we should not generate the invalid pointer
warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1368 >
2021-11-19 14:40:18 +00:00
Seungha Yang
7f796b10b2
wasapi2: Fix typo in doc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1360 >
2021-11-19 13:38:19 +00:00
Seungha Yang
6acf89b3d3
mediafoundation: Skip doc for non-default encoder elements
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1360 >
2021-11-19 13:38:19 +00:00
Seungha Yang
7fe08d8bed
d3d11: Stop doc for non-default decoder and deinterlacer elements
...
Just skip doc for non-default decoder/deinterlacer elements
since there are multiple element in case that system has
multiple GPUs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1360 >
2021-11-19 13:38:19 +00:00
Wonchul Lee
ae7a365274
d3d11: Fix deadlock while doing unprepare
...
ShowWindow() could be blocked while doing gst_d3d11_window_win32_unprepare
when external window handle provided to d3d11videosink in multi-threaded
environment.
The condition that issue happened is, UI thread is waiting for a
background thread that changes d3d11videosink state to NULL, and the
background thread would try to send a window message to the queue.
The queue is already occupied by the UI thread, so the background
thread will be blocked.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1366 >
2021-11-19 13:42:53 +09:00
Thomas Klausner
49449dfa41
shm: NetBSD build fix
...
shm_unlink() and friends live in librt on NetBSD. Adapt build system.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1323 >
2021-11-08 21:14:42 +00:00
Antonio Ospite
7deee582d2
magicleap: update lumin_rt libraries names to the latest official version
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1314 >
2021-11-05 16:21:34 +00:00
Thibault Saunier
d0c5778669
doc: Update nvdec documentation
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/870
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1309 >
2021-11-05 13:26:33 +00:00
Seungha Yang
8eee442715
wasapi2ringbuffer: Fix client object leak
...
Check whether ringbuffer is holding client object already since
open_device() may be called multiple times
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1307 >
2021-11-04 12:41:32 +00:00
Daniel Almeida
f9958eda8e
v4l2codecs: gstv4l2codecsmpeg2dec: implement a render delay
...
The v4l2 backend support delayed output for performance reasons.
It is then possible to use render delays to queue multiple requests
simultaneously, thus increasing performance.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1013 >
2021-11-02 16:16:29 +00:00
Daniel Almeida
477b824f8e
v4l2codecs: Implement a MPEG2 V4L2 decoder element
...
Implement a MPEG2 V4L2 decoder element based on the previous h264
implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1013 >
2021-11-02 16:16:29 +00:00
Daniel Almeida
4fe6bc1afe
v4l2codecs: mpeg2: update to the new uAPI
...
The mpeg2 stateless api has undergone changes as it is being
destage. Update the v4l2-controls header to match.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1013 >
2021-11-02 16:16:29 +00:00
Daniel Almeida
f6e17ea294
sys: va: GstVaMpeg2Dec: use slice sc_offset and size
...
Seeing as how GstMpeg2Slice will now record the start code offset
as well as its size with the above field taken into account, the
manual computation in this class is not needed.
Remove it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1013 >
2021-11-02 16:16:29 +00:00
James Cowgill
8b932c105f
v4l2codecs: Handle allocator creation failure
...
If `VIDIOC_REQBUFS` doesn't return enough buffers the allocator creation
function can fail and return `NULL`. Handle this by generating an error
and returning instead of segfaulting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1220 >
2021-11-02 15:25:48 +00:00