He Junyan
4299596d16
codecs: h265decoder: Fix a typo of NumPocTotalCurr when process ref pic list.
...
We should use the NumPocTotalCurr value stored in decoder, which is a calculated
valid value, rather than use the invalid value in the slice header. Most of the
time, the NumPocTotalCurr is 0 and make the tmp_refs a very short length, and
causes the decoder's wrong result.
By the way, the NumPocTotalCurr is not the correct name specified in H265 spec,
its name should be NumPicTotalCurr. We change it to the correct name.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2414 >
2021-07-16 23:05:18 +08:00
Seungha Yang
c8ffd39dfe
nvcodec: Enhance CUDA runtime compiler library loading on Windows
...
The name of installed CUDA runtime compiler library is formed like
nvrtc64_{major-version}{minor-version}_0.dll on Windows
(which is differnt from documented in https://docs.nvidia.com/cuda/nvrtc/index.html )
And minor version might not be exactly same as that of CUDA.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2362 >
2021-06-29 17:40:37 +00:00
Seungha Yang
6eb9856f59
codecs: vp9decoder: Pass GstVideoCodecFrame to duplicate_picture()
...
... and fix picture duplication logic for vavp9dec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112 >
2021-04-07 19:32:29 +00:00
Seungha Yang
1f769839c0
codecs: vp9decoder: Port to GstVp9StatefulParser
...
Use newly implemented VP9 parser. Since new GstVp9FrameHeader
struct holds all the information of the stream, baseclass will not
pass parser object to new_sequence() method anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112 >
2021-04-07 19:32:29 +00:00
Seungha Yang
791f1da7b8
nvcodec: nvsldec: Refactor graphics api resource handling
...
* Move GL context object to GstNVDecoder object, and remove
duplicated handling of each codec decoder element
* Don't create GL context too early. We can create it only if
we need to negotiate with downstream gl element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2089 >
2021-03-29 15:10:54 +00:00
Matthew Waters
640a65bf96
gst: don't use volatile to mean atomic
...
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead. GCC 11 has started warning about using volatile
with atomic operations.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2098 >
2021-03-22 14:34:36 +11:00
Seungha Yang
9da6da20e7
nvh264sldec: Reopen decoder object if larger DPB size is required
...
Equivalent to the d3d11h264dec fix
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1839
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2059 >
2021-03-07 16:51:59 +09:00
Seungha Yang
ce8d7b83d5
nvh265sldec: Remove pointless field picture parameter setup
...
HEVC has no decoding flow for interlaced, field picture referencing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2008 >
2021-02-09 16:19:41 +00:00
Seungha Yang
fba807bead
nvh264sldec: Add support for output-delay to improve throughput performance
...
NVDEC API support delaying getting decoded output, and recommended
delay by API document is 4 frames. In case that throughput is
more critical factor than latency, we can prefer delayed output
as recommended by NVIDIA.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1925 >
2021-01-29 16:22:28 +00:00
Edward Hervey
dddd0af9cd
cuda: Fix lowest targetted architecture for CUDA >= 11.0
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1469
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1835 >
2020-12-03 12:23:44 +01:00
Julian Bouzas
64f96facca
nvcodec: Assume 25fps if framerate is invalid when calculating latency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1826 >
2020-11-23 18:27:43 +00:00
Olivier Crête
e53da20938
nvdec: Accept progressive-high and contrained-high profiles
...
They're subsets of the high profiles with no interlacing and
no B-frames for constrained
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1634 >
2020-11-18 15:46:52 -05:00
Seungha Yang
7a53d7a4aa
codecs: h264decoder: Store reference picture type using enum value
...
Managing reference picture type by using two variables
(ref and long_term) seems to be redundant and that can be
represented by using a single enum value.
This is to sync this implementation with gstreamer-vaapi so that
make comparison between this and gstreamer-vaapi easier and also
in order to minimize the change required for subclass to be able
to support interlaced.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1534 >
2020-11-13 15:25:42 +00:00
Seungha Yang
977c3276d4
nvcodec: Fix various typo
...
Not sure where the DECOCER came from
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1803 >
2020-11-12 13:10:13 +00:00
Seungha Yang
5578e76e60
nvcodec: Add VP9 stateless decoder element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1738 >
2020-11-10 14:39:40 +00:00
Seungha Yang
71564f471d
nvcodec: nvdecoder: Move to refcount based GstNvDecoderFrame
...
This refcount based way would be helpful for sharing nvdec frame among
multiple codec pictures and later zero-copy use case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1738 >
2020-11-10 14:39:40 +00:00
Seungha Yang
2a04fe5403
nvcodec: nvdecoder: Get rid of G_GNUC_INTERNAL
...
default is visibility=hidden. Don't need to use G_GNUC_INTERNAL
for new code therefore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1738 >
2020-11-10 14:39:40 +00:00
Seungha Yang
36ed24ac05
nvcodec: Add VP8 stateless decoder element
...
Like other nvcodec stateless decoders, the rank of this new nvvp8sldec
element will be secondary for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1738 >
2020-11-10 14:39:40 +00:00
Seungha Yang
7c047da4b0
nvcodec: nvsldec: Fix typo in debug message
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1738 >
2020-11-10 14:39:40 +00:00
Julian Bouzas
168b5f6536
nvcodec: leave g_once_init when all quarks are initialized
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1782 >
2020-11-09 15:03:04 +00:00
Seungha Yang
8f96361c81
nvcodec: nvsldec: Add support for CUDA memory
...
Add CUDA memory support. Note that zero copying is not supported yet
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1720 >
2020-10-27 18:31:42 +00:00
Nicolas Dufresne
f22fc190e7
h265decoder: Add support for l0/l1
...
Add support for reference list needed for VA-API and some V4L2 decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1713 >
2020-10-21 09:05:57 -04:00
Nicolas Dufresne
f330b5ae62
h265decoder: Sync with the H264 implementation
...
This ensures that we get the last reference to picture being outputed,
avoiding GstBuffer structure copies and simplifying the buffer management.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1713 >
2020-10-21 09:05:57 -04:00
Julian Bouzas
32b0afb608
nvcodec: Report latency in decoder based on max-display-delay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Julian Bouzas
1d4b6299dc
nvcodec: Add max-display-delay decoder property
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Julian Bouzas
8cf1b7a154
nvcodec: Fix compiler error if OpenGL is not enabled
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Julian Bouzas
36030158c4
nvcodec: Add missing CUDAMemory src caps in h264 decoder
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Julian Bouzas
45cc831efd
nvcodec: Add missing CUDAMemory sink caps in h264 and h265 encoders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Julian Bouzas
07c349768a
nvcodec: Fix description of cudadownload element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
6e1c1178c2
nvcodec: Add CUDA video scale element
...
Add new element for video resizing using CUDA
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
fe83a12b10
nvcodec: Add CUDA video convert element
...
Add new element for colorspace conversion using CUDA.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
592a8d5400
nvcodec: Add generic CUDA video convert object
...
Introducing generic video convert object similar to video-converter
but using CUDA.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
4cc73ff9d6
nvcodec: Add support runtime CUDA kernel source compilation
...
Add util functions for runtime CUDA kernel source compilation
using NVRTC library. Like other nvcodec dependent libraries,
NVRTC library will be loaded via g_module_open.
Note that the NVRTC library naming is not g_module_open friendly
on Windows.
(i.e., nvrtc64_{CUDA major version}{CUDA minor version}.dll).
So users can specify the dll name using GST_NVCODEC_NVRTC_LIBNAME
environment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
dd995bd9d4
nvcodec: Add CUDA upload/download elements with base class for CUDA filters
...
Similar to glupload/gldownload elements but for CUDA memory.
It will help transfer memory between system and nvidia GPU
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
b1ac8bafc9
nvcodec: Peer direct access support
...
If support direct access each other, use device to device memory copy
without staging host memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
d16a9237c3
cudacontext: Enable direct CUDA memory access over multiple GPUs
...
If each device context can access each other, enable peer access
for better interoperability.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
a8e9d616d6
nvenc: Support CUDA buffer pool
...
When upstream support CUDA memory (only nvdec for now), we will create
CUDA buffer pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
8635d12929
nvdec: Support CUDA buffer pool
...
If downstream can accept CUDA memory caps feature (currently nvenc only),
always CUDA memory is preferred.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Seungha Yang
cf5ef5635f
nvcodec: Add CUDA specific memory and bufferpool
...
Introducing CUDA buffer pool with generic CUDA memory support.
Likewise GL memory, any elements which are able to access CUDA device
memory directly can map this CUDA memory without upload/download
overhead via the "GST_MAP_CUDA" map flag.
Also usual GstMemory map/unmap is also possible with internal staging memory.
For staging, CUDA Host allocated memory is used (see CuMemAllocHost API).
The memory is allowing system access but has lower overhead
during GPU upload/download than normal system memory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1633 >
2020-10-16 15:56:49 +00:00
Sebastian Dröge
64039cdf84
gst: Update for gst_video_transfer_function_*() function renaming
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1557 >
2020-09-07 12:14:47 +03:00
Matthew Waters
d1667da0c3
build: update for gl pkg-config file split
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1462 >
2020-08-07 20:22:41 +10:00
Seungha Yang
e921a07715
codecs: h264decoder: Pass GstVideoCodecFrame to output_picture()
...
All subclasses are retrieving list to get target output frame, which
can be done by baseclass. And pass the ownership of the GstH264Picture
to subclass so that subclass can clear implementation dependent resources
before finishing the frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1449 >
2020-07-21 17:18:42 +09:00
Seungha Yang
7a024a740f
codecs: h264decoder: Don't attach extra ref of GstH264Picture to GstVideoCodecFrame
...
The lifecycle of GstH264Picture is being managed by our DPB
implementation. If it's still required, subclass can do that
by itself in the new_picture() method.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1449 >
2020-07-21 17:18:42 +09:00
Seungha Yang
76793ffabc
nvcodec: Update for documentation
...
* Add Since marks
* Make use of GST_PARAM_CONDITIONALLY_AVAILABLE flag
* Add documentation template caps
2020-07-02 17:21:24 +02:00
Seungha Yang
48ca7c7e93
nvh265sldec: Fix possible invalid memory access
...
Fix Coverity issues.
CID 1464959, 1464960, 1464961, 1464962
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1374 >
2020-06-25 13:58:57 +00:00
Seungha Yang
133b902044
nvh264sldec: Remove useless double space
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
711e964572
nvcodec: Add H265 stateless codec implementation
...
Add a new GstCodecs based H265 decoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
1e544f741a
nvcodec: Move common methods to nvdecoder
...
... and remove all #ifdef from nvh264sldec implementation.
New helper methods will take care of OpenGL specific ones.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
1f452c0577
nvh264sldec: Declare OpenGL related objects unconditionally
...
GstGLDisplay and GstGLContext are subclass of GstObject so we can
remove #ifdef for such object. This is prework for nvh265sldec.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
82ddb0600b
nvh264sldec: Fix for possible wrong device selction
...
decoder should select assigned CUDA device id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00